Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
Decrypt P7M using PFX to get MIMEDemonstrates how to decrypt a .p7m (PKCS7) binary file using a certificate and private key from a PFX file. The result of the decryption (in this case) is MIME text that may be loaded into a Chilkat MIME object. Note: Any type of file or data may be encrypted to produce a .p7m (PKCS7) encrypted file. This example was prompted by a customer needing to decrypt a MIME message. The final step of loading the decrypted text into a MIME object would be skipped if decrypting something other than MIME.. Downloads: MS Windows Visual C/C++ Libraries Linux/CentOS C/C++ Libraries MAC OS X C/C++ Libraries Solaris C/C++ Libraries C++ Builder Libraries FreeBSD C++ Libraries HP-UX C++ Libraries BlackBerry QNX C++ Libraries // Needs #include <CkCrypt2.h> // Needs #include <CkByteData.h> // Needs #include <CkMime.h> CkString strOut; CkCrypt2 crypt; // Any string argument automatically begins the 30-day trial. bool success; success = crypt.UnlockComponent("30-day trial"); if (success != true) { strOut.append(crypt.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Read the P7M file into memory. CkByteData p7mData; success = crypt.ReadFile("encrypted.p7m",p7mData); if (success != true) { strOut.append(crypt.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Setup the crypt object: // Indicate that public-key decryption is to be used. crypt.put_CryptAlgorithm("pki"); // Add a PFX file to allow the crypt object to find // the certificate and private key needed for decryption const char * pfxFilePath; pfxFilePath = "myPfx.pfx"; const char * pfxPassword; pfxPassword = "secret"; success = crypt.AddPfxSourceFile(pfxFilePath,pfxPassword); if (success != true) { strOut.append(crypt.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Assuming the decrypted data will be text, decrypt to // a string. const char * mimeText; mimeText = crypt.decryptString(p7mData); if (mimeText == 0 ) { strOut.append(crypt.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Note: Chilkat Crypt and Chilkat MIME are separate products. // To use both objects, one would license the "Chilkat Bundle", // which provides licenses to all existing Chilkat products. // This is less expensive than licensing each of the two products separately. CkMime mime; success = mime.UnlockComponent("Anyting for 30-day trial"); if (success != true) { strOut.append(mime.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Load the MIME text into the MIME object. success = mime.LoadMime(mimeText); if (success != true) { strOut.append(mime.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Save the MIME to a file: success = mime.SaveMime("outMime.txt"); if (success != true) { strOut.append(mime.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Success! Output the MIME text: strOut.append(mime.GetMime()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.