Unicode C
Unicode C
Example: Mime.GetDecryptCertInfo method
Demonstrates theGetDecryptCertInfo method.
Chilkat Unicode C Downloads
#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);
}