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
(DataFlex) Generate ECDSA Key and Get Details as XMLDemonstrates how to generate an ECC key and gets the parts as XML.
Use ChilkatAx-win32.pkg Procedure Test Handle hoEcc Variant vFortuna Handle hoFortuna String sEntropy Boolean iSuccess Variant vPrivKey Handle hoPrivKey Handle hoAsn Handle hoXml Handle hoCrypt String sPrivKeyHex String sTemp1 Boolean bTemp1 // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatEcc)) To hoEcc If (Not(IsComObjectCreated(hoEcc))) Begin Send CreateComObject of hoEcc End // Generate a random ECC private key on the secp256k1 curve. // Chilkat also supports other curves, such as secp384r1, secp521r1, and secp256r1. // Create a Fortuna PRNG and seed it with system entropy. // This will be our source of random data for generating the ECC private key. Get Create (RefClass(cComChilkatPrng)) To hoFortuna If (Not(IsComObjectCreated(hoFortuna))) Begin Send CreateComObject of hoFortuna End Get ComGetEntropy Of hoFortuna 32 "base64" To sEntropy Get ComAddEntropy Of hoFortuna sEntropy "base64" To iSuccess Get pvComObject of hoFortuna to vFortuna Get ComGenEccKey Of hoEcc "secp256k1" vFortuna To vPrivKey If (IsComObject(vPrivKey)) Begin Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey Set pvComObject Of hoPrivKey To vPrivKey End Get ComLastMethodSuccess Of hoEcc To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoEcc To sTemp1 Showln sTemp1 Procedure_Return End // An EC private key has this ASN.1 // ECPrivateKey ::= SEQUENCE { // version INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1), // privateKey OCTET STRING, // parameters [0] ECParameters {{ NamedCurve }} OPTIONAL, // publicKey [1] BIT STRING OPTIONAL (This is the ANSI X9.63 public key format.) Get Create (RefClass(cComChilkatAsn)) To hoAsn If (Not(IsComObjectCreated(hoAsn))) Begin Send CreateComObject of hoAsn End Get ComGetPkcs1ENC Of hoPrivKey "base64" To sTemp1 Get ComLoadEncoded Of hoAsn sTemp1 "base64" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoAsn To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatXml)) To hoXml If (Not(IsComObjectCreated(hoXml))) Begin Send CreateComObject of hoXml End Get ComAsnToXml Of hoAsn To sTemp1 Get ComLoadXml Of hoXml sTemp1 To iSuccess Get ComGetXml Of hoXml To sTemp1 Showln sTemp1 // The XML looks like this: // <?xml version="1.0" encoding="utf-8" ?> // <sequence> // <int>01</int> // <octets>JgJvBG+3wletkJab8iXAkpz0O8/AgWZSpkYVcB7SpnU=</octets> // <contextSpecific tag="0" constructed="1"> // <oid>1.3.132.0.10</oid> // </contextSpecific> // </sequence> // The 32-byte private key is in the octets.. // Get it as hex. Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt If (Not(IsComObjectCreated(hoCrypt))) Begin Send CreateComObject of hoCrypt End Get ComGetChildContent Of hoXml "octets" To sTemp1 Get ComReEncode Of hoCrypt sTemp1 "base64" "hex" To sPrivKeyHex Showln "EC private key as hex = " sPrivKeyHex Send Destroy of hoPrivKey End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.