![]() |
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
(DataFlex) RSA Sign with PKCS8 Encrypted KeyDemonstrates how to load a private key from an encrypted PKCS8 file and create an RSA digital signature (and then verify it). Note: This example requires Chilkat v11.0.0 or greater.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Variant vPrivKey Handle hoPrivKey Handle hoRsa String sStrData String sHexSig Handle hoCert Variant vPubKey Handle hoPubKey 2 Handle hoRsa2 String sTemp1 Boolean bTemp1 Move False To iSuccess // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey If (Not(IsComObjectCreated(hoPrivKey))) Begin Send CreateComObject of hoPrivKey End // Load the private key from an RSA PEM file: Get ComLoadAnyFormatFile Of hoPrivKey "raul_privateKey.key" "a0123456789" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoPrivKey To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatRsa)) To hoRsa If (Not(IsComObjectCreated(hoRsa))) Begin Send CreateComObject of hoRsa End // Import the private key into the RSA component: Get pvComObject of hoPrivKey to vPrivKey Get ComUsePrivateKey Of hoRsa vPrivKey To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoRsa To sTemp1 Showln sTemp1 Procedure_Return End // This example will sign a string, and receive the signature // in a hex-encoded string. Therefore, set the encoding mode // to "hex": Set ComEncodingMode Of hoRsa To "hex" Move "This is the string to be signed." To sStrData // Sign the string using the sha256 hash algorithm. // Other valid choices are sha1, sha384, sha512 and others. Get ComSignStringENC Of hoRsa sStrData "sha256" To sHexSig Get ComLastMethodSuccess Of hoRsa To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoRsa To sTemp1 Showln sTemp1 Procedure_Return End Showln sHexSig // Now verify with the public key. // This example shows how to use the public key from // a digital certificate (.cer file) Get Create (RefClass(cComChilkatCert)) To hoCert If (Not(IsComObjectCreated(hoCert))) Begin Send CreateComObject of hoCert End Get ComLoadFromFile Of hoCert "raul_publicKey.cer" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCert To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey If (Not(IsComObjectCreated(hoPubKey))) Begin Send CreateComObject of hoPubKey End Get pvComObject of hoPubKey to vPubKey Get ComGetPublicKey Of hoCert vPubKey To iSuccess Get Create (RefClass(cComChilkatRsa)) To hoRsa2 If (Not(IsComObjectCreated(hoRsa2))) Begin Send CreateComObject of hoRsa2 End Get pvComObject of hoPubKey to vPubKey Get ComUsePublicKey Of hoRsa2 vPubKey To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoRsa2 To sTemp1 Showln sTemp1 Procedure_Return End // Verify the signature against the original data: Set ComEncodingMode Of hoRsa2 To "hex" Get ComVerifyStringENC Of hoRsa2 sStrData "sha256" sHexSig To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoRsa2 To sTemp1 Showln sTemp1 Procedure_Return End Showln "Signature verified!" // Verify with incorrect data: Get ComVerifyStringENC Of hoRsa2 "something else" "sha256" sHexSig To iSuccess If (iSuccess <> True) Begin Showln "Signature not verified! (which was expected in this case)" End Else Begin Showln "Hmmm... that's not right..." End End_Procedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.