Skip to content

Commit 0392ee0

Browse files
Merge pull request wolfSSL#9033 from anhu/mlkem-hybrid-draft-names-wolfssl
Rename ML-KEM hybrids to match IETF Draft.
2 parents 65e7f2c + 6f66f4f commit 0392ee0

11 files changed

Lines changed: 253 additions & 231 deletions

File tree

INSTALL

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,13 +208,13 @@
208208

209209
For a quick start, you can run the client and server like this:
210210

211-
$ ./examples/server/server -v 4 --pqc P521_ML_KEM_1024
212-
$ ./examples/client/client -v 4 --pqc P521_ML_KEM_1024
211+
$ ./examples/server/server -v 4 --pqc SecP521r1MLKEM1024
212+
$ ./examples/client/client -v 4 --pqc SecP521r1MLKEM1024
213213

214214
Look for the following line in the output of the server and client:
215215

216216
```
217-
Using Post-Quantum KEM: P521_ML_KEM_1024
217+
Using Post-Quantum KEM: SecP521r1MLKEM1024
218218
```
219219

220220
For authentication, you can generate a certificate chain using the Open
@@ -236,13 +236,13 @@
236236
-A certs/mldsa87_root_cert.pem \
237237
-c certs/mldsa44_entity_cert.pem \
238238
-k certs/mldsa44_entity_key.pem \
239-
--pqc P521_ML_KEM_1024
239+
--pqc SecP521r1MLKEM1024
240240

241241
$ examples/client/client -v 4 -l TLS_AES_256_GCM_SHA384 \
242242
-A certs/mldsa44_root_cert.pem \
243243
-c certs/mldsa87_entity_cert.pem \
244244
-k certs/mldsa87_entity_key.pem \
245-
--pqc P521_ML_KEM_1024
245+
--pqc SecP521r1MLKEM1024
246246

247247
Congratulations! You have just achieved a fully quantum-safe TLS 1.3
248248
connection!

examples/benchmark/tls_bench.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -296,14 +296,14 @@ static struct group_info groups[] = {
296296
{ WOLFSSL_ML_KEM_512, "ML_KEM_512" },
297297
{ WOLFSSL_ML_KEM_768, "ML_KEM_768" },
298298
{ WOLFSSL_ML_KEM_1024, "ML_KEM_1024" },
299-
{ WOLFSSL_P256_ML_KEM_512, "P256_ML_KEM_512" },
300-
{ WOLFSSL_P384_ML_KEM_768, "P384_ML_KEM_768" },
301-
{ WOLFSSL_P256_ML_KEM_768, "P256_ML_KEM_768" },
302-
{ WOLFSSL_P521_ML_KEM_1024, "P521_ML_KEM_1024" },
303-
{ WOLFSSL_P384_ML_KEM_1024, "P384_ML_KEM_1024" },
304-
{ WOLFSSL_X25519_ML_KEM_512, "X25519_ML_KEM_512" },
305-
{ WOLFSSL_X448_ML_KEM_768, "X448_ML_KEM_768" },
306-
{ WOLFSSL_X25519_ML_KEM_768, "X25519_ML_KEM_768" },
299+
{ WOLFSSL_SECP256R1MLKEM512, "SecP256r1MLKEM512" },
300+
{ WOLFSSL_SECP384R1MLKEM768, "SecP384r1MLKEM768" },
301+
{ WOLFSSL_SECP256R1MLKEM768, "SecP256r1MLKEM768" },
302+
{ WOLFSSL_SECP521R1MLKEM1024, "SecP521r1MLKEM1024" },
303+
{ WOLFSSL_SECP384R1MLKEM1024, "SecP384r1MLKEM1024" },
304+
{ WOLFSSL_X25519MLKEM512, "X25519MLKEM512" },
305+
{ WOLFSSL_X448MLKEM768, "X448MLKEM768" },
306+
{ WOLFSSL_X25519MLKEM768, "X25519MLKEM768" },
307307
#endif
308308
#ifdef WOLFSSL_MLKEM_KYBER
309309
{ WOLFSSL_KYBER_LEVEL1, "KYBER_LEVEL1" },

examples/client/client.c

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -422,44 +422,44 @@ static void SetKeyShare(WOLFSSL* ssl, int onlyKeyShare, int useX25519,
422422
else
423423
#endif
424424
#ifndef WOLFSSL_NO_ML_KEM_512
425-
if (XSTRCMP(pqcAlg, "P256_ML_KEM_512") == 0) {
426-
group = WOLFSSL_P256_ML_KEM_512;
425+
if (XSTRCMP(pqcAlg, "SecP256r1MLKEM512") == 0) {
426+
group = WOLFSSL_SECP256R1MLKEM512;
427427
}
428428
else
429429
#endif
430430
#ifndef WOLFSSL_NO_ML_KEM_768
431-
if (XSTRCMP(pqcAlg, "P384_ML_KEM_768") == 0) {
432-
group = WOLFSSL_P384_ML_KEM_768;
431+
if (XSTRCMP(pqcAlg, "SecP384r1MLKEM768") == 0) {
432+
group = WOLFSSL_SECP384R1MLKEM768;
433433
}
434-
else if (XSTRCMP(pqcAlg, "P256_ML_KEM_768") == 0) {
435-
group = WOLFSSL_P256_ML_KEM_768;
434+
else if (XSTRCMP(pqcAlg, "SecP256r1MLKEM768") == 0) {
435+
group = WOLFSSL_SECP256R1MLKEM768;
436436
}
437437
else
438438
#endif
439439
#ifndef WOLFSSL_NO_ML_KEM_1024
440-
if (XSTRCMP(pqcAlg, "P521_ML_KEM_1024") == 0) {
441-
group = WOLFSSL_P521_ML_KEM_1024;
440+
if (XSTRCMP(pqcAlg, "SecP521r1MLKEM1024") == 0) {
441+
group = WOLFSSL_SECP521R1MLKEM1024;
442442
}
443-
else if (XSTRCMP(pqcAlg, "P384_ML_KEM_1024") == 0) {
444-
group = WOLFSSL_P384_ML_KEM_1024;
443+
else if (XSTRCMP(pqcAlg, "SecP384r1MLKEM1024") == 0) {
444+
group = WOLFSSL_SECP384R1MLKEM1024;
445445
}
446446
else
447447
#endif
448448
#if !defined(WOLFSSL_NO_ML_KEM_512) && defined(HAVE_CURVE25519)
449-
if (XSTRCMP(pqcAlg, "X25519_ML_KEM_512") == 0) {
450-
group = WOLFSSL_X25519_ML_KEM_512;
449+
if (XSTRCMP(pqcAlg, "X25519MLKEM512") == 0) {
450+
group = WOLFSSL_X25519MLKEM512;
451451
}
452452
else
453453
#endif
454454
#if !defined(WOLFSSL_NO_ML_KEM_768) && defined(HAVE_CURVE25519)
455-
if (XSTRCMP(pqcAlg, "X25519_ML_KEM_768") == 0) {
456-
group = WOLFSSL_X25519_ML_KEM_768;
455+
if (XSTRCMP(pqcAlg, "X25519MLKEM768") == 0) {
456+
group = WOLFSSL_X25519MLKEM768;
457457
}
458458
else
459459
#endif
460460
#if !defined(WOLFSSL_NO_ML_KEM_768) && defined(HAVE_CURVE448)
461-
if (XSTRCMP(pqcAlg, "X448_ML_KEM_768") == 0) {
462-
group = WOLFSSL_X448_ML_KEM_768;
461+
if (XSTRCMP(pqcAlg, "X448MLKEM768") == 0) {
462+
group = WOLFSSL_X448MLKEM768;
463463
}
464464
else
465465
#endif
@@ -1421,12 +1421,16 @@ static const char* client_usage_msg[][78] = {
14211421
#ifdef HAVE_PQC
14221422
"--pqc <alg> Key Share with specified post-quantum algorithm only:\n"
14231423
#ifndef WOLFSSL_NO_ML_KEM
1424-
" ML_KEM_512, ML_KEM_768, ML_KEM_1024, P256_ML_KEM_512,"
1425-
"\n"
1426-
" P384_ML_KEM_768, P256_ML_KEM_768, P521_ML_KEM_1024,\n"
1427-
" P384_ML_KEM_1024, X25519_ML_KEM_512, "
1428-
"X25519_ML_KEM_768,\n"
1429-
" X448_ML_KEM_768\n"
1424+
" ML_KEM_512, ML_KEM_768, ML_KEM_1024,\n"
1425+
" SecP256r1MLKEM512,\n"
1426+
" SecP384r1MLKEM768,\n"
1427+
" SecP521r1MLKEM1024,\n"
1428+
" SecP256r1MLKEM768,\n"
1429+
" SecP521r1MLKEM1024,\n"
1430+
" SecP384r1MLKEM1024,\n"
1431+
" X25519MLKEM512,\n"
1432+
" X25519MLKEM768,\n"
1433+
" X448MLKEM768\n"
14301434
#endif
14311435
#ifdef WOLFSSL_MLKEM_KYBER
14321436
" KYBER_LEVEL1, KYBER_LEVEL3, KYBER_LEVEL5, "
@@ -1675,9 +1679,16 @@ static const char* client_usage_msg[][78] = {
16751679
#ifdef HAVE_PQC
16761680
"--pqc <alg> post-quantum 名前付きグループとの鍵共有のみ:\n"
16771681
#ifndef WOLFSSL_NO_ML_KEM
1678-
" ML_KEM_512, ML_KEM_768, ML_KEM_1024, P256_ML_KEM_512,"
1679-
"\n"
1680-
" P384_ML_KEM_768, P521_ML_KEM_1024\n"
1682+
" ML_KEM_512, ML_KEM_768, ML_KEM_1024,\n"
1683+
" SecP256r1MLKEM512,\n"
1684+
" SecP384r1MLKEM768,\n"
1685+
" SecP521r1MLKEM1024,\n"
1686+
" SecP256r1MLKEM768,\n"
1687+
" SecP521r1MLKEM1024,\n"
1688+
" SecP384r1MLKEM1024,\n"
1689+
" X25519MLKEM512,\n"
1690+
" X25519MLKEM768,\n"
1691+
" X448MLKEM768\n"
16811692
#endif
16821693
#ifdef WOLFSSL_MLKEM_KYBER
16831694
" KYBER_LEVEL1, KYBER_LEVEL3, KYBER_LEVEL5, "

examples/server/server.c

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -735,44 +735,44 @@ static void SetKeyShare(WOLFSSL* ssl, int onlyKeyShare, int useX25519,
735735
else
736736
#endif
737737
#ifndef WOLFSSL_NO_ML_KEM_512
738-
if (XSTRCMP(pqcAlg, "P256_ML_KEM_512") == 0) {
739-
groups[count] = WOLFSSL_P256_ML_KEM_512;
738+
if (XSTRCMP(pqcAlg, "SecP256r1MLKEM512") == 0) {
739+
groups[count] = WOLFSSL_SECP256R1MLKEM512;
740740
}
741741
else
742742
#endif
743743
#ifndef WOLFSSL_NO_ML_KEM_768
744-
if (XSTRCMP(pqcAlg, "P384_ML_KEM_768") == 0) {
745-
groups[count] = WOLFSSL_P384_ML_KEM_768;
744+
if (XSTRCMP(pqcAlg, "SecP384r1MLKEM768") == 0) {
745+
groups[count] = WOLFSSL_SECP384R1MLKEM768;
746746
}
747-
else if (XSTRCMP(pqcAlg, "P256_ML_KEM_768") == 0) {
748-
groups[count] = WOLFSSL_P256_ML_KEM_768;
747+
else if (XSTRCMP(pqcAlg, "SecP256r1MLKEM768") == 0) {
748+
groups[count] = WOLFSSL_SECP256R1MLKEM768;
749749
}
750750
else
751751
#endif
752752
#ifndef WOLFSSL_NO_ML_KEM_1024
753-
if (XSTRCMP(pqcAlg, "P521_ML_KEM_1024") == 0) {
754-
groups[count] = WOLFSSL_P521_ML_KEM_1024;
753+
if (XSTRCMP(pqcAlg, "SecP521r1MLKEM1024") == 0) {
754+
groups[count] = WOLFSSL_SECP521R1MLKEM1024;
755755
}
756-
else if (XSTRCMP(pqcAlg, "P384_ML_KEM_1024") == 0) {
757-
groups[count] = WOLFSSL_P384_ML_KEM_1024;
756+
else if (XSTRCMP(pqcAlg, "SecP384r1MLKEM1024") == 0) {
757+
groups[count] = WOLFSSL_SECP384R1MLKEM1024;
758758
}
759759
else
760760
#endif
761761
#if !defined(WOLFSSL_NO_ML_KEM_512) && defined(HAVE_CURVE25519)
762-
if (XSTRCMP(pqcAlg, "X25519_ML_KEM_512") == 0) {
763-
groups[count] = WOLFSSL_X25519_ML_KEM_512;
762+
if (XSTRCMP(pqcAlg, "X25519MLKEM512") == 0) {
763+
groups[count] = WOLFSSL_X25519MLKEM512;
764764
}
765765
else
766766
#endif
767767
#if !defined(WOLFSSL_NO_ML_KEM_768) && defined(HAVE_CURVE25519)
768-
if (XSTRCMP(pqcAlg, "X25519_ML_KEM_768") == 0) {
769-
groups[count] = WOLFSSL_X25519_ML_KEM_768;
768+
if (XSTRCMP(pqcAlg, "X25519MLKEM768") == 0) {
769+
groups[count] = WOLFSSL_X25519MLKEM768;
770770
}
771771
else
772772
#endif
773773
#if !defined(WOLFSSL_NO_ML_KEM_768) && defined(HAVE_CURVE448)
774-
if (XSTRCMP(pqcAlg, "X448_ML_KEM_768") == 0) {
775-
groups[count] = WOLFSSL_X448_ML_KEM_768;
774+
if (XSTRCMP(pqcAlg, "X448MLKEM768") == 0) {
775+
groups[count] = WOLFSSL_X448MLKEM768;
776776
}
777777
else
778778
#endif
@@ -1070,12 +1070,16 @@ static const char* server_usage_msg[][66] = {
10701070
#ifdef HAVE_PQC
10711071
"--pqc <alg> Key Share with specified post-quantum algorithm only:\n"
10721072
#ifndef WOLFSSL_NO_ML_KEM
1073-
" ML_KEM_512, ML_KEM_768, ML_KEM_1024, P256_ML_KEM_512,"
1074-
"\n"
1075-
" P384_ML_KEM_768, P256_ML_KEM_768, P521_ML_KEM_1024,\n"
1076-
" P384_ML_KEM_1024, X25519_ML_KEM_512, "
1077-
"X25519_ML_KEM_768,\n"
1078-
" X448_ML_KEM_768\n"
1073+
" ML_KEM_512, ML_KEM_768, ML_KEM_1024,\n"
1074+
" SecP256r1MLKEM512,\n"
1075+
" SecP384r1MLKEM768,\n"
1076+
" SecP521r1MLKEM1024,\n"
1077+
" SecP256r1MLKEM768,\n"
1078+
" SecP521r1MLKEM1024,\n"
1079+
" SecP384r1MLKEM1024,\n"
1080+
" X25519MLKEM512,\n"
1081+
" X25519MLKEM768,\n"
1082+
" X448MLKEM768\n"
10791083
#endif
10801084
#ifdef WOLFSSL_MLKEM_KYBER
10811085
" KYBER_LEVEL1, KYBER_LEVEL3, KYBER_LEVEL5, "
@@ -1282,9 +1286,16 @@ static const char* server_usage_msg[][66] = {
12821286
#ifdef HAVE_PQC
12831287
"--pqc <alg> post-quantum 名前付きグループとの鍵共有のみ:\n"
12841288
#ifndef WOLFSSL_NO_ML_KEM
1285-
" ML_KEM_512, ML_KEM_768, ML_KEM_1024, P256_ML_KEM_512,"
1286-
"\n"
1287-
" P384_ML_KEM_768, P521_ML_KEM_1024\n"
1289+
" ML_KEM_512, ML_KEM_768, ML_KEM_1024,"
1290+
" SecP256r1MLKEM512,\n"
1291+
" SecP384r1MLKEM768,\n"
1292+
" SecP521r1MLKEM1024,\n"
1293+
" SecP256r1MLKEM768,\n"
1294+
" SecP521r1MLKEM1024,\n"
1295+
" SecP384r1MLKEM1024,\n"
1296+
" X25519MLKEM512,\n"
1297+
" X25519MLKEM768,\n"
1298+
" X448MLKEM768\n"
12881299
#endif
12891300
#ifdef WOLFSSL_MLKEM_KYBER
12901301
" KYBER_LEVEL1, KYBER_LEVEL3, KYBER_LEVEL5, "

src/internal.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35414,14 +35414,14 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
3541435414
{
3541535415
switch (group) {
3541635416
#ifndef WOLFSSL_NO_ML_KEM
35417-
case WOLFSSL_P256_ML_KEM_768:
35418-
case WOLFSSL_X25519_ML_KEM_768:
35419-
case WOLFSSL_P384_ML_KEM_1024:
35420-
case WOLFSSL_P256_ML_KEM_512:
35421-
case WOLFSSL_P384_ML_KEM_768:
35422-
case WOLFSSL_P521_ML_KEM_1024:
35423-
case WOLFSSL_X25519_ML_KEM_512:
35424-
case WOLFSSL_X448_ML_KEM_768:
35417+
case WOLFSSL_SECP256R1MLKEM768:
35418+
case WOLFSSL_X25519MLKEM768:
35419+
case WOLFSSL_SECP384R1MLKEM1024:
35420+
case WOLFSSL_SECP256R1MLKEM512:
35421+
case WOLFSSL_SECP384R1MLKEM768:
35422+
case WOLFSSL_SECP521R1MLKEM1024:
35423+
case WOLFSSL_X25519MLKEM512:
35424+
case WOLFSSL_X448MLKEM768:
3542535425
#ifdef WOLFSSL_ML_KEM_USE_OLD_IDS
3542635426
case WOLFSSL_P256_ML_KEM_512_OLD:
3542735427
case WOLFSSL_P384_ML_KEM_768_OLD:

0 commit comments

Comments
 (0)