Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) Examine KeyInfo Certificate in XML SignatureThis example loads signed XML and gets the signing certificate, assuming the certificate is contained in X509Certificate within the KeyInfo.
#import <CkoXmlDSig.h> #import <CkoStringBuilder.h> #import <CkoXml.h> #import <NSString.h> #import <CkoCert.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoXmlDSig *dsig = [[CkoXmlDSig alloc] init]; CkoStringBuilder *sbXml = [[CkoStringBuilder alloc] init]; BOOL success = [sbXml LoadFile: @"c:/aaworkarea/elias/3/face_f09006808443a699d1b.xml" charset: @"utf-8"]; if (success != YES) { NSLog(@"%@",@"Failed to load XML file."); return; } success = [dsig LoadSignatureSb: sbXml]; if (success != YES) { NSLog(@"%@",dsig.LastErrorText); return; } // Get the KeyInfo XML. CkoXml *xmlKeyInfo = [dsig GetKeyInfo]; if (dsig.LastMethodSuccess != YES) { NSLog(@"%@",dsig.LastErrorText); return; } NSLog(@"%@",[xmlKeyInfo GetXml]); NSLog(@"%@",@"----"); // Assuming the X509Certificate is in the KeyInfo, it will look like this: // <ds:KeyInfo Id="..."> // <ds:KeyValue> // ... // <ds:X509Data> // <ds:X509Certificate>MIIHAz...</ds:X509Certificate> // </ds:X509Data> // </ds:KeyInfo> NSString *certBase64 = [xmlKeyInfo GetChildContent: @"*:X509Data|*:X509Certificate"]; if (xmlKeyInfo.LastMethodSuccess != YES) { NSLog(@"%@",@"No X509Certificate found in the KeyInfo."); return; } // Load a certificate object w/ the base64. CkoCert *cert = [[CkoCert alloc] init]; success = [cert LoadFromBase64: certBase64]; if (success != YES) { NSLog(@"%@",cert.LastErrorText); return; } // Examine the cert.. NSLog(@"%@%@",@"SubjectDN: ",cert.SubjectDN); NSLog(@"%@%@",@"IssuerDN: ",cert.IssuerDN); NSLog(@"%@%@",@"SerialNumber as Decimal: ",cert.SerialDecimal); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.