Bonsoir, après concertation je déverouille temporairement ce post pour donner la réponde au cas où d'autres personnes rencontreraient le même soucis.
Et bien à vrai dire, tout y était ^^
Il ne manquait plus la lecture de l'information elle même.
Pour rappel, un pointeur est une adresse où on lit / écrit des données.
Comme on a ici une structure contenant un pointeur par retours de l'appel à :
Code : Tout sélectionner
DllStructCreate("ptr", DllStructGetPtr($tINTERNET_CERTIFICATE_INFO, "SubjectInfo"))
il faut le lire. Mais en Autoit, on n'a pas explictement de fonction de type Readbuffer(address,mongueur,type)
Cependant on peut recréer un buffer (de 500 bytes ici arbitrairement) de char grâce à DllStructCreate("char subject[500]"),DllStructGetData($tsubjectinfo, 1)) à laquelle on passe en deuxième argument DllStructGetData($tsubjectinfo, 1) qui correspond à notre pointeur extraît de sa structure
du coups en faisant un DllStructGetData on lit le contenu de ce buffer (sur 500 caractères, mais Autoit sais s'arrêté à l'octet null)
et au final on a :
Code : Tout sélectionner
#include <WinINet.au3>
#include "WinINetConstants.au3"
; Initialize WinINet"
_WinINet_Startup()
Global $sURIScheme = "https"
Global $sServerName = "mail.google.com"
Global $iServerPort = 443
; Create handles
ConsoleWrite("Opening Internet connection ..." & @LF)
Global $hInternetOpen = _WinINet_InternetOpen("AutoIt/" & @AutoItVersion);,$INTERNET_OPEN_TYPE_DIRECT);$INTERNET_OPEN_TYPE_PROXY,"Nom_mandataire");"10.10.10.10:8080")
if @error Then
ConsoleWrite("Open Internet connection: failed." & @LF)
Else
ConsoleWrite("Open Internet connection: ok." & @LF)
EndIf
;Global $hInternetOpenUrl = _WinINet_InternetOpenUrl($hInternetOpen, $sURIScheme & "://" & $sServerName &":"&$iServerPort, Default, $INTERNET_FLAG_SECURE)
Global $hInternetOpenUrl = _WinINet_InternetOpenUrl($hInternetOpen, $sURIScheme & "://" & $sServerName &":"&$iServerPort, Default, $INTERNET_FLAG_SECURE )
if @error Then
ConsoleWrite("Open Internet URL: failed." & @LF)
Else
ConsoleWrite("Open Internet URL: ok." & @LF)
EndIf
; Query certificate info...
Global $tBuffer = _WinINet_InternetQueryOption($hInternetOpenUrl, $INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT)
;Local $pSubjectInfo = DllStructCreate("ptr", DllStructGetPtr($tagINTERNET_CERTIFICATE_INFO, "SubjectInfo"))
Local $tINTERNET_CERTIFICATE_INFO = DllStructCreate($tagINTERNET_CERTIFICATE_INFO, DllStructGetPtr($tBuffer))
Local $tExpiryTime = DllStructCreate("int64", DllStructGetPtr($tINTERNET_CERTIFICATE_INFO, "ExpiryTime"))
ConsoleWrite("Expiry Time (100-nanoseconds): " & DllStructGetData($tExpiryTime, 1) & @LF)
Local $tsubjectinfo = DllStructCreate("ptr", DllStructGetPtr($tINTERNET_CERTIFICATE_INFO, "SubjectInfo"))
ConsoleWrite("subjectinfo pointer: " & DllStructGetData($tsubjectinfo, 1) & @LF)
$chain_subj_to_print = DllStructCreate("char subject[500]",DllStructGetData($tsubjectinfo, 1))
ConsoleWrite("subject txt :"&@CRLF&DllStructGetData($chain_subj_to_print,"subject")&@CRLF)
; Cleanup
_WinINet_InternetCloseHandle($hInternetOpenUrl)
_WinINet_InternetCloseHandle($hInternetOpen)
_WinINet_Shutdown()
ConsoleWrite("End of program..." & @LF)
NB : Il est impératif que le certificat de l'autorité de certification soit déjà connu d'IE pour que ça marche
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.