浏览代码

do dsa_int_validate_pqg in dsa_set_pqg_dsaparam

Karel Miko 8 年之前
父节点
当前提交
9765befd6b
共有 1 个文件被更改,包括 11 次插入1 次删除
  1. 11 1
      src/pk/dsa/dsa_set_pqg_dsaparam.c

+ 11 - 1
src/pk/dsa/dsa_set_pqg_dsaparam.c

@@ -24,7 +24,7 @@
 int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen,
                          dsa_key *key)
 {
-   int err;
+   int err, stat;
 
    LTC_ARGCHK(dsaparam    != NULL);
    LTC_ARGCHK(key         != NULL);
@@ -49,6 +49,16 @@ int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamle
       err = CRYPT_INVALID_PACKET;
       goto LBL_ERR;
    }
+
+   /* quick p, q, g validation, without primality testing */
+   if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) {
+      goto LBL_ERR;
+   }
+   if (stat == 0) {
+      err = CRYPT_INVALID_PACKET;
+      goto LBL_ERR;
+   }
+
    return CRYPT_OK;
 
 LBL_ERR: