AutoIt
AutoIt
PKCS11 Import an Existing RSA Public Key onto the HSM
See more PKCS11 Examples
Demonstrates how to import an existing RSA Public Key onto a smart card or token.Note: This example requires Chilkat v9.5.0.96 or later.
Chilkat AutoIt Downloads
Local $bSuccess = False
; 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.
$oPkcs11 = ObjCreate("Chilkat.Pkcs11")
; 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.
$oPkcs11.SharedLibPath = "C:/Program Files (x86)/Gemalto/IDGo 800 PKCS#11/IDPrimePKCS1164.dll"
; Establish a logged-on session.
Local $sPin = "0000"
Local $iUserType = 1
$bSuccess = $oPkcs11.QuickSession($iUserType,$sPin)
If ($bSuccess = False) Then
ConsoleWrite($oPkcs11.LastErrorText & @CRLF)
Exit
EndIf
; Generate a new 2048-bit RSA key.
$oRsa = ObjCreate("Chilkat.Rsa")
$oPrivKey = ObjCreate("Chilkat.PrivateKey")
$bSuccess = $oRsa.GenKey(2048,$oPrivKey)
If ($bSuccess = False) Then
ConsoleWrite($oRsa.LastErrorText & @CRLF)
Exit
EndIf
; Get the public key information as XML, so we can access the modulus and exponent.
$oXml = ObjCreate("Chilkat.Xml")
$oPubKey = ObjCreate("Chilkat.PublicKey")
$oPrivKey.ToPublicKey($oPubKey)
$oXml.LoadXml($oPubKey.GetXml())
$oAttrs = ObjCreate("Chilkat.JsonObject")
; Specify the type of object, and the type of key.
$oAttrs.UpdateString("class","CKO_PUBLIC_KEY")
$oAttrs.UpdateString("key_type","CKK_RSA")
; Add an optional label if desired.
$oAttrs.UpdateString("label","RSA Public Key 1")
; Allow the key to be use for verify, wrapping, and encryption operations.
$oAttrs.UpdateBool("verify",True)
$oAttrs.UpdateBool("wrap",True)
$oAttrs.UpdateBool("encrypt",True)
; Make this a session-only public key.
; To store the public key on the token so that it persists after the PKCS11 session, set token = True.
$oAttrs.UpdateBool("token",False)
; Provide the RSA public key material
$oAttrs.UpdateString("modulus",$oXml.GetChildContent("Modulus"))
$oAttrs.UpdateString("public_exponent",$oXml.GetChildContent("Exponent"))
; Create the RSA public key.
; Returns the PKCS11 object handle of the created key.
Local $iObjHandle = $oPkcs11.CreatePkcs11Object($oAttrs)
If ($iObjHandle = 0) Then
ConsoleWrite($oPkcs11.LastErrorText & @CRLF)
ConsoleWrite("Failed." & @CRLF)
Else
ConsoleWrite("PKCS11 object handle = " & $iObjHandle & @CRLF)
ConsoleWrite("Successfully imported an RSA key.." & @CRLF)
EndIf
$oPkcs11.Logout()
$oPkcs11.CloseSession()