|
|
|
|
@ -8,6 +8,7 @@ use parent qw(Template::Plugin);
|
|
|
|
|
use MIME::Base64 ();
|
|
|
|
|
use Data::Dumper ();
|
|
|
|
|
use Config::General ();
|
|
|
|
|
use Crypt::PK::RSA ();
|
|
|
|
|
|
|
|
|
|
sub new {
|
|
|
|
|
my ($class, $context, @params) = @_;
|
|
|
|
|
@ -38,6 +39,26 @@ sub get_ref {
|
|
|
|
|
return ref $params[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub get_private_key_pem {
|
|
|
|
|
my ($self, @params) = @_;
|
|
|
|
|
return unless $params[0];
|
|
|
|
|
return unless keys %{$params[0]};
|
|
|
|
|
my $pk = Crypt::PK::RSA->new();
|
|
|
|
|
$pk->import_key($params[0]);
|
|
|
|
|
die('not a private key: ' . Data::Dumper::Dumper($params[0])) unless $pk->is_private();
|
|
|
|
|
return $pk->export_key_pem('private');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub get_public_key_pem {
|
|
|
|
|
my ($self, @params) = @_;
|
|
|
|
|
return unless $params[0];
|
|
|
|
|
return unless keys %{$params[0]};
|
|
|
|
|
my $pk = Crypt::PK::RSA->new();
|
|
|
|
|
$pk->import_key($params[0]);
|
|
|
|
|
die('not a public key: ' . Data::Dumper::Dumper($params[0])) if $pk->is_private();
|
|
|
|
|
return $pk->export_key_pem('public');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
1;
|
|
|
|
|
|
|
|
|
|
__END__
|
|
|
|
|
@ -79,6 +100,14 @@ Serializes the given input object to string (Config::General syntax).
|
|
|
|
|
|
|
|
|
|
Get the variable type.
|
|
|
|
|
|
|
|
|
|
=item [% pem = Utils.get_private_key_pem(private key) %]
|
|
|
|
|
|
|
|
|
|
Converts the given RSA private key (JWK data structure) to .pem.
|
|
|
|
|
|
|
|
|
|
=item [% pem = Utils.get_public_key_pem(public key) %]
|
|
|
|
|
|
|
|
|
|
Converts the given RSA public key (JWK data structure) to .pem.
|
|
|
|
|
|
|
|
|
|
=back
|
|
|
|
|
|
|
|
|
|
=head1 AUTHOR
|
|
|
|
|
|