67 lines
1.4 KiB
C
67 lines
1.4 KiB
C
#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);
|
|
}
|