System.Security.Cryptography.Xml Namespace in VB.NET

In this article I will explain you about the System.Security.Cryptography.Xml Namespace in VB.NET.
  • 3920

The System.Security.Cryptography.Xml namespace contains a full implementation of the World Wide Web Consortium standard for digitally signing XML data and files. In other words, the namespace helps you to sign any XML object with a digital signature. Refer to the XML-Signature Syntax and Processing page at http://www.w3.org/TR/xmldsig-core/ for details on this progressing standard.

The sample code in Listing 22.37 shows how to sign XML data and produce an envelope for it via the RSA algorithm.


Listing 22.37: SignXML1.VB, Compute Signature for XML Data


Imports
System.Xml
Imports System.Security.Cryptography
Imports System.Security.Cryptography.Xml
Public Class DigitalSignSample
    Shared Sub Main()
        ' generate XML data
        Dim document As New XmlDocument()
        Dim node As XmlNode = document.CreateNode(XmlNodeType.Element, "", "T", "s")
        node.InnerText = "C# wimps the lama's bass..."
        document.AppendChild(node)
        Console.WriteLine("OriginalXML data:" & vbCr & vbLf & document.OuterXml & vbCr & vbLf) 
        ' create signedxml variable
        Dim rsa As RSA = System.Security.Cryptography.RSA.Create()
        Dim signedXml As New SignedXml()
        signedXml.SigningKey = rsa 
        ' create dataobject
        Dim dataObject As DataObject = New System.Security.Cryptography.Xml.DataObject()
        dataObject.Data = document.ChildNodes
        dataObject.Id = "goo"
 
        ' add dataobject and reference
        signedXml.AddObject(dataObject)
        signedXml.AddReference(New Reference("#goo"))
        ' add keyinfo
        Dim keyInfo As New KeyInfo()
        keyInfo.AddClause(New RSAKeyValue(rsa))
        signedXml.KeyInfo = keyInfo
        ' compute signature and get an envelope for the XML data
        signedXml.ComputeSignature()
        Dim xmlDigitalSignature As XmlElement = signedXml.GetXml() 
        ' output the envelope
        Console.WriteLine("====================================================")
        Dim w As New XmlTextWriter(Console.Out)
        w.Formatting = Formatting.Indented
        xmlDigitalSignature.WriteTo(w)
        Console.ReadLine()
    End Sub
End Class

Output Window

name.gif

Conclusion

Hope this article would have helped you in understanding the System.Security.Cryptography.Xml Namespace in VB.NET.

Categories

More Articles

© 2020 DotNetHeaven. All rights reserved.