Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(Excel) PKCS11 SessionsSee more PKCS11 ExamplesSample code showing how to open a PKCS11 session and then later close it. Note: This example requires Chilkat v9.5.0.88 or later.
' This example requires the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. ' Note: Chilkat's PKCS11 implementation runs on Windows, Linux, Mac OS X, and other supported operating systems. Dim pkcs11 As Chilkat.Pkcs11 Set pkcs11 = Chilkat.NewPkcs11 ' This is the DLL for the Feitian ePass3003Auto USB token pkcs11.SharedLibPath = "ShuttleCsp11_3003.dll" success = pkcs11.Initialize() If (success = False) Then Debug.Print pkcs11.LastErrorText Exit Sub End If ' We need to call Discover to get the slot ID. onlyTokensPresent = True Dim json As Chilkat.JsonObject Set json = Chilkat.NewJsonObject success = pkcs11.Discover(onlyTokensPresent,json) If (success = False) Then Debug.Print pkcs11.LastErrorText Exit Sub End If json.EmitCompact = False Debug.Print json.Emit() ' Sample JSON output.. ' { ' "cryptokiVersion": { ' "major": 2, ' "minor": 40 ' }, ' "manufacturerID": "Feitian Technologies Co., Ltd.", ' "libraryDescription": "EnterSafe PKCS#11 Library.", ' "libraryVersion": { ' "major": 1, ' "minor": 20 ' }, ' "slot": [ ' { ' "id": 1, ' "slotDescription": "ES3003 VCR 1", ' "manufacturerID": "Feitian Technologies Co., Ltd.", ' "tokenPresent": true, ' "removableDevice": true, ' "hardwareSlot": true, ' "hardwareVersion": { ' "major": 1, ' "minor": 0 ' }, ' "firmwareVersion": { ' "major": 1, ' "minor": 0 ' }, ' "token": { ' "label": "ePass3003Auto", ' "manufacturerID": "Feitian Technologies Co., Ltd.", ' "model": "ePass3003Auto", ' "serialNumber": "3C38501007150419", ' "flags": [ ' "CKF_RNG", ' "CKF_LOGIN_REQUIRED", ' "CKF_USER_PIN_INITIALIZED", ' "CKF_TOKEN_INITIALIZED", ' "CKF_SECONDARY_AUTHENTICATION", ' "CKF_USER_PIN_TO_BE_CHANGED" ' ], ' "maxSessionCount": 0, ' "sessionCount": 0, ' "maxRwSessionCount": 0, ' "rwSessionCount": 0, ' "maxPinLen": 16, ' "minPinLen": 4, ' "totalPublicMemory": 30000, ' "freePublicMemory": 27891, ' "totalPrivateMemory": 34000, ' "freePrivateMemory": 33768, ' "hardwareVersion": { ' "major": 7, ' "minor": 3 ' }, ' "firmwareVersion": { ' "major": 7, ' "minor": 3 ' }, ' "utcTime": "", ' "mechanism": [ ' "CKM_RSA_PKCS_KEY_PAIR_GEN", ' "CKM_RSA_PKCS", ' "CKM_RSA_X_509", ' "CKM_MD2_RSA_PKCS", ' "CKM_MD5_RSA_PKCS", ' "CKM_SHA1_RSA_PKCS", ' "CKM_RSA_PKCS_OAEP", ' "CKM_RSA_X9_31_KEY_PAIR_GEN", ' "CKM_RSA_X9_31", ' "CKM_SHA1_RSA_X9_31", ' "CKM_RSA_PKCS_PSS", ' "CKM_SHA1_RSA_PKCS_PSS", ' "CKM_SHA256_RSA_PKCS", ' "CKM_SHA384_RSA_PKCS", ' "CKM_SHA512_RSA_PKCS", ' "CKM_SHA256_RSA_PKCS_PSS", ' "CKM_SHA384_RSA_PKCS_PSS", ' "CKM_SHA512_RSA_PKCS_PSS", ' "CKM_RC2_KEY_GEN", ' "CKM_RC2_ECB", ' "CKM_RC2_CBC", ' "CKM_RC4_KEY_GEN", ' "CKM_RC4", ' "CKM_DES_KEY_GEN", ' "CKM_DES_ECB", ' "CKM_DES_CBC", ' "CKM_DES3_KEY_GEN", ' "CKM_DES3_ECB", ' "CKM_DES3_CBC", ' "CKM_DES_OFB64", ' "CKM_DES_OFB8", ' "CKM_DES_CFB64", ' "CKM_DES_CFB8", ' "CKM_MD2", ' "CKM_MD5", ' "CKM_SHA_1", ' "CKM_SHA256", ' "CKM_SHA224", ' "CKM_SHA384", ' "CKM_SHA512", ' "CKM_GENERIC_SECRET_KEY_GEN", ' "CKM_AES_KEY_GEN", ' "CKM_AES_ECB", ' "CKM_AES_CBC" ' ], ' "rsa": { ' "minKeySize": 512, ' "maxKeySize": 2048 ' } ' } ' } ' ] ' } ' Make sure we have at least one slot. If (json.SizeOfArray("slot") <= 0) Then Debug.Print "No occuplied slots." Exit Sub End If ' Get the ID of the 1st slot slotID = json.IntOf("slot[0].id") ' Open a read/write session. readWrite = True success = pkcs11.OpenSession(slotID,readWrite) If (success = False) Then Debug.Print pkcs11.LastErrorText Exit Sub End If ' Do whatever is needed... ' ... ' ... ' When finished, close the session. ' It is important to close the session (memory leaks will occur if the session is not properly closed). success = pkcs11.CloseSession() If (success = False) Then Debug.Print pkcs11.LastErrorText Exit Sub End If Debug.Print "PKCS11 session successfully opened and closed." |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.