Latest update.
This commit is contained in:
+25
-14
@@ -34,8 +34,9 @@ int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
|
||||
const unsigned char *from, int flen,
|
||||
const unsigned char *param, int plen)
|
||||
{
|
||||
return RSA_padding_add_PKCS1_OAEP_mgf1(to, tlen, from, flen,
|
||||
param, plen, NULL, NULL);
|
||||
return rsa_padding_add_PKCS1_OAEP_mgf1_with_libctx(NULL, to, tlen, from,
|
||||
flen, param, plen, NULL,
|
||||
NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -45,10 +46,13 @@ int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
|
||||
* Step numbers are included here but not in the constant time inverse below
|
||||
* to avoid complicating an already difficult enough function.
|
||||
*/
|
||||
int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
|
||||
const unsigned char *from, int flen,
|
||||
const unsigned char *param, int plen,
|
||||
const EVP_MD *md, const EVP_MD *mgf1md)
|
||||
int rsa_padding_add_PKCS1_OAEP_mgf1_with_libctx(OPENSSL_CTX *libctx,
|
||||
unsigned char *to, int tlen,
|
||||
const unsigned char *from,
|
||||
int flen,
|
||||
const unsigned char *param,
|
||||
int plen, const EVP_MD *md,
|
||||
const EVP_MD *mgf1md)
|
||||
{
|
||||
int rv = 0;
|
||||
int i, emlen = tlen - 1;
|
||||
@@ -61,8 +65,7 @@ int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
|
||||
if (md == NULL)
|
||||
md = EVP_sha1();
|
||||
#else
|
||||
RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1,
|
||||
ERR_R_PASSED_NULL_PARAMETER);
|
||||
RSAerr(0, ERR_R_PASSED_NULL_PARAMETER);
|
||||
return 0;
|
||||
#endif
|
||||
if (mgf1md == NULL)
|
||||
@@ -72,14 +75,12 @@ int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
|
||||
|
||||
/* step 2b: check KLen > nLen - 2 HLen - 2 */
|
||||
if (flen > emlen - 2 * mdlen - 1) {
|
||||
RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1,
|
||||
RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
|
||||
RSAerr(0, RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (emlen < 2 * mdlen + 1) {
|
||||
RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1,
|
||||
RSA_R_KEY_SIZE_TOO_SMALL);
|
||||
RSAerr(0, RSA_R_KEY_SIZE_TOO_SMALL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -97,13 +98,13 @@ int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
|
||||
db[emlen - flen - mdlen - 1] = 0x01;
|
||||
memcpy(db + emlen - flen - mdlen, from, (unsigned int)flen);
|
||||
/* step 3d: generate random byte string */
|
||||
if (RAND_bytes(seed, mdlen) <= 0)
|
||||
if (RAND_bytes_ex(libctx, seed, mdlen) <= 0)
|
||||
goto err;
|
||||
|
||||
dbmask_len = emlen - mdlen;
|
||||
dbmask = OPENSSL_malloc(dbmask_len);
|
||||
if (dbmask == NULL) {
|
||||
RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1, ERR_R_MALLOC_FAILURE);
|
||||
RSAerr(0, ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
|
||||
@@ -128,6 +129,16 @@ int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
|
||||
return rv;
|
||||
}
|
||||
|
||||
int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
|
||||
const unsigned char *from, int flen,
|
||||
const unsigned char *param, int plen,
|
||||
const EVP_MD *md, const EVP_MD *mgf1md)
|
||||
{
|
||||
return rsa_padding_add_PKCS1_OAEP_mgf1_with_libctx(NULL, to, tlen, from,
|
||||
flen, param, plen, md,
|
||||
mgf1md);
|
||||
}
|
||||
|
||||
int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
|
||||
const unsigned char *from, int flen, int num,
|
||||
const unsigned char *param, int plen)
|
||||
|
||||
Reference in New Issue
Block a user