ssl capicom.txt

Embed Size (px)

Citation preview

uses ... CAPICOM_TLB, ...; ... procedure TForm1.O2HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer); var Store : IStore3; Certs : ICertificates2; Cert : ICertificate2; CertContext : ICertContext; PCertContext : Pointer; V : String; const INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84; begin // otisk prstu certifikatu V :='39ea40791e469dff27bc958361b7cf4c137506ee'; //inicializuj Certificate Store objekt Store := CoStore.Create; //otevrit slozku s osobnimi certifikaty s privatnimi klici Store.Open( CAPICOM_CURRENT_USER_STORE, 'MY', CAPICOM_STORE_OPEN_MAXIMUM_ALLOW ED ); //najdi certifikat s dannym otiskem prstu Certs := (Store.Certificates as ICertificates2).Find( CAPICOM_CERTIFICATE_FIND _SHA1_HASH,V, False); //nalezeno? if Certs.Count > 0 then begin v //ziskej kontext certifikatu Cert := IInterface( Certs.Item[ 1 ] ) as ICertificate2; //Cert.Display; // Zde muzete zobrazit klasicke Windows okno s certifikatem ( pro kontrolu) CertContext := Cert as ICertContext; CertContext.Get_CertContext( Integer( PCertContext ) ); //prirad certifikat k SSL spojeni if InternetSetOption( Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext, 64) = False then begin // vyskytla se chyba ShowMessage( IntToStr(GetLastError) + '=' + SysErrorMessage(GetLastError)); end; end; end;