In case anyone else is looking for a way to convert Crypt::RSA keys, or for a way to generate an RSA key given its integer elements, here is the solution I eventually came up with:
use Crypt::RSA;
use Crypt::OpenSSL::RSA;
use Crypt::OpenSSL::Bignum;
$key = new Crypt::RSA::Key::Private (
Filename => 'private.key'
Password => 'secret-word'
);
$n = Crypt::OpenSSL::Bignum->new_from_decimal($key->{private}->{_n});
$e = Crypt::OpenSSL::Bignum->new_from_decimal($key->{private}->{_e});
$d = Crypt::OpenSSL::Bignum->new_from_decimal($key->{private}->{_d});
$p = Crypt::OpenSSL::Bignum->new_from_decimal($key->{private}->{_p});
$q = Crypt::OpenSSL::Bignum->new_from_decimal($key->{private}->{_q});
$rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, $d, $p, $q
+);
print $rsa->get_private_key_string();
|