Skip to content

Commit fd8fcf7

Browse files
authored
Pass Through Disable AIA Flag (#4674) (#4675)
1 parent 882a0a4 commit fd8fcf7

File tree

7 files changed

+18
-2
lines changed

7 files changed

+18
-2
lines changed

docs/api/QUIC_CREDENTIAL_CONFIG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ Obtain the peer certificate using a faster in-process API call. Only available o
161161

162162
Enable CA certificate file provided in the `CaCertificateFile` member.
163163

164+
`QUIC_CREDENTIAL_FLAG_DISABLE_AIA`
165+
166+
The following flag can be set to explicitly disable AIA retrievals. Only valid on Windows.
167+
164168
#### `CertificateHash`
165169

166170
Must **only** use with `QUIC_CREDENTIAL_TYPE_CERTIFICATE_HASH` type.

src/cs/lib/msquic_generated.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ internal enum QUIC_CREDENTIAL_FLAGS
9999
REVOCATION_CHECK_CACHE_ONLY = 0x00040000,
100100
INPROC_PEER_CERTIFICATE = 0x00080000,
101101
SET_CA_CERTIFICATE_FILE = 0x00100000,
102+
DISABLE_AIA = 0x00200000,
102103
}
103104

104105
[System.Flags]

src/inc/msquic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ typedef enum QUIC_CREDENTIAL_FLAGS {
146146
QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CACHE_ONLY = 0x00040000, // Windows only currently
147147
QUIC_CREDENTIAL_FLAG_INPROC_PEER_CERTIFICATE = 0x00080000, // Schannel only
148148
QUIC_CREDENTIAL_FLAG_SET_CA_CERTIFICATE_FILE = 0x00100000, // OpenSSL only currently
149+
QUIC_CREDENTIAL_FLAG_DISABLE_AIA = 0x00200000, // Schannel only currently
149150
} QUIC_CREDENTIAL_FLAGS;
150151

151152
DEFINE_ENUM_FLAG_OPERATORS(QUIC_CREDENTIAL_FLAGS)

src/platform/certificates_capi.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ CxPlatCertVerifyRawCertificate(
9090
if (CredFlags & QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CACHE_ONLY) {
9191
CertFlags |= CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY;
9292
}
93+
if (CredFlags & QUIC_CREDENTIAL_FLAG_DISABLE_AIA) {
94+
CertFlags |= CERT_CHAIN_DISABLE_AIA;
95+
}
9396

9497
Result =
9598
CxPlatCertValidateChain(

src/platform/tls_openssl.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -981,7 +981,8 @@ CxPlatTlsSecConfigCreate(
981981
CredConfigFlags & QUIC_CREDENTIAL_FLAG_IGNORE_NO_REVOCATION_CHECK ||
982982
CredConfigFlags & QUIC_CREDENTIAL_FLAG_IGNORE_REVOCATION_OFFLINE ||
983983
CredConfigFlags & QUIC_CREDENTIAL_FLAG_CACHE_ONLY_URL_RETRIEVAL ||
984-
CredConfigFlags & QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CACHE_ONLY)) {
984+
CredConfigFlags & QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CACHE_ONLY ||
985+
CredConfigFlags & QUIC_CREDENTIAL_FLAG_DISABLE_AIA)) {
985986
return QUIC_STATUS_INVALID_PARAMETER;
986987
}
987988

@@ -992,7 +993,8 @@ CxPlatTlsSecConfigCreate(
992993
CredConfigFlags & QUIC_CREDENTIAL_FLAG_IGNORE_NO_REVOCATION_CHECK ||
993994
CredConfigFlags & QUIC_CREDENTIAL_FLAG_IGNORE_REVOCATION_OFFLINE ||
994995
CredConfigFlags & QUIC_CREDENTIAL_FLAG_CACHE_ONLY_URL_RETRIEVAL ||
995-
CredConfigFlags & QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CACHE_ONLY)) {
996+
CredConfigFlags & QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CACHE_ONLY ||
997+
CredConfigFlags & QUIC_CREDENTIAL_FLAG_DISABLE_AIA)) {
996998
return QUIC_STATUS_INVALID_PARAMETER;
997999
}
9981000
#endif

src/platform/tls_schannel.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ typedef struct _SecPkgCred_ClientCertPolicy
118118
#define CERT_CHAIN_REVOCATION_CHECK_CHAIN 0x20000000
119119
#define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x40000000
120120
#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x80000000
121+
#define CERT_CHAIN_DISABLE_AIA 0x00002000
121122

122123
#define SECPKG_ATTR_REMOTE_CERTIFICATES 0x5F // returns SecPkgContext_Certificates
123124

@@ -754,6 +755,9 @@ CxPlatTlsSetClientCertPolicy(
754755
if (SecConfig->Flags & QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CACHE_ONLY) {
755756
ClientCertPolicy.dwCertFlags |= CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY;
756757
}
758+
if (SecConfig->Flags & QUIC_CREDENTIAL_FLAG_DISABLE_AIA) {
759+
ClientCertPolicy.dwCertFlags |= CERT_CHAIN_DISABLE_AIA;
760+
}
757761

758762
SecStatus =
759763
SetCredentialsAttributesW(

src/platform/unittest/TlsTest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2222,6 +2222,7 @@ TEST_F(TlsTest, PlatformSpecificFlagsSchannel)
22222222
QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_END_CERT, QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT,
22232223
QUIC_CREDENTIAL_FLAG_IGNORE_NO_REVOCATION_CHECK, QUIC_CREDENTIAL_FLAG_IGNORE_REVOCATION_OFFLINE,
22242224
QUIC_CREDENTIAL_FLAG_CACHE_ONLY_URL_RETRIEVAL, QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CACHE_ONLY,
2225+
QUIC_CREDENTIAL_FLAG_DISABLE_AIA,
22252226
#ifndef __APPLE__
22262227
QUIC_CREDENTIAL_FLAG_REVOCATION_CHECK_CHAIN,
22272228
#endif

0 commit comments

Comments
 (0)