Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(VB.NET UWP/WinRT) 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.
' 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.. Dim url As String = "https://www.chilkatsoft.com/exampleData/xmlToSign.xml" Dim http As New Chilkat.Http Dim sbXml As New Chilkat.StringBuilder Dim success As Boolean = Await http.QuickGetSbAsync(url,sbXml) If (success <> True) Then Debug.WriteLine(http.LastErrorText) Exit Sub End If ' 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". Dim dsaKey As New Chilkat.PrivateKey success = dsaKey.LoadEncryptedPemFile("qa_data/dsa/dsa1024_secret.pem","secret") If (success <> True) Then Debug.WriteLine(dsaKey.LastErrorText) Exit Sub End If Dim xmlSigGen As New 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 <> True) Then Debug.WriteLine(xmlSigGen.LastErrorText) Exit Sub End If ' Examine the signed XML: Debug.WriteLine(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-2022 Chilkat Software, Inc. All Rights Reserved.