Sample code for 30+ languages & platforms
Unicode C

Example: Mime.GetDecryptCertInfo method

Demonstrates the GetDecryptCertInfo method.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkMimeW.h>
#include <C_CkJsonObjectW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkMimeW mime;
    HCkJsonObjectW json;
    const wchar_t *serial;
    const wchar_t *issuerCN;
    int i;
    int count;

    success = FALSE;

    mime = CkMimeW_Create();

    //  Load MIME that is has Content-Type like this:
    //  Content-Type: application/pkcs7-mime; smime-type="enveloped-data"; name="smime.p7m"; smime-type="enveloped-data"
    success = CkMimeW_LoadMimeFile(mime,L"qa_data/mime/enveloped_data.eml");
    if (success == FALSE) {
        wprintf(L"%s\n",CkMimeW_lastErrorText(mime));
        CkMimeW_Dispose(mime);
        return;
    }

    //  Get information about the certificate that would be needed to decrypt.
    //  An enveloped-data can potentially be decrypted by multiple certificates if it was encrypted in a way that allows it,
    //  but in most cases, only a single certificate with associated private key (that of the message recipient) is possible.
    json = CkJsonObjectW_Create();
    success = CkMimeW_GetDecryptCertInfo(mime,json);
    if (success == FALSE) {
        wprintf(L"%s\n",CkMimeW_lastErrorText(mime));
        CkMimeW_Dispose(mime);
        CkJsonObjectW_Dispose(json);
        return;
    }

    CkJsonObjectW_putEmitCompact(json,FALSE);
    wprintf(L"%s\n",CkJsonObjectW_emit(json));

    //  Sample output:

    //  {
    //    "recipientInfo": [
    //      {
    //        "serial": "****",
    //        "issuerCN": "****"
    //      }
    //    ]
    //  }

    //  Get each certificate's information like this:

    i = 0;
    count = CkJsonObjectW_SizeOfArray(json,L"recipientInfo");
    while (i < count) {
        CkJsonObjectW_putI(json,i);
        serial = CkJsonObjectW_stringOf(json,L"recipientInfo[i].serial");
        issuerCN = CkJsonObjectW_stringOf(json,L"recipientInfo[i].issuerCN");
        i = i + 1;
    }



    CkMimeW_Dispose(mime);
    CkJsonObjectW_Dispose(json);

    }