[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.22 and 1.25

version 1.22, 2007/02/01 01:56:11 version 1.25, 2007/02/03 01:12:21
Line 1 
Line 1 
 package Palm::Keyring;  package Palm::Keyring;
   
 # $RedRiver: Keyring.pm,v 1.21 2007/01/31 05:32:20 andrew Exp $  # $RedRiver: Keyring.pm,v 1.24 2007/02/03 00:52:43 andrew Exp $
 #  #
 # Perl class for dealing with Keyring for Palm OS databases.  # Perl class for dealing with Keyring for Palm OS databases.
 #  #
Line 14 
Line 14 
   
 use Digest::MD5 qw(md5);  use Digest::MD5 qw(md5);
 use Crypt::DES;  use Crypt::DES;
 use Readonly;  
   
 Readonly my $ENCRYPT    => 1;  my $ENCRYPT    = 1;
 Readonly my $DECRYPT    => 0;  my $DECRYPT    = 0;
 Readonly my $MD5_CBLOCK => 64;  my $MD5_CBLOCK = 64;
 Readonly my $kSalt_Size => 4;  my $kSalt_Size = 4;
 Readonly my $EMPTY      => q{};  my $EMPTY      = q{};
 Readonly my $SPACE      => q{ };  my $SPACE      = q{ };
 Readonly my $NULL       => chr 0;  my $NULL       = chr 0;
   
 # One liner, to allow MakeMaker to work.  our $VERSION = 0.93;
 our $VERSION = 0.92;  
   
 sub new {  sub new {
     my $classname = shift;      my $classname = shift;
Line 87 
Line 85 
     my $self = shift;      my $self = shift;
     my $rec  = shift;      my $rec  = shift;
   
     my $rec0_id = $self->{'records'}->[0]->{'id'};      if ($rec->{'encrypted'}) {
   
     if ($rec->{'encrypted'} && ! $rec->{'id'} == $rec0_id) {  
         if (! defined $rec->{'name'}) {          if (! defined $rec->{'name'}) {
             $rec->{'name'} = $EMPTY;              $rec->{'name'} = $EMPTY;
         }          }
Line 252 
Line 248 
   
 sub Password {  sub Password {
     my $self = shift;      my $self = shift;
     my $pass = shift || $self->{'password'};      my $pass = shift;
     my $new_pass = shift;      my $new_pass = shift;
   
       if (! $pass) {
           delete $self->{password};
           return 1;
       }
   
     if (! exists $self->{'records'}) {      if (! exists $self->{'records'}) {
         # Give the PDB the first record that will hold the encrypted password          # Give the PDB the first record that will hold the encrypted password
         $self->{'records'} = [ $self->new_Record ];          $self->{'records'} = [ $self->new_Record ];
Line 493 
Line 494 
 Use this method if you're creating a Keyring PDB from scratch otherwise you  Use this method if you're creating a Keyring PDB from scratch otherwise you
 can just use Palm::PDB::new() before calling Load().  can just use Palm::PDB::new() before calling Load().
   
   If you pass in a password, it will initalize the first record with the encrypted
   password.
   
 =head2 Encrypt  =head2 Encrypt
   
     $pdb->Encrypt($rec, $acct, [$password]);      $pdb->Encrypt($rec, $acct[, $password]);
   
 Encrypts an account into a record, either with the password previously  Encrypts an account into a record, either with the password previously
 used, or with a password that is passed.  used, or with a password that is passed.
   
 $rec is a record from $pdb->{'records'} or a newly generated record.  $rec is a record from $pdb->{'records'} or a new_Record().
 $acct is a hashref in the format below.  $acct is a hashref in the format below.
   
     my $acct = {      my $acct = {
Line 516 
Line 520 
     };      };
   
 If you have changed anything other than the lastchange, or don't pass in a  If you have changed anything other than the lastchange, or don't pass in a
 lastchange record, Encrypt() will generate a new lastchange for you.  lastchange key, Encrypt() will generate a new lastchange date for you.
   
 If you pass in a lastchange field that is different than the one in the  If you pass in a lastchange field that is different than the one in the
 record, it will honor what you passed in.  record, it will honor what you passed in.
   
 It also only uses the $acct->{'name'} if there is not already a $rec->{'name'}.  Encrypt() only uses the $acct->{'name'} if there is not already a $rec->{'name'}.
   
 =head2 Decrypt  =head2 Decrypt
   
Line 548 
Line 552 
 called new(), you only need to pass one password and it will set that as  called new(), you only need to pass one password and it will set that as
 the password.  the password.
   
 If nothing is passed, and there has been a password used before,  If nothing is passed, it forgets the password that it was remembering.
 it just verifies that the password was correct.  
   
 =head1 DEPENDENCIES  =head1 DEPENDENCIES
   
Line 561 
Line 564 
   
 Readonly  Readonly
   
   =head1 THANKS
   
   I would like to thank the helpful Perlmonk shigetsu who gave me some great advice
   and helped me get my first module posted.  L<http://perlmonks.org/?node_id=596998>
   
   I would also like to thank
   Johan Vromans
   E<lt>jvromans@squirrel.nlE<gt> --
   L<http://www.squirrel.nl/people/jvromans>.
   He had his own Palm::KeyRing module that he posted a couple of days before
   mine was ready and he was kind enough to let me have the namespace as well
   as giving me some very helpful hints about doing a few things that I was
   unsure of.  He is really great.
   
 =head1 BUGS AND LIMITATIONS  =head1 BUGS AND LIMITATIONS
   
 Once this module is uploaded, you can  
 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
 L<http://rt.cpan.org>.  I will be notified, and then you'll automatically be  L<http://rt.cpan.org>.  I will be notified, and then you'll automatically be
Line 588 
Line 604 
   
 The Keyring for Palm OS website:  The Keyring for Palm OS website:
 L<http://gnukeyring.sourceforge.net/>  L<http://gnukeyring.sourceforge.net/>
   
   Johan Vromans also has a wxkeyring app that now uses this module, available
   from his website at L<http://www.vromans.org/johan/software/>

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.25

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