Make sure to validate unmarshalled copy.
[shibboleth/cpp-opensaml.git] / samltest / signature / SAML2AssertionTest.h
index 0245bce..6bf5bec 100644 (file)
@@ -66,13 +66,14 @@ public:
         // Append a Signature.\r
         Signature* sig=SignatureBuilder::buildSignature();\r
         assertion->setSignature(sig);\r
-        sig->setSigningKey(m_key->clone());\r
+        Locker locker(m_resolver);\r
+        sig->setSigningKey(m_resolver->getKey());\r
 \r
         // Build KeyInfo.\r
         KeyInfo* keyInfo=KeyInfoBuilder::buildKeyInfo();\r
         X509Data* x509Data=X509DataBuilder::buildX509Data();\r
         keyInfo->getX509Datas().push_back(x509Data);\r
-        for_each(m_certs.begin(),m_certs.end(),bind1st(_addcert(),x509Data));\r
+        for_each(m_resolver->getCertificates().begin(),m_resolver->getCertificates().end(),bind1st(_addcert(),x509Data));\r
         sig->setKeyInfo(keyInfo);\r
 \r
         // Sign while marshalling.\r
@@ -92,13 +93,14 @@ public:
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);\r
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
         \r
-        assertEquals(expectedChildElementsDOM, b->buildFromDocument(doc));\r
+        auto_ptr<XMLObject> assertion2(b->buildFromDocument(doc));\r
+        assertEquals("Unmarshalled assertion does not match", expectedChildElementsDOM, assertion2.get(), false);\r
         \r
         try {\r
             SignatureProfileValidator spv;\r
-            SignatureValidator sv(new KeyResolver(m_key->clone()));\r
-            spv.validate(assertion->getSignature());\r
-            sv.validate(assertion->getSignature());\r
+            SignatureValidator sv(new KeyResolver(m_resolver->getKey()));\r
+            spv.validate(dynamic_cast<Assertion*>(assertion2.get())->getSignature());\r
+            sv.validate(dynamic_cast<Assertion*>(assertion2.get())->getSignature());\r
         }\r
         catch (XMLToolingException& e) {\r
             TS_TRACE(e.what());\r