Classic ASP
Classic ASP
Decrypt a govtalk.gov.uk SOAP GovTalkMessage
See more Encryption Examples
Demonstrates how to decrypt the content contained in the XML of a GovTalkMessage SOAP response.Chilkat Classic ASP Downloads
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
success = 0
' 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...
set xml = Server.CreateObject("Chilkat.Xml")
success = xml.LoadXmlFile("qa_data/xml/govTalkMessageResponse.xml")
If (success = 0) Then
Response.Write "<pre>" & Server.HTMLEncode( xml.LastErrorText) & "</pre>"
Response.End
End If
Body = xml.GetChildContent("Body|Message|Body")
Response.Write "<pre>" & Server.HTMLEncode( Body) & "</pre>"
set cert = Server.CreateObject("Chilkat.Cert")
success = cert.LoadPfxFile("qa_data/pfx/govTalkMessage_aaa.pfx","aaa")
If (success = 0) Then
Response.Write "<pre>" & Server.HTMLEncode( cert.LastErrorText) & "</pre>"
Response.End
End If
set crypt = Server.CreateObject("Chilkat.Crypt2")
crypt.CryptAlgorithm = "pki"
success = crypt.SetDecryptCert(cert)
If (success = 0) Then
Response.Write "<pre>" & Server.HTMLEncode( crypt.LastErrorText) & "</pre>"
Response.End
End If
set bd = Server.CreateObject("Chilkat.BinData")
' Append the bytes to bd.
success = bd.AppendEncoded(Body,"base64")
' Decrypt in-place.
success = crypt.DecryptBd(bd)
If (success = 0) Then
Response.Write "<pre>" & Server.HTMLEncode( crypt.LastErrorText) & "</pre>"
Response.End
End If
' 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:
Response.Write "<pre>" & Server.HTMLEncode( "Decrypted bytes as hex: " & bd.GetEncoded("hex")) & "</pre>"
%>
</body>
</html>