Skip to content

Instantly share code, notes, and snippets.

@ritou
Last active October 25, 2015 09:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ritou/801c30f11f648f156074 to your computer and use it in GitHub Desktop.
Save ritou/801c30f11f648f156074 to your computer and use it in GitHub Desktop.
use Crypt::OpenSSL::CA;
use Crypt::OpenSSL::Bignum;
use Crypt::OpenSSL::RSA;
use MIME::Base64 qw/encode_base64url decode_base64url/;
use Data::Dumper;
# Crypt::OpenSSL::CA to n and e
my $rsa_pubkey = "-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5XxKc3Rz/8EakvZG+Ez9
nCpdn2HGVq0CRD1GZ/fEuM7nHfmy1LzC0VyNa8YkU7Qrb4s/BgSxjFrLvbpFHcUo
o+D3W5TvCR+8RLJLISmUoo4jMb2wDq35DEaJa3j1lGb7o93msFwlSRLwbmcYw08F
H3NEB1IQxkfAv6Z/ddzjDzV1nhbQO/RnO4v4JJ8wR4xxLmo00AJJ7fr8oL51aF9S
kjHU8cjvKFjGW4kcNxxm3+pMCzNtbJvUFQFeTQNBkWt9k83yKA5bhNwK1W4otRPs
l2bP0AyuJtA3tFdWSD1fvIA+l8rywrVom/RbDRUZkm1k+YgbyqyUgJbM5oJkGhwP
fwIDAQAB
-----END PUBLIC KEY-----";
my $ca_pubkey = Crypt::OpenSSL::CA::PublicKey->parse_RSA($rsa_pubkey);
my $n = Crypt::OpenSSL::Bignum->new_from_hex($ca_pubkey->get_modulus());
print Dumper(encode_base64url($n->to_bin()));
print Dumper($ca_pubkey->to_PEM());
# n and e to Crypt::OpenSSL::RSA
my $e = Crypt::OpenSSL::Bignum->new_from_bin(decode_base64url("AQAB"));
my $rsa_pubkey = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e);
print Dumper($rsa_pubkey->get_public_key_string());
print Dumper($rsa_pubkey->get_public_key_x509_string());
@ritou
Copy link
Author

ritou commented Oct 25, 2015

$VAR1 = '5XxKc3Rz_8EakvZG-Ez9nCpdn2HGVq0CRD1GZ_fEuM7nHfmy1LzC0VyNa8YkU7Qrb4s_BgSxjFrLvbpFHcUoo-D3W5TvCR-8RLJLISmUoo4jMb2wDq35DEaJa3j1lGb7o93msFwlSRLwbmcYw08FH3NEB1IQxkfAv6Z_ddzjDzV1nhbQO_RnO4v4JJ8wR4xxLmo00AJJ7fr8oL51aF9SkjHU8cjvKFjGW4kcNxxm3-pMCzNtbJvUFQFeTQNBkWt9k83yKA5bhNwK1W4otRPsl2bP0AyuJtA3tFdWSD1fvIA-l8rywrVom_RbDRUZkm1k-YgbyqyUgJbM5oJkGhwPfw';
$VAR1 = '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5XxKc3Rz/8EakvZG+Ez9
nCpdn2HGVq0CRD1GZ/fEuM7nHfmy1LzC0VyNa8YkU7Qrb4s/BgSxjFrLvbpFHcUo
o+D3W5TvCR+8RLJLISmUoo4jMb2wDq35DEaJa3j1lGb7o93msFwlSRLwbmcYw08F
H3NEB1IQxkfAv6Z/ddzjDzV1nhbQO/RnO4v4JJ8wR4xxLmo00AJJ7fr8oL51aF9S
kjHU8cjvKFjGW4kcNxxm3+pMCzNtbJvUFQFeTQNBkWt9k83yKA5bhNwK1W4otRPs
l2bP0AyuJtA3tFdWSD1fvIA+l8rywrVom/RbDRUZkm1k+YgbyqyUgJbM5oJkGhwP
fwIDAQAB
-----END PUBLIC KEY-----
';
$VAR1 = '-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA5XxKc3Rz/8EakvZG+Ez9nCpdn2HGVq0CRD1GZ/fEuM7nHfmy1LzC
0VyNa8YkU7Qrb4s/BgSxjFrLvbpFHcUoo+D3W5TvCR+8RLJLISmUoo4jMb2wDq35
DEaJa3j1lGb7o93msFwlSRLwbmcYw08FH3NEB1IQxkfAv6Z/ddzjDzV1nhbQO/Rn
O4v4JJ8wR4xxLmo00AJJ7fr8oL51aF9SkjHU8cjvKFjGW4kcNxxm3+pMCzNtbJvU
FQFeTQNBkWt9k83yKA5bhNwK1W4otRPsl2bP0AyuJtA3tFdWSD1fvIA+l8rywrVo
m/RbDRUZkm1k+YgbyqyUgJbM5oJkGhwPfwIDAQAB
-----END RSA PUBLIC KEY-----
';
$VAR1 = '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5XxKc3Rz/8EakvZG+Ez9
nCpdn2HGVq0CRD1GZ/fEuM7nHfmy1LzC0VyNa8YkU7Qrb4s/BgSxjFrLvbpFHcUo
o+D3W5TvCR+8RLJLISmUoo4jMb2wDq35DEaJa3j1lGb7o93msFwlSRLwbmcYw08F
H3NEB1IQxkfAv6Z/ddzjDzV1nhbQO/RnO4v4JJ8wR4xxLmo00AJJ7fr8oL51aF9S
kjHU8cjvKFjGW4kcNxxm3+pMCzNtbJvUFQFeTQNBkWt9k83yKA5bhNwK1W4otRPs
l2bP0AyuJtA3tFdWSD1fvIA+l8rywrVom/RbDRUZkm1k+YgbyqyUgJbM5oJkGhwP
fwIDAQAB
-----END PUBLIC KEY-----
';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment