forked from wolfSSL/wolfssl
Fix MSVS build issues with PQC config
This commit is contained in:
@ -2382,10 +2382,13 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
|
|||||||
|
|
||||||
#ifdef HAVE_PQC
|
#ifdef HAVE_PQC
|
||||||
case 259:
|
case 259:
|
||||||
|
{
|
||||||
usePqc = 1;
|
usePqc = 1;
|
||||||
|
#if defined(WOLFSSL_TLS13) && defined(HAVE_SUPPORTED_CURVES)
|
||||||
onlyKeyShare = 2;
|
onlyKeyShare = 2;
|
||||||
|
#endif
|
||||||
pqcAlg = myoptarg;
|
pqcAlg = myoptarg;
|
||||||
break;
|
} break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WOLFSSL_TLS13) && defined(HAVE_SESSION_TICKET)
|
#if defined(WOLFSSL_TLS13) && defined(HAVE_SESSION_TICKET)
|
||||||
|
47
src/tls.c
47
src/tls.c
@ -8168,48 +8168,33 @@ typedef struct PqcHybridMapping {
|
|||||||
|
|
||||||
static const PqcHybridMapping pqc_hybrid_mapping[] = {
|
static const PqcHybridMapping pqc_hybrid_mapping[] = {
|
||||||
#ifndef WOLFSSL_NO_ML_KEM
|
#ifndef WOLFSSL_NO_ML_KEM
|
||||||
{.hybrid = WOLFSSL_P256_ML_KEM_512, .ecc = WOLFSSL_ECC_SECP256R1,
|
{WOLFSSL_P256_ML_KEM_512, WOLFSSL_ECC_SECP256R1, WOLFSSL_ML_KEM_512, 0},
|
||||||
.pqc = WOLFSSL_ML_KEM_512, .pqc_first = 0},
|
{WOLFSSL_P384_ML_KEM_768, WOLFSSL_ECC_SECP384R1, WOLFSSL_ML_KEM_768, 0},
|
||||||
{.hybrid = WOLFSSL_P384_ML_KEM_768, .ecc = WOLFSSL_ECC_SECP384R1,
|
{WOLFSSL_P256_ML_KEM_768, WOLFSSL_ECC_SECP256R1, WOLFSSL_ML_KEM_768, 0},
|
||||||
.pqc = WOLFSSL_ML_KEM_768, .pqc_first = 0},
|
{WOLFSSL_P521_ML_KEM_1024, WOLFSSL_ECC_SECP521R1, WOLFSSL_ML_KEM_1024, 0},
|
||||||
{.hybrid = WOLFSSL_P256_ML_KEM_768, .ecc = WOLFSSL_ECC_SECP256R1,
|
{WOLFSSL_P384_ML_KEM_1024, WOLFSSL_ECC_SECP384R1, WOLFSSL_ML_KEM_1024, 0},
|
||||||
.pqc = WOLFSSL_ML_KEM_768, .pqc_first = 0},
|
|
||||||
{.hybrid = WOLFSSL_P521_ML_KEM_1024, .ecc = WOLFSSL_ECC_SECP521R1,
|
|
||||||
.pqc = WOLFSSL_ML_KEM_1024, .pqc_first = 0},
|
|
||||||
{.hybrid = WOLFSSL_P384_ML_KEM_1024, .ecc = WOLFSSL_ECC_SECP384R1,
|
|
||||||
.pqc = WOLFSSL_ML_KEM_1024, .pqc_first = 0},
|
|
||||||
#ifdef HAVE_CURVE25519
|
#ifdef HAVE_CURVE25519
|
||||||
{.hybrid = WOLFSSL_X25519_ML_KEM_512, .ecc = WOLFSSL_ECC_X25519,
|
{WOLFSSL_X25519_ML_KEM_512, WOLFSSL_ECC_X25519, WOLFSSL_ML_KEM_512, 1},
|
||||||
.pqc = WOLFSSL_ML_KEM_512, .pqc_first = 1},
|
{WOLFSSL_X25519_ML_KEM_768, WOLFSSL_ECC_X25519, WOLFSSL_ML_KEM_768, 1},
|
||||||
{.hybrid = WOLFSSL_X25519_ML_KEM_768, .ecc = WOLFSSL_ECC_X25519,
|
|
||||||
.pqc = WOLFSSL_ML_KEM_768, .pqc_first = 1},
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_CURVE448
|
#ifdef HAVE_CURVE448
|
||||||
{.hybrid = WOLFSSL_X448_ML_KEM_768, .ecc = WOLFSSL_ECC_X448,
|
{WOLFSSL_X448_ML_KEM_768, WOLFSSL_ECC_X448, WOLFSSL_ML_KEM_768, 1},
|
||||||
.pqc = WOLFSSL_ML_KEM_768, .pqc_first = 1},
|
|
||||||
#endif
|
#endif
|
||||||
#endif /* WOLFSSL_NO_ML_KEM */
|
#endif /* WOLFSSL_NO_ML_KEM */
|
||||||
#ifdef WOLFSSL_MLKEM_KYBER
|
#ifdef WOLFSSL_MLKEM_KYBER
|
||||||
{.hybrid = WOLFSSL_P256_KYBER_LEVEL1, .ecc = WOLFSSL_ECC_SECP256R1,
|
{WOLFSSL_P256_KYBER_LEVEL1, WOLFSSL_ECC_SECP256R1, WOLFSSL_KYBER_LEVEL1, 0},
|
||||||
.pqc = WOLFSSL_KYBER_LEVEL1, .pqc_first = 0},
|
{WOLFSSL_P384_KYBER_LEVEL3, WOLFSSL_ECC_SECP384R1, WOLFSSL_KYBER_LEVEL3, 0},
|
||||||
{.hybrid = WOLFSSL_P384_KYBER_LEVEL3, .ecc = WOLFSSL_ECC_SECP384R1,
|
{WOLFSSL_P256_KYBER_LEVEL3, WOLFSSL_ECC_SECP256R1, WOLFSSL_KYBER_LEVEL3, 0},
|
||||||
.pqc = WOLFSSL_KYBER_LEVEL3, .pqc_first = 0},
|
{WOLFSSL_P521_KYBER_LEVEL5, WOLFSSL_ECC_SECP521R1, WOLFSSL_KYBER_LEVEL5, 0},
|
||||||
{.hybrid = WOLFSSL_P256_KYBER_LEVEL3, .ecc = WOLFSSL_ECC_SECP256R1,
|
|
||||||
.pqc = WOLFSSL_KYBER_LEVEL3, .pqc_first = 0},
|
|
||||||
{.hybrid = WOLFSSL_P521_KYBER_LEVEL5, .ecc = WOLFSSL_ECC_SECP521R1,
|
|
||||||
.pqc = WOLFSSL_KYBER_LEVEL5, .pqc_first = 0},
|
|
||||||
#ifdef HAVE_CURVE25519
|
#ifdef HAVE_CURVE25519
|
||||||
{.hybrid = WOLFSSL_X25519_KYBER_LEVEL1, .ecc = WOLFSSL_ECC_X25519,
|
{WOLFSSL_X25519_KYBER_LEVEL1, WOLFSSL_ECC_X25519, WOLFSSL_KYBER_LEVEL1, 0},
|
||||||
.pqc = WOLFSSL_KYBER_LEVEL1, .pqc_first = 0},
|
{WOLFSSL_X25519_KYBER_LEVEL3, WOLFSSL_ECC_X25519, WOLFSSL_KYBER_LEVEL3, 0},
|
||||||
{.hybrid = WOLFSSL_X25519_KYBER_LEVEL3, .ecc = WOLFSSL_ECC_X25519,
|
|
||||||
.pqc = WOLFSSL_KYBER_LEVEL3, .pqc_first = 0},
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_CURVE448
|
#ifdef HAVE_CURVE448
|
||||||
{.hybrid = WOLFSSL_X448_KYBER_LEVEL3, .ecc = WOLFSSL_ECC_X448,
|
{WOLFSSL_X448_KYBER_LEVEL3, WOLFSSL_ECC_X448, WOLFSSL_KYBER_LEVEL3, 0},
|
||||||
.pqc = WOLFSSL_KYBER_LEVEL3, .pqc_first = 0},
|
|
||||||
#endif
|
#endif
|
||||||
#endif /* WOLFSSL_MLKEM_KYBER */
|
#endif /* WOLFSSL_MLKEM_KYBER */
|
||||||
{.hybrid = 0, .ecc = 0, .pqc = 0, .pqc_first = 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Map an ecc-pqc hybrid group into its ecc group and pqc kem group. */
|
/* Map an ecc-pqc hybrid group into its ecc group and pqc kem group. */
|
||||||
|
@ -8950,9 +8950,10 @@ int wc_dilithium_check_key(dilithium_key* key)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
params = key->params;
|
|
||||||
unsigned int allocSz;
|
unsigned int allocSz;
|
||||||
|
|
||||||
|
params = key->params;
|
||||||
|
|
||||||
/* s1-L, s2-K, t0-K, t-K, t1-K */
|
/* s1-L, s2-K, t0-K, t-K, t1-K */
|
||||||
allocSz = params->s1Sz + 4 * params->s2Sz;
|
allocSz = params->s1Sz + 4 * params->s2Sz;
|
||||||
#if !defined(WC_DILITHIUM_CACHE_MATRIX_A)
|
#if !defined(WC_DILITHIUM_CACHE_MATRIX_A)
|
||||||
|
@ -821,36 +821,39 @@ static int mlkemkey_encapsulate(MlKemKey* key, const byte* m, byte* r, byte* c)
|
|||||||
}
|
}
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
#endif
|
#endif
|
||||||
byte* c1 = c;
|
{
|
||||||
byte* c2 = c + compVecSz;
|
byte* c1 = c;
|
||||||
|
byte* c2 = c + compVecSz;
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_KYBER512) || defined(WOLFSSL_WC_ML_KEM_512)
|
||||||
|
if (k == WC_ML_KEM_512_K) {
|
||||||
|
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
|
||||||
|
mlkem_vec_compress_10(c1, u, k);
|
||||||
|
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
|
||||||
|
mlkem_compress_4(c2, v);
|
||||||
|
/* Step 24: return c <- (c_1||c_2) */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(WOLFSSL_KYBER768) || defined(WOLFSSL_WC_ML_KEM_768)
|
||||||
|
if (k == WC_ML_KEM_768_K) {
|
||||||
|
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
|
||||||
|
mlkem_vec_compress_10(c1, u, k);
|
||||||
|
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
|
||||||
|
mlkem_compress_4(c2, v);
|
||||||
|
/* Step 24: return c <- (c_1||c_2) */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(WOLFSSL_KYBER1024) || defined(WOLFSSL_WC_ML_KEM_1024)
|
||||||
|
if (k == WC_ML_KEM_1024_K) {
|
||||||
|
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
|
||||||
|
mlkem_vec_compress_11(c1, u);
|
||||||
|
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
|
||||||
|
mlkem_compress_5(c2, v);
|
||||||
|
/* Step 24: return c <- (c_1||c_2) */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(WOLFSSL_KYBER512) || defined(WOLFSSL_WC_ML_KEM_512)
|
|
||||||
if (k == WC_ML_KEM_512_K) {
|
|
||||||
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
|
|
||||||
mlkem_vec_compress_10(c1, u, k);
|
|
||||||
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
|
|
||||||
mlkem_compress_4(c2, v);
|
|
||||||
/* Step 24: return c <- (c_1||c_2) */
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#if defined(WOLFSSL_KYBER768) || defined(WOLFSSL_WC_ML_KEM_768)
|
|
||||||
if (k == WC_ML_KEM_768_K) {
|
|
||||||
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
|
|
||||||
mlkem_vec_compress_10(c1, u, k);
|
|
||||||
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
|
|
||||||
mlkem_compress_4(c2, v);
|
|
||||||
/* Step 24: return c <- (c_1||c_2) */
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if defined(WOLFSSL_KYBER1024) || defined(WOLFSSL_WC_ML_KEM_1024)
|
|
||||||
if (k == WC_ML_KEM_1024_K) {
|
|
||||||
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
|
|
||||||
mlkem_vec_compress_11(c1, u);
|
|
||||||
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
|
|
||||||
mlkem_compress_5(c2, v);
|
|
||||||
/* Step 24: return c <- (c_1||c_2) */
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef WOLFSSL_NO_MALLOC
|
#ifndef WOLFSSL_NO_MALLOC
|
||||||
|
Reference in New Issue
Block a user