• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

VB.NET X509IssuerSerial结构体代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了VB.NET中System.Security.Cryptography.Xml.X509IssuerSerial结构体的典型用法代码示例。如果您正苦于以下问题:VB.NET X509IssuerSerial结构体的具体用法?VB.NET X509IssuerSerial怎么用?VB.NET X509IssuerSerial使用的例子?那么恭喜您, 这里精选的结构体代码示例或许可以为您提供帮助。



在下文中一共展示了X509IssuerSerial结构体的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的VB.NET代码示例。

示例1: SignVerifyEnvelope

'
' This example signs an XML file using an
' envelope signature. It then verifies the 
' signed XML.
'
' You must have a certificate with a subject name
' of "CN=XMLDSIG_Test" in the "My" certificate store. 
'
' Run the following command to create a certificate
' and place it in the store.
' makecert -r -pe -n "CN=XMLDSIG_Test" -b 01/01/2005 -e 01/01/2010 -sky signing -ss my
Imports System.Security.Cryptography
Imports System.Security.Cryptography.Xml
Imports System.Security.Cryptography.X509Certificates
Imports System.Text
Imports System.Xml



Module SignVerifyEnvelope


    Sub Main(ByVal args() As String)

        Dim Certificate As String = "CN=XMLDSIG_Test"

        Try

            ' Create an XML file to sign.
            CreateSomeXml("Example.xml")
            Console.WriteLine("New XML file created.")

            ' Sign the XML that was just created and save it in a 
            ' new file.
            SignXmlFile("Example.xml", "SignedExample.xml", Certificate)
            Console.WriteLine("XML file signed.")

            If VerifyXmlFile("SignedExample.xml", Certificate) Then
                Console.WriteLine("The XML signature is valid.")
            Else
                Console.WriteLine("The XML signature is not valid.")
            End If
        Catch e As CryptographicException
            Console.WriteLine(e.Message)
        End Try

    End Sub


    ' Sign an XML file and save the signature in a new file.
    Sub SignXmlFile(ByVal FileName As String, ByVal SignedFileName As String, ByVal SubjectName As String)
        If Nothing = FileName Then
            Throw New ArgumentNullException("FileName")
        End If
        If Nothing = SignedFileName Then
            Throw New ArgumentNullException("SignedFileName")
        End If
        If Nothing = SubjectName Then
            Throw New ArgumentNullException("SubjectName")
        End If
        ' Load the certificate from the certificate store.
        Dim cert As X509Certificate2 = GetCertificateBySubject(SubjectName)

        ' Create a new XML document.
        Dim doc As New XmlDocument()

        ' Format the document to ignore white spaces.
        doc.PreserveWhitespace = False

        ' Load the passed XML file using it's name.
        doc.Load(New XmlTextReader(FileName))

        ' Create a SignedXml object.
        Dim signedXml As New SignedXml(doc)

        ' Add the key to the SignedXml document. 
        signedXml.SigningKey = cert.PrivateKey

        ' Create a reference to be signed.
        Dim reference As New Reference()
        reference.Uri = ""

        ' Add an enveloped transformation to the reference.
        Dim env As New XmlDsigEnvelopedSignatureTransform()
        reference.AddTransform(env)

        ' Add the reference to the SignedXml object.
        signedXml.AddReference(reference)

        ' Create a new KeyInfo object.
        Dim keyInfo As New KeyInfo()

        ' Load the certificate into a KeyInfoX509Data object
        ' and add it to the KeyInfo object.
        ' Create an X509IssuerSerial object and add it to the
        ' KeyInfoX509Data object.

        Dim kdata As New KeyInfoX509Data(cert)

        Dim xserial As X509IssuerSerial

        xserial.IssuerName = cert.IssuerName.ToString()
        xserial.SerialNumber = cert.SerialNumber

        kdata.AddIssuerSerial(xserial.IssuerName, xserial.SerialNumber)

        keyInfo.AddClause(kdata)

        ' Add the KeyInfo object to the SignedXml object.
        signedXml.KeyInfo = keyInfo

        ' Compute the signature.
        signedXml.ComputeSignature()

        ' Get the XML representation of the signature and save
        ' it to an XmlElement object.
        Dim xmlDigitalSignature As XmlElement = signedXml.GetXml()

        ' Append the element to the XML document.
        doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))


        If TypeOf doc.FirstChild Is XmlDeclaration Then
            doc.RemoveChild(doc.FirstChild)
        End If

        ' Save the signed XML document to a file specified
        ' using the passed string.
        Dim xmltw As New XmlTextWriter(SignedFileName, New UTF8Encoding(False))
        Try
            doc.WriteTo(xmltw)

        Finally
            xmltw.Close()
        End Try

    End Sub

    ' Verify the signature of an XML file against an asymetric 
    ' algorithm and return the result.
    Function VerifyXmlFile(ByVal FileName As String, ByVal CertificateSubject As String) As [Boolean]
        ' Check the args.
        If Nothing = FileName Then
            Throw New ArgumentNullException("FileName")
        End If
        If Nothing = CertificateSubject Then
            Throw New ArgumentNullException("CertificateSubject")
        End If
        ' Load the certificate from the store.
        Dim cert As X509Certificate2 = GetCertificateBySubject(CertificateSubject)

        ' Create a new XML document.
        Dim xmlDocument As New XmlDocument()

        ' Load the passed XML file into the document. 
        xmlDocument.Load(FileName)

        ' Create a new SignedXml object and pass it
        ' the XML document class.
        Dim signedXml As New SignedXml(xmlDocument)

        ' Find the "Signature" node and create a new
        ' XmlNodeList object.
        Dim nodeList As XmlNodeList = xmlDocument.GetElementsByTagName("Signature")

        ' Load the signature node.
        signedXml.LoadXml(CType(nodeList(0), XmlElement))

        ' Check the signature and return the result.
        Return signedXml.CheckSignature(cert, True)

    End Function



    Function GetCertificateBySubject(ByVal CertificateSubject As String) As X509Certificate2
        ' Check the args.
        If Nothing = CertificateSubject Then
            Throw New ArgumentNullException("CertificateSubject")
        End If

        ' Load the certificate from the certificate store.
        Dim cert As X509Certificate2 = Nothing

        Dim store As New X509Store("My", StoreLocation.CurrentUser)

        Try
            ' Open the store.
            store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)

            ' Get the certs from the store.
            Dim CertCol As X509Certificate2Collection = store.Certificates

            ' Find the certificate with the specified subject.
            Dim c As X509Certificate2
            For Each c In CertCol
                If c.Subject = CertificateSubject Then
                    cert = c
                    Exit For
                End If
            Next c

            ' Throw an exception of the certificate was not found.
            If cert Is Nothing Then
                Throw New CryptographicException("The certificate could not be found.")
            End If
        Finally
            ' Close the store even if an exception was thrown.
            store.Close()
        End Try

        Return cert

    End Function


    ' Create example data to sign.
    Sub CreateSomeXml(ByVal FileName As String)
        ' Check the args.
        If Nothing = FileName Then
            Throw New ArgumentNullException("FileName")
        End If
        ' Create a new XmlDocument object.
        Dim document As New XmlDocument()

        ' Create a new XmlNode object.
        Dim node As XmlNode = document.CreateNode(XmlNodeType.Element, "", "MyElement", "samples")

        ' Add some text to the node.
        node.InnerText = "Example text to be signed."

        ' Append the node to the document.
        document.AppendChild(node)

        ' Save the XML document to the file name specified.
        Dim xmltw As New XmlTextWriter(FileName, New UTF8Encoding(False))
        Try
            document.WriteTo(xmltw)

        Finally
            xmltw.Close()
        End Try

    End Sub
End Module
' This code example displays the following to the console:
'
' New XML file created.
' XML file signed.
' The XML signature is valid.
开发者ID:VB.NET开发者,项目名称:System.Security.Cryptography.Xml,代码行数:250,代码来源:X509IssuerSerial



注:本文中的System.Security.Cryptography.Xml.X509IssuerSerial结构体示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap