[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.7 and 1.9

version 1.7, 2006/11/10 16:45:42 version 1.9, 2006/11/10 17:49:51
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.6 2006/11/10 16:18:59 andrew Exp $  # $RedRiver: Keyring.pm,v 1.8 2006/11/10 17:31:38 andrew Exp $
   
 use strict;  use strict;
 package Palm::Keyring;  package Palm::Keyring;
Line 323 
Line 323 
 }  }
   
   
 # XXX Have to make this encrypt as well as decrypting, but w00 h00!  # XXX It looks like they are using des_ecb2_encrypt so I dunno if that is different
 # do null padding on the end of a cleartext if we are going to encrypt it  
 sub _crypt3des {  sub _crypt3des {
         my ( $plaintext, $passphrase, $flag ) = @_;          my ( $plaintext, $passphrase, $flag ) = @_;
   
         $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,  
         #   pad it with \000  
         # if not, then die  
         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 )));
         }          }
   
   
   # XXX From Crypt::TripleDES
   # http://search.cpan.org/src/VIPUL/Crypt-TripleDES-0.24/lib/Crypt/TripleDES.pm
   #
   #    for ( 0 .. (($size)/8) -1 ) {
   #     my $pt = substr( $plaintext, $_*8, 8 );
   #        $pt = Crypt::PPDES::des_ecb_encrypt( $flag ? $keyvecs{0} : $keyvecs{2}, $flag, $pt );
   #        $pt = Crypt::PPDES::des_ecb_encrypt( $keyvecs{1}, (not $flag), $pt );
   #        $pt = Crypt::PPDES::des_ecb_encrypt( $flag ? $keyvecs{2} : $keyvecs{0}, $flag, $pt );
   #        $cyphertext .= $pt;
   #    }
   
         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) {
                           die "record not 8 byte padded" if  $flag == DECRYPT;
                         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 );

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.9

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