[PATCH v7 0/1] MR10357: winhttp: Implement WINHTTP_OPTION_SERVER_CERT_CHAIN_CONTEXT
-- v7: winhttp: Implement WINHTTP_OPTION_SERVER_CERT_CHAIN_CONTEXT https://gitlab.winehq.org/wine/wine/-/merge_requests/10357
From: Michael Green <bsmntoid@gmail.com> --- dlls/winhttp/session.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/dlls/winhttp/session.c b/dlls/winhttp/session.c index a3c8bb91010..6348ec67b82 100644 --- a/dlls/winhttp/session.c +++ b/dlls/winhttp/session.c @@ -832,6 +832,26 @@ static BOOL request_query_option( struct object_header *hdr, DWORD option, void *buflen = sizeof(cert); return TRUE; } + case WINHTTP_OPTION_SERVER_CERT_CHAIN_CONTEXT: + { + const CERT_CHAIN_CONTEXT *cert_chain; + + char oid_server_auth[] = szOID_PKIX_KP_SERVER_AUTH; + char *server_auth[] = { oid_server_auth }; + + CERT_CHAIN_PARA chainPara = { sizeof(chainPara), { 0 } }; + + chainPara.RequestedUsage.Usage.cUsageIdentifier = 1; + chainPara.RequestedUsage.Usage.rgpszUsageIdentifier = server_auth; + + if (!validate_buffer( buffer, buflen, sizeof(cert_chain) )) return FALSE; + if (!CertGetCertificateChain(NULL, request->server_cert, NULL, NULL, &chainPara, 0, NULL, &cert_chain)) return FALSE; + + *(CERT_CHAIN_CONTEXT **)buffer = (CERT_CHAIN_CONTEXT *)cert_chain; + *buflen = sizeof(cert_chain); + + return TRUE; + } case WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT: { const CERT_CONTEXT *cert = request->server_cert; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10357
Apologies, not _super_ familiar with git. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10357#note_132619
This merge request was approved by Hans Leidekker. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10357
participants (3)
-
Hans Leidekker (@hans) -
Michael Green -
Michael Green (@m-green39)