Skip to content

Commit 9a3ea6f

Browse files
authored
Merge pull request #8568 from embhorn/msvs_pqc_build
Fix MSVS build issues with PQC config
2 parents 294e4c7 + f663ed2 commit 9a3ea6f

File tree

4 files changed

+53
-61
lines changed

4 files changed

+53
-61
lines changed

examples/server/server.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -2382,10 +2382,13 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
23822382

23832383
#ifdef HAVE_PQC
23842384
case 259:
2385+
{
23852386
usePqc = 1;
2387+
#if defined(WOLFSSL_TLS13) && defined(HAVE_SUPPORTED_CURVES)
23862388
onlyKeyShare = 2;
2389+
#endif
23872390
pqcAlg = myoptarg;
2388-
break;
2391+
} break;
23892392
#endif
23902393

23912394
#if defined(WOLFSSL_TLS13) && defined(HAVE_SESSION_TICKET)

src/tls.c

+16-31
Original file line numberDiff line numberDiff line change
@@ -8168,48 +8168,33 @@ typedef struct PqcHybridMapping {
81688168

81698169
static const PqcHybridMapping pqc_hybrid_mapping[] = {
81708170
#ifndef WOLFSSL_NO_ML_KEM
8171-
{.hybrid = WOLFSSL_P256_ML_KEM_512, .ecc = WOLFSSL_ECC_SECP256R1,
8172-
.pqc = WOLFSSL_ML_KEM_512, .pqc_first = 0},
8173-
{.hybrid = WOLFSSL_P384_ML_KEM_768, .ecc = WOLFSSL_ECC_SECP384R1,
8174-
.pqc = WOLFSSL_ML_KEM_768, .pqc_first = 0},
8175-
{.hybrid = WOLFSSL_P256_ML_KEM_768, .ecc = WOLFSSL_ECC_SECP256R1,
8176-
.pqc = WOLFSSL_ML_KEM_768, .pqc_first = 0},
8177-
{.hybrid = WOLFSSL_P521_ML_KEM_1024, .ecc = WOLFSSL_ECC_SECP521R1,
8178-
.pqc = WOLFSSL_ML_KEM_1024, .pqc_first = 0},
8179-
{.hybrid = WOLFSSL_P384_ML_KEM_1024, .ecc = WOLFSSL_ECC_SECP384R1,
8180-
.pqc = WOLFSSL_ML_KEM_1024, .pqc_first = 0},
8171+
{WOLFSSL_P256_ML_KEM_512, WOLFSSL_ECC_SECP256R1, WOLFSSL_ML_KEM_512, 0},
8172+
{WOLFSSL_P384_ML_KEM_768, WOLFSSL_ECC_SECP384R1, WOLFSSL_ML_KEM_768, 0},
8173+
{WOLFSSL_P256_ML_KEM_768, WOLFSSL_ECC_SECP256R1, WOLFSSL_ML_KEM_768, 0},
8174+
{WOLFSSL_P521_ML_KEM_1024, WOLFSSL_ECC_SECP521R1, WOLFSSL_ML_KEM_1024, 0},
8175+
{WOLFSSL_P384_ML_KEM_1024, WOLFSSL_ECC_SECP384R1, WOLFSSL_ML_KEM_1024, 0},
81818176
#ifdef HAVE_CURVE25519
8182-
{.hybrid = WOLFSSL_X25519_ML_KEM_512, .ecc = WOLFSSL_ECC_X25519,
8183-
.pqc = WOLFSSL_ML_KEM_512, .pqc_first = 1},
8184-
{.hybrid = WOLFSSL_X25519_ML_KEM_768, .ecc = WOLFSSL_ECC_X25519,
8185-
.pqc = WOLFSSL_ML_KEM_768, .pqc_first = 1},
8177+
{WOLFSSL_X25519_ML_KEM_512, WOLFSSL_ECC_X25519, WOLFSSL_ML_KEM_512, 1},
8178+
{WOLFSSL_X25519_ML_KEM_768, WOLFSSL_ECC_X25519, WOLFSSL_ML_KEM_768, 1},
81868179
#endif
81878180
#ifdef HAVE_CURVE448
8188-
{.hybrid = WOLFSSL_X448_ML_KEM_768, .ecc = WOLFSSL_ECC_X448,
8189-
.pqc = WOLFSSL_ML_KEM_768, .pqc_first = 1},
8181+
{WOLFSSL_X448_ML_KEM_768, WOLFSSL_ECC_X448, WOLFSSL_ML_KEM_768, 1},
81908182
#endif
81918183
#endif /* WOLFSSL_NO_ML_KEM */
81928184
#ifdef WOLFSSL_MLKEM_KYBER
8193-
{.hybrid = WOLFSSL_P256_KYBER_LEVEL1, .ecc = WOLFSSL_ECC_SECP256R1,
8194-
.pqc = WOLFSSL_KYBER_LEVEL1, .pqc_first = 0},
8195-
{.hybrid = WOLFSSL_P384_KYBER_LEVEL3, .ecc = WOLFSSL_ECC_SECP384R1,
8196-
.pqc = WOLFSSL_KYBER_LEVEL3, .pqc_first = 0},
8197-
{.hybrid = WOLFSSL_P256_KYBER_LEVEL3, .ecc = WOLFSSL_ECC_SECP256R1,
8198-
.pqc = WOLFSSL_KYBER_LEVEL3, .pqc_first = 0},
8199-
{.hybrid = WOLFSSL_P521_KYBER_LEVEL5, .ecc = WOLFSSL_ECC_SECP521R1,
8200-
.pqc = WOLFSSL_KYBER_LEVEL5, .pqc_first = 0},
8185+
{WOLFSSL_P256_KYBER_LEVEL1, WOLFSSL_ECC_SECP256R1, WOLFSSL_KYBER_LEVEL1, 0},
8186+
{WOLFSSL_P384_KYBER_LEVEL3, WOLFSSL_ECC_SECP384R1, WOLFSSL_KYBER_LEVEL3, 0},
8187+
{WOLFSSL_P256_KYBER_LEVEL3, WOLFSSL_ECC_SECP256R1, WOLFSSL_KYBER_LEVEL3, 0},
8188+
{WOLFSSL_P521_KYBER_LEVEL5, WOLFSSL_ECC_SECP521R1, WOLFSSL_KYBER_LEVEL5, 0},
82018189
#ifdef HAVE_CURVE25519
8202-
{.hybrid = WOLFSSL_X25519_KYBER_LEVEL1, .ecc = WOLFSSL_ECC_X25519,
8203-
.pqc = WOLFSSL_KYBER_LEVEL1, .pqc_first = 0},
8204-
{.hybrid = WOLFSSL_X25519_KYBER_LEVEL3, .ecc = WOLFSSL_ECC_X25519,
8205-
.pqc = WOLFSSL_KYBER_LEVEL3, .pqc_first = 0},
8190+
{WOLFSSL_X25519_KYBER_LEVEL1, WOLFSSL_ECC_X25519, WOLFSSL_KYBER_LEVEL1, 0},
8191+
{WOLFSSL_X25519_KYBER_LEVEL3, WOLFSSL_ECC_X25519, WOLFSSL_KYBER_LEVEL3, 0},
82068192
#endif
82078193
#ifdef HAVE_CURVE448
8208-
{.hybrid = WOLFSSL_X448_KYBER_LEVEL3, .ecc = WOLFSSL_ECC_X448,
8209-
.pqc = WOLFSSL_KYBER_LEVEL3, .pqc_first = 0},
8194+
{WOLFSSL_X448_KYBER_LEVEL3, WOLFSSL_ECC_X448, WOLFSSL_KYBER_LEVEL3, 0},
82108195
#endif
82118196
#endif /* WOLFSSL_MLKEM_KYBER */
8212-
{.hybrid = 0, .ecc = 0, .pqc = 0, .pqc_first = 0}
8197+
{0, 0, 0, 0}
82138198
};
82148199

82158200
/* Map an ecc-pqc hybrid group into its ecc group and pqc kem group. */

wolfcrypt/src/dilithium.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -8950,9 +8950,10 @@ int wc_dilithium_check_key(dilithium_key* key)
89508950
*/
89518951

89528952
if (ret == 0) {
8953-
params = key->params;
89548953
unsigned int allocSz;
89558954

8955+
params = key->params;
8956+
89568957
/* s1-L, s2-K, t0-K, t-K, t1-K */
89578958
allocSz = params->s1Sz + 4 * params->s2Sz;
89588959
#if !defined(WC_DILITHIUM_CACHE_MATRIX_A)

wolfcrypt/src/wc_mlkem.c

+31-28
Original file line numberDiff line numberDiff line change
@@ -821,36 +821,39 @@ static int mlkemkey_encapsulate(MlKemKey* key, const byte* m, byte* r, byte* c)
821821
}
822822
if (ret == 0) {
823823
#endif
824-
byte* c1 = c;
825-
byte* c2 = c + compVecSz;
824+
{
825+
byte* c1 = c;
826+
byte* c2 = c + compVecSz;
827+
828+
#if defined(WOLFSSL_KYBER512) || defined(WOLFSSL_WC_ML_KEM_512)
829+
if (k == WC_ML_KEM_512_K) {
830+
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
831+
mlkem_vec_compress_10(c1, u, k);
832+
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
833+
mlkem_compress_4(c2, v);
834+
/* Step 24: return c <- (c_1||c_2) */
835+
}
836+
#endif
837+
#if defined(WOLFSSL_KYBER768) || defined(WOLFSSL_WC_ML_KEM_768)
838+
if (k == WC_ML_KEM_768_K) {
839+
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
840+
mlkem_vec_compress_10(c1, u, k);
841+
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
842+
mlkem_compress_4(c2, v);
843+
/* Step 24: return c <- (c_1||c_2) */
844+
}
845+
#endif
846+
#if defined(WOLFSSL_KYBER1024) || defined(WOLFSSL_WC_ML_KEM_1024)
847+
if (k == WC_ML_KEM_1024_K) {
848+
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
849+
mlkem_vec_compress_11(c1, u);
850+
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
851+
mlkem_compress_5(c2, v);
852+
/* Step 24: return c <- (c_1||c_2) */
853+
}
854+
#endif
826855

827-
#if defined(WOLFSSL_KYBER512) || defined(WOLFSSL_WC_ML_KEM_512)
828-
if (k == WC_ML_KEM_512_K) {
829-
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
830-
mlkem_vec_compress_10(c1, u, k);
831-
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
832-
mlkem_compress_4(c2, v);
833-
/* Step 24: return c <- (c_1||c_2) */
834856
}
835-
#endif
836-
#if defined(WOLFSSL_KYBER768) || defined(WOLFSSL_WC_ML_KEM_768)
837-
if (k == WC_ML_KEM_768_K) {
838-
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
839-
mlkem_vec_compress_10(c1, u, k);
840-
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
841-
mlkem_compress_4(c2, v);
842-
/* Step 24: return c <- (c_1||c_2) */
843-
}
844-
#endif
845-
#if defined(WOLFSSL_KYBER1024) || defined(WOLFSSL_WC_ML_KEM_1024)
846-
if (k == WC_ML_KEM_1024_K) {
847-
/* Step 22: c_1 <- ByteEncode_d_u(Compress_d_u(u)) */
848-
mlkem_vec_compress_11(c1, u);
849-
/* Step 23: c_2 <- ByteEncode_d_v(Compress_d_v(v)) */
850-
mlkem_compress_5(c2, v);
851-
/* Step 24: return c <- (c_1||c_2) */
852-
}
853-
#endif
854857
}
855858

856859
#ifndef WOLFSSL_NO_MALLOC

0 commit comments

Comments
 (0)