Skip to content

Commit f80e188

Browse files
committed
internal: re-verify restored ticket peer cert against trust store
RestorePeerCertFromTicket passed verify=0 and CertificateManager=NULL to ParseCertRelative, so a ticket-restored peer cert was decoded and installed without any CRL/OCSP or trust-walk opportunity. A principal whose CA was removed or whose cert was revoked after ticket issuance remained valid for the full ticket lifetime. Pass SSL_CM(ssl) and honor verifyPeer so the restored cert is re-checked on every resumption.
1 parent a9acc12 commit f80e188

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

src/internal.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39686,8 +39686,12 @@ static int AddPSKtoPreMasterSecret(WOLFSSL* ssl)
3968639686
dCert = (DecodedCert*)XMALLOC(sizeof(DecodedCert), ssl->heap,
3968739687
DYNAMIC_TYPE_DCERT);
3968839688
if (dCert != NULL) {
39689+
int verify = ssl->options.verifyPeer ? VERIFY : NO_VERIFY;
3968939690
InitDecodedCert(dCert, it->peerCert, peerCertLen, ssl->heap);
39690-
ret = ParseCertRelative(dCert, CERT_TYPE, 0, NULL, NULL);
39691+
/* Re-walk trust store so CA removal / CRL / OCSP since
39692+
* ticket issue still apply. */
39693+
ret = ParseCertRelative(dCert, CERT_TYPE, verify,
39694+
SSL_CM(ssl), NULL);
3969139695
if (ret == 0) {
3969239696
FreeX509(&ssl->peerCert);
3969339697
InitX509(&ssl->peerCert, 0, ssl->heap);

0 commit comments

Comments
 (0)