Crypt-MagicSignatures-Key
view release on metacpan or search on metacpan
t/14-object.t view on Meta::CPAN
stderr_like(
sub {
Crypt::MagicSignatures::Key->new( e => 3, n => 0 );
},
qr/Invalid/,
'Modulus not given'
);
stderr_like(
sub {
Crypt::MagicSignatures::Key->new( e => 3, n => Math::BigInt->bnan );
},
qr/n is not a number.*invalid/si,
'Modulus not given'
);
# https://github.com/eschnou/node-ostatus/blob/master/tests/test-salmon.js
my $test_public_key =<<'TEST_PKEY';
RSA.iuv17d7U1uJxgDbCt1nEtaIbKAmV02MWIQLubaW
Dc4juUBmdvbY1ms0EtFhrYLSK1j3kyqysM7vqjj-DYD
bq2NPQpUrq2DFqj7Y2b8PG4-Dj6KUPDmkVRa-ZFo63B
WX6US5Vsi31HHFh_rku1OPdPrHjQhtN8HeFYnNBpd4U
AA0=.AQAB
TEST_PKEY
ok(my $key1 = Crypt::MagicSignatures::Key->new($test_public_key), 'New public key');
ok(my $key2 = Crypt::MagicSignatures::Key->new($key1), 'Old public key based on other');
is($key1, $key2, 'Key was just returned');
# https://github.com/eschnou/node-ostatus/blob/master/tests/test-salmon.js
# Without exponent
$test_public_key =<<'TEST_PKEY';
RSA.iuv17d7U1uJxgDbCt1nEtaIbKAmV02MWIQLubaW
Dc4juUBmdvbY1ms0EtFhrYLSK1j3kyqysM7vqjj-DYD
bq2NPQpUrq2DFqj7Y2b8PG4-Dj6KUPDmkVRa-ZFo63B
WX6US5Vsi31HHFh_rku1OPdPrHjQhtN8HeFYnNBpd4U
AA0=.
TEST_PKEY
is($key1->e, '65537', 'Exponent set');
ok(my $key3 = Crypt::MagicSignatures::Key->new($test_public_key), 'New public key without e');
is($key3->e, '65537', 'Exponent default');
# https://github.com/eschnou/node-ostatus/blob/master/tests/test-salmon.js
# With broken exponent
$test_public_key =<<'TEST_PKEY';
RSA.iuv17d7U1uJxgDbCt1nEtaIbKAmV02MWIQLubaW
Dc4juUBmdvbY1ms0EtFhrYLSK1j3kyqysM7vqjj-DYD
bq2NPQpUrq2DFqj7Y2b8PG4-Dj6KUPDmkVRa-ZFo63B
WX6US5Vsi31HHFh_rku1OPdPrHjQhtN8HeFYnNBpd4U
AA0=.:::::=
TEST_PKEY
ok(my $key4 = Crypt::MagicSignatures::Key->new($test_public_key), 'New public key without e');
is($key4->e, '65537', 'Exponent default');
# Set e to nan:
stderr_like(
sub {
ok(!$key4->e(Math::BigInt->bnan), 'Set e to NaN');
},
qr/e is not a number/,
'Set e to NaN'
);
# Set d to nan:
stderr_like(
sub {
ok(!$key4->d(Math::BigInt->bnan), 'Set d to NaN');
},
qr/d is not a number/,
'Set d to NaN'
);
no strict 'refs';
# test rsasp1
stderr_like(
sub {
*{"${module}::_rsasp1"}->($key3, Math::BigInt->new($key3->n));
},
qr/Message representative out of range/,
'Out of range'
);
stderr_like(
sub {
*{"${module}::_rsasp1"}->($key3, Math::BigInt->new($key3->n+1));
},
qr/Message representative out of range/,
'Out of range'
);
done_testing;
__END__
( run in 1.023 second using v1.01-cache-2.11-cpan-2398b32b56e )