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) Find Certificate on Smartcard Currenty in ReaderFinds the certificates on smartcards currently in readers. Note: This example requires Chilkat v9.5.0.77 or greater.
Use ChilkatAx-win32.pkg Procedure Test Handle hoCsp Variant vSt Handle hoSt Boolean iSuccess Integer i Integer iNumProviders Handle hoCertStore Integer iNumContainers String sKeyContainerName Variant vCert Handle hoCert String sTemp1 Boolean bTemp1 // This newer example is a much better way to get the certificate on a smartcard or USB token // This example requires that we already know the name of the CSP (Cryptographic Service Provider) for the smartcard. // It is often the "Microsoft Base Smart Card Crypto Provider". You can see what CSP's are registered on your system with this code: Get Create (RefClass(cComChilkatCsp)) To hoCsp If (Not(IsComObjectCreated(hoCsp))) Begin Send CreateComObject of hoCsp End Get Create (RefClass(cComChilkatStringTable)) To hoSt If (Not(IsComObjectCreated(hoSt))) Begin Send CreateComObject of hoSt End Get pvComObject of hoSt to vSt Get ComGetProviders Of hoCsp vSt To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCsp To sTemp1 Showln sTemp1 Procedure_Return End // Iterate over the CSP names.. Move 0 To i Get ComCount Of hoSt To iNumProviders While (i < iNumProviders) Get ComStringAt Of hoSt i To sTemp1 Showln i ": " sTemp1 Move (i + 1) To i Loop // -------------------------- // This newer example is a much better way to get the certificate on a smartcard or USB token // We'll assume our smartcard is accessed through the "Microsoft Base Smart Card Crypto Provider" // Also, we'll assume that the certificate has been installed into the default current user Windows // certificate store by following the instructions provided by the smartcard vendor. // (The certificate does not contain the private key. The certificate should be installed in the // Windows current user certificate store. It will also be on the smartcard, and the associated private // key is only on the smartcard.) // // First open the Current User Certificate Store. We'll need it soon.. Get Create (RefClass(cComChilkatCertStore)) To hoCertStore If (Not(IsComObjectCreated(hoCertStore))) Begin Send CreateComObject of hoCertStore End Get ComOpenCurrentUserStore Of hoCertStore True To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCertStore To sTemp1 Showln sTemp1 Procedure_Return End // Create a Csp object and set the ProviderName equal to our desired CSP name. // (setting the ProviderName selects the desired CSP.) Set ComProviderName Of hoCsp To "Microsoft Base Smart Card Crypto Provider" // Iterate over the key containers managed by this CSP. // These will be the key containers for the cards currently inserted into the reader(s). // If only one smartcard reader exists, and a smartcard is inserted, there should be one // key container. Get ComNumKeyContainers Of hoCsp To iNumContainers Showln "numContainers = " iNumContainers Move 0 To i While (i < iNumContainers) // For each key container, get the key container name and then find the certificate // in the Current User Certicate Store with the matching key container name. Get ComNthKeyContainerName Of hoCsp i To sKeyContainerName Get ComFindCertByKeyContainer Of hoCertStore sKeyContainerName To vCert If (IsComObject(vCert)) Begin Get Create (RefClass(cComChilkatCert)) To hoCert Set pvComObject Of hoCert To vCert End Get ComLastMethodSuccess Of hoCertStore To bTemp1 If (bTemp1 = True) Begin Get ComSubjectCN Of hoCert To sTemp1 Showln "Certificate in reader: " sTemp1 Send Destroy of hoCert End Move (i + 1) To i Loop End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.