|  | 
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
| (PowerShell) Create XML Digital Signature having KeyNameDemonstrates how to create an XML digital signature where the KeyInfo part will contain the KeyName element. This example requires Chilkat v9.5.0.69 or greater. 
 Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll" # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. # The XML to be signed in this example contains the following: # <?xml version="1.0" encoding="UTF-8" standalone="no"?> # <Envelope> # <Header> # <Security> # </Security> # </Header> # <Body Id="abc"> # <z:FooBar xmlns:z="https://www.example-code.com"/> # </Body> # </Envelope> # The above XML is available at https://www.chilkatsoft.com/exampleData/xmlToSign.xml # Fetch the XML and then sign it.. $url = "https://www.chilkatsoft.com/exampleData/xmlToSign.xml" $http = New-Object Chilkat.Http $sbXml = New-Object Chilkat.StringBuilder $success = $http.QuickGetSb($url,$sbXml) if ($success -ne $true) { $($http.LastErrorText) exit } # This example uses a DSA private key for signing. # There are many ways of getting an DSA private key using Chilkat. This example # will load it from an encrypted PEM file. # In case you would like to use it, I put the DSA private key PEM file here: # https://www.chilkatsoft.com/exampleData/dsa1024_secret.zip # The password is "secret". $dsaKey = New-Object Chilkat.PrivateKey $success = $dsaKey.LoadEncryptedPemFile("qa_data/dsa/dsa1024_secret.pem","secret") if ($success -ne $true) { $($dsaKey.LastErrorText) exit } $xmlSigGen = New-Object Chilkat.XmlDSigGen # Indicate where the XML Signature is to be inserted. $xmlSigGen.SigLocation = "Envelope|Header|Security" # Specify the fragment of the XML document to be signed. # This example will sign the fragment from <Body Id="abc"> ... </Body> $xmlSigGen.AddSameDocRef("abc","sha256","EXCL_C14N","","") # Provide the DSA key to be used for signing: $xmlSigGen.SetPrivateKey($dsaKey) # Specify what we want to emit in the KeyInfo part of the Signature. # By default, it is the KeyValue that is emitted to the KeyInfo. # In this example,we want to emit a key name rather than the actual public key value. $xmlSigGen.KeyInfoType = "KeyName" # Provide a key name. The verifying application will use the key name # to find/load the public key to be used for verifying the signature. # The key name is an arbitrary pre-agreed upon name that signer and verifier both know in advance. $xmlSigGen.KeyInfoKeyName = "dsaKey_123" # The KeyInfo part of the XML signature to be created will contain this: # # <ds:KeyInfo><ds:KeyName>dsaKey_123</ds:KeyName></ds:KeyInfo> # # OK, everything's specified, so let's create the XML digital signature: # This in-place signs the XML. If successful, sbXml will contain the # XML with the digital signature at the specified location. $xmlSigGen.Behaviors = "IndentedSignature" $success = $xmlSigGen.CreateXmlDSigSb($sbXml) if ($success -ne $true) { $($xmlSigGen.LastErrorText) exit } # Examine the signed XML: $($sbXml.GetAsString()) $sbXml.WriteFile("c:/chilkatsoft.com/exampleData/signedUsingKeyName.xml","utf-8",$false) # Below is the signed XML that is produced. # # <?xml version="1.0" encoding="UTF-8" standalone="no"?> # <Envelope> # <Header> # <Security> # <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> # <ds:SignedInfo> # <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> # <ds:SignatureMethod Algorithm="http://www.w3.org/2009/xmldsig11#dsa-sha256"/> # <ds:Reference URI="#abc"> # <ds:Transforms> # <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> # </ds:Transforms> # <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> # <ds:DigestValue>XTjDIHSEsDNTO9yn4cKtyXjRUjPFXkOQOLYI5mueZhk=</ds:DigestValue> # </ds:Reference> # </ds:SignedInfo> # <ds:SignatureValue>F+HopRvLoj+9SHZxI/cGfX9SDfh+HRGZLMievGX3y/cckX1UzFuXCA==</ds:SignatureValue> # <ds:KeyInfo> # <ds:KeyName>dsaKey_123</ds:KeyName> # </ds:KeyInfo> # </ds:Signature></Security> # </Header> # <Body Id="abc"> # <z:FooBar xmlns:z="https://www.example-code.com"/> # </Body> # </Envelope> # | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.