Преглед на файлове

put dsa_set_pqg_dsaparam() in own c file

Steffen Jaeckel преди 8 години
родител
ревизия
5640f8afc7
променени са 2 файла, в които са добавени 63 реда и са изтрити 45 реда
  1. 0 45
      src/pk/dsa/dsa_set.c
  2. 63 0
      src/pk/dsa/dsa_set_pqg_dsaparam.c

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

@@ -57,51 +57,6 @@ LBL_ERR:
    return err;
 }
 
-/**
-  Import DSA's p, q & g from dsaparam
-
-      dsaparam data: openssl dsaparam -outform DER -out dsaparam.der 2048
-
-  @param dsaparam    The DSA param DER encoded data
-  @param dsaparamlen The length of dhparam data
-  @param key         [out] the destination for the imported key
-  @return CRYPT_OK if successful.
-*/
-int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen,
-                         dsa_key *key)
-{
-   int err;
-
-   LTC_ARGCHK(dsaparam    != NULL);
-   LTC_ARGCHK(key         != NULL);
-   LTC_ARGCHK(ltc_mp.name != NULL);
-
-   /* init key */
-   err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL);
-   if (err != CRYPT_OK) return err;
-
-   if ((err = der_decode_sequence_multi(dsaparam, dsaparamlen,
-                                        LTC_ASN1_INTEGER, 1UL, key->p,
-                                        LTC_ASN1_INTEGER, 1UL, key->q,
-                                        LTC_ASN1_INTEGER, 1UL, key->g,
-                                        LTC_ASN1_EOL,     0UL, NULL)) != CRYPT_OK) {
-      goto LBL_ERR;
-   }
-
-   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;
-   }
-   return CRYPT_OK;
-
-LBL_ERR:
-   dsa_free(key);
-   return err;
-}
-
 /**
   Import DSA public or private key from raw numbers
   @param pub     DSA's y (public key) in binary representation

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

@@ -0,0 +1,63 @@
+/* LibTomCrypt, modular cryptographic library -- Tom St Denis
+ *
+ * LibTomCrypt is a library that provides various cryptographic
+ * algorithms in a highly modular and flexible manner.
+ *
+ * The library is free for all purposes without any express
+ * guarantee it works.
+ */
+#include "tomcrypt.h"
+
+
+#ifdef LTC_MDSA
+
+/**
+  Import DSA's p, q & g from dsaparam
+
+      dsaparam data: openssl dsaparam -outform DER -out dsaparam.der 2048
+
+  @param dsaparam    The DSA param DER encoded data
+  @param dsaparamlen The length of dhparam data
+  @param key         [out] the destination for the imported key
+  @return CRYPT_OK if successful.
+*/
+int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen,
+                         dsa_key *key)
+{
+   int err;
+
+   LTC_ARGCHK(dsaparam    != NULL);
+   LTC_ARGCHK(key         != NULL);
+   LTC_ARGCHK(ltc_mp.name != NULL);
+
+   /* init key */
+   err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL);
+   if (err != CRYPT_OK) return err;
+
+   if ((err = der_decode_sequence_multi(dsaparam, dsaparamlen,
+                                        LTC_ASN1_INTEGER, 1UL, key->p,
+                                        LTC_ASN1_INTEGER, 1UL, key->q,
+                                        LTC_ASN1_INTEGER, 1UL, key->g,
+                                        LTC_ASN1_EOL,     0UL, NULL)) != CRYPT_OK) {
+      goto LBL_ERR;
+   }
+
+   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;
+   }
+   return CRYPT_OK;
+
+LBL_ERR:
+   dsa_free(key);
+   return err;
+}
+
+#endif
+
+/* ref:         $Format:%D$ */
+/* git commit:  $Format:%H$ */
+/* commit time: $Format:%ai$ */