Search the Community
Showing results for tags 'expirytime'.
-
#include <WinHttp.au3> ; https://github.com/dragana-r/autoit-winhttp/tree/master ConsoleWrite("- ExpiryTime: " & _WinHttp_SSL_ExpiryTime("www.google.com") & @CRLF) Func _WinHttp_SSL_ExpiryTime($sSite, $iPort = 443, $sTimeType = "ExpiryTime") Local Const $tagINTERNET_CERTIFICATE_INFO = "dword ExpiryTime[2]; dword StartTime[2]; ptr SubjectInfo;" & _ "ptr IssuerInfo; ptr ProtocolName; ptr SignatureAlgName; ptr EncryptionAlgName; dword KeySize" Local $tINTERNET_CERTIFICATE_INFO, $hOpen = _WinHttpOpen() _WinHttpSetOption($hOpen, $WINHTTP_OPTION_SECURITY_FLAGS, 0x00003300) ; $SECURITY_FLAG_IGNORE_ALL Local $hConnect = _WinHttpConnect($hOpen, $sSite, $iPort) Local $hRequest = _WinHttpSimpleSendSSLRequest($hConnect, "GET", "/") Local $tBufferLength = DllStructCreate("dword") DllStructSetData($tBufferLength, 1, 2048) Local $sReturn, $tBuffer = DllStructCreate("byte[2048]") Local $iError, $aResult = DllCall($hWINHTTPDLL__WINHTTP, "bool", "WinHttpQueryOption", _ "handle", $hRequest, "dword", $WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT, _ "struct*", DllStructGetPtr($tBuffer), "dword*", DllStructGetPtr($tBufferLength)) $iError = @error If Not $iError And $aResult[0] Then $tINTERNET_CERTIFICATE_INFO = DllStructCreate($tagINTERNET_CERTIFICATE_INFO, DllStructGetPtr($tBuffer)) $sReturn = __WinHttp_INTERNET_CERTIFICATE_INFO_Time($tINTERNET_CERTIFICATE_INFO, $sTimeType) ; these are "ExpiryTime" and "StartTime" Else $iError = 99 $sReturn = "error" EndIf $tBufferLength = 0 $tBuffer = 0 $tINTERNET_CERTIFICATE_INFO = 0 _WinHttpCloseHandle($hRequest) _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hOpen) Return SetError($iError, 0, $sReturn) EndFunc ;==>_WinHttp_SSL_ExpiryTime Func __WinHttp_INTERNET_CERTIFICATE_INFO_Time($tStruct, $sTimeType = "ExpiryTime") Local $tSystTime = DllStructCreate("struct;word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds;endstruct") DllCall("kernel32.dll", "bool", "FileTimeToSystemTime", "struct*", DllStructGetPtr($tStruct, $sTimeType), "struct*", $tSystTime) Return StringFormat("%04d/%02d/%02d %02d:%02d:%02d", $tSystTime.Year, $tSystTime.Month, $tSystTime.Day, $tSystTime.Hour, $tSystTime.Minute, $tSystTime.Second) EndFunc ;==>__WinHttp_INTERNET_CERTIFICATE_INFO_Time Had to scrape the site to get this. Shared here so you don't have to go trough the same trouble. This function gets the date a SSL certificate expires on a web site. Edit: Added to "ExpiryTime" the possibility of getting "StartTime". Was already there, might as well give the opportunity to get that too. ..and this one has the rest of the info I could get. If anyone can get ProtocolName, SignatureAlgName and EncryptionAlgName, post it. TIA