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 #include <C_CkCrypt2.h> #include <C_CkByteData.h> #include <C_CkMime.h> void ChilkatSample(void) { HCkCrypt2 crypt; BOOL success; HCkByteData p7mData; const char * pfxFilePath; const char * pfxPassword; const char * mimeText; HCkMime mime; crypt = CkCrypt2_Create(); // Any string argument automatically begins the 30-day trial. success = CkCrypt2_UnlockComponent(crypt,"30-day trial"); if (success != TRUE) { printf("%s\n",CkCrypt2_lastErrorText(crypt)); return; } // Read the P7M file into memory. p7mData = CkByteData_Create(); success = CkCrypt2_ReadFile(crypt,"encrypted.p7m",p7mData); if (success != TRUE) { printf("%s\n",CkCrypt2_lastErrorText(crypt)); return; } // Setup the crypt object: // Indicate that public-key decryption is to be used. CkCrypt2_putCryptAlgorithm(crypt,"pki"); // Add a PFX file to allow the crypt object to find // the certificate and private key needed for decryption pfxFilePath = "myPfx.pfx"; pfxPassword = "secret"; success = CkCrypt2_AddPfxSourceFile(crypt,pfxFilePath,pfxPassword); if (success != TRUE) { printf("%s\n",CkCrypt2_lastErrorText(crypt)); return; } // Assuming the decrypted data will be text, decrypt to // a string. mimeText = CkCrypt2_decryptString(crypt,p7mData); if (mimeText == 0 ) { printf("%s\n",CkCrypt2_lastErrorText(crypt)); 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. mime = CkMime_Create(); success = CkMime_UnlockComponent(mime,"Anyting for 30-day trial"); if (success != TRUE) { printf("%s\n",CkMime_lastErrorText(mime)); return; } // Load the MIME text into the MIME object. success = CkMime_LoadMime(mime,mimeText); if (success != TRUE) { printf("%s\n",CkMime_lastErrorText(mime)); return; } // Save the MIME to a file: success = CkMime_SaveMime(mime,"outMime.txt"); if (success != TRUE) { printf("%s\n",CkMime_lastErrorText(mime)); return; } // Success! Output the MIME text: printf("%s\n",CkMime_getMime(mime)); CkCrypt2_Dispose(crypt); CkByteData_Dispose(p7mData); CkMime_Dispose(mime); } |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.