Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions WinHttp.au3
Original file line number Diff line number Diff line change
Expand Up @@ -953,14 +953,18 @@ Func _WinHttpSetOption($hInternet, $iOption, $vSetting, $iSize = Default)
$sType = "wstr"
If (IsDllStruct($vSetting) Or IsPtr($vSetting)) Then Return SetError(3, 0, 0)
If $iSize < 1 Then $iSize = StringLen($vSetting)
Case $WINHTTP_OPTION_CLIENT_CERT_CONTEXT, $WINHTTP_OPTION_GLOBAL_PROXY_CREDS, $WINHTTP_OPTION_GLOBAL_SERVER_CREDS, $WINHTTP_OPTION_HTTP_VERSION, _
Case $WINHTTP_OPTION_GLOBAL_PROXY_CREDS, $WINHTTP_OPTION_GLOBAL_SERVER_CREDS, $WINHTTP_OPTION_HTTP_VERSION, _
$WINHTTP_OPTION_PROXY
$sType = "ptr"
If Not (IsDllStruct($vSetting) Or IsPtr($vSetting)) Then Return SetError(3, 0, 0)
Case $WINHTTP_OPTION_CLIENT_CERT_CONTEXT
$sType = "ptr"
If Not (IsDllStruct($vSetting) Or IsPtr($vSetting)) And Not $vSetting=NULL Then Return SetError(3, 0, 0)

Case Else
Return SetError(1, 0, 0)
EndSwitch
If $iSize < 1 Then
If $iSize < 1 And Not ($iOption = $WINHTTP_OPTION_CLIENT_CERT_CONTEXT And $vSetting=NULL) Then
If IsDllStruct($vSetting) Then
$iSize = DllStructGetSize($vSetting)
Else
Expand Down Expand Up @@ -1800,6 +1804,10 @@ Func _WinHttpSimpleSendSSLRequest($hConnect, $sType = Default, $sPath = Default,
_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))
_WinHttpSendRequest($hRequest, $sHeader, $sDta)
If @error Then Return SetError(2, 0 * _WinHttpCloseHandle($hRequest), 0)
elseif __WinHttpGetLastError() = $ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED Then
_WinHttpSetOption($hrequest, $WINHTTP_OPTION_CLIENT_CERT_CONTEXT, $WINHTTP_NO_CLIENT_CERT_CONTEXT, 0)
_WinHttpSendRequest($hRequest, $sHeader, $sDta)
If @error Then Return SetError(2, 0 * _WinHttpCloseHandle($hRequest), 0)
EndIf
EndIf
_WinHttpReceiveResponse($hRequest)
Expand Down
2 changes: 2 additions & 0 deletions WinHttpConstants.au3
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ Global Const $WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000
Global Const $WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001
Global Const $WINHTTP_OPTION_SPN_MASK = $WINHTTP_ENABLE_SPN_SERVER_PORT

Global Const $WINHTTP_NO_CLIENT_CERT_CONTEXT = NULL

; WinHTTP error codes ;
Global Const $WINHTTP_ERROR_BASE = 12000
Global Const $ERROR_WINHTTP_OUT_OF_HANDLES = 12001
Expand Down