[BACK]Return to Keyring.pm CVS log [TXT][DIR] Up to [local] / palm / Palm-Keyring / lib / Palm

Diff for /palm/Palm-Keyring/lib/Palm/Keyring.pm between version 1.3 and 1.4

version 1.3, 2006/02/02 00:59:08 version 1.4, 2006/11/10 04:21:17
Line 9 
Line 9 
 #   This started as Memo.pm, I just made it work for Keyring.  #   This started as Memo.pm, I just made it work for Keyring.
 #  #
 # $Id$  # $Id$
 # $RedRiver: Keyring.pm,v 1.2 2006/01/31 23:03:39 andrew Exp $  # $RedRiver: Keyring.pm,v 1.3 2006/02/02 00:59:08 andrew Exp $
   
 use strict;  use strict;
 package Palm::Keyring;  package Palm::Keyring;
Line 202 
Line 202 
                 $record->{plaintext}->{password}    = defined $password    ? $password    : '';                  $record->{plaintext}->{password}    = defined $password    ? $password    : '';
                 $record->{plaintext}->{description} = defined $description ? $description : '';                  $record->{plaintext}->{description} = defined $description ? $description : '';
   
         print "Name:      '$name'\n";          #print "Name:      '$name'\n";
         print "Encrypted: '$encrypted' - Length: " . length($encrypted) . "\n";          #print "Encrypted: '$encrypted' - Length: " . length($encrypted) . "\n";
         #print "Hex:       '" . unpack("H*", $encrypted) . "'\n";          #print "Hex:       '" . unpack("H*", $encrypted) . "'\n";
         #print "Binary:    '" . unpack("b*", $encrypted) . "'\n";          #print "Binary:    '" . unpack("b*", $encrypted) . "'\n";
         print "Decrypted: '$decrypted' - Length: " . length($decrypted) . "\n";          #print "Decrypted: '$decrypted' - Length: " . length($decrypted) . "\n";
         print "Hex:       '" . unpack("H*", $decrypted) . "'\n";          #print "Hex:       '" . unpack("H*", $decrypted) . "'\n";
         print "Binary:    '" . unpack("b*", $decrypted) . "'\n";          #print "Binary:    '" . unpack("b*", $decrypted) . "'\n";
         print "\n";          #print "\n";
                 #print "Extra: $extra\n";                  #print "Extra: $extra\n";
                 #--------------------------------------------------                  #--------------------------------------------------
                 # print "Account:     $account\n";                  # print "Account:     $account\n";
Line 252 
Line 252 
         my $self = shift;          my $self = shift;
         my $pass = shift;          my $pass = shift;
   
         die "No password specified!" unless defined $pass;          die "No password specified!" unless $pass;
         $self->{password} = $pass;          $self->{password} = $pass;
   
         # AFAIK the thing we use to test the password is          # AFAIK the thing we use to test the password is
Line 292 
Line 292 
         my $self = shift;          my $self = shift;
         my $pass = shift;          my $pass = shift;
   
         die "No password specified!" unless defined $pass;          die "No password specified!" unless $pass;
   
         # if the database already has a password in it          # if the database already has a password in it
         if ($self->{records}->[0]->{data}) {          if ($self->{records}->[0]->{data}) {
Line 327 
Line 327 
 # XXX Have to make this encrypt as well as decrypting, but w00 h00!  # XXX Have to make this encrypt as well as decrypting, but w00 h00!
 # do null padding on the end of a cleartext if we are going to encrypt it  # do null padding on the end of a cleartext if we are going to encrypt it
 sub _crypt3des {  sub _crypt3des {
     my ( $self, $plaintext, $flag ) = @_;          my ( $self, $plaintext, $flag ) = @_;
   
         my $passphrase = $self->{digest} || $self->_calc_keys();          my $passphrase = $self->{digest} || $self->_calc_keys();
     $passphrase .= ' ' x (16*3);          $passphrase .= ' ' x (16*3);
     my $cyphertext = "";          my $cyphertext = "";
   
   
     my $size = length ( $plaintext );          my $size = length ( $plaintext );
     print "STRING: '$plaintext' - Length: " . length($plaintext) . "\n";          #print "STRING: '$plaintext' - Length: " . length($plaintext) . "\n";
   
     # This check should see if it is plaintext first, if it is,          # This check should see if it is plaintext first, if it is,
     #   pad it with \000          #   pad it with \000
     # if not, then die          # if not, then die
     die "record not 8 byte padded" if (length($plaintext) % 8) && ! $flag;          die "record not 8 byte padded" if (length($plaintext) % 8) && ! $flag;
   
     my %C;          my %C;
     for ( 0..2 ) {          for ( 0..2 ) {
       $C{$_} = new Crypt::DES( pack( "H*", substr($passphrase, 16*$_, 16 )));                  $C{$_} = new Crypt::DES( pack( "H*", substr($passphrase, 16*$_, 16 )));
     }          }
   
     for ( 0 .. (($size)/8) - 1) {          for ( 0 .. (($size)/8) - 1) {
      my $pt = substr( $plaintext, $_*8, 8 );                  my $pt = substr( $plaintext, $_*8, 8 );
         print "PT: '$pt' - Length: " . length($pt) . "\n";                  #print "PT: '$pt' - Length: " . length($pt) . "\n";
         if (length($pt) < 8) {                  if (length($pt) < 8) {
           my $len = 8 - length($pt);                          my $len = 8 - length($pt);
           print "LENGTH: $len\n";                          print "LENGTH: $len\n";
           print "Binary:    '" . unpack("b*", $pt) . "'\n";                          print "Binary:    '" . unpack("b*", $pt) . "'\n";
           $pt .= (chr(0) x $len);# . $pt;                          $pt .= (chr(0) x $len);# . $pt;
           print "Binary:    '" . unpack("b*", $pt) . "'\n";                          print "Binary:    '" . unpack("b*", $pt) . "'\n";
           print "PT: '$pt' - Length: " . length($pt) . "\n";                          #print "PT: '$pt' - Length: " . length($pt) . "\n";
         }                  }
         $pt = $C{0}->decrypt( $pt );                  $pt = $C{0}->decrypt( $pt );
         $pt = $C{1}->encrypt( $pt );                  $pt = $C{1}->encrypt( $pt );
         $pt = $C{2}->decrypt( $pt );                  $pt = $C{2}->decrypt( $pt );
         print "PT: '$pt' - Length: " . length($pt) . "\n";                  #print "PT: '$pt' - Length: " . length($pt) . "\n";
         $cyphertext .= $pt;                  $cyphertext .= $pt;
     }          }
   
     return substr ( $cyphertext, 0, $size );          return substr ( $cyphertext, 0, $size );
 }  }
   
 1;  1;

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>