Sample code for 30+ languages & platforms
Objective-C

Example: Mime.GetDecryptCertInfo method

Demonstrates the GetDecryptCertInfo method.

Chilkat Objective-C Downloads

Objective-C
#import <CkoMime.h>
#import <CkoJsonObject.h>
#import <NSString.h>

BOOL success = NO;

CkoMime *mime = [[CkoMime alloc] init];

//  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 = [mime LoadMimeFile: @"qa_data/mime/enveloped_data.eml"];
if (success == NO) {
    NSLog(@"%@",mime.LastErrorText);
    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.
CkoJsonObject *json = [[CkoJsonObject alloc] init];
success = [mime GetDecryptCertInfo: json];
if (success == NO) {
    NSLog(@"%@",mime.LastErrorText);
    return;
}

json.EmitCompact = NO;
NSLog(@"%@",[json Emit]);

//  Sample output:

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

//  Get each certificate's information like this:
NSString *serial = 0;
NSString *issuerCN = 0;

int i = 0;
int count = [[json SizeOfArray: @"recipientInfo"] intValue];
while (i < count) {
    json.I = [NSNumber numberWithInt: i];
    serial = [json StringOf: @"recipientInfo[i].serial"];
    issuerCN = [json StringOf: @"recipientInfo[i].issuerCN"];
    i = i + 1;
}