Mojo-ACME

 view release on metacpan or  search on metacpan

t/key.t  view on Meta::CPAN

use Mojo::Base -strict;

use Test::More;
use Mojo::Util;

use Mojo::ACME::Key;

subtest 'generated key' => sub {
  my $key = Mojo::ACME::Key->new;
  isa_ok $key->key, 'Crypt::OpenSSL::RSA';
  is $key->generated, 1, 'key was generated';
  ok $key->key->is_private, 'generated key is a private key';
  isa_ok $key->pub, 'Crypt::OpenSSL::RSA';
  ok !$key->pub->is_private, 'generated key can created a related public key';
};

subtest 'pre-existing key' => sub {
  my $key = Mojo::ACME::Key->new(path => 't/test.key');
  isa_ok $key->key, 'Crypt::OpenSSL::RSA';
  is $key->generated, 0, 'key was not generated';
  ok $key->key->is_private, 'pre-existing key is a private key';
  isa_ok $key->pub, 'Crypt::OpenSSL::RSA';
  ok !$key->pub->is_private, 'pre-existing key can created a related public key';
  my $jwk = {
    "e" => "AQAB",
    "kty" => "RSA",
    "n" => "wQilzSWSTokWyJiaM96txR01X7Kr9iaxI3uuo_uquKZbySvwQE-8Qu_YKQHrssHYnZtJm5rJ3tdWcVJO9OBYlIDGz03L96jkEa_s8p3IuC2A6CCOWPUXWUx4lXvWQS2apvifoku5CE8YJ813-gh1KaGKzbQtFYtjPUKZvbE4yrkzysCZJbEYABqePutVwizQI_nA-9Fuv7S57_wF2T2L6rX_2yccDxkK2MN__NhHFbFj94...
  };
  is_deeply $key->jwk, $jwk, 'jwk is as previously computed';
  is $key->thumbprint, 'oIePSSg18GEOJIadc6j-HOC0ZC-gdXPHCzP077RQX2o', 'thumbprint is as previously computed';
  my $sig = 'tOZ3Q3UOjkoBKA/SITPG7EiSciziz8AiNqYCLN6cR5KKxHFDVNCbY5CRgbVl0Yl1xY1F+8i29+NOMYhqnG0NvTyCc3XvEqb6s1N8KfH/wMMaqWlg36/ocfWMLFgnRMFpEd3y+OYOs5i5m9vHwZkZ+n+sovIkx/p396ZFIl4Y9rxEtRIAq/E0QKf5iMvMJEekie8AGV02zVVAa/C+Bq2Cc446+VjZDomJhqVB0qN9toA/2...
  is Mojo::Util::encode_base64($key->sign('abc123'), ''), $sig, 'signed value is as previously computed';

  # check clone
  my $clone = $key->key_clone;
  isa_ok $clone, 'Crypt::OpenSSL::RSA';
  isnt $key->pub, $clone, 'clone is not the same object';
  is $key->key->get_private_key_string, $clone->get_private_key_string, 'key strings are equivalent';
};

done_testing;



( run in 2.302 seconds using v1.01-cache-2.11-cpan-98e64b0badf )