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 #include <C_CkMime.h> #include <C_CkCert.h> void ChilkatSample(void) { long i; HCkMime mime; BOOL success; HCkCert cert; long numSignerCerts; long numEncryptCerts; mime = CkMime_Create(); success = CkMime_UnlockComponent(mime,"Anything for 30-day trial"); if (success == FALSE) { printf("%s\n",CkMime_lastErrorText(mime)); return; } // Note: Your S/MIME file may have a different file extension. success = CkMime_LoadMimeFile(mime,"smime.eml"); if (success == FALSE) { printf("%s\n",CkMime_lastErrorText(mime)); 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 = CkMime_UnwrapSecurity(mime); if (success == FALSE) { printf("%s\n",CkMime_lastErrorText(mime)); return; } // Save the unwrapped S/MIME: success = CkMime_SaveMime(mime,"unwrapped.eml"); if (success == FALSE) { printf("%s\n",CkMime_lastErrorText(mime)); 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. // Unwrapping the security sets the NumSignerCerts property. // If it is non-zero, then signatures were unwrapped... printf("Signer Certificates: \n"); numSignerCerts = CkMime_getNumSignerCerts(mime); if (numSignerCerts > 0) { for (i = 0; i <= numSignerCerts - 1; i++) { cert = CkMime_GetSignerCert(mime,i); if (!(cert == 0 )) { // Show the cert's common name. printf("%s\n",CkCert_subjectCN(cert)); } } } // Now check to see if anything was decrypted. printf("Encryption Certificates: \n"); numEncryptCerts = CkMime_getNumEncryptCerts(mime); if (numEncryptCerts > 0) { for (i = 0; i <= numEncryptCerts - 1; i++) { cert = CkMime_GetEncryptCert(mime,i); if (!(cert == 0 )) { // Show the cert's common name. printf("%s\n",CkCert_subjectCN(cert)); } } } CkMime_Dispose(mime); } |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.