libsec: check if modulus is too small for message in pkcs1padbuf()
This commit is contained in:
parent
1df513a2a1
commit
02b3c609ed
1 changed files with 8 additions and 0 deletions
|
@ -2143,6 +2143,10 @@ pkcs1padbuf(uchar *buf, int len, mpint *modulus)
|
||||||
mpint *mp;
|
mpint *mp;
|
||||||
|
|
||||||
pm1 = n - 1 - len;
|
pm1 = n - 1 - len;
|
||||||
|
if(pm1 <= 2){
|
||||||
|
werrstr("pkcs1padbuf: modulus too small");
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
p = (uchar*)emalloc(n);
|
p = (uchar*)emalloc(n);
|
||||||
p[0] = 0;
|
p[0] = 0;
|
||||||
p[1] = 1;
|
p[1] = 1;
|
||||||
|
@ -2827,6 +2831,8 @@ X509rsagen(RSApriv *priv, char *subj, ulong valid[2], int *certlen)
|
||||||
goto errret;
|
goto errret;
|
||||||
pkcs1 = pkcs1pad(sigbytes, pk->n);
|
pkcs1 = pkcs1pad(sigbytes, pk->n);
|
||||||
freebytes(sigbytes);
|
freebytes(sigbytes);
|
||||||
|
if(pkcs1 == nil)
|
||||||
|
goto errret;
|
||||||
|
|
||||||
rsadecrypt(priv, pkcs1, pkcs1);
|
rsadecrypt(priv, pkcs1, pkcs1);
|
||||||
buflen = mptobe(pkcs1, nil, 0, &buf);
|
buflen = mptobe(pkcs1, nil, 0, &buf);
|
||||||
|
@ -2894,6 +2900,8 @@ X509rsareq(RSApriv *priv, char *subj, int *certlen)
|
||||||
goto errret;
|
goto errret;
|
||||||
pkcs1 = pkcs1pad(sigbytes, pk->n);
|
pkcs1 = pkcs1pad(sigbytes, pk->n);
|
||||||
freebytes(sigbytes);
|
freebytes(sigbytes);
|
||||||
|
if(pkcs1 == nil)
|
||||||
|
goto errret;
|
||||||
|
|
||||||
rsadecrypt(priv, pkcs1, pkcs1);
|
rsadecrypt(priv, pkcs1, pkcs1);
|
||||||
buflen = mptobe(pkcs1, nil, 0, &buf);
|
buflen = mptobe(pkcs1, nil, 0, &buf);
|
||||||
|
|
Loading…
Reference in a new issue