|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (PureBasic) Calculate HRMC IRMarkDemonstrates how to calculate an IRmark for an HMRC GovTalkMessage XML document. 
 IncludeFile "CkXml.pb" IncludeFile "CkXmlDSig.pb" IncludeFile "CkCrypt2.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; First build a sample (but incomplete) GovTalkMessage. ; You can replace this code with a call to LoadXml or LoadXmlFile.. ; ; Note: The online tool at https://tools.chilkat.io/xmlCreate.cshtml ; can be used to generate XML code that creates a given XML document. xml.i = CkXml::ckCreate() If xml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkXml::setCkTag(xml, "GovTalkMessage") CkXml::ckAddAttribute(xml,"xmlns","http://www.govtalk.gov.uk/CM/envelope") CkXml::ckUpdateAttrAt(xml,"Body|Message",1,"xmlns","urn:g3.ge:dea:call:SendDocument:v1") CkXml::ckUpdateChildContent(xml,"Body|Message","................") ; This is the XML created: ; <?xml version="1.0" encoding="utf-8" ?> ; <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope"> ; <Body> ; <Message xmlns="urn:g3.ge:dea:call:SendDocument:v1">................</Message> ; </Body> ; </GovTalkMessage> Debug CkXml::ckGetXml(xml) ; Canonicalize the XML (using C14N) xdsig.i = CkXmlDSig::ckCreate() If xdsig.i = 0 Debug "Failed to create object." ProcedureReturn EndIf withComments.i = 0 canonXml.s = CkXmlDSig::ckCanonicalizeXml(xdsig,CkXml::ckGetXml(xml),"C14N",withComments) ; Return the base64 SHA-1 HASH of the canonical XML. crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkHashAlgorithm(crypt, "sha1") CkCrypt2::setCkEncodingMode(crypt, "base64") irmark.s = CkCrypt2::ckHashStringENC(crypt,canonXml) Debug "IRMark = " + irmark CkXml::ckDispose(xml) CkXmlDSig::ckDispose(xdsig) CkCrypt2::ckDispose(crypt) ProcedureReturn EndProcedure | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.