![]() |
Chilkat • HOME • Android™ • AutoIt • C • C# • C++ • Chilkat2-Python • CkPython • Classic ASP • DataFlex • Delphi DLL • Go • Java • Node.js • Objective-C • PHP Extension • Perl • PowerBuilder • PowerShell • PureBasic • Ruby • SQL Server • Swift • Tcl • Unicode C • Unicode C++ • VB.NET • VBScript • Visual Basic 6.0 • Visual FoxPro • Xojo Plugin
(AutoIt) ECDSA Sign Data and Verify SignatureDemonstrates using the Elliptic Curve Digital Signature Algorithm to hash data and sign it. Also demonstrates how to verify the ECDSA signature.
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; To create an ECDSA signature, the data first needs to be hashed. Then the hash ; is signed. ; Use Chilkat Crypt2 to generate a hash for any of the following ; hash algorithms: SHA256, SHA384, SHA512, SHA1, MD5, MD2, HAVAL, RIPEMD128/160/256/320 $oCrypt = ObjCreate("Chilkat.Crypt2") $oCrypt.HashAlgorithm = "SHA256" $oCrypt.Charset = "utf-8" $oCrypt.EncodingMode = "base64" ; Hash a string. Local $sHash1 = $oCrypt.HashStringENC("The quick brown fox jumps over the lazy dog") ConsoleWrite("hash1 = " & $sHash1 & @CRLF) ; Or hash a file.. Local $sHash2 = $oCrypt.HashFileENC("qa_data/hamlet.xml") ConsoleWrite("hash2 = " & $sHash2 & @CRLF) ; (The Crypt2 API provides many other ways to hash data..) ; ----------------------------------------------------------- ; An ECDSA private key is used for signing. The public key is for signature verification. ; Load our ECC private key. ; Our private key file contains this: ; // -----BEGIN PRIVATE KEY----- ; MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg3J8q/24D1sEKGdP9 ; 72MGYElLGpw/a56Y3t6pfON3uhShRANCAATlSmoizyhAwoYZAOuFBATl07/1RR54 ; a1Dzfm16grxJe666AGKR+bSs24hk7TEpaeCTvT8YOOM3l+xKFg7zq6Q9 ; -----END PRIVATE KEY----- $oPrivKey = ObjCreate("Chilkat.PrivateKey") Local $bSuccess = $oPrivKey.LoadPemFile("qa_data/ecc/secp256r1-key-pkcs8.pem") If ($bSuccess <> True) Then ConsoleWrite($oPrivKey.LastErrorText & @CRLF) Exit EndIf ; We'll need a PRNG source for random number generation. ; Use Chilkat's PRNG (for the Fortuna PRNG algorithm). $oPrng = ObjCreate("Chilkat.Prng") ; Sign the hash.. $oEcdsa = ObjCreate("Chilkat.Ecc") Local $sEcdsaSigBase64 = $oEcdsa.SignHashENC($sHash1,"base64",$oPrivKey,$oPrng) If ($oEcdsa.LastMethodSuccess <> True) Then ConsoleWrite($oEcdsa.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("ECDSA signature = " & $sEcdsaSigBase64 & @CRLF) ; ----------------------------------------------------------- ; Now let's verify the signature using the public key. $oPubKey = ObjCreate("Chilkat.PublicKey") $bSuccess = $oPubKey.LoadFromFile("qa_data/ecc/secp256r1-pubkey.pem") If ($bSuccess <> True) Then ConsoleWrite($oPubKey.LastErrorText & @CRLF) Exit EndIf Local $iResult = $oEcdsa.VerifyHashENC($sHash1,$sEcdsaSigBase64,"base64",$oPubKey) If ($iResult = 1) Then ConsoleWrite("Signature is valid." & @CRLF) Exit EndIf If ($iResult = 0) Then ConsoleWrite("Signature is invalid." & @CRLF) Exit EndIf If ($iResult < 0) Then ConsoleWrite($oEcdsa.LastErrorText & @CRLF) ConsoleWrite("The VerifyHashENC method call failed." & @CRLF) Exit EndIf |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.