2009-05-29 12 views
7

XMLセキュリティを学び始めました。私たちはVS-2005 & ASP.Net 2.0を持っています。 XMLを外部のURLに送信したいので、暗号化する必要があります。私はMSDNの記事 & ms229943を行っていますが、DecryptDocument()メソッドを実行しているときに、「復号化キーを取得できません」というメッセージが表示され続けます。 SSLウェブ証明書を使用していますが、現在X509Certificateを使用してXMLにデジタル署名しています。X509証明書の暗号化/復号化

私はまた、他の人に別の店からこれを試してもらうように頼みましたが、同じエラーが発生しています。 X509の復号化方法に関する文書化された問題はありますか?以下のテストコードでは、XMLを解読しようとしている別のWebページにXMLをポストします。私が理解できないことは、たとえ公開鍵が埋め込まれているかどうかをチェックしなくても、DecryptDocument()メソッドがどのように動作するかです。これは問題ですか?もしそうなら、それがXMLに埋め込まれていることを確認するにはどうすればよいですか?どんな助けもありがとうございます。ありがとう!

Private Function EncryptXml(ByVal xmlDoc As XmlDocument, ByVal Cert As X509Certificates.X509Certificate2) As XmlDocument 

    Dim dataNodes As XmlNodeList = xmlDoc.SelectNodes("Agency") 
    If dataNodes.Count <> 1 Then 
     Return Nothing 
    End If 
    Dim elementToEncrypt As XmlElement = CType(xmlDoc.GetElementsByTagName("Agency")(0), XmlElement) 
    Dim eXml As New EncryptedXml() 
    Dim Key As RSACryptoServiceProvider = CType(Cert.PrivateKey, RSACryptoServiceProvider) 
    Dim edElement As EncryptedData = eXml.Encrypt(elementToEncrypt, Cert) 
    EncryptedXml.ReplaceElement(elementToEncrypt, edElement, False) 
    Return xmlDoc 
End Function 



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
If Not IsPostBack Then 
    If Request.Form("hdnSignedXML") IsNot Nothing Then 
    Dim strXML As String = Request.Form("hdnSignedXML") 
    Dim xmlDoc As New XmlDocument 
    xmlDoc.LoadXml(strXML) 
    xmlDoc.PreserveWhitespace = True 
    Response.ContentType = "text/plain" 
    Response.Write(strXML) 

    Dim exml As New Xml.EncryptedXml(xmlDoc) 
    exml.DecryptDocument() 
    xmlDoc.Save("C:/inetpub/TestExampleDecrypted.xml") 


    Response.End() 

End If 

End Sub 

JP

答えて