importing messaging-2008 branch to trunk, going on.
[mono.git] / mcs / class / System.Security / Test / System.Security.Cryptography.Xml / ReferenceTest.cs
index 6801e5c238abdb048ceb7a7fa17fa6c851582b1f..01f36abc658abbd7618c9f55003e08c4e60180a9 100644 (file)
@@ -23,7 +23,7 @@ namespace MonoTests.System.Security.Cryptography.Xml {
                protected Reference reference;
 
                [SetUp]
-               void SetUp () 
+               public void SetUp () 
                {
                        reference = new Reference ();
                }
@@ -158,13 +158,18 @@ namespace MonoTests.System.Security.Cryptography.Xml {
                }
 
                [Test]
+#if NET_2_0
+               [Category ("NotDotNet")]
+               // MS throws a NullReferenceException (reported as FDBK25886) but only when executed in NUnit
+               // http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=3596d1e3-362b-40bd-bca9-2e8be75261ff
+#endif
                public void AddAllTransforms () 
                {
                        // adding an empty hash value
                        byte[] hash = new byte [20];
                        reference.DigestValue = hash;
                        XmlElement xel = reference.GetXml ();
-                       // this is the minimal Reference (DisestValue)!
+                       // this is the minimal Reference (DigestValue)!
                        AssertNotNull ("GetXml", xel);
 
                        reference.AddTransform (new XmlDsigBase64Transform ());
@@ -217,5 +222,31 @@ namespace MonoTests.System.Security.Cryptography.Xml {
                        // bad hash - there's no validation!
                        reference.DigestMethod = "http://www.w3.org/2000/09/xmldsig#mono";
                }
+
+               const string xml = @"<player bats=""left"" id=""10012"" throws=""right"">
+       <!-- Here&apos;s a comment -->
+       <name>Alfonso Soriano</name>
+       <position>2B</position>
+       <team>New York Yankees</team>
+<dsig:Signature xmlns=""http://www.w3.org/2000/09/xmldsig#"" xmlns:dsig=""http://www.w3.org/2000/09/xmldsig#"">"
++ @"<dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm=""http://www.w3.org/TR/2001/REC-xml-c14n-withcomments-20010315""/><dsig:SignatureMethod Algorithm=""http://www.w3.org/2000/09/xmldsig#rsa-sha1""/>"
++ @"<dsig:Reference URI=""""><dsig:Transforms><dsig:Transform Algorithm=""http://www.w3.org/2000/09/xmldsig#enveloped-signature""/></dsig:Transforms><dsig:DigestMethod Algorithm=""http://www.w3.org/2000/09/xmldsig#sha1""/><dsig:DigestValue>nDF2V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>fbye4Xm//RPUTsLd1dwJPo0gPZYX6gVYCEB/gz2348EARNk/nCCch1fFfpuqAGMKg4ayVC0yWkUyE5V4QB33jaGlh9wuNQSjxs6TIvFwSsT+0ioDgVgFv0gVeasbyNL4rFEHuAWL8QKwDT9L6b2wUvJC90DmpBs9GMR2jTZIWlM=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo></dsig:Signature></player>";
+
+
+               [Test]
+               public void KeepDocument ()
+               {
+                       string result = @"<dsig:Reference URI="""" xmlns:dsig=""http://www.w3.org/2000/09/xmldsig#""><dsig:Transforms><dsig:Transform Algorithm=""http://www.w3.org/2000/09/xmldsig#enveloped-signature"" /></dsig:Transforms><dsig:DigestMethod Algorithm=""http://www.w3.org/2000/09/xmldsig#sha1"" /><dsig:DigestValue>nDF2V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference>";
+
+                       XmlDocument doc = new XmlDocument ();
+                       doc.LoadXml (xml);
+                       XmlElement org = (XmlElement) doc.SelectSingleNode ("//*[local-name()='Reference']");
+                       Reference r = new Reference ();
+                       r.LoadXml (org);
+                       XmlElement el = r.GetXml ();
+                       AssertEquals (doc, el.OwnerDocument);
+                       AssertEquals (org, el);
+                       AssertEquals (result, el.OuterXml);
+               }
        }
 }