Browse Source

Diffie-Hellman/Math: introduced the proposed changes by Alexander Kurpiers

addmod and submod are moved to the end of the math descriptor, in order
to be able to run existing software against a new version of ltc without need
to rebuild the software.
Steffen Jaeckel 14 years ago
parent
commit
edf11c62c0
4 changed files with 30 additions and 27 deletions
  1. 20 18
      src/headers/tomcrypt_math.h
  2. 3 3
      src/math/gmp_desc.c
  3. 4 3
      src/math/ltm_desc.c
  4. 3 3
      src/math/tfm_desc.c

+ 20 - 18
src/headers/tomcrypt_math.h

@@ -258,24 +258,6 @@ typedef struct {
    */
    int (*lcm)(void *a, void *b, void *c);
 
-   /** Modular addition
-      @param  a     The first source
-      @param  b     The second source 
-      @param  c     The modulus
-      @param  d     The destination (a + b mod c)
-      @return CRYPT_OK on success
-   */
-   int (*addmod)(void *a, void *b, void *c, void *d);
-
-   /** Modular substraction
-      @param  a     The first source
-      @param  b     The second source 
-      @param  c     The modulus
-      @param  d     The destination (a - b mod c)
-      @return CRYPT_OK on success
-   */
-   int (*submod)(void *a, void *b, void *c, void *d);
-
    /** Modular multiplication
       @param  a     The first source
       @param  b     The second source 
@@ -429,6 +411,26 @@ typedef struct {
    int (*rsa_me)(const unsigned char *in,   unsigned long inlen,
                        unsigned char *out,  unsigned long *outlen, int which,
                        rsa_key *key);
+
+/* ---- basic math continued ---- */
+
+   /** Modular addition
+      @param  a     The first source
+      @param  b     The second source 
+      @param  c     The modulus
+      @param  d     The destination (a + b mod c)
+      @return CRYPT_OK on success
+   */
+   int (*addmod)(void *a, void *b, void *c, void *d);
+
+   /** Modular substraction
+      @param  a     The first source
+      @param  b     The second source 
+      @param  c     The modulus
+      @param  d     The destination (a - b mod c)
+      @return CRYPT_OK on success
+   */
+   int (*submod)(void *a, void *b, void *c, void *d);
 } ltc_math_descriptor;
 
 extern ltc_math_descriptor ltc_mp;

+ 3 - 3
src/math/gmp_desc.c

@@ -449,8 +449,6 @@ const ltc_math_descriptor gmp_desc = {
    &gcd,
    &lcm,
 
-   &addmod,
-   &submod,
    &mulmod,
    &sqrmod,
    &invmod,
@@ -489,8 +487,10 @@ const ltc_math_descriptor gmp_desc = {
    &rsa_make_key,
    &rsa_exptmod,
 #else
-   NULL, NULL
+   NULL, NULL,
 #endif
+   &addmod,
+   &submod,
    
 };
 

+ 4 - 3
src/math/ltm_desc.c

@@ -451,8 +451,6 @@ const ltc_math_descriptor ltm_desc = {
    &gcd,
    &lcm,
 
-   &addmod,
-   &submod,
    &mulmod,
    &sqrmod,
    &invmod,
@@ -491,8 +489,11 @@ const ltc_math_descriptor ltm_desc = {
    &rsa_make_key,
    &rsa_exptmod,
 #else
-   NULL, NULL
+   NULL, NULL,
 #endif
+   &addmod,
+   &submod,
+   
 };
 
 

+ 3 - 3
src/math/tfm_desc.c

@@ -739,8 +739,6 @@ const ltc_math_descriptor tfm_desc = {
    &gcd,
    &lcm,
 
-   &addmod,
-   &submod,
    &mulmod,
    &sqrmod,
    &invmod,
@@ -784,8 +782,10 @@ const ltc_math_descriptor tfm_desc = {
    &rsa_make_key,
    &rsa_exptmod,
 #else
-   NULL, NULL
+   NULL, NULL,
 #endif
+   &addmod,
+   &submod,
    
 };