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
(DataFlex) Examine Client Certificates for an Accepted TLS ConnectionDemonstrates how to access the client certificates for a TLS connection accepted by your application acting as the server.
Use ChilkatAx-win32.pkg Procedure Test Handle hoListenSslSocket Variant vCert Handle hoCert Boolean iSuccess Integer iMyPort Integer iBackLog Integer iMaxWaitMillisec Variant vClientSock Handle hoClientSock Integer iNumClientCerts Integer i Variant vClientCert Handle hoClientCert String sTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatSocket)) To hoListenSslSocket If (Not(IsComObjectCreated(hoListenSslSocket))) Begin Send CreateComObject of hoListenSslSocket End // An SSL/TLS server needs a digital certificate. This example loads it from a PFX file. // This is the server's certificate. Get Create (RefClass(cComChilkatCert)) To hoCert If (Not(IsComObjectCreated(hoCert))) Begin Send CreateComObject of hoCert End Get ComLoadPfxFile Of hoCert "qa_data/serverCert/myServerCert.pfx" "pfx_password" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoCert To sTemp1 Showln sTemp1 Procedure_Return End // To accept client client certificates in the TLS handshake, // we must indicate a list of acceptable client certificate root CA DN's // that are allowed. (DN is an acronym for Distinguished Name.) // Call AddSslAcceptableClientCaDn once for each acceptable CA DN. // Here are a few examples so you can see the general format of a DN. Get ComAddSslAcceptableClientCaDn Of hoListenSslSocket "C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root" To iSuccess Get ComAddSslAcceptableClientCaDn Of hoListenSslSocket "O=Digital Signature Trust Co., CN=DST Root CA X3" To iSuccess // Initialize with our server's TLS certificate. Get pvComObject of hoCert to vCert Get ComInitSslServer Of hoListenSslSocket vCert To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoListenSslSocket To sTemp1 Showln sTemp1 Procedure_Return End // Bind and listen on a port: Move 8123 To iMyPort // Allow for a max of 5 queued connect requests. Move 5 To iBackLog Get ComBindAndListen Of hoListenSslSocket iMyPort iBackLog To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoListenSslSocket To sTemp1 Showln sTemp1 Procedure_Return End // Accept the next incoming connection. Move 20000 To iMaxWaitMillisec Get ComAcceptNextConnection Of hoListenSslSocket iMaxWaitMillisec To vClientSock If (IsComObject(vClientSock)) Begin Get Create (RefClass(cComChilkatSocket)) To hoClientSock Set pvComObject Of hoClientSock To vClientSock End Get ComLastMethodSuccess Of hoListenSslSocket To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoListenSslSocket To sTemp1 Showln sTemp1 Procedure_Return End // Examine the client certs chain. The 1st cert will be the client certificate, and // the subsequent certs will be the certs in the chain of authentication. Get ComNumReceivedClientCerts Of hoClientSock To iNumClientCerts Showln "numClientCerts = " iNumClientCerts Move 0 To i While (i < iNumClientCerts) Get ComGetReceivedClientCert Of hoClientSock i To vClientCert If (IsComObject(vClientCert)) Begin Get Create (RefClass(cComChilkatCert)) To hoClientCert Set pvComObject Of hoClientCert To vClientCert End Get ComSubjectDN Of hoClientCert To sTemp1 Showln sTemp1 Send Destroy of hoClientCert Move (i + 1) To i Loop // Close the connection with the client Get ComClose Of hoClientSock 1000 To iSuccess Send Destroy of hoClientSock End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.