X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltoolingtest%2FInlineKeyResolverTest.h;h=d8e88d2257fd5e9efb25d9da679a07e544f4a824;hb=4a4b8fd387a7c03b4ea3d052104c8ca70ceb4a35;hp=a8e4ef8001ea9104320d3185acb5ff0c9d090751;hpb=e7a65d784215bc04355f014141219b3e7ab4559a;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltoolingtest/InlineKeyResolverTest.h b/xmltoolingtest/InlineKeyResolverTest.h index a8e4ef8..d8e88d2 100644 --- a/xmltoolingtest/InlineKeyResolverTest.h +++ b/xmltoolingtest/InlineKeyResolverTest.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,47 +17,66 @@ #include "XMLObjectBaseTestCase.h" #include +#include +#include #include -#include +#include using namespace xmlsignature; class InlineKeyResolverTest : public CxxTest::TestSuite { - KeyResolver* m_resolver; + KeyInfoResolver* m_resolver; public: - InlineKeyResolverTest() : m_resolver(NULL) {} + InlineKeyResolverTest() : m_resolver(nullptr) {} void setUp() { string config = data_path + "InlineKeyResolver.xml"; ifstream in(config.c_str()); DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in); XercesJanitor janitor(doc); - m_resolver=XMLToolingConfig::getConfig().KeyResolverManager.newPlugin(INLINE_KEY_RESOLVER,doc->getDocumentElement()); + m_resolver=XMLToolingConfig::getConfig().KeyInfoResolverManager.newPlugin(INLINE_KEYINFO_RESOLVER,doc->getDocumentElement()); } void tearDown() { delete m_resolver; - m_resolver=NULL; + m_resolver=nullptr; } void testResolver() { string path=data_path + "KeyInfo1.xml"; ifstream fs(path.c_str()); DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs); - TS_ASSERT(doc!=NULL); + TS_ASSERT(doc!=nullptr); const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); - TS_ASSERT(b!=NULL); + TS_ASSERT(b!=nullptr); auto_ptr kiObject(dynamic_cast(b->buildFromDocument(doc))); - TS_ASSERT(kiObject.get()!=NULL); + TS_ASSERT(kiObject.get()!=nullptr); - auto_ptr key(m_resolver->resolveKey(kiObject.get())); - TSM_ASSERT("Unable to resolve public key.", key.get()!=NULL); - TSM_ASSERT_EQUALS("Unexpected key type.", key->getKeyType(), XSECCryptoKey::KEY_RSA_PUBLIC); + auto_ptr cred(dynamic_cast(m_resolver->resolve(kiObject.get()))); + TSM_ASSERT("Unable to resolve KeyInfo into Credential.", cred.get()!=nullptr); - auto_ptr crl(m_resolver->resolveCRL(kiObject.get())); - TSM_ASSERT("Unable to resolve CRL.", crl.get()!=NULL); + TSM_ASSERT("Unable to resolve public key.", cred->getPublicKey()!=nullptr); + TSM_ASSERT_EQUALS("Unexpected key type.", cred->getPublicKey()->getKeyType(), XSECCryptoKey::KEY_RSA_PUBLIC); + TSM_ASSERT_EQUALS("Wrong certificate count.", cred->getEntityCertificateChain().size(), 1); + TSM_ASSERT_EQUALS("Wrong CRL count.", cred->getCRLs().size(), 3); + } + + void testDER() { + string path=data_path + "KeyInfo5.xml"; + ifstream fs(path.c_str()); + DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs); + TS_ASSERT(doc!=nullptr); + const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); + TS_ASSERT(b!=nullptr); + auto_ptr kiObject(dynamic_cast(b->buildFromDocument(doc))); + TS_ASSERT(kiObject.get()!=nullptr); + + auto_ptr cred(dynamic_cast(m_resolver->resolve(kiObject.get()))); + TSM_ASSERT("Unable to resolve KeyInfo into Credential.", cred.get()!=nullptr); - KeyResolver::ResolvedCertificates certs; - TSM_ASSERT_EQUALS("Wrong certificate count.", m_resolver->resolveCertificates(kiObject.get(), certs), 1); + TSM_ASSERT("Unable to resolve public key.", cred->getPublicKey()!=nullptr); + TSM_ASSERT_EQUALS("Unexpected key type.", cred->getPublicKey()->getKeyType(), XSECCryptoKey::KEY_RSA_PUBLIC); + TSM_ASSERT_EQUALS("Wrong certificate count.", cred->getEntityCertificateChain().size(), 0); + TSM_ASSERT_EQUALS("Wrong CRL count.", cred->getCRLs().size(), 0); } };