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

 

 

 

 

 

 

 

 

Create PKCS7 Detached Signature (S/MIME)

Create an S/MIME message with a PKCS7 detached signature.

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)
    {
    HCkMime mime;
    BOOL success;
    HCkCert cert;

    mime = CkMime_Create();

    success = CkMime_UnlockComponent(mime,"Anything for 30-day trial");
    if (success == FALSE) {
        printf("%s\n",CkMime_lastErrorText(mime));
        return;
    }

    //  Load a certificate w/ private key for signing.
    //  There are many ways of getting a certificate object:
    //  from a pfx file, from .cer and private-key files, from the
    //  Windows registry-based certificate stores, etc.
    //  For this example, we'll use a pre-installed cert from
    //  a certificate store.
    cert = CkCert_Create();
    success = CkCert_LoadByCommonName(cert,"Chilkat Software, Inc.");
    if (success == FALSE) {
        printf("%s\n",CkCert_lastErrorText(cert));
        return;
    }

    //  Create a very simple MIME message to be signed:
    CkMime_AddHeaderField(mime,"Subject","This is a test");
    CkMime_AddHeaderField(mime,"MyCustomHeader","abc123");
    CkMime_putContentType(mime,"text/plain");
    CkMime_SetBody(mime,"This is a plain-text body.");

    //  Examine the MIME prior to signing:
    printf("--- MIME prior to signing ---\n");
    printf("%s\n",CkMime_getMime(mime));

    //  The MIME prior to signing looks like this:
    //  -------------------------------------------------------------------------------
    //  
Subject: This is a test
MyCustomHeader: abc123
Content-Type: text/plain

This is a plain-text body.
    //  -------------------------------------------------------------------------------

    //  The default hash algorithm used in the signing process is "SHA1".
    //  To change it, set the SigningHashAlg property:
    CkMime_putSigningHashAlg(mime,"SHA256");

    //  Add a detached signature:
    success = CkMime_AddDetachedSignature(mime,cert);
    if (success == FALSE) {
        printf("%s\n",CkMime_lastErrorText(mime));
        return;
    }

    //  Examine the MIME with detached signature:
    printf("--- MIME with detached signature ---\n");
    printf("%s\n",CkMime_getMime(mime));

    //  The MIME after signing looks like this:
    //  -------------------------------------------------------------------------------
    //  
Content-Type: multipart/signed;
 boundary="----=_NextPart_a66_7f43_247e22d0.a03166d5";
 protocol="application/x-pkcs7-signature"; micalg="sha256"

This is a multi-part message in MIME format.

------=_NextPart_a66_7f43_247e22d0.a03166d5
Subject: This is a test
MyCustomHeader: abc123
Content-Type: text/plain

This is a plain-text body.
------=_NextPart_a66_7f43_247e22d0.a03166d5
Content-Transfer-Encoding: base64
Content-Type: application/x-pkcs7-signature;
 name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"

MIIOAQYJKoZIhvcNAQcCoIIN8jCCDe4CAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg
ggmgMIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkG
A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMV
VGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20x
HTAbBgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4
NDAzNlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp
dHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51
c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj
71VRloTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX6
5OeQw5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP
1/vulBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehb
kkj7RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCB
rDALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVso
TYs8ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VS
Rmlyc3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcK
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
9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA2MzAxNDM1MDVaMC8GCSqGSIb3
DQEJBDEiBCCxBV6qxW6f5dFzicso1tSCYYycSWjoS1JWU3PFXGm1TDBfBgkqhkiG9w0BCQ8xUjBQ
MAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAw
BwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgbwGCSsGAQQBgjcQBDGBrjCBqzCBlTELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVT
RVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNV
BAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0AhEA5vxolKNrYgp1Z7ABICdK+zCBvgYLKoZIhvcNAQkQ
Agsxga6ggaswgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtl
IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3
dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdAIRAOb8aJSja2IK
dWewASAnSvswDQYJKoZIhvcNAQEBBQAEggEABegieec25qysV6YJ9YSLrTPHLwX1+JUJjK3N7fH5
uLhH7HTEMkpXllgZcvg8Qvcyk2uAsVZZeFCtSYmBIT8kuuRXov7lo/V3sBhkoVF5pMS/T/fxuaJX
Ez3Zr8MbrlOMZVgbdvSkrk/TSSID48kV0pQBNGQs82ZVs88R1g5Vg5E7K+5xgV6bh2KAbCo8QbLJ
75djbYbkoCRMHuJ5k2iaUErAmrhoaClcRofzZcCVMqGxqeipPOjjJXXPTbq0lcVoedSsuwqCcoXi
CCzo73C9H9RayPTn2QfxihpLBS8xbd2eFIGqi4UzL6yIJUyMxgGvbp/Ax7KxkhCWl+GGL0OWJg==

------=_NextPart_a66_7f43_247e22d0.a03166d5--
    //  -------------------------------------------------------------------------------


    CkMime_Dispose(mime);
    CkCert_Dispose(cert);

    }

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.