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) Decrypt a govtalk.gov.uk SOAP GovTalkMessageDemonstrates how to decrypt the content contained in the XML of a GovTalkMessage SOAP response.
Use ChilkatAx-win32.pkg Procedure Test Handle hoXml Boolean iSuccess String sBody Variant vCert Handle hoCert Handle hoCrypt Variant vBd Handle hoBd String sTemp1 // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // The GovTalkMessage response looks something like this: // <?xml version="1.0" encoding="utf-8"?> // <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope"> // <EnvelopeVersion>3.1</EnvelopeVersion> // <Header> // <MessageDetails> // <Class>CSSZ_DZDPN</Class> // <Qualifier>request</Qualifier> // <Function>submit</Function> // <TransactionID /> // <AuditID /> // <CorrelationID>aaaaa</CorrelationID> // <ResponseEndPoint PollInterval="0" /> // <Transformation>XML</Transformation> // <GatewayTest /> // <GatewayTimestamp /> // </MessageDetails> // <SenderDetails> // <IDAuthentication> // <SenderID /> // <Authentication> // <Method>clear</Method> // <Role /> // <Value /> // </Authentication> // </IDAuthentication> // <X509Certificate /> // <EmailAddress>somebody@example.com</EmailAddress> // </SenderDetails> // </Header> // <GovTalkDetails> // <Keys> // <Key Type="vars">9999999999</Key> // </Keys> // <GatewayAdditions> // <Source>VREP</Source> // </GatewayAdditions> // </GovTalkDetails> // <Body> // <Message xmlns="http://www.cssz.cz/XMLSchema/envelope" version="1.2" eType="DZDPN20"> // <Header> // <Signature xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64">MIIJ0A ... UMw= // </Signature> // <Vendor productName="some product name" version="2019" /> // </Header> // <Body xmlns:dt="urn:schemas-microsoft-com:datatypes" encrypted="yes" contentEncoding="gzip" dt:dt="bin.base64">MIIF2w ... N2vW</Body> // </Message> // </Body> // </GovTalkMessage> // We want to get the content of the Body and decrypt it. // First, let's get the content of the Body XML element, which is a base64 string starting with MIIF2w... Get Create (RefClass(cComChilkatXml)) To hoXml If (Not(IsComObjectCreated(hoXml))) Begin Send CreateComObject of hoXml End Get ComLoadXmlFile Of hoXml "qa_data/xml/govTalkMessageResponse.xml" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoXml To sTemp1 Showln sTemp1 Procedure_Return End Get ComGetChildContent Of hoXml "Body|Message|Body" To sBody Showln sBody Get Create (RefClass(cComChilkatCert)) To hoCert If (Not(IsComObjectCreated(hoCert))) Begin Send CreateComObject of hoCert End Get ComLoadPfxFile Of hoCert "qa_data/pfx/govTalkMessage_aaa.pfx" "aaa" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCert To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt If (Not(IsComObjectCreated(hoCrypt))) Begin Send CreateComObject of hoCrypt End Set ComCryptAlgorithm Of hoCrypt To "pki" Get pvComObject of hoCert to vCert Get ComSetDecryptCert Of hoCrypt vCert To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatBinData)) To hoBd If (Not(IsComObjectCreated(hoBd))) Begin Send CreateComObject of hoBd End // Append the bytes to bd. Get ComAppendEncoded Of hoBd sBody "base64" To iSuccess // Decrypt in-place. Get pvComObject of hoBd to vBd Get ComDecryptBd Of hoCrypt vBd To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End // Save the decrypted data to a file. Get ComWriteFile Of hoBd "qa_output/out.dat" To iSuccess // If the decrypted data is non-text (binary) then we can examine it in an encoding, such as hex: Get ComGetEncoded Of hoBd "hex" To sTemp1 Showln "Decrypted bytes as hex: " sTemp1 End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.