DataFlex
DataFlex
PKCS11 Export Public Key from HSM
See more PKCS11 Examples
Demonstrates how to export a public key from a smartcard or token.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoPkcs11
String sPin
Integer iUserType
Variant vJsonTemplate
Handle hoJsonTemplate
UInteger iPubKeyHandle
Variant vPubKey
Handle hoPubKey
String sTemp1
Move False To iSuccess
// 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.
Get Create (RefClass(cComChilkatPkcs11)) To hoPkcs11
If (Not(IsComObjectCreated(hoPkcs11))) Begin
Send CreateComObject of hoPkcs11
End
// Use the PKCS11 driver (.dll, .so, .dylib) for your particular HSM.
// (The format of the path will change with the operating system. Obviously, "C:/" is not used on non-Windows systems.
Set ComSharedLibPath Of hoPkcs11 To "C:/Program Files (x86)/Gemalto/IDGo 800 PKCS#11/IDPrimePKCS1164.dll"
// Establish a logged-on session. (We can typically skip the login by passing an empty PIN if only working with public keys)
// Use your actual PIN here, or an empty string to skip login.
Move "0000" To sPin
Move 1 To iUserType
Get ComQuickSession Of hoPkcs11 iUserType sPin To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPkcs11 To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the handle of the public key we wish to export.
// You can find public keys in many different ways.
// This example will search for a public key by label.
// Provide a template to find a PKCS11 object.
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonTemplate
If (Not(IsComObjectCreated(hoJsonTemplate))) Begin
Send CreateComObject of hoJsonTemplate
End
// Find the public key with the label "Belgium eHealth".
Get ComUpdateString Of hoJsonTemplate "class" "public_key" To iSuccess
Get ComUpdateString Of hoJsonTemplate "label" "Belgium eHealth" To iSuccess
Get pvComObject of hoJsonTemplate to vJsonTemplate
Get ComFindObject Of hoPkcs11 vJsonTemplate To iPubKeyHandle
If (iPubKeyHandle = 0) Begin
Get ComLastErrorText Of hoPkcs11 To sTemp1
Showln sTemp1
Procedure_Return
End
// Export to a Chilkat public key object.
Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey
If (Not(IsComObjectCreated(hoPubKey))) Begin
Send CreateComObject of hoPubKey
End
Get pvComObject of hoPubKey to vPubKey
Get ComExportPublicKey Of hoPkcs11 iPubKeyHandle vPubKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPkcs11 To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the public key as PKCS8 PEM.
Get ComGetPem Of hoPubKey False To sTemp1
Showln sTemp1
Get ComLogout Of hoPkcs11 To iSuccess
Get ComCloseSession Of hoPkcs11 To iSuccess
End_Procedure