chap *pch = "-----BEGIN RSA PUBLIC KEY-----MIGfMa... и так далее...IDAQAB-----END RSA PUBLIC KEY-----\0";BIO *_bio_mem = NULL;
_bio_mem = BIO_new(BIO_s_mem());//можно и по другому... например BIO_new_mem_buf((void*)pch, strlen(pch)) - суть одна
long len = strlen(pch);
BIO_write(_bio_mem, (void*)pch, len);
char *nm = NULL, *header = NULL;
unsigned char *data = NULL;
long l;
int ret = PEM_read_bio(_bio_mem, &mn, &header, &data, &l);
assert(NULL != data);
//далее не идёт - данные не считываются
EVP_PKEY *key = NULL;
if(strcmp(nm, PEM_STRING_RSA) == 0)
key = d2i_PrivateKey(EVP_KEY_RSA, NULL, &data, l);
else
if(strcmp(nm, PEM_STRING_RSA_PUBLIC) == 0)
key = d2i_PublicKey(EVP_KEY_RSA, NULL, &data, l);
assert(NULL != key);
//ну и естесственно сюда не доходим никогда