Unicode C
Unicode C
S/MIME Encrypt using Certificate in Apple Keychain
See more Apple Keychain Examples
Encrypts MIME to creates S/MIME using a certificate found in the Apple Keychain.Chilkat Unicode C Downloads
#include <C_CkCertW.h>
#include <C_CkMimeW.h>
void ChilkatSample(void)
{
BOOL success;
HCkCertW cert;
HCkMimeW mime;
success = FALSE;
cert = CkCertW_Create();
// Load the certificate by the Subject Common Name
// On MacOS and iOS, Chilkat will search the Keychain(s) for the matching certificate.
success = CkCertW_LoadByCommonName(cert,L"My Cert");
if (success == FALSE) {
wprintf(L"%s\n",CkCertW_lastErrorText(cert));
CkCertW_Dispose(cert);
return;
}
// Note: The private key is not needed for encryption.
// Only the certificate is needed.
// Create a simple MIME message to encrypt.
mime = CkMimeW_Create();
CkMimeW_AddHeaderField(mime,L"Subject",L"test");
CkMimeW_AddHeaderField(mime,L"SomeHeader",L"123");
CkMimeW_AddHeaderField(mime,L"Content-Type",L"text/plain");
CkMimeW_SetBody(mime,L"This is the body.");
wprintf(L"%s\n",CkMimeW_getMime(mime));
wprintf(L"----\n");
// Here's the MIME to be encrypted:
// Subject: test
// SomeHeader: 123
// Content-Type: text/plain
//
// This is the body.
// -------------------------------------
// Encrypt the MIME.
success = CkMimeW_Encrypt(mime,cert);
if (success == FALSE) {
wprintf(L"%s\n",CkMimeW_lastErrorText(mime));
CkCertW_Dispose(cert);
CkMimeW_Dispose(mime);
return;
}
// Show the encrypted MIME (S/MIME)
wprintf(L"%s\n",CkMimeW_getMime(mime));
// Save the encrypted MIME to a file.
CkMimeW_SaveMime(mime,L"./encrypted.mime");
// Here's the S/MIME
// Subject: test
// SomeHeader: 123
// Content-Type: application/x-pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data"
// Content-Disposition: attachment; filename="smime.p7m"
// Content-Transfer-Encoding: base64
//
// MIICSwYJKoZIhvcNAQcDoIICPDCCAjgCAQAxggGzMIIBrwIBADCBljCBgTELMAkGA1UEBhMCSVQx
// EDAOBgNVBAgMB0JlcmdhbW8xGTAXBgNVBAcMEFBvbnRlIFNhbiBQaWV0cm8xFzAVBgNVBAoMDkFj
// dGFsaXMgUy5wLkEuMSwwKgYDVQQDDCNBY3RhbGlzIENsaWVudCBBdXRoZW50aWNhdGlvbiBDQSBH
// MwIQPCWvkSv8oQ7xRmEHJ6TzEDANBgkqhkiG9w0BAQEFAASCAQB3VZvHRE5EWxug7Sckpcz1ucDZ
// YiTKiqmyPt75MhzNRQLtKFx/jWwlemUwnPMzeu6yutCkZ74Bdn7MBsfDqV3bUz43wAu+fRBteGvF
// mTc00MfY8L7o8dkpj4AqAOCj4hKQzbSE99GvSzyXcPE2Gm5NrOPtKxqfFqbBRTCb4fBZP84LaL+x
// rnYfrM4qXTppixyN8iFYCd4maEbMu/GA5o+j0BkDDnx42pILDoAGV/ERyx55Y3Nc2Mhm/cITBMNn
// g7uS9KPrlYizNaqVu09Hi9jg4gdZaRiTjUqg05tSOk/YqIQxTgfscwSPY92/ewpI6e1EHtLt8Q33
// gWCbERptSntUMHwGCSqGSIb3DQEHATAdBglghkgBZQMEAQIEENm1AxeXlEMx7p6McjHIj5CAUEQj
// 0GuJ5LnTqiqIjOiwmwNidl1N1TRluxX5vAQvwBuYE6bQK4+i04yn2Av3cucW4kvxgP2Nmni+XgQt
// aPPKlasaVceEeZ15IYjw77/m3YYn
CkCertW_Dispose(cert);
CkMimeW_Dispose(mime);
}