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 Signature with Certificate's Private Key from PFXSee more RSA ExamplesDemonstrates how to use a certificate's private key from a PFX file to create an RSA signature.
#include <CkCertStore.h> #include <CkCert.h> #include <CkPrivateKey.h> #include <CkRsa.h> void ChilkatSample(void) { CkString strOut; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Create an instance of a certificate store object, load a PFX file, // locate the certificate we need, and use it for signing. // (a PFX file may contain more than one certificate.) CkCertStore certStore; // The 1st argument is the filename, the 2nd arg is the // PFX file's password: bool success = certStore.LoadPfxFile("chilkat.pfx","test"); if (success != true) { strOut.append(certStore.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } CkCert *cert = certStore.FindCertBySubject("Chilkat Software, Inc."); if (certStore.get_LastMethodSuccess() == false) { strOut.append(certStore.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } CkPrivateKey *pkey = cert->ExportPrivateKey(); if (cert->get_LastMethodSuccess() == false) { strOut.append(cert->lastErrorText()); strOut.append("\r\n"); delete cert; SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } delete cert; // Get the private key in XML format: const char *pkeyXml = pkey->getXml(); CkRsa rsa; // Import the private key into the RSA component: success = rsa.ImportPrivateKey(pkeyXml); if (success != true) { strOut.append(rsa.lastErrorText()); strOut.append("\r\n"); delete pkey; SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Encode the signature as a hex string rsa.put_EncodingMode("hex"); const char *strData = "This is the string to be signed."; // Sign the string using the sha-1 hash algorithm. // Other valid choices are "sha-256", "md2" and "md5". const char *hexSig = rsa.signStringENC(strData,"sha-1"); strOut.append(hexSig); strOut.append("\r\n"); delete pkey; strOut.append("Success!"); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); } |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.