надо создать ключ из строки, делаю так как подсмотрел в исходниках...
char *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);
//ну и естесственно сюда не доходим никогда
В обчим - код не работает, в чём лажа не могу понять... уже парит дебагить... хто нить знает как сделать это правильно?