Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WINHTTP_NO_CLIENT_CERT_CONTEXT Null ptr addition #16

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 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