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
(DataFlex) Add EncapsulatedTimestamp to Already-Signed XMLSee more XML Digital Signatures ExamplesDemonstrates how to add an EncapsulatedTimestamp to an existing XML signature. Note: This example requires Chilkat v9.5.0.90 or greater.
Use ChilkatAx-win32.pkg Procedure Test Variant vSbXml Handle hoSbXml Boolean iSuccess Handle hoDsig Variant vJson Handle hoJson Variant vSbOut Handle hoSbOut Handle hoVerifier Integer iNumSigs Integer iVerifyIdx Boolean iVerified String sTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Note: We cannot load the already-signed XML into a Chilkat XML object because it would re-format the XML when re-emitted. // (i.e. indentation and whitespace could change, and it would invalidate the existing signature.) // We must use a StringBuilder. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbXml If (Not(IsComObjectCreated(hoSbXml))) Begin Send CreateComObject of hoSbXml End Get ComLoadFile Of hoSbXml "qa_data/xml_dsig_valid_samples/encapsulatedTimestamp_not_yet_added.xml" "utf-8" To iSuccess If (iSuccess = False) Begin Showln "Failed to load the XML file." Procedure_Return End Get Create (RefClass(cComChilkatXmlDSig)) To hoDsig If (Not(IsComObjectCreated(hoDsig))) Begin Send CreateComObject of hoDsig End Get pvComObject of hoSbXml to vSbXml Get ComLoadSignatureSb Of hoDsig vSbXml To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoDsig To sTemp1 Showln sTemp1 Procedure_Return End Get ComHasEncapsulatedTimeStamp Of hoDsig To bTemp1 If (bTemp1 = True) Begin Showln "This signed XML already has an EncapsulatedTimeStamp" Procedure_Return End // Specify the timestamping authority URL Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get ComUpdateString Of hoJson "timestampToken.tsaUrl" "http://timestamp.digicert.com" To iSuccess Get ComUpdateBool Of hoJson "timestampToken.requestTsaCert" True To iSuccess // Call AddEncapsulatedTimeStamp to add the EncapsulatedTimeStamp to the signature. // Note: If the signed XML contains multiple signatures, the signature modified is the one // indicated by the dsig.Selector property. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbOut If (Not(IsComObjectCreated(hoSbOut))) Begin Send CreateComObject of hoSbOut End Get pvComObject of hoJson to vJson Get pvComObject of hoSbOut to vSbOut Get ComAddEncapsulatedTimeStamp Of hoDsig vJson vSbOut To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoDsig To sTemp1 Showln sTemp1 Procedure_Return End Get ComWriteFile Of hoSbOut "qa_output/addedEncapsulatedTimeStamp.xml" "utf-8" False To iSuccess // The EncapsulatedTimeStamp can be validated when validating the signature by adding the VerifyEncapsulatedTimeStamp // keyword to UncommonOptions. See here: // ---------------------------------------- // Verify the signatures we just produced... Get Create (RefClass(cComChilkatXmlDSig)) To hoVerifier If (Not(IsComObjectCreated(hoVerifier))) Begin Send CreateComObject of hoVerifier End Get pvComObject of hoSbOut to vSbOut Get ComLoadSignatureSb Of hoVerifier vSbOut To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoVerifier To sTemp1 Showln sTemp1 Procedure_Return End // Add "VerifyEncapsulatedTimeStamp" to the UncommonOptions to also verify any EncapsulatedTimeStamps Set ComUncommonOptions Of hoVerifier To "VerifyEncapsulatedTimeStamp" Get ComNumSignatures Of hoVerifier To iNumSigs Move 0 To iVerifyIdx While (iVerifyIdx < iNumSigs) Set ComSelector Of hoVerifier To iVerifyIdx Get ComVerifySignature Of hoVerifier True To iVerified If (iVerified <> True) Begin Get ComLastErrorText Of hoVerifier To sTemp1 Showln sTemp1 Procedure_Return End Move (iVerifyIdx + 1) To iVerifyIdx Loop Showln "All signatures were successfully verified." End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.