2
0
Эх сурвалжийг харах

move qord trest to dsa_int_validate_pqg

Karel Miko 8 жил өмнө
parent
commit
fd94e9540f

+ 0 - 6
src/pk/dsa/dsa_set.c

@@ -45,12 +45,6 @@ int dsa_set_pqg(const unsigned char *p,  unsigned long plen,
 
 
    key->qord = mp_unsigned_bin_size(key->q);
    key->qord = mp_unsigned_bin_size(key->q);
 
 
-   if (key->qord >= LTC_MDSA_MAX_GROUP || key->qord <= 15 ||
-      (unsigned long)key->qord >= mp_unsigned_bin_size(key->p) || (mp_unsigned_bin_size(key->p) - key->qord) >= LTC_MDSA_DELTA) {
-      err = CRYPT_INVALID_PACKET;
-      goto LBL_ERR;
-   }
-
    /* do only a quick validation, without primality testing */
    /* do only a quick validation, without primality testing */
    if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK)                        { goto LBL_ERR; }
    if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK)                        { goto LBL_ERR; }
    if (stat == 0) {
    if (stat == 0) {

+ 0 - 6
src/pk/dsa/dsa_set_pqg_dsaparam.c

@@ -44,12 +44,6 @@ int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamle
 
 
    key->qord = mp_unsigned_bin_size(key->q);
    key->qord = mp_unsigned_bin_size(key->q);
 
 
-   if (key->qord >= LTC_MDSA_MAX_GROUP || key->qord <= 15 ||
-      (unsigned long)key->qord >= mp_unsigned_bin_size(key->p) || (mp_unsigned_bin_size(key->p) - key->qord) >= LTC_MDSA_DELTA) {
-      err = CRYPT_INVALID_PACKET;
-      goto LBL_ERR;
-   }
-
    /* quick p, q, g validation, without primality testing */
    /* quick p, q, g validation, without primality testing */
    if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) {
    if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) {
       goto LBL_ERR;
       goto LBL_ERR;

+ 8 - 0
src/pk/dsa/dsa_verify_key.c

@@ -56,6 +56,14 @@ int dsa_int_validate_pqg(dsa_key *key, int *stat)
    LTC_ARGCHK(key  != NULL);
    LTC_ARGCHK(key  != NULL);
    LTC_ARGCHK(stat != NULL);
    LTC_ARGCHK(stat != NULL);
 
 
+   /* check q-order */
+   if ( key->qord >= LTC_MDSA_MAX_GROUP || key->qord <= 15 ||
+        (unsigned long)key->qord >= mp_unsigned_bin_size(key->p) ||
+        (mp_unsigned_bin_size(key->p) - key->qord) >= LTC_MDSA_DELTA ) {
+      err = CRYPT_OK;
+      goto error;
+   }
+
    /* FIPS 186-4 chapter 4.1: 1 < g < p */
    /* FIPS 186-4 chapter 4.1: 1 < g < p */
    if (mp_cmp_d(key->g, 1) != LTC_MP_GT || mp_cmp(key->g, key->p) != LTC_MP_LT) {
    if (mp_cmp_d(key->g, 1) != LTC_MP_GT || mp_cmp(key->g, key->p) != LTC_MP_LT) {
       return CRYPT_OK;
       return CRYPT_OK;