Bug fix.
This commit is contained in:
parent
5dfc369ffc
commit
9f5f32c9b0
1 changed files with 7 additions and 5 deletions
|
@ -75,15 +75,16 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
|
||||||
{
|
{
|
||||||
int i, dblen, mlen = -1;
|
int i, dblen, mlen = -1;
|
||||||
unsigned char *maskeddb;
|
unsigned char *maskeddb;
|
||||||
|
int lzero;
|
||||||
unsigned char *db, seed[SHA_DIGEST_LENGTH], phash[SHA_DIGEST_LENGTH];
|
unsigned char *db, seed[SHA_DIGEST_LENGTH], phash[SHA_DIGEST_LENGTH];
|
||||||
|
|
||||||
if (flen < 2 * SHA_DIGEST_LENGTH + 1)
|
if (--num < 2 * SHA_DIGEST_LENGTH + 1)
|
||||||
{
|
{
|
||||||
RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP, RSA_R_OAEP_DECODING_ERROR);
|
RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP, RSA_R_OAEP_DECODING_ERROR);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
dblen = flen - SHA_DIGEST_LENGTH;
|
dblen = num - SHA_DIGEST_LENGTH;
|
||||||
db = Malloc(dblen);
|
db = Malloc(dblen);
|
||||||
if (db == NULL)
|
if (db == NULL)
|
||||||
{
|
{
|
||||||
|
@ -91,11 +92,12 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
maskeddb = from + SHA_DIGEST_LENGTH;
|
lzero = num - flen;
|
||||||
|
maskeddb = from - lzero + SHA_DIGEST_LENGTH;
|
||||||
|
|
||||||
MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen);
|
MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen);
|
||||||
for (i = 0; i < SHA_DIGEST_LENGTH; i++)
|
for (i = lzero; i < SHA_DIGEST_LENGTH; i++)
|
||||||
seed[i] ^= from[i];
|
seed[i] ^= from[i - lzero];
|
||||||
|
|
||||||
MGF1(db, dblen, seed, SHA_DIGEST_LENGTH);
|
MGF1(db, dblen, seed, SHA_DIGEST_LENGTH);
|
||||||
for (i = 0; i < dblen; i++)
|
for (i = 0; i < dblen; i++)
|
||||||
|
|
Loading…
Reference in a new issue