From 3b5fa692edf516a45b6d7cee06aa67ffa3219f58 Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Sun, 13 Aug 2006 22:58:52 +0000 Subject: [PATCH] Make sure to validate unmarshalled copy. --- samltest/signature/SAML1AssertionTest.h | 7 ++++--- samltest/signature/SAML1RequestTest.h | 7 ++++--- samltest/signature/SAML1ResponseTest.h | 11 ++++++----- samltest/signature/SAML2AssertionTest.h | 7 ++++--- 4 files changed, 18 insertions(+), 14 deletions(-) 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()); -- 2.1.4