кажется, что есть два формата открытого ключа RSA, с разной кодировкой.
A. RSA_PUBKEY
RSA* rsaPubKey = PEM_read_bio_RSA_PUBKEY( bio, NULL, 0, pass ) ;
читать PUBKEY
с этим форматом
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----
генерируется
openssl rsa -in key.pri -pubout -out key.pub1
B. RSAPublicKey
RSA* rsaPubKey = PEM_read_bio_RSAPublicKey( bio, NULL, 0, pass ) ;
читать PublicKey
с этим форматом
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
генерируется
openssl rsa -in key.pri -RSAPublicKey_out -out key.pub2
конвертировать A в B формат
openssl rsa -in key.pub1 -pubin -pubout -out key.pub2