The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test;

use Crypt::OpenSSL::RSA;

BEGIN { plan tests => 10 }

my $PRIVATE_KEY_STRING = <<EOF;
-----BEGIN RSA PRIVATE KEY-----
MBsCAQACAU0CAQcCASsCAQcCAQsCAQECAQMCAQI=
-----END RSA PRIVATE KEY-----
EOF

my $PUBLIC_KEY_PKCS1_STRING = <<EOF;
-----BEGIN RSA PUBLIC KEY-----
MAYCAU0CAQc=
-----END RSA PUBLIC KEY-----
EOF

my $PUBLIC_KEY_X509_STRING = <<EOF;
-----BEGIN PUBLIC KEY-----
MBowDQYJKoZIhvcNAQEBBQADCQAwBgIBTQIBBw==
-----END PUBLIC KEY-----
EOF

my ($private_key, $public_key);

ok($private_key = Crypt::OpenSSL::RSA->new_private_key($PRIVATE_KEY_STRING));
ok($PRIVATE_KEY_STRING eq $private_key->get_private_key_string());
ok($PUBLIC_KEY_PKCS1_STRING eq $private_key->get_public_key_string());
ok($PUBLIC_KEY_X509_STRING eq $private_key->get_public_key_x509_string());

ok($public_key = Crypt::OpenSSL::RSA->new_public_key($PUBLIC_KEY_PKCS1_STRING));
ok($PUBLIC_KEY_PKCS1_STRING eq $public_key->get_public_key_string());
ok($PUBLIC_KEY_X509_STRING eq $public_key->get_public_key_x509_string());

ok($public_key = Crypt::OpenSSL::RSA->new_public_key($PUBLIC_KEY_X509_STRING));
ok($PUBLIC_KEY_PKCS1_STRING eq $public_key->get_public_key_string());
ok($PUBLIC_KEY_X509_STRING eq $public_key->get_public_key_x509_string());