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
(Go) 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. pkcs11 := chilkat.NewPkcs11() // This is the DLL for the Feitian ePass3003Auto USB token pkcs11.SetSharedLibPath("ShuttleCsp11_3003.dll") success := pkcs11.Initialize() if success == false { fmt.Println(pkcs11.LastErrorText()) pkcs11.DisposePkcs11() return } // We need to call Discover to get the slot ID. onlyTokensPresent := true json := chilkat.NewJsonObject() success = pkcs11.Discover(onlyTokensPresent,json) if success == false { fmt.Println(pkcs11.LastErrorText()) pkcs11.DisposePkcs11() json.DisposeJsonObject() return } json.SetEmitCompact(false) fmt.Println(*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 { fmt.Println("No occuplied slots.") pkcs11.DisposePkcs11() json.DisposeJsonObject() return } // 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 { fmt.Println(pkcs11.LastErrorText()) pkcs11.DisposePkcs11() json.DisposeJsonObject() return } // 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 { fmt.Println(pkcs11.LastErrorText()) pkcs11.DisposePkcs11() json.DisposeJsonObject() return } fmt.Println("PKCS11 session successfully opened and closed.") pkcs11.DisposePkcs11() json.DisposeJsonObject() |
© 2000-2023 Chilkat Software, Inc. All Rights Reserved.