Skip to content

Commit 364835d

Browse files
committed
Allow session tickets to properly resume when using PQ KEMs.
Found with: ``` ./configure --with-liboqs --enable-session-ticket ./examples/server/server -v 4 -r --pqc P521_KYBER_LEVEL5 ./examples/client/client -v 4 -r --pqc P521_KYBER_LEVEL5 ```
1 parent 64ef6ae commit 364835d

2 files changed

Lines changed: 13 additions & 5 deletions

File tree

examples/client/client.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,10 @@ static void SetKeyShare(WOLFSSL* ssl, int onlyKeyShare, int useX25519,
398398
}
399399

400400
printf("Using Post-Quantum KEM: %s\n", pqcAlg);
401-
if (wolfSSL_UseKeyShare(ssl, group) != WOLFSSL_SUCCESS) {
401+
if (wolfSSL_UseKeyShare(ssl, group) == WOLFSSL_SUCCESS) {
402+
groups[count++] = group;
403+
}
404+
else {
402405
err_sys("unable to use post-quantum KEM");
403406
}
404407
}

src/tls.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8064,7 +8064,7 @@ static int TLSX_KeyShare_Process(WOLFSSL* ssl, KeyShareEntry* keyShareEntry)
80648064
int ret;
80658065

80668066
#if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK)
8067-
ssl->session->namedGroup = (byte)keyShareEntry->group;
8067+
ssl->session->namedGroup = keyShareEntry->group;
80688068
#endif
80698069
/* reset the pre master secret size */
80708070
if (ssl->arrays->preMasterSz == 0)
@@ -11135,9 +11135,14 @@ int TLSX_PopulateExtensions(WOLFSSL* ssl, byte isServer)
1113511135
}
1113611136
if (namedGroup > 0) {
1113711137
#ifdef HAVE_PQC
11138-
/* For KEMs, the key share has already been generated. */
11139-
if (!WOLFSSL_NAMED_GROUP_IS_PQC(namedGroup))
11140-
#endif
11138+
/* For KEMs, the key share has already been generated, but not
11139+
* if we are resuming. */
11140+
if (!WOLFSSL_NAMED_GROUP_IS_PQC(namedGroup)
11141+
#ifdef HAVE_SESSION_TICKET
11142+
|| ssl->options.resuming
11143+
#endif /* HAVE_SESSION_TICKET */
11144+
)
11145+
#endif /* HAVE_PQC */
1114111146
ret = TLSX_KeyShare_Use(ssl, namedGroup, 0, NULL, NULL);
1114211147
if (ret != 0)
1114311148
return ret;

0 commit comments

Comments
 (0)