From: Scott Cantor Date: Sun, 13 Aug 2006 22:58:52 +0000 (+0000) Subject: Make sure to validate unmarshalled copy. X-Git-Tag: 2.0-alpha1~205 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=commitdiff_plain;h=3b5fa692edf516a45b6d7cee06aa67ffa3219f58 Make sure to validate unmarshalled copy. --- diff --git a/samltest/signature/SAML1AssertionTest.h b/samltest/signature/SAML1AssertionTest.h index 2f5c7c5..ba26d9d 100644 --- a/samltest/signature/SAML1AssertionTest.h +++ b/samltest/signature/SAML1AssertionTest.h @@ -85,13 +85,14 @@ public: DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in); const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); - assertEquals(expectedChildElementsDOM, b->buildFromDocument(doc)); + auto_ptr assertion2(b->buildFromDocument(doc)); + assertEquals("Unmarshalled assertion does not match", expectedChildElementsDOM, assertion2.get(), false); try { SignatureProfileValidator spv; SignatureValidator sv(new KeyResolver(m_resolver->getKey())); - spv.validate(assertion->getSignature()); - sv.validate(assertion->getSignature()); + spv.validate(dynamic_cast(assertion2.get())->getSignature()); + sv.validate(dynamic_cast(assertion2.get())->getSignature()); } catch (XMLToolingException& e) { TS_TRACE(e.what()); diff --git a/samltest/signature/SAML1RequestTest.h b/samltest/signature/SAML1RequestTest.h index 46c183c..0ebd828 100644 --- a/samltest/signature/SAML1RequestTest.h +++ b/samltest/signature/SAML1RequestTest.h @@ -84,13 +84,14 @@ public: DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in); const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); - assertEquals(expectedChildElementsDOM, b->buildFromDocument(doc)); + auto_ptr request2(b->buildFromDocument(doc)); + assertEquals("Unmarshalled request does not match", expectedChildElementsDOM, request2.get(), false); try { SignatureProfileValidator spv; SignatureValidator sv(new KeyResolver(m_resolver->getKey())); - spv.validate(request->getSignature()); - sv.validate(request->getSignature()); + spv.validate(dynamic_cast(request2.get())->getSignature()); + sv.validate(dynamic_cast(request2.get())->getSignature()); } catch (XMLToolingException& e) { TS_TRACE(e.what()); diff --git a/samltest/signature/SAML1ResponseTest.h b/samltest/signature/SAML1ResponseTest.h index 6643b5e..f975cc1 100644 --- a/samltest/signature/SAML1ResponseTest.h +++ b/samltest/signature/SAML1ResponseTest.h @@ -114,16 +114,17 @@ public: DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in); const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); - assertEquals(expectedChildElementsDOM, b->buildFromDocument(doc)); + auto_ptr response2(b->buildFromDocument(doc)); + assertEquals("Unmarshalled request does not match", expectedChildElementsDOM, response2.get(), false); try { SignatureProfileValidator spv; - spv.validate(assertion->getSignature()); - spv.validate(response->getSignature()); + spv.validate(dynamic_cast(response2.get())->getAssertions().front()->getSignature()); + spv.validate(dynamic_cast(response2.get())->getSignature()); SignatureValidator sv(new KeyResolver(m_resolver->getKey())); - sv.validate(assertion->getSignature()); - sv.validate(response->getSignature()); + sv.validate(dynamic_cast(response2.get())->getAssertions().front()->getSignature()); + sv.validate(dynamic_cast(response2.get())->getSignature()); } catch (XMLToolingException& e) { TS_TRACE(e.what()); diff --git a/samltest/signature/SAML2AssertionTest.h b/samltest/signature/SAML2AssertionTest.h index db45a15..6bf5bec 100644 --- a/samltest/signature/SAML2AssertionTest.h +++ b/samltest/signature/SAML2AssertionTest.h @@ -93,13 +93,14 @@ public: DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in); const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); - assertEquals(expectedChildElementsDOM, b->buildFromDocument(doc)); + auto_ptr assertion2(b->buildFromDocument(doc)); + assertEquals("Unmarshalled assertion does not match", expectedChildElementsDOM, assertion2.get(), false); try { SignatureProfileValidator spv; SignatureValidator sv(new KeyResolver(m_resolver->getKey())); - spv.validate(assertion->getSignature()); - sv.validate(assertion->getSignature()); + spv.validate(dynamic_cast(assertion2.get())->getSignature()); + sv.validate(dynamic_cast(assertion2.get())->getSignature()); } catch (XMLToolingException& e) { TS_TRACE(e.what());