Objective-C
Objective-C
Get Certificates within XML Signature
See more XML Digital Signatures Examples
Demonstrates how to get the certificates contained within an XML signature.Chilkat Objective-C Downloads
#import <CkoStringBuilder.h>
#import <CkoXmlDSig.h>
#import <CkoStringArray.h>
#import <CkoCert.h>
BOOL success = NO;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoStringBuilder *sbXml = [[CkoStringBuilder alloc] init];
// Load XML containing one or more signatures.
success = [sbXml LoadFile: @"qa_data/xml_dsig_valid_samples/multipleSigners/sp.pdf.XAdES.xml" charset: @"utf-8"];
if (success == NO) {
NSLog(@"%@",@"Failed to load the XML file..");
return;
}
CkoXmlDSig *dsig = [[CkoXmlDSig alloc] init];
// First load the XML containing the signatures to be verified.
// Note that this particular Signature already contains the RSA public key that will be used
// for verification.
success = [dsig LoadSignatureSb: sbXml];
if (success == NO) {
NSLog(@"%@",dsig.LastErrorText);
return;
}
// For each signature, verify and also get the certificate(s) contained within each Signature.
int i = 0;
CkoStringArray *saCerts = [[CkoStringArray alloc] init];
CkoCert *cert = [[CkoCert alloc] init];
NSLog(@"%@%d",@"numSignatures = ",[dsig.NumSignatures intValue]);
while (i < [dsig.NumSignatures intValue]) {
// Select the Nth signature by setting the Selector property.
dsig.Selector = [NSNumber numberWithInt: i];
BOOL bVerifyReferenceDigests = YES;
BOOL bVerified = [dsig VerifySignature: bVerifyReferenceDigests];
NSLog(@"%@%d%@%d",@"Signature ",i + 1,@" verified = ",bVerified);
// Get the certificates embedded in this signature.
[saCerts Clear];
success = [dsig GetCerts: saCerts];
if (success == YES) {
int j = 0;
while (j < [saCerts.Count intValue]) {
success = [cert LoadFromBase64: [saCerts GetString: [NSNumber numberWithInt: j]]];
if (success == YES) {
NSLog(@"%@%@",@" ",cert.SubjectDN);
}
j = j + 1;
}
}
i = i + 1;
}