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) Generate an RSA Key and Get as Base64 DERDemonstrates how to generate a 2048-bit RSA key and return the public and private parts as unencrypted Base64 encoded DER.
#include <CkRsa.h> #include <CkPublicKey.h> #include <CkPrivateKey.h> void ChilkatSample(void) { CkString strOut; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkRsa rsa; // Generate a 2048-bit key. Chilkat RSA supports bool success = rsa.GenerateKey(2048); if (success != true) { strOut.append(rsa.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Get the public part of the key. CkPublicKey *pubKey = rsa.ExportPublicKeyObj(); // There are two possible formats for representing the RSA public key // in ASN.1 (DER). The possible formats are PKCS1 and PKCS8. // We can get either by setting bChoosePkcs1 to true or false. bool bChoosePkcs1 = true; const char *pubKeyBase64Der = pubKey->getEncoded(bChoosePkcs1,"base64"); strOut.append("Public Key Base64 DER:"); strOut.append("\r\n"); strOut.append(pubKeyBase64Der); strOut.append("\r\n"); delete pubKey; // Now get the private key as Base64 DER: // Get the private part of the key. // (Note: A public key is actually just a subset of the private key. // If you have the private key, you also have the public key. // Thus Chilkat provides a method to get the public key from the private key.) CkPrivateKey *privKey = rsa.ExportPrivateKeyObj(); // Again, we can get PKCS1 or PKCS8, but with different methods: const char *privKeyPkcs1 = privKey->getPkcs1ENC("base64"); strOut.append("Private Key PKCS1 Base64 DER:"); strOut.append("\r\n"); strOut.append(privKeyPkcs1); strOut.append("\r\n"); const char *privKeyPkcs8 = privKey->getPkcs8ENC("base64"); strOut.append("Private Key PKCS8 Base64 DER:"); strOut.append("\r\n"); strOut.append(privKeyPkcs8); strOut.append("\r\n"); delete privKey; SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); } |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.