Codebase list libcryptx-perl / 3ca6314
DSA: properly handle FIPS 186-4 (4.6 + 4.7) Karel Miko 7 years ago
2 changed file(s) with 7 addition(s) and 1 deletion(s). Raw diff Collapse all Expand all
8383
8484 if (mp_iszero(r) == LTC_MP_YES) { goto retry; }
8585
86 /* FIPS 186-4 4.6: use leftmost min(bitlen(q), bitlen(hash)) */
87 if (inlen > key->qord) inlen = key->qord;
88
8689 /* now find s = (in + xr)/k mod q */
8790 if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, inlen)) != CRYPT_OK) { goto error; }
8891 if ((err = mp_mul(key->x, r, s)) != CRYPT_OK) { goto error; }
5252 err = CRYPT_INVALID_PACKET;
5353 goto error;
5454 }
55
55
56 /* FIPS 186-4 4.7: use leftmost min(bitlen(q), bitlen(hash)) bits of 'hash' */
57 if (hashlen > key->qord) hashlen = key->qord;
58
5659 /* w = 1/s mod q */
5760 if ((err = mp_invmod(s, key->q, w)) != CRYPT_OK) { goto error; }
5861