Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(MFC) RSA Hash Binary Data and Sign (and Verify)Demonstrates how to sign the hash of binary data. Also demonstrates how to verify the RSA signature. Note: This example uses methods introduced in Chilkat v9.5.0.77.
#include <CkPrivateKey.h> #include <CkRsa.h> #include <CkBinData.h> #include <CkPublicKey.h> void ChilkatSample(void) { CkString strOut; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Load an RSA private key for signing. CkPrivateKey privKey; bool success = privKey.LoadEncryptedPemFile("qa_data/pem/rsa_passwd.pem","passwd"); if (success != true) { strOut.append(privKey.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } CkRsa rsa; rsa.ImportPrivateKeyObj(privKey); // We have some binary data (in hex) to sign const char *originalData = "0102030405060708090A"; CkBinData bdData; bdData.AppendEncoded(originalData,"hex"); // Hash (SHA-256) and sign the hash: CkBinData bdSignature; success = rsa.SignBd(bdData,"sha256",bdSignature); if (success != true) { strOut.append(rsa.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Show the RSA signature in base64 strOut.append(bdSignature.getEncoded("base64")); strOut.append("\r\n"); // ------------------------------------------ // Get the public key from the private key CkPublicKey *pubKey = privKey.GetPublicKey(); // Verify the signature.. CkRsa rsa2; rsa2.ImportPublicKeyObj(*pubKey); bool bVerified = rsa2.VerifyBd(bdData,"sha256",bdSignature); strOut.append("signature verified: "); strOut.appendInt(bVerified); strOut.append("\r\n"); delete pubKey; SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); } |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.