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
(AutoIt) Decrypt a govtalk.gov.uk SOAP GovTalkMessageDemonstrates how to decrypt the content contained in the XML of a GovTalkMessage SOAP response.
; 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... $oXml = ObjCreate("Chilkat.Xml") Local $bSuccess = $oXml.LoadXmlFile("qa_data/xml/govTalkMessageResponse.xml") If ($bSuccess = False) Then ConsoleWrite($oXml.LastErrorText & @CRLF) Exit EndIf Local $sBody = $oXml.GetChildContent("Body|Message|Body") ConsoleWrite($sBody & @CRLF) $oCert = ObjCreate("Chilkat.Cert") $bSuccess = $oCert.LoadPfxFile("qa_data/pfx/govTalkMessage_aaa.pfx","aaa") If ($bSuccess = False) Then ConsoleWrite($oCert.LastErrorText & @CRLF) Exit EndIf $oCrypt = ObjCreate("Chilkat.Crypt2") $oCrypt.CryptAlgorithm = "pki" $bSuccess = $oCrypt.SetDecryptCert($oCert) If ($bSuccess = False) Then ConsoleWrite($oCrypt.LastErrorText & @CRLF) Exit EndIf $oBd = ObjCreate("Chilkat.BinData") ; Append the bytes to bd. $bSuccess = $oBd.AppendEncoded($sBody,"base64") ; Decrypt in-place. $bSuccess = $oCrypt.DecryptBd($oBd) If ($bSuccess = False) Then ConsoleWrite($oCrypt.LastErrorText & @CRLF) Exit EndIf ; Save the decrypted data to a file. $bSuccess = $oBd.WriteFile("qa_output/out.dat") ; If the decrypted data is non-text (binary) then we can examine it in an encoding, such as hex: ConsoleWrite("Decrypted bytes as hex: " & $oBd.GetEncoded("hex") & @CRLF) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.