Skip to content

Commit 41a672f

Browse files
authored
1 parent d4240b1 commit 41a672f

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

WinHttp.au3

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -953,14 +953,17 @@ Func _WinHttpSetOption($hInternet, $iOption, $vSetting, $iSize = Default)
953953
$sType = "wstr"
954954
If (IsDllStruct($vSetting) Or IsPtr($vSetting)) Then Return SetError(3, 0, 0)
955955
If $iSize < 1 Then $iSize = StringLen($vSetting)
956-
Case $WINHTTP_OPTION_CLIENT_CERT_CONTEXT, $WINHTTP_OPTION_GLOBAL_PROXY_CREDS, $WINHTTP_OPTION_GLOBAL_SERVER_CREDS, $WINHTTP_OPTION_HTTP_VERSION, _
956+
Case $WINHTTP_OPTION_GLOBAL_PROXY_CREDS, $WINHTTP_OPTION_GLOBAL_SERVER_CREDS, $WINHTTP_OPTION_HTTP_VERSION, _
957957
$WINHTTP_OPTION_PROXY
958958
$sType = "ptr"
959959
If Not (IsDllStruct($vSetting) Or IsPtr($vSetting)) Then Return SetError(3, 0, 0)
960+
Case $WINHTTP_OPTION_CLIENT_CERT_CONTEXT
961+
$sType = "ptr"
962+
If Not (IsDllStruct($vSetting) Or IsPtr($vSetting)) And Not $vSetting=NULL Then Return SetError(3, 0, 0)
960963
Case Else
961964
Return SetError(1, 0, 0)
962965
EndSwitch
963-
If $iSize < 1 Then
966+
If $iSize < 1 And Not ($iOption = $WINHTTP_OPTION_CLIENT_CERT_CONTEXT And $vSetting=NULL) Then
964967
If IsDllStruct($vSetting) Then
965968
$iSize = DllStructGetSize($vSetting)
966969
Else
@@ -1800,6 +1803,10 @@ Func _WinHttpSimpleSendSSLRequest($hConnect, $sType = Default, $sPath = Default,
18001803
_WinHttpSetOption(_WinHttpQueryOption(_WinHttpQueryOption($hRequest, $WINHTTP_OPTION_PARENT_HANDLE), $WINHTTP_OPTION_PARENT_HANDLE), $WINHTTP_OPTION_SECURE_PROTOCOLS, BitOR($WINHTTP_FLAG_SECURE_PROTOCOL_TLS1, $WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1, $WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2))
18011804
_WinHttpSendRequest($hRequest, $sHeader, $sDta)
18021805
If @error Then Return SetError(2, 0 * _WinHttpCloseHandle($hRequest), 0)
1806+
ElseIf __WinHttpGetLastError() = $ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED Then
1807+
_WinHttpSetOption($hrequest, $WINHTTP_OPTION_CLIENT_CERT_CONTEXT, $WINHTTP_NO_CLIENT_CERT_CONTEXT, 0)
1808+
_WinHttpSendRequest($hRequest, $sHeader, $sDta)
1809+
If @error Then Return SetError(2, 0 * _WinHttpCloseHandle($hRequest), 0)
18031810
EndIf
18041811
EndIf
18051812
_WinHttpReceiveResponse($hRequest)

0 commit comments

Comments
 (0)