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