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
(PowerShell) Decrypt a govtalk.gov.uk SOAP GovTalkMessageDemonstrates how to decrypt the content contained in the XML of a GovTalkMessage SOAP response.
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # 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... $xml = New-Object Chilkat.Xml $success = $xml.LoadXmlFile("qa_data/xml/govTalkMessageResponse.xml") if ($success -eq $false) { $($xml.LastErrorText) exit } $Body = $xml.GetChildContent("Body|Message|Body") $($Body) $cert = New-Object Chilkat.Cert $success = $cert.LoadPfxFile("qa_data/pfx/govTalkMessage_aaa.pfx","aaa") if ($success -eq $false) { $($cert.LastErrorText) exit } $crypt = New-Object Chilkat.Crypt2 $crypt.CryptAlgorithm = "pki" $success = $crypt.SetDecryptCert($cert) if ($success -eq $false) { $($crypt.LastErrorText) exit } $bd = New-Object Chilkat.BinData # Append the bytes to bd. $success = $bd.AppendEncoded($Body,"base64") # Decrypt in-place. $success = $crypt.DecryptBd($bd) if ($success -eq $false) { $($crypt.LastErrorText) exit } # Save the decrypted data to a file. $success = $bd.WriteFile("qa_output/out.dat") # If the decrypted data is non-text (binary) then we can examine it in an encoding, such as hex: $("Decrypted bytes as hex: " + $bd.GetEncoded("hex")) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.