[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.41 and 1.45

version 1.41, 2007/02/23 03:38:07 version 1.45, 2007/02/26 00:02:13
Line 1 
Line 1 
 package Palm::Keyring;  package Palm::Keyring;
 # $RedRiver: Keyring.pm,v 1.40 2007/02/23 03:32:46 andrew Exp $  # $RedRiver: Keyring.pm,v 1.44 2007/02/23 22:11:33 andrew Exp $
 ########################################################################  ########################################################################
 # Keyring.pm *** Perl class for Keyring for Palm OS databases.  # Keyring.pm *** Perl class for Keyring for Palm OS databases.
 #  #
Line 1000 
Line 1000 
     import  Digest::SHA1 qw(sha1);      import  Digest::SHA1 qw(sha1);
   
     my $key = _pbkdf2( $pass, $salt, $iter, $keylen, \&hmac_sha1 );      my $key = _pbkdf2( $pass, $salt, $iter, $keylen, \&hmac_sha1 );
     if ($dop) { $key = DES_odd_parity($key); }      if ($dop) { $key = _DES_odd_parity($key); }
   
     my $hash = unpack("H*", substr(sha1($key.$salt),0, 8));      my $hash = unpack("H*", substr(sha1($key.$salt),0, 8));
   
Line 1242 
Line 1242 
     return substr($t, 0, $keylen);      return substr($t, 0, $keylen);
 }  }
   
 sub DES_odd_parity($) {  sub _DES_odd_parity($) {
     my $key = $_[0];      my $key = $_[0];
     my ($r, $i);      my ($r, $i);
     my @odd_parity = (      my @odd_parity = (
Line 1389 
Line 1389 
         iter       => Number of iterations for the cipher          iter       => Number of iterations for the cipher
     };      };
   
 =head2 crypt  =head2 crypts
   
 Pass in the alias of the crypt to use, or the index.  Pass in the alias of the crypt to use, or the index.
   
Line 1406 
Line 1406 
     $c = {      $c = {
         alias     => (None|DES_EDE3|AES128|AES256),          alias     => (None|DES_EDE3|AES128|AES256),
         name      => (None|DES_EDE3|Rijndael),          name      => (None|DES_EDE3|Rijndael),
         keylen    => <key length of the ciphe>,          keylen    => <key length of the cipher>,
         blocksize => <block size of the cipher>,          blocksize => <block size of the cipher>,
         default_iter => <default iterations for the cipher>,          default_iter => <default iterations for the cipher>,
     };      };
Line 1528 
Line 1528 
                       or calculated when setting a new password.                        or calculated when setting a new password.
     };      };
   
   =head2 Other overridden subroutines/methods
   
   =over
   
   =item ParseAppInfoBlock
   
   Converts the extra returned by Palm::StdAppInfo::ParseAppInfoBlock() into
   the following additions to $pdb->{appinfo}
   
       $pdb->{appinfo} = {
           cipher     => The index number of the cipher being used (Not v4)
           iter       => Number of iterations for the cipher (Not v4)
       };
   
   =item PackAppInfoBlock
   
   Reverses ParseAppInfoBlock before
   sending it on to Palm::StdAppInfo::PackAppInfoBlock()
   
   =item ParseRecord
   
   Adds some fields to a record from Palm::StdAppInfo::ParseRecord()
   
       $rec = {
           name       => Account name
           ivec       => The IV for the encrypted record.  (Not v4)
           encrypted  => the encrypted information
       };
   
   =item PackRecord
   
   Reverses ParseRecord and then sends it through Palm::StdAppInfo::PackRecord()
   
   =back
   
 =head1 DEPENDENCIES  =head1 DEPENDENCIES
   
 Palm::StdAppInfo  Palm::StdAppInfo
Line 1548 
Line 1583 
   
 Crypt::CBC - For any encryption but None  Crypt::CBC - For any encryption but None
   
 Crypt::DES_EDE3  Crypt::DES_EDE3 - DES_EDE3 encryption
   
 Crytp::Rijndael - The AES encryption schemes  Crytp::Rijndael - AES encryption schemes
   
 =head1 THANKS  =head1 THANKS
   
Line 1566 
Line 1601 
 as giving me some very helpful hints about doing a few things that I was  as giving me some very helpful hints about doing a few things that I was
 unsure of.  He is really great.  unsure of.  He is really great.
   
   And finally,
   thanks to Jochen Hoenicke E<lt>hoenicke@gmail.comE<gt>
   (one of the authors of Palm Keyring)
   for getting me started on the v5 support as well as providing help
   and some subroutines.
   
 =head1 BUGS AND LIMITATIONS  =head1 BUGS AND LIMITATIONS
   
   I am sure there are problems with this module.  For example, I have
   not done very extensive testing of the v5 databases.
   
   I am not sure I am 'require module' the best way, but I don't want to
   depend on modules that you don't need to use.
   
   I am not very happy with the data structures used by Encrypt() and
   Decrypt() for v5 databases, but I am not sure of a better way.
   
   The v4 compatibility mode does not insert a fake record 0 where
   normally the encrypted password is stored.
   
   The date validation for packing new dates is very poor.
   
   I have not gone through and standardized on how the module fails.  Some
   things fail with croak, some return undef, some may even fail silently.
   Nothing initializes a lasterr method or anything like that.  I need
   to fix all that before it is a 1.0 candidate.
   
 Please report any bugs or feature requests to  Please report any bugs or feature requests to
 C<bug-palm-keyring at rt.cpan.org>, or through the web interface at  C<bug-palm-keyring at rt.cpan.org>, or through the web interface at

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.45

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