MFC Examples

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

MFC Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
Diffie-Hellman
DKIM / DomainKey
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
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.