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
(PowerShell) SII XML Digital SignatureExample for SII XML Digital Signature.
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" $success = $true # Load the XML to be signed. $xmlToSign = New-Object Chilkat.Xml $success = $xmlToSign.LoadXmlFile("c:/aaworkarea/eduardo/sii_unsigned.xml") if ($success -eq $false) { $($xmlToSign.LastErrorText) exit } # The sample XML to be signed looks like this: # <?xml version="1.0" encoding="ISO-8859-1"?> # <EnvioDTE xmlns="http://www.sii.cl/SiiDte" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sii.cl/SiiDte EnvioDTE_v10.xsd" version="1.0"> # <SetDTE ID="SetDocF0T33_20240425_170512"> # <Caratula version="1.0"> # <RutEmisor>99999999-4</RutEmisor> # <RutEnvia>12345678-6</RutEnvia> # <RutReceptor>888888000-K</RutReceptor> # <FchResol>2014-08-22</FchResol> # <NroResol>80</NroResol> # <TmstFirmaEnv>2024-04-25T17:05:13</TmstFirmaEnv> # <SubTotDTE> # <TpoDTE>33</TpoDTE> # <NroDTE>1</NroDTE> # </SubTotDTE> # </Caratula> # <DTE version="1.0"> # <Documento ID="F555T55"> # ... # </Documento> # </EnvioDTE> $gen = New-Object Chilkat.XmlDSigGen $gen.SigLocation = "EnvioDTE|SetDTE|DTE" $gen.SigLocationMod = 0 $gen.SigNamespacePrefix = "" $gen.SigNamespaceUri = "http://www.w3.org/2000/09/xmldsig#" $gen.SignedInfoCanonAlg = "C14N" $gen.SignedInfoDigestMethod = "sha1" # -------- Reference 1 -------- $xml1 = New-Object Chilkat.Xml $xml1.Tag = "Transforms" $xml1.UpdateAttrAt("Transform",$true,"Algorithm","http://www.w3.org/TR/2001/REC-xml-c14n-20010315") $gen.AddSameDocRef2("F511T33","sha1",$xml1,"") # Provide a certificate + private key. (PFX password is test123) $cert = New-Object Chilkat.Cert $success = $cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123") if ($success -ne $true) { $($cert.LastErrorText) exit } $gen.SetX509Cert($cert,$true) $gen.KeyInfoType = "X509Data+KeyValue" $gen.X509Type = "Certificate" # Load XML to be signed... $sbXml = New-Object Chilkat.StringBuilder $xmlToSign.GetXmlSb($sbXml) $gen.Behaviors = "IndentedSignature" # Sign the XML... $success = $gen.CreateXmlDSigSb($sbXml) if ($success -ne $true) { $($gen.LastErrorText) exit } # ----------------------------------------------- # Save the signed XML to a file. $success = $sbXml.WriteFile("c:/temp/qa_output/signedXml.xml","utf-8",$false) $($sbXml.GetAsString()) # ---------------------------------------- # Verify the signatures we just produced... $verifier = New-Object Chilkat.XmlDSig $success = $verifier.LoadSignatureSb($sbXml) if ($success -ne $true) { $($verifier.LastErrorText) exit } $numSigs = $verifier.NumSignatures $verifyIdx = 0 while ($verifyIdx -lt $numSigs) { $verifier.Selector = $verifyIdx $verified = $verifier.VerifySignature($true) if ($verified -ne $true) { $($verifier.LastErrorText) exit } $verifyIdx = $verifyIdx + 1 } $("All signatures were successfully verified.") |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.