#include "rsa.h" #include "err.h" #include "engine.h" //static RSA_METHOD rsa_pkcs1_eay_meth={ //--hgl--20140331--RW mem to const mem const RSA_METHOD rsa_pkcs1_eay_meth = { "Eric Young's PKCS#1 RSA", 0, /* flags */ NULL, 0, /* rsa_sign */ 0, /* rsa_verify */ NULL /* rsa_keygen */ }; /////////////////////RSA_new////////////////////////////////////////ok RSA *RSA_new(void) { RSA *r = RSA_new_method(NULL); return r; } ///////////////////RSA_new_method///////////////////////////////////////ok RSA *RSA_new_method(ENGINE *engine) { RSA *ret; ret = (RSA *)OPENSSL_malloc(sizeof(RSA)); if (ret == NULL) { RSAerr(RSA_F_RSA_NEW_METHOD, ERR_R_MALLOC_FAILURE); return NULL; } ret->meth = &rsa_pkcs1_eay_meth; ret->pad = 0; ret->version = 0; ret->n = NULL; ret->e = NULL; ret->d = NULL; ret->p = NULL; ret->q = NULL; ret->dmp1 = NULL; ret->dmq1 = NULL; ret->iqmp = NULL; ret->references = 1; ret->_method_mod_n = NULL; ret->_method_mod_p = NULL; ret->_method_mod_q = NULL; ret->blinding = NULL; ret->mt_blinding = NULL; ret->bignum_data = NULL; ret->flags = ret->meth->flags & ~RSA_FLAG_NON_FIPS_ALLOW; if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_RSA, ret, &ret->ex_data)) { OPENSSL_free(ret); return (NULL); } if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { CRYPTO_free_ex_data(CRYPTO_EX_INDEX_RSA, ret, &ret->ex_data); OPENSSL_free(ret); ret = NULL; } return (ret); }