|
@@ -84,6 +84,9 @@ retry:
|
|
|
|
|
|
if (mp_iszero(r) == LTC_MP_YES) { goto retry; }
|
|
if (mp_iszero(r) == LTC_MP_YES) { goto retry; }
|
|
|
|
|
|
|
|
+ /* FIPS 186-4 4.6: use leftmost min(bitlen(q), bitlen(hash)) bits of 'hash'*/
|
|
|
|
+ inlen = MIN(inlen, (unsigned long)(key->qord));
|
|
|
|
+
|
|
/* now find s = (in + xr)/k mod q */
|
|
/* now find s = (in + xr)/k mod q */
|
|
if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, inlen)) != CRYPT_OK) { goto error; }
|
|
if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, inlen)) != CRYPT_OK) { goto error; }
|
|
if ((err = mp_mul(key->x, r, s)) != CRYPT_OK) { goto error; }
|
|
if ((err = mp_mul(key->x, r, s)) != CRYPT_OK) { goto error; }
|