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 - FRMA Signature Computation and Add to XMLCompute the FRMA signature of a <DA> element enclosed inside a <CAF> element of the XML to be signed.
; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; Also see: Compute the FRMT 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> ; ... The FRMA will be added here ... ; </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_0.xml") If ($bSuccess = False) Then ConsoleWrite("Failed to load initial XML file." & @CRLF) Exit EndIf ; Get a reference to the "DA" element Local $oDaXml = $oXml.FindChild("Documento|TED|DD|CAF|DA") If ($oXml.LastMethodSuccess = False) Then ConsoleWrite("Failed to find DA element" & @CRLF) Exit EndIf ; We need to get the "flattened" DA 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") $oDaXml.EmitCompact = True $oDaXml.EmitXmlDecl = False $oDaXml.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 FRMA signature element to the XML. $oXml.UpdateChildContent "Documento|TED|DD|CAF|FRMA",$sig $oXml.UpdateAttrAt("Documento|TED|DD|CAF|FRMA",True,"algoritmo","SHA1withRSA") ; See what we have: $oXml.EmitCompact = False $oXml.EmitXmlDecl = True ConsoleWrite($oXml.GetXml() & @CRLF) $oXml.SaveXml("qa_data/xml_dsig/sii_cl/test_1.xml") |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.