Your code is exporting just a sequence containing the modulus and public
exponent. The openssl rsa utility expects a sequence containing an
algorithm identifier and a bit string, where the bit string contains that
sequence with the modulus and exponent.

You could convince yourself of this using the openssl command line
asn1parse utility on the public key your code exports:
openssl asn1parse -in pub.pem -inform pem
Compare that to the public key you get when you run
openssl rsa -in priv.pem -pubout |openssl asn1parse -inform pem

followed by
openssl rsa -in priv.pem -pubout |openssl asn1parse -inform pem -strparse 17

The way to get crypto++ to export what openssl expects here is to replace
pub.DEREncodePublicKey(queue);
with
pub.DEREncode(queue);


On Tue, Jul 8, 2014 at 5:26 PM, Tor Krill <[email protected]> wrote:

> Hi,
>
> I'm trying to export an RSA key pair in PEM format to be able to use these
> keys in other contexts including with openssl.
>
> The export of the public key unfortunately ends up being unrecognized by
> openssl. (The private one seems to work fine)
>
> Example code is here, http://pastebin.com/qw8wxx4L
>
> When i run:
>
> openssl rsa  -pubin -inform PEM -in pub.pem -noout -text
>
> to check i get:
>
> unable to load Public Key
> 139875126281920:error:0D0680A8:asn1 encoding
> routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
> 139875126281920:error:0D07803A:asn1 encoding
> routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=X509_ALGOR
> 139875126281920:error:0D08303A:asn1 encoding
> routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1
> error:tasn_dec.c:751:Field=algor, Type=X509_PUBKEY
> 139875126281920:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1
> lib:pem_oth.c:83:
>
> Am i missing anything here? It is more or less cut & paste from the
> examples.
>
> I run Crypto++ 5.6.1(-6) on an 64 bit Ubuntu 13.10 system
>
> /Tor
>
> --
> --
> You received this message because you are subscribed to the "Crypto++
> Users" Google Group.
> To unsubscribe, send an email to
> [email protected].
> More information about Crypto++ and this group is available at
> http://www.cryptopp.com.
> ---
> You received this message because you are subscribed to the Google Groups
> "Crypto++ Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to