C
C
Remove All S/MIME Security Layers (UnwrapSecurity)
See more MIME Examples
Demonstrates the Chilkat Mime.UnwrapSecurity method, which removes supported S/MIME security layers and restores the underlying MIME content. It takes no arguments and handles both layer orders: signed-then-encrypted and encrypted-then-signed.
Note: The file paths are relative to the application's current working directory. Absolute paths may also be used. Supply the paths appropriate to your own environment.
Background: A message can be both signed and encrypted, in either order, producing nested S/MIME wrappers.
UnwrapSecurity peels them all off in one call — verifying signatures and decrypting as it goes — so you do not have to detect the layering and call Verify and Decrypt in the right sequence yourself. Decryption still requires the recipient's certificate and private key to be configured.Chilkat C Downloads
#include <C_CkMime.h>
void ChilkatSample(void)
{
BOOL success;
HCkMime mime;
success = FALSE;
// Demonstrates the Mime.UnwrapSecurity method, which removes supported S/MIME security layers and
// restores the underlying MIME content. It takes no arguments and handles both layer orders
// (signed-then-encrypted and encrypted-then-signed).
mime = CkMime_Create();
success = CkMime_LoadMimeFile(mime,"qa_data/secured.eml");
if (success == FALSE) {
printf("%s\n",CkMime_lastErrorText(mime));
CkMime_Dispose(mime);
return;
}
// A single call peels off the signature and/or encryption layers. (Decryption requires the
// appropriate certificate/private key to be configured first.)
success = CkMime_UnwrapSecurity(mime);
if (success == FALSE) {
printf("%s\n",CkMime_lastErrorText(mime));
CkMime_Dispose(mime);
return;
}
printf("Security layers removed. Content-Type is now: %s\n",CkMime_contentType(mime));
CkMime_Dispose(mime);
}