Last active
December 13, 2015 20:09
-
-
Save ritou/4968015 to your computer and use it in GitHub Desktop.
openssl-rsa-pubkey-handling.pl This is RSA Public key Handling.
1. X.509 Cert to Public Key.
2. Modulus, Exponent to Public Key
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl | |
use strict; | |
use warnings; | |
use Crypt::OpenSSL::CA; | |
use Crypt::OpenSSL::RSA; | |
use Crypt::OpenSSL::Bignum; | |
use MIME::Base64 qw(decode_base64); | |
my $cert = << "EOS"; | |
-----BEGIN CERTIFICATE----- | |
MIIDTDCCAjQCCQCQMxn30qKrhTANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJK | |
UDEOMAwGA1UECBMFQWtpdGExDzANBgNVBAcTBllva290ZTETMBEGA1UEChMKU2Vj | |
b25kQXV0aDEjMCEGA1UEAxMaMm5kYXV0aC5vcGVuaWRjb25uZWN0LmluZm8wHhcN | |
MTMwMTA1MDM1NDU0WhcNMTQwMTA1MDM1NDU0WjBoMQswCQYDVQQGEwJKUDEOMAwG | |
A1UECBMFQWtpdGExDzANBgNVBAcTBllva290ZTETMBEGA1UEChMKU2Vjb25kQXV0 | |
aDEjMCEGA1UEAxMaMm5kYXV0aC5vcGVuaWRjb25uZWN0LmluZm8wggEiMA0GCSqG | |
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuun7hfvzxUbPFa8B3HqY5b2FnIMAr3lxt | |
ZkQffX+jRbGYJ9DGEypVQ0xfH7Ilj5pJw4ixhQMAS3y3iparsYUM3+C6ympCGyOK | |
1n/YY8cLQIGyuUJSahnr9y3zlYpuywF3QVSpuWJ/RfYgUiFaSb4dZdcqQEOIm9eZ | |
fkAKHTOGLFLH6VgkCRtIVRbCbwmJMo6ezSqz8zJ0+Y+M2ghP0a8ApFig582kWeDI | |
Wd9w5R78I+wWTuFBR26hhXwCatjKOkwRbexmTUKHlpjk24+AhNTy7Wc4j41V/xZW | |
v9a+666yYgVMa7JInKH+H8wEqmNDLy69K3yWcDlnkIP91bvgtT5fAgMBAAEwDQYJ | |
KoZIhvcNAQELBQADggEBADiDlldPU20uSEaR+uA3iwEaXwBqTiJ4dDS/IHnnj8Kh | |
edPuWZjXRzWQvV+5yp5Sv8JrisMStLv6Cx8lCLUuIflkkIJa4VxqpWLhxy59YUyz | |
EPL+Kt0RZKeFIzOleaiXZ+LDSVbUuewsPeT+z0F1109FLGNSvJYIxtw+sY0Ey+Cy | |
qdCQCQnXUcdbimAsxFnQ1+BwkKiIDmOmplAuDAdL4oOpiyxovjBcmTx/NaNTajwr | |
OU6kk4p8tyT+mvqnU3NwfOv1a8jAE3BptLpi9v5UO1/WDmNZO2ejZS0KG6ccZsRA | |
7/GraFmoTCEM6Wy7bvvBiMKBEDmswzanqcR1eJYwx6A= | |
-----END CERTIFICATE----- | |
EOS | |
my $ca = Crypt::OpenSSL::CA::X509->parse($cert); | |
print "=== X.509 Cert to Public Key ===\n"; | |
print "X.509 Cert : \n".$cert; | |
print "Public Key : \n".$ca->get_public_key->to_PEM; | |
print "Modulus : \n".$ca->get_public_key->get_modulus()."\n"; | |
print "================================\n"; | |
print "\n"; | |
my $n = Crypt::OpenSSL::Bignum->new_from_hex($ca->get_public_key->get_modulus()); | |
# If you want to use Base64 encoded Modulus | |
# my $n = Crypt::OpenSSL::Bignum->new_from_bin(decode_base64("0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc 5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw")); | |
my $e = Crypt::OpenSSL::Bignum->new_from_hex("010001"); | |
# If you want to use Base64 encoded Exponent, | |
# my $e = Crypt::OpenSSL::Bignum->new_from_bin(decode_base64("AQAB")); | |
my $rsa_pubkey = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e); | |
print "=== Modulus, exponent to Public Key ===\n"; | |
print "Modulus : \n".$ca->get_public_key->get_modulus()."\n"; | |
print "Exponent : AQAB\n"; | |
print "Public Key : \n".$rsa_pubkey->get_public_key_x509_string(); | |
print "================================\n"; |
Author
ritou
commented
Feb 16, 2013
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment