Alt-Crypt-RSA-BigInt
view release on metacpan or search on metacpan
Changes.old view on Meta::CPAN
118119120121122123124125126127128129130131132133134135136137138
hash of Makefile.PL.
* ::Key loads ::Key::Private and ::Key::Public by
default
.
1.42 May 24, 2001
* Speed optimizations throughout.
* Documented Crypt::RSA and Crypt::RSA::Key.
* ::Key::Private::
read
() will call reveal()
if
the password is provided
at construction.
* Added support
for
unencrypted
keys
to ::Key::Private.
* ::Key::Private does not convert pari2pv at every STORE().
Tie::EncryptedHash is created explicitely at hide().
* Put together ::Key::Private::SSH from Benjamin Trott's patches and
wrote ::Key::Public::SSH. ::Key::Private::SSH's CBC encryption is
not compatible
with
SSH yet.
lib/Crypt/RSA/Key/Private.pm view on Meta::CPAN
707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111}
sub
hide {
my
(
$self
) =
@_
;
return
unless
$$self
{Password};
$self
->{private_encrypted} = new Tie::EncryptedHash
__password
=>
$self
->{Password},
__cipher
=>
$self
->{Cipher};
for
(
keys
%{
$$self
{private}}) {
$$self
{private_encrypted}{
$_
} =
$$self
{private}{
$_
}->bstr;
}
my
$private
=
$self
->{private_encrypted};
delete
$private
->{__password};
delete
$$self
{private};
delete
$$self
{Password};
# Mark ourselves as hidden
$self
->{Hidden} = 1;
}
sub
reveal {
my
(
$self
,
%params
) =
@_
;
$$self
{Password} =
$params
{Password}
if
$params
{Password};
return
unless
$$self
{Password};
$$self
{private_encrypted}{__password} =
$params
{Password};
for
(
keys
%{
$$self
{private_encrypted}}) {
$$self
{private}{
$_
} = Math::BigInt->new(
"$$self{private_encrypted}{$_}"
);
}
$self
->{Hidden} = 0;
}
sub
check {
lib/Crypt/RSA/Key/Private.pm view on Meta::CPAN
154155156157158159160161162163164165166167168169170171172173
$self
->Checked(1);
return
1;
}
sub
DESTROY {
my
$self
=
shift
;
delete
$$self
{private_encrypted}{__password};
delete
$$self
{private_encrypted};
delete
$$self
{private};
delete
$$self
{Password};
undef
$self
;
}
sub
write
{
lib/Crypt/RSA/Key/Private.pm view on Meta::CPAN
296297298299300301302303304305306307308309310311312313314315316317318319320321322323=back
=item B<reveal()>
If the key is not decrypted at C<new()>, it can be decrypted by
calling C<reveal()> with a C<Password> argument.
=item B<hide()>
C<hide()> causes the key to be encrypted by the chosen symmetric cipher
and password.
=item B<write()>
Causes the key to be written to a disk file specified by the
C<Filename> argument. C<write()> will call C<hide()> before
writing the key to disk. If you wish to store the key in plain,
don't specify a password at C<new()>.
=item B<read()>
Causes the key to be read from a disk file specified by
C<Filename> into the object. If C<Password> is provided, the
method automatically calls reveal() to decrypt the key.
=item B<serialize()>
Creates a Data::Dumper(3) serialization of the private key and
lib/Crypt/RSA/Key/Private/SSH.pm view on Meta::CPAN
165166167168169170171172173174175176177178179180181182183184
#$key->{Password} = $passphrase unless defined $key->{Password};
$key
;
}
sub
serialize {
my
(
$key
,
%params
) =
@_
;
# We could reveal it, but (1) what if it was hidden with a different
# password, and (2) they may not want to revealed (even if hidden after).
croak
"Cowardly refusing to serialize a hidden key"
if
$key
->{Hidden};
my
$passphrase
=
defined
$params
{Password} ?
$params
{Password}
:
defined
$key
->Password ?
$key
->Password
:
''
;
my
$cipher_name
=
defined
$params
{Cipher} ?
$params
{Cipher}
:
defined
$key
->Cipher ?
$key
->Cipher
:
'Blowfish'
;
t/18-private-ssh.t view on Meta::CPAN
28293031323334353637383940414243
my
$s
=
$pri
->serialize(
Cipher
=>
$cipher
,
Password
=>
'serpent'
);
my
(
$newpub
,
$newpri
) =
$obj
->generate(
Size
=> 128,
KF
=>
'SSH'
, );
# Do it incorrectly first. Should croak.
eval
{
$newpri
->deserialize(
String
=>
$s
,
Password
=>
"mst"
); };
like($@,
qr/passphrase/
i,
"Bad passphrase will croak"
);
$newpri
->deserialize(
String
=>
$s
,
Password
=>
"serpent"
);
# newpri should have no password assigned
$newpri
->{Password} =
'guess'
;
is_deeply(
$newpri
,
$pri
,
"private key fully deserialized using $cipher"
);
}
( run in 0.404 second using v1.01-cache-2.11-cpan-cba739cd03b )