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
Unwrap S/MIME Security LayersDemonstrates how to unwrap the security layers of a signed and/or encrypted S/MIME message. 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 <CkMime.h> // Needs #include <CkCert.h> CkString strOut; long i; CkMime mime; bool success; success = mime.UnlockComponent("Anything for 30-day trial"); if (success == false) { strOut.append(mime.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Note: Your S/MIME file may have a different file extension. success = mime.LoadMimeFile("smime.eml"); if (success == false) { strOut.append(mime.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Unwrap any security layers so that the resultant MIME // is the original message before signing and/or encrypting // was applied. UnwrapSecurity returns true if // there was nothing to unwrap, or if all signatures were verified, // and all decryptions succeeded. success = mime.UnwrapSecurity(); if (success == false) { strOut.append(mime.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Save the unwrapped S/MIME: success = mime.SaveMime("unwrapped.eml"); if (success == false) { strOut.append(mime.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Let's see if the MIME was signed, and if so whether // the signature(s) were verified. Also, examine the certificate // used for signing. CkCert *cert = 0; // Unwrapping the security sets the NumSignerCerts property. // If it is non-zero, then signatures were unwrapped... strOut.append("Signer Certificates: "); strOut.append("\r\n"); long numSignerCerts; numSignerCerts = mime.get_NumSignerCerts(); if (numSignerCerts > 0) { for (i = 0; i <= numSignerCerts - 1; i++) { cert = mime.GetSignerCert(i); if (!(cert == 0 )) { // Show the cert's common name. strOut.append(cert->subjectCN()); strOut.append("\r\n"); } } } // Now check to see if anything was decrypted. strOut.append("Encryption Certificates: "); strOut.append("\r\n"); long numEncryptCerts; numEncryptCerts = mime.get_NumEncryptCerts(); if (numEncryptCerts > 0) { for (i = 0; i <= numEncryptCerts - 1; i++) { cert = mime.GetEncryptCert(i); if (!(cert == 0 )) { // Show the cert's common name. strOut.append(cert->subjectCN()); 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.