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
(AutoIt) DSA Signature Create and VerifyShows how to create a DSA (DSS) signature for the contents of a file. The first step is to create an SHA-1 hash of the file contents. The hash is signed using the Digital Signature Algorithm and the signature bytes are retrieved as a hex-encoded string. The 2nd part of the example loads the signature and verifies it against the hash.
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. $oCrypt = ObjCreate("Chilkat.Crypt2") $oCrypt.EncodingMode = "hex" $oCrypt.HashAlgorithm = "sha-1" ; Return the SHA-1 hash of a file. The file may be any size. ; The Chilkat Crypt component will stream the file when ; computing the hash, keeping the memory usage constant ; and reasonable. ; The 20-byte SHA-1 hash is returned as a hex-encoded string. Local $sHashStr = $oCrypt.HashFileENC("hamlet.xml") $oDsa = ObjCreate("Chilkat.Dsa") ; Load a DSA private key from a PEM file. Chilkat DSA ; provides the ability to load and save DSA public and private ; keys from encrypted or non-encrypted PEM or DER. ; The LoadText method is for convenience only. You may ; use any means to load the contents of a PEM file into ; a string. Local $sPemPrivateKey $sPemPrivateKey = $oDsa.LoadText("dsa_priv.pem") Local $bSuccess = $oDsa.FromPem($sPemPrivateKey) If ($bSuccess <> True) Then ConsoleWrite($oDsa.LastErrorText & @CRLF) Exit EndIf ; You may optionally verify the key to ensure that it is a valid ; DSA key. $bSuccess = $oDsa.VerifyKey() If ($bSuccess <> True) Then ConsoleWrite($oDsa.LastErrorText & @CRLF) Exit EndIf ; Load the hash to be signed into the DSA object: $bSuccess = $oDsa.SetEncodedHash("hex",$sHashStr) If ($bSuccess <> True) Then ConsoleWrite($oDsa.LastErrorText & @CRLF) Exit EndIf ; Now that the DSA object contains both the private key and hash, ; it is ready to create the signature: $bSuccess = $oDsa.SignHash() If ($bSuccess <> True) Then ConsoleWrite($oDsa.LastErrorText & @CRLF) Exit EndIf ; If SignHash is successful, the DSA object contains the ; signature. It may be accessed as a hex or base64 encoded ; string. (It is also possible to access directly in byte array form via ; the "Signature" property.) Local $sHexSig = $oDsa.GetEncodedSignature("hex") ConsoleWrite("Signature:" & @CRLF) ConsoleWrite($sHexSig & @CRLF) ; ----------------------------------------------------------- ; Step 2: Verify the DSA Signature ; ----------------------------------------------------------- $oDsa2 = ObjCreate("Chilkat.Dsa") ; Load the DSA public key to be used for verification: Local $sPemPublicKey $sPemPublicKey = $oDsa2.LoadText("dsa_pub.pem") $bSuccess = $oDsa2.FromPublicPem($sPemPublicKey) If ($bSuccess <> True) Then ConsoleWrite($oDsa2.LastErrorText & @CRLF) Exit EndIf ; Load the hash to be verified against the signature. $bSuccess = $oDsa2.SetEncodedHash("hex",$sHashStr) If ($bSuccess <> True) Then ConsoleWrite($oDsa2.LastErrorText & @CRLF) Exit EndIf ; Load the signature: $bSuccess = $oDsa2.SetEncodedSignature("hex",$sHexSig) If ($bSuccess <> True) Then ConsoleWrite($oDsa2.LastErrorText & @CRLF) Exit EndIf ; Verify: $bSuccess = $oDsa2.Verify() If ($bSuccess <> True) Then ConsoleWrite($oDsa2.LastErrorText & @CRLF) Else ConsoleWrite("DSA Signature Verified!" & @CRLF) EndIf |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.