提交 8843819c authored 作者: Travis Cross's avatar Travis Cross

Add back the elliptic curve (ECC) files

Signed-off-by: 's avatarTravis Cross <tc@traviscross.com>
Signed-off-by: 's avatarPhilip Zimmermann <prz@mit.edu>
上级 fafd8f33
......@@ -123,7 +123,7 @@
#endif
#ifndef ZRTP_ENABLE_EC
#define ZRTP_ENABLE_EC 0
#define ZRTP_ENABLE_EC 1
#endif
#ifndef ZRTP_DEBUG_WITH_PJSIP
......
/*
* zrtp_crypto_ec.c - Elliptic Curve Low Level Crypto functions for ZRTP.
* NSA Suite B Elliptic Curves from NIST SP 800-56A and FIPS 186-3.
*
* Copyright (c) 2006-2009 Philip R. Zimmermann. All rights reserved.
* This is NOT licensed under the GPL or any other open source license.
* For licensing terms or other information,
* contact: Philip Zimmermann <prz@mit.edu>.
* For more contact information, see http://philzimmermann.com
*/
#ifndef __ZRTP_CRYPTO_EC_H__
#define __ZRTP_CRYPTO_EC_H__
#include "bn.h"
#include "zrtp_config.h"
#include "zrtp_types.h"
#include "zrtp_error.h"
#if (defined(ZRTP_ENABLE_EC) && (ZRTP_ENABLE_EC == 1))
#define ZRTP_MAXECBITS 521
#define ZRTP_MAXECWORDS ((ZRTP_MAXECBITS+7)/8)
typedef struct zrtp_ec_params
{
unsigned ec_bits; /* # EC bits: 256, 384, 521 */
uint8_t P_data[ZRTP_MAXECWORDS]; /* curve field prime */
uint8_t n_data[ZRTP_MAXECWORDS]; /* curve order (# points) */
uint8_t b_data[ZRTP_MAXECWORDS]; /* curve param, y^3 = x^2 -3x + b */
uint8_t Gx_data[ZRTP_MAXECWORDS]; /* curve point, x coordinate */
uint8_t Gy_data[ZRTP_MAXECWORDS]; /* curve point, y coordinate */
} zrtp_ec_params_t;
#if defined(__cplusplus)
extern "C"
{
#endif
/*============================================================================*/
/* Elliptic Curve library */
/*============================================================================*/
int zrtp_ecAdd ( struct BigNum *rsltx,
struct BigNum *rslty,
struct BigNum *p1x,
struct BigNum *p1y,
struct BigNum *p2x,
struct BigNum *p2y,
struct BigNum *mod);
int zrtp_ecMul ( struct BigNum *rsltx,
struct BigNum *rslty,
struct BigNum *mult,
struct BigNum *basex,
struct BigNum *basey,
struct BigNum *mod);
zrtp_status_t zrtp_ec_random_point( zrtp_global_t *zrtp,
struct BigNum *P,
struct BigNum *n,
struct BigNum *Gx,
struct BigNum *Gy,
struct BigNum *pkx,
struct BigNum *pky,
struct BigNum *sv,
uint8_t *test_sv_data,
size_t test_sv_data_len);
extern zrtp_status_t zrtp_ec_init_params(struct zrtp_ec_params *params, uint32_t bits );
/* Useful bignum utility functions not defined in bignum library */
int bnAddMod_ (struct BigNum *rslt, struct BigNum *n1, struct BigNum *mod);
int bnAddQMod_ (struct BigNum *rslt, unsigned n1, struct BigNum *mod);
int bnSubMod_ (struct BigNum *rslt, struct BigNum *n1, struct BigNum *mod);
int bnSubQMod_ (struct BigNum *rslt, unsigned n1, struct BigNum *mod);
int bnMulMod_ (struct BigNum *rslt, struct BigNum *n1, struct BigNum *n2, struct BigNum *mod);
int bnMulQMod_ (struct BigNum *rslt, struct BigNum *n1, unsigned n2, struct BigNum *mod);
int bnSquareMod_ (struct BigNum *rslt, struct BigNum *n1, struct BigNum *mod);
#if defined(__cplusplus)
}
#endif
#endif /*ZRTP_ENABLE_EC*/
#endif /* __ZRTP_CRYPTO_EC_H__ */
......@@ -43,7 +43,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../include;../../third_party/bnlib;../../third_party/bgaes;../../test/include"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H=1;ZRTP_ENABLE_EC=0"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H=1;ZRTP_ENABLE_EC=1"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
......@@ -109,7 +109,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../include;../../third_party/bnlib;../../third_party/bgaes"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H=1;ZRTP_ENABLE_EC=0"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H=1;ZRTP_ENABLE_EC=1"
ExceptionHandling="0"
RuntimeLibrary="0"
StructMemberAlignment="0"
......@@ -180,6 +180,10 @@
RelativePath="..\..\include\zrtp_crypto.h"
>
</File>
<File
RelativePath="..\..\include\zrtp_ec.h"
>
</File>
<File
RelativePath="..\..\include\zrtp_engine.h"
>
......@@ -244,6 +248,10 @@
RelativePath="..\..\include\zrtp_utils.h"
>
</File>
<File
RelativePath="..\..\include\zrtp_version.h"
>
</File>
</Filter>
<Filter
Name="src"
......@@ -264,6 +272,14 @@
RelativePath="..\..\src\zrtp_crypto_atl.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_crypto_ec.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_crypto_ecdh.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_crypto_hash.c"
>
......
......@@ -52,7 +52,7 @@
ExecutionBucket="7"
Optimization="0"
AdditionalIncludeDirectories="../../third_party/bnlib;../../include;../../include/enterprise;../../third_party/bgaes;../../test/include"
PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_LIB;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;ZRTP_ENABLE_EC=0"
PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_LIB;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;ZRTP_ENABLE_EC=1"
MinimalRebuild="true"
RuntimeLibrary="1"
StructMemberAlignment="0"
......@@ -136,7 +136,7 @@
ExecutionBucket="7"
Optimization="0"
AdditionalIncludeDirectories="../../third_party/bnlib;../../include;../../include/enterprise;../../third_party/bgaes;../../test/include"
PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_LIB;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;ZRTP_ENABLE_EC=0"
PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_LIB;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;ZRTP_ENABLE_EC=1"
MinimalRebuild="true"
RuntimeLibrary="1"
BufferSecurityCheck="false"
......@@ -219,7 +219,7 @@
ExecutionBucket="7"
Optimization="2"
AdditionalIncludeDirectories="../../third_party/bnlib;../../include;../../include/enterprise;../../third_party/bgaes;../../test/include"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_LIB;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;ZRTP_ENABLE_EC=0"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_LIB;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;ZRTP_ENABLE_EC=1"
RuntimeLibrary="0"
BufferSecurityCheck="false"
UsePrecompiledHeader="0"
......@@ -300,7 +300,7 @@
ExecutionBucket="7"
Optimization="2"
AdditionalIncludeDirectories="../../third_party/bnlib;../../include;../../include/enterprise;../../third_party/bgaes;../../test/include"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_LIB;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;ZRTP_ENABLE_EC=0"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_LIB;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;ZRTP_ENABLE_EC=1"
RuntimeLibrary="0"
BufferSecurityCheck="false"
UsePrecompiledHeader="0"
......@@ -382,6 +382,10 @@
RelativePath="..\..\include\zrtp_crypto.h"
>
</File>
<File
RelativePath="..\..\include\zrtp_ec.h"
>
</File>
<File
RelativePath="..\..\include\zrtp_engine.h"
>
......@@ -462,6 +466,18 @@
RelativePath="..\..\src\zrtp_crypto_atl.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_crypto_ec.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_crypto_ecdh.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_crypto_ecdsa.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_crypto_hash.c"
>
......@@ -482,6 +498,10 @@
RelativePath="..\..\src\zrtp_engine.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_engine_driven.c"
>
</File>
<File
RelativePath="..\..\src\zrtp_iface_cache.c"
>
......
......@@ -43,6 +43,9 @@ protocol = \
../../src/zrtp_crypto_sas.obj \
../../src/zrtp_datatypes.obj \
../../src/zrtp_engine.obj \
../../src/enterprise/zrtp_engine_driven.obj \
../../src/enterprise/zrtp_crypto_ec.obj \
../../src/enterprise/zrtp_crypto_ecdh.obj \
../../src/zrtp_iface_sys.obj \
../../src/zrtp_initiator.obj \
../../src/zrtp_legal.obj \
......@@ -71,13 +74,13 @@ OBJECTS = $(bnlib) $(protocol) $(bgaes)
# Debug
OUT_DIR = debug.km
OUT_DIR = debug_ec.km
DEFINES_D = -D_X86_=1 -Di386=1 -DSTD_CALL -DCONDITION_HANDLING=1 \
-DNT_UP=1 -DNT_INST=0 -DWIN32=100 -D_NT1X_=100 \
-DWINNT=1 -D_WIN32_WINNT=0x0500 -DWIN32_LEAN_AND_MEAN=1 -DDBG=1 -D_DEBUG -DDEBUG -DDEVL=1 \
-DFPO=0 -D_DLL=1 -D_IDWBUILD -DRDRDBG -DSRVDBG -DDBG_MESSAGES=1 \
-D_UNICODE -DLITTLE_ENDIAN -DZRTP_USE_ENTERPRISE=0
-D_UNICODE -DLITTLE_ENDIAN -DZRTP_USE_ENTERPRISE=1
CFLAGS_D = $(DEFINES_D) -Zel -Zp8 -Gy -cbstring -Gz -QIfdiv- -QIf -Gi- -Gm- -GX- \
-GR- -GF -FI$(DDK)\inc\$(OS)\warning.h -Z7 -Od -Oi -Oy- -W3
......@@ -86,13 +89,13 @@ CFLAGS_D = $(DEFINES_D) -Zel -Zp8 -Gy -cbstring -Gz -QIfdiv- -QIf -Gi- -Gm- -GX-
# Release
OUT_DIR = release.km
OUT_DIR = release_ec.km
DEFINES_D = -D_X86_=1 -Di386=1 -DSTD_CALL -DCONDITION_HANDLING=1 \
-DNT_UP=1 -DNO_DISK_ACCESS -DNT_INST=0 -DWIN32=100 -D_NT1X_=100 \
-DWINNT=1 -D_WIN32_WINNT=0x0500 -DWIN32_LEAN_AND_MEAN=1 -DDEVL=1 \
-DFPO=1 -DNDEBUG -D_DLL=1 -D_IDWBUILD -D_UNICODE \
-DLITTLE_ENDIAN -DZRTP_USE_ENTERPRISE=0
-DLITTLE_ENDIAN -DZRTP_USE_ENTERPRISE=1
CFLAGS_D = $(DEFINES_D) -Zel -Zp8 -Gy -cbstring -Gz -QIfdiv- -QIf -Gi- -Gm- -GX- \
-GR- -GF -Oxs -Oy -FI$(DDK)\inc\$(OS)\warning.h -W3 -FAcs -Z7
......
......@@ -44,6 +44,9 @@ protocol = \
../../src/zrtp_crypto_sas.obj \
../../src/zrtp_datatypes.obj \
../../src/zrtp_engine.obj \
../../src/enterprise/zrtp_engine_driven.obj \
../../src/enterprise/zrtp_crypto_ec.obj \
../../src/enterprise/zrtp_crypto_ecdh.obj \
../../src/zrtp_iface_sys.obj \
../../src/zrtp_initiator.obj \
../../src/zrtp_legal.obj \
......@@ -72,14 +75,14 @@ OBJECTS = $(bnlib) $(protocol) $(bgaes)
# Debug
OUT_DIR = debug64.km
OUT_DIR = debug64_ec.km
DEFINES_D = -DWIN64=1 -D_WIN64=1 -D_AMD64_=1 -D_M_AMD64 -D_WINDOWS \
-DSTD_CALL -DCONDITION_HANDLING=1 \
-DNT_UP=1 -DNT_INST=0 -D_NT1X_=100 \
-DWINNT=1 -D_WIN32_WINNT=0x0500 -DWIN32_LEAN_AND_MEAN=1 -DDBG=1 -D_DEBUG -DDEBUG -DDEVL=1 \
-DFPO=0 -D_DLL=1 -D_IDWBUILD -DRDRDBG -DSRVDBG -DDBG_MESSAGES=1 \
-D_UNICODE -DLITTLE_ENDIAN -DZRTP_USE_ENTERPRISE=0
-D_UNICODE -DLITTLE_ENDIAN -DZRTP_USE_ENTERPRISE=1
CFLAGS_D = $(DEFINES_D) -Zp8 -Gy -cbstring -Gz -Gm- -EHs-c- \
-GR- -GF -FI$(DDK)\inc\$(OS)\warning.h -Z7 -Od -Oi -Oy- -W3
......@@ -88,14 +91,14 @@ CFLAGS_D = $(DEFINES_D) -Zp8 -Gy -cbstring -Gz -Gm- -EHs-c- \
# Release
OUT_DIR = release64.km
OUT_DIR = release64_ec.km
DEFINES_D = -DWIN64=1 -D_WIN64=1 -D_AMD64_=1 -D_M_AMD64 -D_WINDOWS \
-DSTD_CALL -DCONDITION_HANDLING=1 \
-DNT_UP=1 -DNO_DISK_ACCESS -DNT_INST=0 -DWIN32=100 -D_NT1X_=100 \
-DWINNT=1 -D_WIN32_WINNT=0x0500 -DWIN32_LEAN_AND_MEAN=1 -DDEVL=1 \
-DFPO=1 -DNDEBUG -D_DLL=1 -D_IDWBUILD -D_UNICODE \
-DLITTLE_ENDIAN -DZRTP_USE_ENTERPRISE=0
-DLITTLE_ENDIAN -DZRTP_USE_ENTERPRISE=1
CFLAGS_D = $(DEFINES_D) -Zel -Zp8 -Gy -cbstring -Gz -QIfdiv- -QIf -Gi- -Gm- -GX- \
-GR- -GF -Oxs -Oy -FI$(DDK)\inc\$(OS)\warning.h -W3 -FAcs -Z7
......
差异被折叠。
差异被折叠。
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论