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
(Unicode 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.
#include <CkXmlDSigW.h> #include <CkStringBuilderW.h> #include <CkXmlW.h> #include <CkCertW.h> void ChilkatSample(void) { // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkXmlDSigW dsig; CkStringBuilderW sbXml; bool success = sbXml.LoadFile(L"c:/aaworkarea/elias/3/face_f09006808443a699d1b.xml",L"utf-8"); if (success != true) { wprintf(L"Failed to load XML file.\n"); return; } success = dsig.LoadSignatureSb(sbXml); if (success != true) { wprintf(L"%s\n",dsig.lastErrorText()); return; } // Get the KeyInfo XML. CkXmlW *xmlKeyInfo = dsig.GetKeyInfo(); if (dsig.get_LastMethodSuccess() != true) { wprintf(L"%s\n",dsig.lastErrorText()); return; } wprintf(L"%s\n",xmlKeyInfo->getXml()); wprintf(L"----\n"); // 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> const wchar_t *certBase64 = xmlKeyInfo->getChildContent(L"*:X509Data|*:X509Certificate"); if (xmlKeyInfo->get_LastMethodSuccess() != true) { wprintf(L"No X509Certificate found in the KeyInfo.\n"); return; } // Load a certificate object w/ the base64. CkCertW cert; success = cert.LoadFromBase64(certBase64); if (success != true) { wprintf(L"%s\n",cert.lastErrorText()); return; } // Examine the cert.. wprintf(L"SubjectDN: %s\n",cert.subjectDN()); wprintf(L"IssuerDN: %s\n",cert.issuerDN()); wprintf(L"SerialNumber as Decimal: %s\n",cert.serialDecimal()); delete xmlKeyInfo; } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.