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
(Ruby) Decrypt a govtalk.gov.uk SOAP GovTalkMessageDemonstrates how to decrypt the content contained in the XML of a GovTalkMessage SOAP response.
require 'chilkat' # 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 = Chilkat::CkXml.new() success = xml.LoadXmlFile("qa_data/xml/govTalkMessageResponse.xml") if (success == false) print xml.lastErrorText() + "\n"; exit end Body = xml.getChildContent("Body|Message|Body") print Body + "\n"; cert = Chilkat::CkCert.new() success = cert.LoadPfxFile("qa_data/pfx/govTalkMessage_aaa.pfx","aaa") if (success == false) print cert.lastErrorText() + "\n"; exit end crypt = Chilkat::CkCrypt2.new() crypt.put_CryptAlgorithm("pki") success = crypt.SetDecryptCert(cert) if (success == false) print crypt.lastErrorText() + "\n"; exit end bd = Chilkat::CkBinData.new() # Append the bytes to bd. success = bd.AppendEncoded(Body,"base64") # Decrypt in-place. success = crypt.DecryptBd(bd) if (success == false) print crypt.lastErrorText() + "\n"; exit end # 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: print "Decrypted bytes as hex: " + bd.getEncoded("hex") + "\n"; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.