Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) SSL Client CertificateDemonstrates how to connect to an SSL server using a client-side certificate, send a simple message, receive a simple response, and disconnect.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Cert, CertStore, Socket; ... procedure TForm1.Button1Click(Sender: TObject); var socket: HCkSocket; certStore: HCkCertStore; success: Boolean; cert: HCkCert; ssl: Boolean; maxWaitMillisec: Integer; sslServerHost: PWideChar; sslServerPort: Integer; receivedMsg: PWideChar; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. socket := CkSocket_Create(); // Create an instance of a certificate store object, load a PFX file, // locate the certificate we need, and use it for signing. // (a PFX file may contain more than one certificate.) certStore := CkCertStore_Create(); // The 1st argument is the filename, the 2nd arg is the // PFX file's password: success := CkCertStore_LoadPfxFile(certStore,'chilkat_secret.pfx','secret'); if (success <> True) then begin Memo1.Lines.Add(CkCertStore__lastErrorText(certStore)); Exit; end; cert := CkCertStore_FindCertBySubjectCN(certStore,'Chilkat Software, Inc.'); if (CkCertStore_getLastMethodSuccess(certStore) = False) then begin Memo1.Lines.Add(CkCertStore__lastErrorText(certStore)); Exit; end; success := CkSocket_SetSslClientCert(socket,cert); ssl := True; maxWaitMillisec := 20000; // The SSL server hostname may be an IP address, a domain name, // or "localhost". You'll need to change this: sslServerHost := '123.123.88.88'; sslServerPort := 8123; // Connect to the SSL server: success := CkSocket_Connect(socket,sslServerHost,sslServerPort,ssl,maxWaitMillisec); if (success <> True) then begin Memo1.Lines.Add(CkSocket__lastErrorText(socket)); Exit; end; // Set maximum timeouts for reading an writing (in millisec) CkSocket_putMaxReadIdleMs(socket,20000); CkSocket_putMaxSendIdleMs(socket,20000); // Send a "Hello Server! -EOM-" message: success := CkSocket_SendString(socket,'Hello Server! -EOM-'); if (success <> True) then begin Memo1.Lines.Add(CkSocket__lastErrorText(socket)); Exit; end; // The server (in this example) is going to send a "Hello Client! -EOM-" // message. Read it: receivedMsg := CkSocket__receiveUntilMatch(socket,'-EOM-'); if (CkSocket_getLastMethodSuccess(socket) <> True) then begin Memo1.Lines.Add(CkSocket__lastErrorText(socket)); Exit; end; // Close the connection with the server // Wait a max of 20 seconds (20000 millsec) success := CkSocket_Close(socket,20000); Memo1.Lines.Add(receivedMsg); CkSocket_Dispose(socket); CkCertStore_Dispose(certStore); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.