Crypt-OpenPGP
view release on metacpan or search on metacpan
lib/Crypt/OpenPGP/Cipher.pm view on Meta::CPAN
}
$ciph;
}
sub encrypt { $_[0]->{cipher}->encrypt($_[1]) }
sub decrypt { $_[0]->{cipher}->decrypt($_[1]) }
sub sync { $_[0]->{cipher}->sync }
sub alg { $_[0]->{__alg} }
sub alg_id {
return $_[0]->{__alg_id} if ref($_[0]);
$ALG_BY_NAME{$_[1]} || $_[1];
}
sub supported {
my $class = shift;
my %s;
for my $cid (keys %ALG) {
my $cipher = $class->new($cid);
$s{$cid} = $cipher->alg if $cipher;
}
\%s;
}
package Crypt::OpenPGP::Cipher::IDEA;
use strict;
use warnings;
use base qw( Crypt::OpenPGP::Cipher );
sub init {
my $ciph = shift;
my($key, $iv) = @_;
if ($key) {
my $c = IDEA->new(substr($key, 0, $ciph->keysize));
$ciph->{cipher} = Crypt::OpenPGP::CFB->new($c, $iv);
}
$ciph;
}
sub crypt_class { 'Crypt::IDEA' }
sub keysize { 16 }
sub blocksize { 8 }
package Crypt::OpenPGP::Cipher::Blowfish;
use strict;
use warnings;
use base qw( Crypt::OpenPGP::Cipher );
sub crypt_class { 'Crypt::Blowfish' }
sub keysize { 16 }
sub blocksize { 8 }
package Crypt::OpenPGP::Cipher::DES3;
use strict;
use warnings;
use base qw( Crypt::OpenPGP::Cipher );
sub crypt_class { 'Crypt::DES_EDE3' }
sub keysize { 24 }
sub blocksize { 8 }
package Crypt::OpenPGP::Cipher::CAST5;
use strict;
use warnings;
use base qw( Crypt::OpenPGP::Cipher );
sub crypt_class { ['Crypt::CAST5_PP', 'Crypt::CAST5'] }
sub keysize { 16 }
sub blocksize { 8 }
package Crypt::OpenPGP::Cipher::Twofish;
use strict;
use warnings;
use base qw( Crypt::OpenPGP::Cipher );
sub crypt_class { 'Crypt::Twofish' }
sub keysize { 32 }
sub blocksize { 16 }
package Crypt::OpenPGP::Cipher::Rijndael;
use strict;
use warnings;
use base qw( Crypt::OpenPGP::Cipher );
sub crypt_class { 'Crypt::Rijndael' }
sub keysize { 16 }
sub blocksize { 16 }
package Crypt::OpenPGP::Cipher::Rijndael192;
use strict;
use warnings;
use base qw( Crypt::OpenPGP::Cipher );
sub crypt_class { 'Crypt::Rijndael' }
sub keysize { 24 }
sub blocksize { 16 }
package Crypt::OpenPGP::Cipher::Rijndael256;
use strict;
use warnings;
use base qw( Crypt::OpenPGP::Cipher );
sub crypt_class { 'Crypt::Rijndael' }
sub keysize { 32 }
sub blocksize { 16 }
1;
__END__
=head1 NAME
Crypt::OpenPGP::Cipher - PGP symmetric cipher factory
( run in 2.711 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )