浏览代码

Merge branch 'pr/133' into develop

This closes #133
Steffen Jaeckel 8 年之前
父节点
当前提交
a8df316581
共有 2 个文件被更改,包括 6 次插入0 次删除
  1. 3 0
      src/pk/dsa/dsa_sign_hash.c
  2. 3 0
      src/pk/dsa/dsa_verify_hash.c

+ 3 - 0
src/pk/dsa/dsa_sign_hash.c

@@ -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; }

+ 3 - 0
src/pk/dsa/dsa_verify_hash.c

@@ -54,6 +54,9 @@ int dsa_verify_hash_raw(         void   *r,          void   *s,
       goto error;
       goto error;
    }
    }
    
    
+   /* FIPS 186-4 4.7: use leftmost min(bitlen(q), bitlen(hash)) bits of 'hash' */
+   hashlen = MIN(hashlen, (unsigned long)(key->qord));
+
    /* w = 1/s mod q */
    /* w = 1/s mod q */
    if ((err = mp_invmod(s, key->q, w)) != CRYPT_OK)                                       { goto error; }
    if ((err = mp_invmod(s, key->q, w)) != CRYPT_OK)                                       { goto error; }