dh: remove including of c-files
This commit is contained in:
parent
71ccad06bd
commit
2bdebb3932
233
src/pk/dh/dh.c
233
src/pk/dh/dh.c
@ -17,231 +17,8 @@
|
|||||||
|
|
||||||
#ifdef LTC_MDH
|
#ifdef LTC_MDH
|
||||||
|
|
||||||
/* size of a packet header in bytes */
|
|
||||||
#define PACKET_SIZE 4
|
|
||||||
|
|
||||||
/* Section tags */
|
#include "dh_static.h"
|
||||||
#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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Test the DH sub-system (can take a while)
|
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)
|
int dh_get_size(dh_key *key)
|
||||||
{
|
{
|
||||||
LTC_ARGCHK(key != NULL);
|
LTC_ARGCHK(key != NULL);
|
||||||
if (is_valid_idx(key->idx) == 1) {
|
if (dh_is_valid_idx(key->idx) == 1) {
|
||||||
return sets[key->idx].size;
|
return sets[key->idx].size;
|
||||||
} else {
|
} else {
|
||||||
return INT_MAX; /* large value that would cause dh_make_key() to fail */
|
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? */
|
/* 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;
|
err = CRYPT_PK_TYPE_MISMATCH;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@ -601,6 +378,4 @@ done:
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "dh_sys.c"
|
#endif /* LTC_MDH */
|
||||||
|
|
||||||
#endif
|
|
||||||
|
163
src/pk/dh/dh_static.c
Normal file
163
src/pk/dh/dh_static.c
Normal file
@ -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, tomstdenis@gmail.com, 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
src/pk/dh/dh_static.h
Normal file
125
src/pk/dh/dh_static.h
Normal file
@ -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, tomstdenis@gmail.com, 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,11 +9,17 @@
|
|||||||
* Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org
|
* Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "tomcrypt.h"
|
||||||
|
|
||||||
|
#ifdef LTC_MDH
|
||||||
/**
|
/**
|
||||||
@file dh_sys.c
|
@file dh_sys.c
|
||||||
DH Crypto, Tom St Denis
|
DH Crypto, Tom St Denis
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "dh_static.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Encrypt a short symmetric key with a public DH key
|
Encrypt a short symmetric key with a public DH key
|
||||||
@param in The symmetric key to encrypt
|
@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 ? */
|
/* is the IDX valid ? */
|
||||||
if (is_valid_idx(key->idx) != 1) {
|
if (dh_is_valid_idx(key->idx) != 1) {
|
||||||
return CRYPT_PK_INVALID_TYPE;
|
return CRYPT_PK_INVALID_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,3 +488,5 @@ done:
|
|||||||
mp_clear_multi(tmp, m, g, p, b, a, NULL);
|
mp_clear_multi(tmp, m, g, p, b, a, NULL);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* LTC_MDH */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user