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 )