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
(AutoIt) SII Chile - FRMT Signature Computation and Add to XMLCompute the FRMT signature and add to the XML. This is the RSA signature of the SHA-1 digest of the "flattened" DD element.
; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; Also see: Compute the FRMA Signature and Add to XML $oXml = ObjCreate("Chilkat.Xml") ; Load the unsigned XML that contains the following: ; <DTE version="1.0"> ; <Documento ID="F60T33"> ; <TED version="1.0"> ; <DD> ; ... ; <CAF version="1.0"> ; <DA> ; ... ; </DA> ; <FRMA algoritmo="SHA1withRSA">...</FRMA> ; </CAF> ; ... ; </DD> ; ... The FRMT will be added here in another example ... ; </TED> ; </Documento> ; </DTE> Local $bSuccess = $oXml.LoadXmlFile("qa_data/xml_dsig/sii_cl/test_1.xml") If ($bSuccess = False) Then ConsoleWrite("Failed to load initial XML file." & @CRLF) Exit EndIf ; Get a reference to the "DD" element Local $oDdXml = $oXml.FindChild("Documento|TED|DD") If ($oXml.LastMethodSuccess = False) Then ConsoleWrite("Failed to find DD element" & @CRLF) Exit EndIf ; We need to get the "flattened" DD XML where: ; - No whitespace between elements. ; - The 5 pre-defined entities are converted. ; - The text is encoded in the ISO-8859-1 character set (Latin-1), $oSbFlattened = ObjCreate("Chilkat.StringBuilder") $oDdXml.EmitCompact = True $oDdXml.EmitXmlDecl = False $oDdXml.GetXmlSb($oSbFlattened) ; Compute the SHA-1 message digest of the iso-8859-1 byte representation, ; and sign it with our RSA private key, getting the result in base64 format. $oPrivKey = ObjCreate("Chilkat.PrivateKey") $bSuccess = $oPrivKey.LoadAnyFormatFile("qa_data/rsa/rsaPrivKey_pkcs8.pem","") If ($bSuccess = False) Then ConsoleWrite($oPrivKey.LastErrorText & @CRLF) Exit EndIf $oRsa = ObjCreate("Chilkat.Rsa") $oRsa.ImportPrivateKeyObj($oPrivKey) $oRsa.EncodingMode = "base64" $oRsa.Charset = "iso-8859-1" Local $sig = $oRsa.SignStringENC($oSbFlattened.GetAsString(),"sha1") ; Add the FRMT signature element to the XML. $oXml.UpdateChildContent "Documento|TED|FRMT",$sig $oXml.UpdateAttrAt("Documento|TED|FRMT",True,"algoritmo","SHA1withRSA") ; See what we have: $oXml.EmitCompact = False $oXml.EmitXmlDecl = True ConsoleWrite($oXml.GetXml() & @CRLF) |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.