Added WOLFSSL_ECC_CURVE_STATIC build option to allow using fixed arrays for ECC parameters. This is enabled by default on Windows. Fixed several compiler warnings. Fixed build macro for key->deallocSet.

This commit is contained in:
David Garske
2020-01-13 07:15:17 -08:00
parent 41f134ae31
commit 8974827fbe
4 changed files with 89 additions and 59 deletions

View File

@@ -14356,7 +14356,7 @@ int wc_EccPublicKeyDecode(const byte* input, word32* inOutIdx,
if (ret == 0) {
static char customName[] = "Custom";
XMEMSET(curve, 0, sizeof(*curve));
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
curve->name = customName;
#else
XMEMCPY((void*)curve->name, customName, sizeof(customName));
@@ -14377,17 +14377,17 @@ int wc_EccPublicKeyDecode(const byte* input, word32* inOutIdx,
SkipObjectId(input, inOutIdx, inSz);
ret = ASNToHexString(input, inOutIdx, &p, inSz,
key->heap, DYNAMIC_TYPE_ECC_BUFFER);
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
curve->prime = p;
#else
if (ret == 0 && p != NULL) {
length = XSTRLEN(p) + 1;
length = (int)XSTRLEN(p) + 1;
if (length > MAX_ECC_STRING) {
WOLFSSL_MSG("Prime too large for buffer");
ret = BUFFER_E;
}
else {
XSTRNCPY(curve->prime, p, length);
XSTRNCPY((char*)curve->prime, p, length);
}
}
XFREE(p, key->heap, DYNAMIC_TYPE_ECC_BUFFER);
@@ -14403,17 +14403,17 @@ int wc_EccPublicKeyDecode(const byte* input, word32* inOutIdx,
char* af = NULL;
ret = ASNToHexString(input, inOutIdx, &af, inSz,
key->heap, DYNAMIC_TYPE_ECC_BUFFER);
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
curve->Af = af;
#else
if (ret == 0 && af != NULL) {
length = XSTRLEN(af) + 1;
length = (int)XSTRLEN(af) + 1;
if (length > MAX_ECC_STRING) {
WOLFSSL_MSG("Af too large for buffer");
ret = BUFFER_E;
}
else {
XSTRNCPY(curve->Af, af, length);
XSTRNCPY((char*)curve->Af, af, length);
}
}
XFREE(af, key->heap, DYNAMIC_TYPE_ECC_BUFFER);
@@ -14424,17 +14424,17 @@ int wc_EccPublicKeyDecode(const byte* input, word32* inOutIdx,
char* bf = NULL;
ret = ASNToHexString(input, inOutIdx, &bf, inSz,
key->heap, DYNAMIC_TYPE_ECC_BUFFER);
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
curve->Bf = bf;
#else
if (ret == 0 && bf != NULL) {
length = XSTRLEN(bf) + 1;
length = (int)XSTRLEN(bf) + 1;
if (length > MAX_ECC_STRING) {
WOLFSSL_MSG("Bf too large for buffer");
ret = BUFFER_E;
}
else {
XSTRNCPY(curve->Bf, bf, length);
XSTRNCPY((char*)curve->Bf, bf, length);
}
}
XFREE(bf, key->heap, DYNAMIC_TYPE_ECC_BUFFER);
@@ -14462,7 +14462,7 @@ int wc_EccPublicKeyDecode(const byte* input, word32* inOutIdx,
}
}
if (ret == 0) {
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
curve->Gx = (const char*)XMALLOC(curve->size * 2 + 2, key->heap,
DYNAMIC_TYPE_ECC_BUFFER);
curve->Gy = (const char*)XMALLOC(curve->size * 2 + 2, key->heap,
@@ -14490,17 +14490,17 @@ int wc_EccPublicKeyDecode(const byte* input, word32* inOutIdx,
ret = ASNToHexString(input, inOutIdx, &o, inSz,
key->heap, DYNAMIC_TYPE_ECC_BUFFER);
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
curve->order = o;
#else
if (ret == 0 && o != NULL) {
length = XSTRLEN(o) + 1;
length = (int)XSTRLEN(o) + 1;
if (length > MAX_ECC_STRING) {
WOLFSSL_MSG("Order too large for buffer");
ret = BUFFER_E;
}
else {
XSTRNCPY(curve->order, o, length);
XSTRNCPY((char*)curve->order, o, length);
}
}
XFREE(o, key->heap, DYNAMIC_TYPE_ECC_BUFFER);
@@ -14509,7 +14509,7 @@ int wc_EccPublicKeyDecode(const byte* input, word32* inOutIdx,
if (ret == 0) {
curve->cofactor = GetInteger7Bit(input, inOutIdx, inSz);
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
curve->oid = NULL;
#else
XMEMSET((void*)curve->oid, 0, sizeof(curve->oid));
@@ -14520,7 +14520,7 @@ int wc_EccPublicKeyDecode(const byte* input, word32* inOutIdx,
if (wc_ecc_set_custom_curve(key, curve) < 0) {
ret = ASN_PARSE_E;
}
#ifndef USE_WINDOWS_API
#ifdef WOLFSSL_CUSTOM_CURVES
key->deallocSet = 1;
#endif
curve = NULL;

View File

@@ -53,6 +53,9 @@ Possible ECC enable options:
* FP_ECC: ECC Fixed Point Cache default: off
* USE_ECC_B_PARAM: Enable ECC curve B param default: off
(on for HAVE_COMP_KEY)
* WOLFSSL_ECC_CURVE_STATIC: default off (on for windows)
For the ECC curve paramaters `ecc_set_type` use fixed
array for hex string
*/
/*
@@ -212,7 +215,7 @@ enum {
#define CODED_SECP112R1 {0x2B,0x81,0x04,0x00,0x06}
#define CODED_SECP112R1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp112r1[] = CODED_SECP112R1;
#else
#define ecc_oid_secp112r1 CODED_SECP112R1
@@ -227,7 +230,7 @@ enum {
#define CODED_SECP112R2 {0x2B,0x81,0x04,0x00,0x07}
#define CODED_SECP112R2_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp112r2[] = CODED_SECP112R2;
#else
#define ecc_oid_secp112r2 CODED_SECP112R2
@@ -244,7 +247,7 @@ enum {
#define CODED_SECP128R1 {0x2B,0x81,0x04,0x00,0x1C}
#define CODED_SECP128R1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp128r1[] = CODED_SECP128R1;
#else
#define ecc_oid_secp128r1 CODED_SECP128R1
@@ -259,7 +262,7 @@ enum {
#define CODED_SECP128R2 {0x2B,0x81,0x04,0x00,0x1D}
#define CODED_SECP128R2_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp128r2[] = CODED_SECP128R2;
#else
#define ecc_oid_secp128r2 CODED_SECP128R2
@@ -276,7 +279,7 @@ enum {
#define CODED_SECP160R1 {0x2B,0x81,0x04,0x00,0x08}
#define CODED_SECP160R1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp160r1[] = CODED_SECP160R1;
#else
#define ecc_oid_secp160r1 CODED_SECP160R1
@@ -291,7 +294,7 @@ enum {
#define CODED_SECP160R2 {0x2B,0x81,0x04,0x00,0x1E}
#define CODED_SECP160R2_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp160r2[] = CODED_SECP160R2;
#else
#define ecc_oid_secp160r2 CODED_SECP160R2
@@ -306,7 +309,7 @@ enum {
#define CODED_SECP160K1 {0x2B,0x81,0x04,0x00,0x09}
#define CODED_SECP160K1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp160k1[] = CODED_SECP160K1;
#else
#define ecc_oid_secp160k1 CODED_SECP160K1
@@ -321,7 +324,7 @@ enum {
#define CODED_BRAINPOOLP160R1 {0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x01}
#define CODED_BRAINPOOLP160R1_SZ 9
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_brainpoolp160r1[] = CODED_BRAINPOOLP160R1;
#else
#define ecc_oid_brainpoolp160r1 CODED_BRAINPOOLP160R1
@@ -338,7 +341,7 @@ enum {
#define CODED_SECP192R1 {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x01}
#define CODED_SECP192R1_SZ 8
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp192r1[] = CODED_SECP192R1;
#else
#define ecc_oid_secp192r1 CODED_SECP192R1
@@ -353,7 +356,7 @@ enum {
#define CODED_PRIME192V2 {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x02}
#define CODED_PRIME192V2_SZ 8
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_prime192v2[] = CODED_PRIME192V2;
#else
#define ecc_oid_prime192v2 CODED_PRIME192V2
@@ -368,7 +371,7 @@ enum {
#define CODED_PRIME192V3 {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x03}
#define CODED_PRIME192V3_SZ 8
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_prime192v3[] = CODED_PRIME192V3;
#else
#define ecc_oid_prime192v3 CODED_PRIME192V3
@@ -383,7 +386,7 @@ enum {
#define CODED_SECP192K1 {0x2B,0x81,0x04,0x00,0x1F}
#define CODED_SECP192K1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp192k1[] = CODED_SECP192K1;
#else
#define ecc_oid_secp192k1 CODED_SECP192K1
@@ -398,7 +401,7 @@ enum {
#define CODED_BRAINPOOLP192R1 {0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x03}
#define CODED_BRAINPOOLP192R1_SZ 9
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_brainpoolp192r1[] = CODED_BRAINPOOLP192R1;
#else
#define ecc_oid_brainpoolp192r1 CODED_BRAINPOOLP192R1
@@ -415,7 +418,7 @@ enum {
#define CODED_SECP224R1 {0x2B,0x81,0x04,0x00,0x21}
#define CODED_SECP224R1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp224r1[] = CODED_SECP224R1;
#else
#define ecc_oid_secp224r1 CODED_SECP224R1
@@ -430,7 +433,7 @@ enum {
#define CODED_SECP224K1 {0x2B,0x81,0x04,0x00,0x20}
#define CODED_SECP224K1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp224k1[] = CODED_SECP224K1;
#else
#define ecc_oid_secp224k1 CODED_SECP224K1
@@ -445,7 +448,7 @@ enum {
#define CODED_BRAINPOOLP224R1 {0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x05}
#define CODED_BRAINPOOLP224R1_SZ 9
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_brainpoolp224r1[] = CODED_BRAINPOOLP224R1;
#else
#define ecc_oid_brainpoolp224r1 CODED_BRAINPOOLP224R1
@@ -462,7 +465,7 @@ enum {
#define CODED_PRIME239V1 {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x04}
#define CODED_PRIME239V1_SZ 8
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_prime239v1[] = CODED_PRIME239V1;
#else
#define ecc_oid_prime239v1 CODED_PRIME239V1
@@ -477,7 +480,7 @@ enum {
#define CODED_PRIME239V2 {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x05}
#define CODED_PRIME239V2_SZ 8
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_prime239v2[] = CODED_PRIME239V2;
#else
#define ecc_oid_prime239v2 CODED_PRIME239V2
@@ -492,7 +495,7 @@ enum {
#define CODED_PRIME239V3 {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x06}
#define CODED_PRIME239V3_SZ 8
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_prime239v3[] = CODED_PRIME239V3;
#else
#define ecc_oid_prime239v3 CODED_PRIME239V3
@@ -509,7 +512,7 @@ enum {
#define CODED_SECP256R1 {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x07}
#define CODED_SECP256R1_SZ 8
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp256r1[] = CODED_SECP256R1;
#else
#define ecc_oid_secp256r1 CODED_SECP256R1
@@ -524,7 +527,7 @@ enum {
#define CODED_SECP256K1 {0x2B,0x81,0x04,0x00,0x0A}
#define CODED_SECP256K1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp256k1[] = CODED_SECP256K1;
#else
#define ecc_oid_secp256k1 CODED_SECP256K1
@@ -539,7 +542,7 @@ enum {
#define CODED_BRAINPOOLP256R1 {0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x07}
#define CODED_BRAINPOOLP256R1_SZ 9
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_brainpoolp256r1[] = CODED_BRAINPOOLP256R1;
#else
#define ecc_oid_brainpoolp256r1 CODED_BRAINPOOLP256R1
@@ -556,7 +559,7 @@ enum {
#define CODED_BRAINPOOLP320R1 {0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x09}
#define CODED_BRAINPOOLP320R1_SZ 9
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_brainpoolp320r1[] = CODED_BRAINPOOLP320R1;
#else
#define ecc_oid_brainpoolp320r1 CODED_BRAINPOOLP320R1
@@ -573,7 +576,7 @@ enum {
#define CODED_SECP384R1 {0x2B,0x81,0x04,0x00,0x22}
#define CODED_SECP384R1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp384r1[] = CODED_SECP384R1;
#define CODED_SECP384R1_OID ecc_oid_secp384r1
#else
@@ -589,7 +592,7 @@ enum {
#define CODED_BRAINPOOLP384R1 {0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x0B}
#define CODED_BRAINPOOLP384R1_SZ 9
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_brainpoolp384r1[] = CODED_BRAINPOOLP384R1;
#else
#define ecc_oid_brainpoolp384r1 CODED_BRAINPOOLP384R1
@@ -606,7 +609,7 @@ enum {
#define CODED_BRAINPOOLP512R1 {0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x0D}
#define CODED_BRAINPOOLP512R1_SZ 9
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_brainpoolp512r1[] = CODED_BRAINPOOLP512R1;
#else
#define ecc_oid_brainpoolp512r1 CODED_BRAINPOOLP512R1
@@ -623,7 +626,7 @@ enum {
#define CODED_SECP521R1 {0x2B,0x81,0x04,0x00,0x23}
#define CODED_SECP521R1_SZ 5
#endif
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
static const ecc_oid_t ecc_oid_secp521r1[] = CODED_SECP521R1;
#else
#define ecc_oid_secp521r1 CODED_SECP521R1
@@ -1118,7 +1121,7 @@ const ecc_set_type ecc_sets[] = {
{
1, /* non-zero */
ECC_CURVE_CUSTOM,
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
#else
{0},{0},{0},{0},{0},{0},{0},{0},
@@ -1129,7 +1132,7 @@ const ecc_set_type ecc_sets[] = {
{
0,
ECC_CURVE_INVALID,
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
#else
{0},{0},{0},{0},{0},{0},{0},{0},
@@ -3144,7 +3147,10 @@ int wc_ecc_get_curve_idx_from_name(const char* curveName)
len = (word32)XSTRLEN(curveName);
for (curve_idx = 0; ecc_sets[curve_idx].size != 0; curve_idx++) {
if (ecc_sets[curve_idx].name &&
if (
#ifndef WOLFSSL_ECC_CURVE_STATIC
ecc_sets[curve_idx].name &&
#endif
XSTRNCASECMP(ecc_sets[curve_idx].name, curveName, len) == 0) {
break;
}
@@ -3331,9 +3337,14 @@ int wc_ecc_get_curve_id_from_dp_params(const ecc_set_type* dp)
{
int idx;
if (dp == NULL || dp->prime == NULL || dp->Af == NULL ||
dp->Bf == NULL || dp->order == NULL || dp->Gx == NULL || dp->Gy == NULL)
if (dp == NULL
#ifndef WOLFSSL_ECC_CURVE_STATIC
|| dp->prime == NULL || dp->Af == NULL ||
dp->Bf == NULL || dp->order == NULL || dp->Gx == NULL || dp->Gy == NULL
#endif
) {
return BAD_FUNC_ARG;
}
for (idx = 0; ecc_sets[idx].size != 0; idx++) {
if (dp->size == ecc_sets[idx].size) {
@@ -3376,7 +3387,11 @@ int wc_ecc_get_curve_id_from_oid(const byte* oid, word32 len)
return BAD_FUNC_ARG;
for (curve_idx = 0; ecc_sets[curve_idx].size != 0; curve_idx++) {
if (ecc_sets[curve_idx].oid && ecc_sets[curve_idx].oidSz == len &&
if (
#ifndef WOLFSSL_ECC_CURVE_STATIC
ecc_sets[curve_idx].oid &&
#endif
ecc_sets[curve_idx].oidSz == len &&
XMEMCMP(ecc_sets[curve_idx].oid, oid, len) == 0) {
break;
}
@@ -5127,7 +5142,7 @@ int wc_ecc_sign_set_k(const byte* k, word32 klen, ecc_key* key)
#ifdef WOLFSSL_CUSTOM_CURVES
void wc_ecc_free_curve(const ecc_set_type* curve, void* heap)
{
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
if (curve->prime != NULL)
XFREE((void*)curve->prime, heap, DYNAMIC_TYPE_ECC_BUFFER);
if (curve->Af != NULL)

View File

@@ -18241,10 +18241,20 @@ static int ecc_test_custom_curves(WC_RNG* rng)
ecc_key key;
/* test use of custom curve - using BRAINPOOLP256R1 for test */
const word32 ecc_oid_brainpoolp256r1_sum = 104;
#ifndef WOLFSSL_ECC_CURVE_STATIC
const ecc_oid_t ecc_oid_brainpoolp256r1[] = {
0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x07
};
const word32 ecc_oid_brainpoolp256r1_sz =
sizeof(ecc_oid_brainpoolp256r1) / sizeof(ecc_oid_t);
#else
#define ecc_oid_brainpoolp256r1 { \
0x2B,0x24,0x03,0x03,0x02,0x08,0x01,0x01,0x07 \
}
#define ecc_oid_brainpoolp256r1_sz 9
#endif
const word32 ecc_oid_brainpoolp256r1_sum = 104;
const ecc_set_type ecc_dp_brainpool256r1 = {
32, /* size/bytes */
ECC_CURVE_CUSTOM, /* ID */
@@ -18256,7 +18266,7 @@ static int ecc_test_custom_curves(WC_RNG* rng)
"8BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262", /* Gx */
"547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F046997", /* Gy */
ecc_oid_brainpoolp256r1, /* oid/oidSz */
sizeof(ecc_oid_brainpoolp256r1) / sizeof(ecc_oid_t),
ecc_oid_brainpoolp256r1_sz,
ecc_oid_brainpoolp256r1_sum, /* oid sum */
1, /* cofactor */
};

View File

@@ -214,8 +214,17 @@ typedef byte ecc_oid_t;
if any element > 127 then MSB 0x80 indicates additional byte */
#endif
#if !defined(WOLFSSL_ECC_CURVE_STATIC) && defined(USE_WINDOWS_API)
/* MSC does something different with the pointers to the arrays than GCC,
* and it causes the FIPS checksum to fail. In the case of windows builds,
* store everything as arrays instead of pointers to strings. */
#define WOLFSSL_ECC_CURVE_STATIC
#endif
/* ECC set type defined a GF(p) curve */
#ifndef USE_WINDOWS_API
#ifndef WOLFSSL_ECC_CURVE_STATIC
typedef struct ecc_set_type {
int size; /* The size of the curve in octets */
int id; /* id of this curve */
@@ -232,10 +241,6 @@ typedef struct ecc_set_type {
int cofactor;
} ecc_set_type;
#else
/* MSC does something different with the pointers to the arrays than GCC,
* and it causes the FIPS checksum to fail. In the case of windows builds,
* store everything as arrays instead of pointers to strings. */
#define MAX_ECC_NAME 16
#define MAX_ECC_STRING ((MAX_ECC_BYTES * 2) + 1)
/* The values are stored as text strings. */