RSA *PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **rsa, pem_password_cb *cb, void *u) { EVP_PKEY *pktmp; pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); return pkey_get_rsa(pktmp, rsa); }
RSA *PEM_read_RSAPrivateKey(TINYCLR_SSL_FILE *fp, RSA **rsa, pem_password_cb *cb, void *u) { EVP_PKEY *pktmp; pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); return pkey_get_rsa(pktmp, rsa); }
// 根据给定的私钥获取RSA结构 // // 本函数从openssl源码中crypto/pem/pem_all.c中第186行: // RSA *PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u) // 的函数修改而来,由从pem文件读取改为从内存中读取 RSA* get_rsa_from_private_key(const char* private_key) { RSA* rsa = NULL; BIO *bio = NULL; EVP_PKEY *pktmp = NULL; if ((bio=BIO_new(BIO_s_mem())) == NULL) { PEMerr(PEM_F_PEM_READ_PRIVATEKEY,ERR_R_BUF_LIB); return(0); } BIO_puts(bio, private_key); pktmp=PEM_read_bio_PrivateKey(bio, NULL, NULL, NULL); BIO_free(bio); return pkey_get_rsa(pktmp, &rsa); }