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) Combine Timestamp Reply and Content File into a TimeStampDataDemonstrates how to combine a timestamp reply (RFC 3161) with a data file (any type of file) to create a TimeStampData structure (RFC 5544).
Use ChilkatAx-win32.pkg Procedure Test Handle hoBdTsr Boolean iSuccess Handle hoAsnTsr Tsr Handle hoXmlTsr Handle hoBdContent Handle hoXml Variant vXContext Handle hoXContext Handle hoTsd String sTsdBase64 String sTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Also see this example: // Send a TimeStamp Request to a TimeStamp Authority and get the Response // Load a timestamp reply file Get Create (RefClass(cComChilkatBinData)) To hoBdTsr If (Not(IsComObjectCreated(hoBdTsr))) Begin Send CreateComObject of hoBdTsr End Get ComLoadFile Of hoBdTsr "qa_data/tsd/sample.tsr" To iSuccess If (iSuccess <> True) Begin Showln "Failed to load timestamp reply file." Procedure_Return End // Load the tsr into an ASN.1 object. Get Create (RefClass(cComChilkatAsn)) To hoAsnTsr If (Not(IsComObjectCreated(hoAsnTsr))) Begin Send CreateComObject of hoAsnTsr End Get ComGetEncoded Of hoBdTsr "base64" To sTemp1 Get ComLoadEncoded Of hoAsnTsr sTemp1 "base64" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoAsnTsr To sTemp1 Showln sTemp1 Procedure_Return End // Get the timestamp reply as XML. Get Create (RefClass(cComChilkatXml)) To hoXmlTsr If (Not(IsComObjectCreated(hoXmlTsr))) Begin Send CreateComObject of hoXmlTsr End Get ComAsnToXml Of hoAsnTsr To sTemp1 Get ComLoadXml Of hoXmlTsr sTemp1 To iSuccess // The timestamp reply XML begins like this: // We'll want to remove the 1st "sequence" subtree. // <?xml version="1.0" encoding="utf-8"?> // <sequence> // <sequence> <---- Remove this sub-tree. // <int>00</int> // <sequence> // <utf8>Operation Okay</utf8> // </sequence> // </sequence> // <sequence> // <oid>1.2.840.113549.1.7.2</oid> // <contextSpecific tag="0" constructed="1"> // ... // Remove the 1st sub-tree.. Send ComRemoveChildByIndex To hoXmlTsr 0 // In this example, the data file we're combining with the timestamp into a timestampData is a .p7m. // However, it can be any type of file (text or binary), it doesn't matter.. Get Create (RefClass(cComChilkatBinData)) To hoBdContent If (Not(IsComObjectCreated(hoBdContent))) Begin Send CreateComObject of hoBdContent End Get ComLoadFile Of hoBdContent "qa_data/tsd/sample.p7m" To iSuccess If (iSuccess <> True) Begin Showln "Failed to load content file." Procedure_Return End // Begin building the TimeStampData. // We'll build as XML and then convert to ASN.1 Get Create (RefClass(cComChilkatXml)) To hoXml If (Not(IsComObjectCreated(hoXml))) Begin Send CreateComObject of hoXml End Set ComTag Of hoXml To "sequence" Send ComUpdateChildContent To hoXml "oid" "1.2.840.113549.1.9.16.1.31" Get ComUpdateAttrAt Of hoXml "contextSpecific" True "tag" "0" To iSuccess Get ComUpdateAttrAt Of hoXml "contextSpecific" True "constructed" "1" To iSuccess Send ComUpdateChildContent To hoXml "contextSpecific|sequence|int" "01" Get ComGetEncoded Of hoBdContent "base64" To sTemp1 Send ComUpdateChildContent To hoXml "contextSpecific|sequence|octets" sTemp1 Get ComUpdateAttrAt Of hoXml "contextSpecific|sequence|contextSpecific" True "tag" "0" To iSuccess Get ComUpdateAttrAt Of hoXml "contextSpecific|sequence|contextSpecific" True "constructed" "1" To iSuccess Get ComGetChildWithTag Of hoXml "contextSpecific|sequence|contextSpecific" To vXContext If (IsComObject(vXContext)) Begin Get Create (RefClass(cComChilkatXml)) To hoXContext Set pvComObject Of hoXContext To vXContext End Get pvComObject of hoXmlTsr to vXmlTsr Get ComAddChildTree Of hoXContext vXmlTsr To iSuccess Send Destroy of hoXContext // Convert the XML to ASN.1 Get Create (RefClass(cComChilkatAsn)) To hoTsd If (Not(IsComObjectCreated(hoTsd))) Begin Send CreateComObject of hoTsd End Get ComGetXml Of hoXml To sTemp1 Get ComLoadAsnXml Of hoTsd sTemp1 To iSuccess // Write the timestamped data to a file. Get ComWriteBinaryDer Of hoTsd "qa_output/sample.tsd" To iSuccess // Alternatively, get the tsd ASN.1 as base64.. Get ComGetEncodedDer Of hoTsd "base64_mime" To sTsdBase64 Showln sTsdBase64 End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.