소스 검색

dh: remove including of c-files

Steffen Jaeckel 11 년 전
부모
커밋
2bdebb3932
4개의 변경된 파일301개의 추가작업 그리고 230개의 파일을 삭제
  1. 4 229
      src/pk/dh/dh.c
  2. 163 0
      src/pk/dh/dh_static.c
  3. 125 0
      src/pk/dh/dh_static.h
  4. 9 1
      src/pk/dh/dh_sys.c

+ 4 - 229
src/pk/dh/dh.c

@@ -17,231 +17,8 @@
 
 #ifdef LTC_MDH
 
-   /* size of a packet header in bytes */
-    #define PACKET_SIZE            4
-
-    /* Section tags */
-    #define PACKET_SECT_DH         1
-
-    /* Subsection Tags for the first three sections */
-    #define PACKET_SUB_KEY         0
-    #define PACKET_SUB_ENCRYPTED   1
-    #define PACKET_SUB_SIGNED      2
-    #define PACKET_SUB_ENC_KEY     3
-
-#define OUTPUT_BIGNUM(num, out, y, z)                                                             \
-{                                                                                                 \
-      if ((y + 4) > *outlen) { return CRYPT_BUFFER_OVERFLOW; }                                    \
-      z = (unsigned long)mp_unsigned_bin_size(num);                                               \
-      STORE32L(z, out+y);                                                                         \
-      y += 4;                                                                                     \
-      if ((y + z) > *outlen) { return CRYPT_BUFFER_OVERFLOW; }                                    \
-      if ((err = mp_to_unsigned_bin(num, out+y)) != CRYPT_OK) { return err; }    \
-      y += z;                                                                                     \
-}
-
-#define INPUT_BIGNUM(num, in, x, y, inlen)                       \
-{                                                                \
-     /* load value */                                            \
-     if ((y + 4) > inlen) {                                      \
-        err = CRYPT_INVALID_PACKET;                              \
-        goto error;                                              \
-     }                                                           \
-     LOAD32L(x, in+y);                                           \
-     y += 4;                                                     \
-                                                                 \
-     /* sanity check... */                                       \
-     if ((x+y) > inlen) {                                        \
-        err = CRYPT_INVALID_PACKET;                              \
-        goto error;                                              \
-     }                                                           \
-                                                                 \
-     /* load it */                                               \
-     if ((err = mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x)) != CRYPT_OK) {\
-        goto error;                                              \
-     }                                                           \
-     y += x;                                                     \
-}
-
-static void packet_store_header(unsigned char *dst, int section, int subsection)
-{
-   LTC_ARGCHK(dst != NULL);
-
-   /* store version number */
-   dst[0] = (unsigned char)(CRYPT&255);
-   dst[1] = (unsigned char)((CRYPT>>8)&255);
-
-   /* store section and subsection */
-   dst[2] = (unsigned char)(section & 255);
-   dst[3] = (unsigned char)(subsection & 255);
-
-}
-
-static int packet_valid_header(unsigned char *src, int section, int subsection)
-{
-   unsigned long ver;
-
-   LTC_ARGCHK(src != NULL);
-
-   /* check version */
-   ver = ((unsigned long)src[0]) | ((unsigned long)src[1] << 8U);
-   if (CRYPT < ver) {
-      return CRYPT_INVALID_PACKET;
-   }
 
-   /* check section and subsection */
-   if (section != (int)src[2] || subsection != (int)src[3]) {
-      return CRYPT_INVALID_PACKET;
-   }
-
-   return CRYPT_OK;
-}
-
-
-/* max export size we'll encounter (smaller than this but lets round up a bit) */
-#define DH_BUF_SIZE 1200
-
-/* This holds the key settings.  ***MUST*** be organized by size from smallest to largest. */
-static const struct {
-    int size;
-    char *name, *base, *prime;
-} sets[] = {
-#ifdef DH768
-{
-   96,
-   "DH-768",
-   "4",
-   "F///////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "//////m3wvV"
-},
-#endif
-#ifdef DH1024
-{
-   128,
-   "DH-1024",
-   "4",
-   "F///////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////m3C47"
-},
-#endif
-#ifdef DH1280
-{
-   160,
-   "DH-1280",
-   "4",
-   "F///////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "//////////////////////////////m4kSN"
-},
-#endif
-#ifdef DH1536
-{
-   192,
-   "DH-1536",
-   "4",
-   "F///////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////m5uqd"
-},
-#endif
-#ifdef DH1792
-{
-   224,
-   "DH-1792",
-   "4",
-   "F///////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "//////////////////////////////////////////////////////mT/sd"
-},
-#endif
-#ifdef DH2048
-{
-   256,
-   "DH-2048",
-   "4",
-   "3///////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "/////////////////////////////////////////m8MPh"
-},
-#endif
-#ifdef DH2560
-{
-   320,
-   "DH-2560",
-   "4",
-   "3///////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "/////mKFpF"
-},
-#endif
-#ifdef DH3072
-{
-   384,
-   "DH-3072",
-   "4",
-   "3///////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "/////////////////////////////m32nN"
-},
-#endif
-#ifdef DH4096
-{
-   512,
-   "DH-4096",
-   "4",
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "////////////////////////////////////////////////////////////"
-   "/////////////////////m8pOF"
-},
-#endif
-{
-   0,
-   NULL,
-   NULL,
-   NULL
-}
-};
-
-static int is_valid_idx(int n)
-{
-   int x;
-
-   for (x = 0; sets[x].size; x++);
-   if ((n < 0) || (n >= x)) {
-      return 0;
-   }
-   return 1;
-}
+#include "dh_static.h"
 
 /**
    Test the DH sub-system (can take a while)
@@ -318,7 +95,7 @@ void dh_sizes(int *low, int *high)
 int dh_get_size(dh_key *key)
 {
     LTC_ARGCHK(key != NULL);
-    if (is_valid_idx(key->idx) == 1) {
+    if (dh_is_valid_idx(key->idx) == 1) {
         return sets[key->idx].size;
     } else {
         return INT_MAX; /* large value that would cause dh_make_key() to fail */
@@ -523,7 +300,7 @@ int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key)
    }
 
    /* is the key idx valid? */
-   if (is_valid_idx(key->idx) != 1) {
+   if (dh_is_valid_idx(key->idx) != 1) {
       err = CRYPT_PK_TYPE_MISMATCH;
       goto error;
    }
@@ -601,6 +378,4 @@ done:
    return err;
 }
 
-#include "dh_sys.c"
-
-#endif
+#endif /* LTC_MDH */

+ 163 - 0
src/pk/dh/dh_static.c

@@ -0,0 +1,163 @@
+/* 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.
+ *
+ * Tom St Denis, [email protected], http://libtomcrypt.org
+ */
+#include "tomcrypt.h"
+
+/**
+  @file dh_static.c
+  DH crypto, Tom St Denis
+*/
+
+#ifdef LTC_MDH
+
+#define __DECL_DH_STATIC_H__
+#include "dh_static.h"
+
+/* This holds the key settings.  ***MUST*** be organized by size from smallest to largest. */
+const dh_set sets[] = {
+#ifdef DH768
+{
+   96,
+   "DH-768",
+   "4",
+   "F///////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "//////m3wvV"
+},
+#endif
+#ifdef DH1024
+{
+   128,
+   "DH-1024",
+   "4",
+   "F///////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////m3C47"
+},
+#endif
+#ifdef DH1280
+{
+   160,
+   "DH-1280",
+   "4",
+   "F///////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "//////////////////////////////m4kSN"
+},
+#endif
+#ifdef DH1536
+{
+   192,
+   "DH-1536",
+   "4",
+   "F///////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////m5uqd"
+},
+#endif
+#ifdef DH1792
+{
+   224,
+   "DH-1792",
+   "4",
+   "F///////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "//////////////////////////////////////////////////////mT/sd"
+},
+#endif
+#ifdef DH2048
+{
+   256,
+   "DH-2048",
+   "4",
+   "3///////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "/////////////////////////////////////////m8MPh"
+},
+#endif
+#ifdef DH2560
+{
+   320,
+   "DH-2560",
+   "4",
+   "3///////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "/////mKFpF"
+},
+#endif
+#ifdef DH3072
+{
+   384,
+   "DH-3072",
+   "4",
+   "3///////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "/////////////////////////////m32nN"
+},
+#endif
+#ifdef DH4096
+{
+   512,
+   "DH-4096",
+   "4",
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "////////////////////////////////////////////////////////////"
+   "/////////////////////m8pOF"
+},
+#endif
+{
+   0,
+   NULL,
+   NULL,
+   NULL
+}
+};
+
+int dh_is_valid_idx(int n)
+{
+   int x;
+
+   for (x = 0; sets[x].size; x++);
+   if ((n < 0) || (n >= x)) {
+      return 0;
+   }
+   return 1;
+}
+
+
+#endif /* LTC_MDH */

+ 125 - 0
src/pk/dh/dh_static.h

@@ -0,0 +1,125 @@
+#ifndef __DH_STATIC_H__
+#define __DH_STATIC_H__
+#ifndef __DECL_DH_STATIC_H__
+#define __DECL_DH_STATIC_H__ extern
+#endif
+
+/* 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.
+ *
+ * Tom St Denis, [email protected], http://libtomcrypt.org
+ */
+#include "tomcrypt.h"
+
+/**
+  @file dh_static.h
+  DH crypto, Tom St Denis
+*/
+
+#ifdef LTC_MDH
+
+/* size of a packet header in bytes */
+#define PACKET_SIZE            4
+
+/* Section tags */
+#define PACKET_SECT_DH         1
+
+/* Subsection Tags for the first three sections */
+#define PACKET_SUB_KEY         0
+#define PACKET_SUB_ENCRYPTED   1
+#define PACKET_SUB_SIGNED      2
+#define PACKET_SUB_ENC_KEY     3
+
+#define OUTPUT_BIGNUM(num, out, y, z)                                                             \
+{                                                                                                 \
+      if ((y + 4) > *outlen) { return CRYPT_BUFFER_OVERFLOW; }                                    \
+      z = (unsigned long)mp_unsigned_bin_size(num);                                               \
+      STORE32L(z, out+y);                                                                         \
+      y += 4;                                                                                     \
+      if ((y + z) > *outlen) { return CRYPT_BUFFER_OVERFLOW; }                                    \
+      if ((err = mp_to_unsigned_bin(num, out+y)) != CRYPT_OK) { return err; }    \
+      y += z;                                                                                     \
+}
+
+#define INPUT_BIGNUM(num, in, x, y, inlen)                       \
+{                                                                \
+     /* load value */                                            \
+     if ((y + 4) > inlen) {                                      \
+        err = CRYPT_INVALID_PACKET;                              \
+        goto error;                                              \
+     }                                                           \
+     LOAD32L(x, in+y);                                           \
+     y += 4;                                                     \
+                                                                 \
+     /* sanity check... */                                       \
+     if ((x+y) > inlen) {                                        \
+        err = CRYPT_INVALID_PACKET;                              \
+        goto error;                                              \
+     }                                                           \
+                                                                 \
+     /* load it */                                               \
+     if ((err = mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x)) != CRYPT_OK) {\
+        goto error;                                              \
+     }                                                           \
+     y += x;                                                     \
+}
+
+static inline void packet_store_header (unsigned char *dst, int section, int subsection)
+{
+   LTC_ARGCHK(dst != NULL);
+
+   /* store version number */
+   dst[0] = (unsigned char)(CRYPT&255);
+   dst[1] = (unsigned char)((CRYPT>>8)&255);
+
+   /* store section and subsection */
+   dst[2] = (unsigned char)(section & 255);
+   dst[3] = (unsigned char)(subsection & 255);
+
+}
+
+static inline int packet_valid_header (unsigned char *src, int section, int subsection)
+{
+   unsigned long ver;
+
+   LTC_ARGCHK(src != NULL);
+
+   /* check version */
+   ver = ((unsigned long)src[0]) | ((unsigned long)src[1] << 8U);
+   if (CRYPT < ver) {
+      return CRYPT_INVALID_PACKET;
+   }
+
+   /* check section and subsection */
+   if (section != (int)src[2] || subsection != (int)src[3]) {
+      return CRYPT_INVALID_PACKET;
+   }
+
+   return CRYPT_OK;
+}
+
+#ifndef DH_BUF_SIZE
+/* max export size we'll encounter (smaller than this but lets round up a bit) */
+#define DH_BUF_SIZE 1200
+#endif /* DH_BUF_SIZE */
+
+typedef struct {
+  int size;
+  char *name, *base, *prime;
+} dh_set;
+
+/* This holds the key settings.  ***MUST*** be organized by size from smallest to largest. */
+__DECL_DH_STATIC_H__ const dh_set sets[];
+
+
+int dh_is_valid_idx(int n);
+
+
+#endif /* __DH_STATIC_H__ */
+
+#endif /* LTC_MDH */

+ 9 - 1
src/pk/dh/dh_sys.c

@@ -9,11 +9,17 @@
  * Tom St Denis, [email protected], http://libtomcrypt.org
  */
 
+#include "tomcrypt.h"
+
+#ifdef LTC_MDH
 /**
   @file dh_sys.c
   DH Crypto, Tom St Denis
 */
 
+#include "dh_static.h"
+
+
 /**
   Encrypt a short symmetric key with a public DH key
   @param in        The symmetric key to encrypt
@@ -323,7 +329,7 @@ int dh_sign_hash(const unsigned char *in,  unsigned long inlen,
    }
 
    /* is the IDX valid ?  */
-   if (is_valid_idx(key->idx) != 1) {
+   if (dh_is_valid_idx(key->idx) != 1) {
       return CRYPT_PK_INVALID_TYPE;
    }
 
@@ -482,3 +488,5 @@ done:
    mp_clear_multi(tmp, m, g, p, b, a, NULL);
    return err;
 }
+
+#endif /* LTC_MDH */