view release on metacpan or search on metacpan
lib/WWW/LetsEncrypt/JWK.pm view on Meta::CPAN
Scalar string that is the PKCS#1 representation of the RSA private key.
=item load_cert
This function, when implemented, should accept a private key string as a parameter and return new JSON Web Key.
Input
{
private_key => $scalar string of the private key to use,
}
Output
JWK Object
=item load_parameters
This function, when implemented, should accept a private key as per the serialized parameters from JWK and return new JSON Web Key.
lib/WWW/LetsEncrypt/JWK/RSA.pm view on Meta::CPAN
my ($key_length) = @_;
confess 'Invalid key length' if $key_length < 2048 || $key_length > 4096;
my $RSA = Crypt::OpenSSL::RSA->generate_key($key_length);
return _new_from_object($RSA);
}
sub get_privatekey_string {
my ($self) = @_;
return $self->_RefObj->get_private_key_string();
}
sub load_cert {
my ($args_ref) = @_;
my $private_key = $args_ref->{private_key};
my $alg = $args_ref->{alg};
confess 'Private Key must be provided' if !$private_key;
my $RSA = Crypt::OpenSSL::RSA->new_private_key($private_key);
confess 'Cannot load key.' if !$RSA;
return _new_from_object($RSA, $alg);
}
sub load_parameters {
my ($args_ref) = @_;
my $parameters = $args_ref->{parameters};
my $alg = $args_ref->{alg};
t/WWW-LetsEncrypt-Message-Authorization/01_process_step.t view on Meta::CPAN
use Test2::Bundle::Extended;
use Test2::Tools::Subtest qw/subtest_buffered/;
use HTTP::Response;
use HTTP::Headers;
use JSON;
use WWW::LetsEncrypt::JWK::RSA;
use WWW::LetsEncrypt::Message::Authorization;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
xAmM2R7quHBFED3xhBRG5e2IzsUt3WjKkOtSdaaz+o5LzipgCB/dZ4q3pXsCQQDM
8jh9/j5kcY2yyS6YbZBHDMnCV02z445LTmq+0o04tJxD4Jk+2uvZHm/LUTjS7zMK
blCkcHcfqVpUFk+6oZ+FAkA6ytcHSHmzRDsMe5aQuD2SJhZ/XtA5vXYFKf5SXGni
Jwd0k2SrxvrrIE9ieWlbHzV1Acw1AL1jSZ6sVZcXEkZi
-----END RSA PRIVATE KEY-----
END
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my $Message;
sub _reset_data {
$Message = WWW::LetsEncrypt::Message::Authorization->new({
JWK => $JWK,
t/WWW-LetsEncrypt-Message-Authorization/02_submit_challenge.t view on Meta::CPAN
use Test2::Bundle::Extended;
use Test2::Tools::Subtest qw/subtest_buffered/;
use HTTP::Response;
use HTTP::Headers;
use JSON;
use WWW::LetsEncrypt::JWK::RSA;
use WWW::LetsEncrypt::Message::Authorization;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
xAmM2R7quHBFED3xhBRG5e2IzsUt3WjKkOtSdaaz+o5LzipgCB/dZ4q3pXsCQQDM
8jh9/j5kcY2yyS6YbZBHDMnCV02z445LTmq+0o04tJxD4Jk+2uvZHm/LUTjS7zMK
blCkcHcfqVpUFk+6oZ+FAkA6ytcHSHmzRDsMe5aQuD2SJhZ/XtA5vXYFKf5SXGni
Jwd0k2SrxvrrIE9ieWlbHzV1Acw1AL1jSZ6sVZcXEkZi
-----END RSA PRIVATE KEY-----
END
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my $Message;
sub _reset_data {
$Message = WWW::LetsEncrypt::Message::Authorization->new({
JWK => $JWK,
t/WWW-LetsEncrypt-Message-Authorization/03__create_key_auth_token.t view on Meta::CPAN
use strict;
use warnings;
use Test2::Bundle::Extended;
use Test2::Tools::Subtest qw/subtest_buffered/;
use WWW::LetsEncrypt::JWK::RSA;
use WWW::LetsEncrypt::Message::Authorization;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
xAmM2R7quHBFED3xhBRG5e2IzsUt3WjKkOtSdaaz+o5LzipgCB/dZ4q3pXsCQQDM
8jh9/j5kcY2yyS6YbZBHDMnCV02z445LTmq+0o04tJxD4Jk+2uvZHm/LUTjS7zMK
blCkcHcfqVpUFk+6oZ+FAkA6ytcHSHmzRDsMe5aQuD2SJhZ/XtA5vXYFKf5SXGni
Jwd0k2SrxvrrIE9ieWlbHzV1Acw1AL1jSZ6sVZcXEkZi
-----END RSA PRIVATE KEY-----
END
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my $AuthzMsg;
my $mock_domain = 'domain.tld';
my $mock_token = 'PREDICTABLE_TOKEN';
sub _reset_data {
$AuthzMsg = WWW::LetsEncrypt::Message::Authorization->new({
t/WWW-LetsEncrypt-Message-Certificate/01_submit_step.t view on Meta::CPAN
use Test2::Bundle::Extended;
use Test2::Tools::Subtest qw/subtest_buffered/;
use HTTP::Response;
use HTTP::Headers;
use JSON;
use WWW::LetsEncrypt::JWK::RSA;
use WWW::LetsEncrypt::Message::Certificate;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
xAmM2R7quHBFED3xhBRG5e2IzsUt3WjKkOtSdaaz+o5LzipgCB/dZ4q3pXsCQQDM
8jh9/j5kcY2yyS6YbZBHDMnCV02z445LTmq+0o04tJxD4Jk+2uvZHm/LUTjS7zMK
blCkcHcfqVpUFk+6oZ+FAkA6ytcHSHmzRDsMe5aQuD2SJhZ/XtA5vXYFKf5SXGni
Jwd0k2SrxvrrIE9ieWlbHzV1Acw1AL1jSZ6sVZcXEkZi
-----END RSA PRIVATE KEY-----
END
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my $Message;
sub _reset_data {
$Message = WWW::LetsEncrypt::Message::Certificate->new({
JWK => $JWK,
cert => 'DER encoding string',
t/WWW-LetsEncrypt-Message-Certificate/02_poll_step.t view on Meta::CPAN
use Test2::Bundle::Extended;
use Test2::Tools::Subtest qw/subtest_buffered/;
use HTTP::Response;
use HTTP::Headers;
use JSON;
use WWW::LetsEncrypt::JWK::RSA;
use WWW::LetsEncrypt::Message::Certificate;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
xAmM2R7quHBFED3xhBRG5e2IzsUt3WjKkOtSdaaz+o5LzipgCB/dZ4q3pXsCQQDM
8jh9/j5kcY2yyS6YbZBHDMnCV02z445LTmq+0o04tJxD4Jk+2uvZHm/LUTjS7zMK
blCkcHcfqVpUFk+6oZ+FAkA6ytcHSHmzRDsMe5aQuD2SJhZ/XtA5vXYFKf5SXGni
Jwd0k2SrxvrrIE9ieWlbHzV1Acw1AL1jSZ6sVZcXEkZi
-----END RSA PRIVATE KEY-----
END
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my $Message;
sub _reset_data {
$Message = WWW::LetsEncrypt::Message::Certificate->new({
JWK => $JWK,
cert => 'DER encoding string',
t/WWW-LetsEncrypt-Message-Registration/01__process_response.t view on Meta::CPAN
use Test2::Bundle::Extended;
use Test2::Tools::Subtest qw/subtest_buffered/;
use HTTP::Response;
use HTTP::Headers;
use JSON;
use WWW::LetsEncrypt::JWK::RSA;
use WWW::LetsEncrypt::Message::Registration;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
xAmM2R7quHBFED3xhBRG5e2IzsUt3WjKkOtSdaaz+o5LzipgCB/dZ4q3pXsCQQDM
8jh9/j5kcY2yyS6YbZBHDMnCV02z445LTmq+0o04tJxD4Jk+2uvZHm/LUTjS7zMK
blCkcHcfqVpUFk+6oZ+FAkA6ytcHSHmzRDsMe5aQuD2SJhZ/XtA5vXYFKf5SXGni
Jwd0k2SrxvrrIE9ieWlbHzV1Acw1AL1jSZ6sVZcXEkZi
-----END RSA PRIVATE KEY-----
END
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my $Message;
my $mock_contact_info = ['mailto:cert-admin@example.com', 'tel:+1205551212'];
sub _reset_data {
$Message = WWW::LetsEncrypt::Message::Registration->new({
JWK => $JWK,
t/WWW-LetsEncrypt-Message/01_new_nonce.t view on Meta::CPAN
use Test2::Tools::Exception qw/dies/;
use Test2::Tools::Mock qw/mock_obj/;
use Test2::Tools::Subtest qw/subtest_buffered/;
use HTTP::Headers;
use HTTP::Response;
use HTTP::Request;
use WWW::LetsEncrypt::Message;
use WWW::LetsEncrypt::JWK::RSA;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
xAmM2R7quHBFED3xhBRG5e2IzsUt3WjKkOtSdaaz+o5LzipgCB/dZ4q3pXsCQQDM
8jh9/j5kcY2yyS6YbZBHDMnCV02z445LTmq+0o04tJxD4Jk+2uvZHm/LUTjS7zMK
blCkcHcfqVpUFk+6oZ+FAkA6ytcHSHmzRDsMe5aQuD2SJhZ/XtA5vXYFKf5SXGni
Jwd0k2SrxvrrIE9ieWlbHzV1Acw1AL1jSZ6sVZcXEkZi
-----END RSA PRIVATE KEY-----
END
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my $Message;
sub _reset_data {
$Message = WWW::LetsEncrypt::Message->new({
JWK => $JWK,
});
t/WWW-LetsEncrypt-Message/02_handle_429.t view on Meta::CPAN
use Test2::Bundle::Extended;
use Test2::Mock;
use Test2::Tools::Subtest qw/subtest_buffered/;
use HTTP::Headers;
use HTTP::Response;
use HTTP::Request;
use WWW::LetsEncrypt::Message;
use WWW::LetsEncrypt::JWK::RSA;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
xAmM2R7quHBFED3xhBRG5e2IzsUt3WjKkOtSdaaz+o5LzipgCB/dZ4q3pXsCQQDM
8jh9/j5kcY2yyS6YbZBHDMnCV02z445LTmq+0o04tJxD4Jk+2uvZHm/LUTjS7zMK
blCkcHcfqVpUFk+6oZ+FAkA6ytcHSHmzRDsMe5aQuD2SJhZ/XtA5vXYFKf5SXGni
Jwd0k2SrxvrrIE9ieWlbHzV1Acw1AL1jSZ6sVZcXEkZi
-----END RSA PRIVATE KEY-----
END
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my ($Message, $retry_value);
sub _reset_data {
$Message = WWW::LetsEncrypt::Message->new({
JWK => $JWK,
});
t/WWW-LetsEncrypt/jwa_rsa.t view on Meta::CPAN
use Test2::Bundle::Extended;
use Test2::Tools::Exception qw/dies/;
use Test2::Tools::Subtest qw/subtest_buffered/;
use JSON;
use MIME::Base64;
use WWW::LetsEncrypt::JWK::RSA;
my $unsigned_message = 'A Test Message';
my $private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
t/WWW-LetsEncrypt/jwa_rsa.t view on Meta::CPAN
p => "4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdiYrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPGBY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc",
q => "uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxaewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc",
dp => "BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3QCLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0",
dq => "h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-kyNlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU",
qi => "IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2oy26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLUW0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U",
};
subtest_buffered loading_crt => sub {
my $signed_message = 'N1Pkf2+Hc7yNsmm4AOlTvs6dkyWFm+vCvRJ+l7GB5UoGKX0bucLs3jvQJlf/50NcxiE1qkVTj3UkHmN8D9YW650dgDAMidVe02k9DudCrSJsnSq5fHjJeAFJ35T0GeljU0/QvZpv05H1gGZYbJI4LygIqC8ThuCNeDeXd3bpmus=';
my $Obj = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $private_key,
});
is($signed_message, encode_base64($Obj->sign($unsigned_message), ''), 'Created a matching signature');
};
subtest_buffered loading_params => sub {
my $signed_message = "TUrc6KccqGMKt+oUOHgMKV6huE2orV4qC64rMXqwVu1AR+P2aN5LOLL+PH1zNhfHZIo3miwRJ6BwpNn5YIE6KmOHMs2gTVySzgJ9KUDm3j2Rf9kAFVlUHMPR1Pn9knhbjYwQlvVvh1XVYCag3WeSSfukQuHt+hEiSj2ZxcUGmS143NAWJWMPGvQvyfs4ljKJcB8zTbbq4vWRUg6e6tcCSJ0r+aC8+pAvcIs...
my $Obj = WWW::LetsEncrypt::JWK::RSA::load_parameters({
parameters => $rsa_serialized_key,
});
is(encode_base64($Obj->sign($unsigned_message), ''), $signed_message, 'Created a matching signature');
t/WWW-LetsEncrypt/jwa_rsa.t view on Meta::CPAN
},
$test_serialized_output,
'Properly serialized the public key.'
);
};
subtest_buffered hashing_modes => sub {
my $Obj;
for my $alg (qw(RS256 RS384 RS512)) {
my $Obj = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $private_key,
alg => $alg,
});
is($Obj->alg, $alg, 'Properly set algorihtm');
}
for my $alg (qw(HS256 RS1000 RS1024)) {
ok(
dies {
WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $private_key,
alg => $alg,
});
},
"Properly died when passed an invalid or mismatched ($alg)."
);
}
};
subtest_buffered missing_parameters => sub {
my %cert_hash = (
private_key => $private_key,
);
for my $removed_item (keys %cert_hash) {
my %testing_hash = %cert_hash;
delete $testing_hash{$removed_item};
ok(
dies {
WWW::LetsEncrypt::JWK::RSA::load_cert(\%testing_hash);
},
"Shouldn't create object when $removed_item is missing."
t/WWW-LetsEncrypt/jwa_rsa.t view on Meta::CPAN
dies {
WWW::LetsEncrypt::JWK::RSA::load_parameters(\%testing_hash);
},
"Shouldn't create object when $removed_item is missing."
);
}
};
subtest_buffered thumbprint_output => sub {
my $Obj = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $private_key,
});
is($Obj->thumbprint, 'i-0IIn3UqonpV2r6_bOeVnizN97F4zwG38DeBfMeJv8', 'Generated the correct thumbprint.');
};
subtest_buffered private_key_output => sub {
my $Obj = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $private_key,
});
is($Obj->get_privatekey_string(), $private_key, 'Correctly exported private key');
};
done_testing;
t/WWW-LetsEncrypt/jws.t view on Meta::CPAN
use warnings;
use Test2::Bundle::Extended;
use Test2::Tools::Subtest qw/subtest_buffered/;
use JSON;
use MIME::Base64 qw(decode_base64url);
use WWW::LetsEncrypt::JWK::RSA;
use WWW::LetsEncrypt::JWS;
my $rsa_private_key =<<'END';
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDq3D0BY8g9gQ/C1kByAcXgZBGo3Ww/RnFNkEA8hdtq8UVIpK6I
eUgpTIdI83OH7OTz7yNU6FXuchIKfsoKZNKq7LQsYaK4OxJqDrpsoTy5dq9cXFCP
11sxXJCy5uMtyXy+trFbBEjsbhqgOTYiTVy6yPqAc7pEGd6ZA2j3ECruhQIDAQAB
AoGAZK2wwS3DIwp2dTFfQwAbkUuUfm0dACr0WymhP9Cp9Lgk2TUvVHWZR4r024Lx
Xa1hoGg9HyLR43um3DTp63a5D5YuiVTJPJ5ldwzg9bXg7TyZF31hCWNjW/aIHdbk
IojfGkxRNSLJnxUqqUL4u+sD/TvMDoD5n2m/xWNE+0/fhykCQQD/Vue4EBQexj+z
KyytAqZbOffEFDbg12+AT0pHLE2hNeAu9TQXktYLVqcG2mMhxp9iR5mf9P+CGU0g
8q6rYCAnAkEA63fFaBrpS1DorF33HwMiv4ycNi7WDWEw9UbtZg1bM0BVj1bPdxVP
0oVLnIQty6KSAiRwERhQR88SmG49j4C7cwJBAIuSBmE/MLBNr14RWH9Ndn9hJUSh
t/WWW-LetsEncrypt/jws.t view on Meta::CPAN
END
subtest_buffered serializing => sub {
my $payload = {
a => 'b',
b => 'c',
c => 'd',
};
my $JWK = WWW::LetsEncrypt::JWK::RSA::load_cert({
private_key => $rsa_private_key,
key_id => 1,
alg => 'RS256',
});
my $JWS = WWW::LetsEncrypt::JWS->new({
payload => $payload,
jwk => $JWK,
});
my $jws_ref = decode_json($JWS->serialize());