Mojo-ACME
view release on metacpan or search on metacpan
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 )