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) 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).
Use ChilkatAx-win32.pkg Procedure Test Handle hoPkey Boolean iSuccess String sPkeyXml Handle hoRsa String sStrData String sHexSig Handle hoCert Variant vPubKey Handle hoPubKey String sPubKeyXml 2 Handle hoRsa2 String sTemp1 // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatPrivateKey)) To hoPkey If (Not(IsComObjectCreated(hoPkey))) Begin Send CreateComObject of hoPkey End // Load the private key from an RSA PEM file: Get ComLoadPkcs8EncryptedFile Of hoPkey "raul_privateKey.key" "a0123456789" To iSuccess // Get the private key in XML format: Get ComGetXml Of hoPkey To sPkeyXml 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 ComImportPrivateKey Of hoRsa sPkeyXml To iSuccess If (iSuccess <> True) 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 sha-1 hash algorithm. // Other valid choices are "md2" and "md5". Get ComSignStringENC Of hoRsa sStrData "sha-1" To sHexSig 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 <> True) Begin Get ComLastErrorText Of hoCert To sTemp1 Showln sTemp1 Procedure_Return End Get ComExportPublicKey Of hoCert To vPubKey If (IsComObject(vPubKey)) Begin Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey Set pvComObject Of hoPubKey To vPubKey End // Get the private key in XML format: Get ComGetXml Of hoPubKey To sPubKeyXml Get Create (RefClass(cComChilkatRsa)) To hoRsa2 If (Not(IsComObjectCreated(hoRsa2))) Begin Send CreateComObject of hoRsa2 End Get ComImportPublicKey Of hoRsa2 sPubKeyXml To iSuccess If (iSuccess <> True) 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 "sha-1" sHexSig To iSuccess If (iSuccess <> True) 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" "sha-1" 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 Send Destroy of hoPubKey End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.