AutoIt
AutoIt
Generate an ECC Key (Public and Private)
See more ECC Examples
Demonstrates how to generate an ECC key and save both public and private parts.Chilkat AutoIt Downloads
Local $bSuccess = False
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; Create a Fortuna PRNG and seed it with system entropy.
; This will be our source of random data for generating the ECC private key.
$oFortuna = ObjCreate("Chilkat.Prng")
Local $sEntropy = $oFortuna.GetEntropy(32,"base64")
$bSuccess = $oFortuna.AddEntropy($sEntropy,"base64")
$oEcc = ObjCreate("Chilkat.Ecc")
; Generate a random ECC private key on the secp256r1 curve.
; Chilkat also supports other curves, such as secp384r1, secp521r1, and secp256k1.
$oPrivKey = ObjCreate("Chilkat.PrivateKey")
$bSuccess = $oEcc.GenKey("secp256r1",$oFortuna,$oPrivKey)
If ($bSuccess = False) Then
ConsoleWrite($oEcc.LastErrorText & @CRLF)
Exit
EndIf
; Save the private key to PKCS8 encrypted PEM
; (The private key can be saved in a variety of different formats. See the online reference documentation.)
$bSuccess = $oPrivKey.SavePkcs8EncryptedPemFile("pemPassword","qa_output/eccPrivKey.pem")
If ($bSuccess <> True) Then
ConsoleWrite($oPrivKey.LastErrorText & @CRLF)
EndIf
; The private key PEM looks like this:
; -----BEGIN ENCRYPTED PRIVATE KEY-----
; MIHFMEAGCSqGSIb3DQEFDTAzMBsGCSqGSIb3DQEFDDAOBAhUmn+1/lwCIwICCAAw
; FAYIKoZIhvcNAwcECPlyNXAXZO+oBIGAIvxvTENXJWbrCwSjh0QNxLecBotUpfI5
; auOonLmwVMyt1ahMmNyVo/D+pnKQSE41Fg8fApM0DCDKZUOVCCcK1qirIsMPQkGp
; klPJbvrQRVYgzBtU31uNB5y2wqhrIeepal1HXBvbkUK0nfJMbcdz/XAEIQu2HhTD
; t6LMScPQld4=
; -----END ENCRYPTED PRIVATE KEY-----
; Now get the public key part from the private key.
; (A public key is actually a subset of the private key.)
$oPubKey = ObjCreate("Chilkat.PublicKey")
$oPrivKey.ToPublicKey($oPubKey)
; Save the public key to a PEM file.
; (The public key can be saved in a variety of different formats. See the online reference documentation.)
; For ECC keys, the 1st argument (bPreferPkcs1) is ignored and unused.
Local $bPreferPkcs1 = False
$bSuccess = $oPubKey.SavePemFile($bPreferPkcs1,"qa_output/eccPubKey.pem")
; The public key PEM looks like this:
; -----BEGIN PUBLIC KEY-----
; MIIBSzCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAA
; AAAAAAAAAAAA////////////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA////
; ///////////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSd
; NgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5
; RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA
; //////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABGdOH8uM6SfX3mdV+TR0mWp2
; gfVRPlxWxwhOiowuNByBxmQz7ZR4CJY1XcN2zkUo5pzW73ZhGwgd2XTOvqPqG40=
; -----END PUBLIC KEY-----
;
ConsoleWrite("finished." & @CRLF)