Programming Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

C Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
DKIM / DomainKey
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
MIME
NTLM
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip
Amazon S3

 

 

 

 

 

 

 

 

Unwrap S/MIME Security Layers

Demonstrates 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.