=================================================================== RCS file: /cvs/palm/Palm-Keyring/lib/Palm/Keyring.pm,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- palm/Palm-Keyring/lib/Palm/Keyring.pm 2007/02/19 02:55:35 1.31 +++ palm/Palm-Keyring/lib/Palm/Keyring.pm 2007/02/19 03:33:56 1.32 @@ -1,5 +1,5 @@ package Palm::Keyring; -# $RedRiver: Keyring.pm,v 1.30 2007/02/19 01:37:10 andrew Exp $ +# $RedRiver: Keyring.pm,v 1.31 2007/02/19 02:55:35 andrew Exp $ ######################################################################## # Keyring.pm *** Perl class for Keyring for Palm OS databases. # @@ -16,17 +16,9 @@ use warnings; use Carp; -use Data::Dumper; use base qw/ Palm::StdAppInfo /; -use Digest::HMAC_SHA1 qw(hmac_sha1); -use Digest::SHA1 qw(sha1); -use Crypt::CBC; - -use Digest::MD5 qw(md5); -use Crypt::DES; - my $ENCRYPT = 1; my $DECRYPT = 0; my $MD5_CBLOCK = 64; @@ -392,6 +384,8 @@ sub _encrypt_v4 { + require Crypt::CBC; + my $new = shift; my $old = shift; my $digest = shift; @@ -639,6 +633,7 @@ sub _decrypt_v5 { + require Crypt::CBC; my $encrypted = shift; my $key = shift; my $cipher = shift; @@ -776,6 +771,9 @@ sub _password_verify_v4 { + require Digest::MD5; + import Digest::MD5 qw(md5); + my $pass = shift; my $data = shift; @@ -876,6 +874,9 @@ sub _password_update_v4 { + require Digest::MD5; + import Digest::MD5 qw(md5); + my $pass = shift; if (! defined $pass) { croak('No password specified!'); }; @@ -953,6 +954,11 @@ { my ($pass, $salt, $iter, $keylen, $dop) = @_; + require Digest::HMAC_SHA1; + import Digest::HMAC_SHA1 qw(hmac_sha1); + require Digest::SHA1; + import Digest::SHA1 qw(sha1); + my $key = _pbkdf2( $pass, $salt, $iter, $keylen, \&hmac_sha1 ); if ($dop) { $key = DES_odd_parity($key); } @@ -963,6 +969,8 @@ sub _crypt3des { + require Crypt::DES; + my ( $plaintext, $passphrase, $flag ) = @_; $passphrase .= $SPACE x ( 16 * 3 );