當前位置: 首頁>>代碼示例>>VB.NET>>正文


VB.NET KeyInfoX509Data構造函數代碼示例

本文整理匯總了VB.NET中System.Security.Cryptography.Xml.KeyInfoX509Data.KeyInfoX509Data構造函數的典型用法代碼示例。如果您正苦於以下問題:VB.NET KeyInfoX509Data構造函數的具體用法?VB.NET KeyInfoX509Data怎麽用?VB.NET KeyInfoX509Data使用的例子?那麽, 這裏精選的構造函數代碼示例或許可以為您提供幫助。您也可以進一步了解該構造函數所在System.Security.Cryptography.Xml.KeyInfoX509Data的用法示例。


在下文中一共展示了KeyInfoX509Data構造函數的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的VB.NET代碼示例。

示例1: SignDetachedResource

' Sign an XML file and save the signature in a new file.
   Public Shared Sub SignDetachedResource(URIString As String, XmlSigFileName As String, Key As RSA, Certificate As String)
      ' Create a SignedXml object.
      Dim signedXml As New SignedXml()
      
      ' Assign the key to the SignedXml object.
      signedXml.SigningKey = Key
      
      ' Create a reference to be signed.
      Dim reference As New Reference()
      
      ' Add the passed URI to the reference object.
      reference.Uri = URIString
      
      ' Add the reference to the SignedXml object.
      signedXml.AddReference(reference)
      
      ' Create a new KeyInfo object.
      Dim keyInfo As New KeyInfo()
      
      ' Load the X509 certificate.
      Dim MSCert As X509Certificate = X509Certificate.CreateFromCertFile(Certificate)
      
      ' Load the certificate into a KeyInfoX509Data object
      ' and add it to the KeyInfo object.
      keyInfo.AddClause(New KeyInfoX509Data(MSCert))
      
      ' 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()
      
      ' Save the signed XML document to a file specified
      ' using the passed string.
      Dim xmltw As New XmlTextWriter(XmlSigFileName, New UTF8Encoding(False))
      xmlDigitalSignature.WriteTo(xmltw)
      xmltw.Close()
   End Sub  
End Class
開發者ID:VB.NET開發者,項目名稱:System.Security.Cryptography.Xml,代碼行數:44,代碼來源:KeyInfoX509Data

示例2: SignXmlFile

' Sign an XML file and save the signature in a new file.
Public Shared Sub SignXmlFile(FileName As String, SignedFileName As String, Key As RSA, Certificate As String)
   ' 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 = Key
   
   ' 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 X509 certificate.
   Dim MSCert As X509Certificate = X509Certificate.CreateFromCertFile(Certificate)
   
   ' Load the certificate into a KeyInfoX509Data object
   ' and add it to the KeyInfo object.
   keyInfo.AddClause(New KeyInfoX509Data(MSCert))
   
   ' 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))
   doc.WriteTo(xmltw)
   xmltw.Close()
End Sub
開發者ID:VB.NET開發者,項目名稱:System.Security.Cryptography.Xml,代碼行數:62,代碼來源:KeyInfoX509Data

示例3: 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.
        Dim X509KeyInfo As New KeyInfoX509Data(cert, X509IncludeOption.WholeChain)

        keyInfo.AddClause(X509KeyInfo)

        ' 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,代碼行數:240,代碼來源:KeyInfoX509Data


注:本文中的System.Security.Cryptography.Xml.KeyInfoX509Data.KeyInfoX509Data構造函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。