X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=blobdiff_plain;f=xmltoolingtest%2FInlineKeyResolverTest.h;h=a499d6a0fa6ce2f191e063d8469ad3c2575a0fdb;hp=1ecaaaa4a883930b34d83218abd87336a812aedb;hb=HEAD;hpb=83de10b45721b7882182aaa8a6df0c729db8fc01 diff --git a/xmltoolingtest/InlineKeyResolverTest.h b/xmltoolingtest/InlineKeyResolverTest.h index 1ecaaaa..a499d6a 100644 --- a/xmltoolingtest/InlineKeyResolverTest.h +++ b/xmltoolingtest/InlineKeyResolverTest.h @@ -1,17 +1,21 @@ -/* - * 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. - * You may obtain a copy of the License at +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. * - * http://www.apache.org/licenses/LICENSE-2.0 + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ #include "XMLObjectBaseTestCase.h" @@ -27,7 +31,7 @@ using namespace xmlsignature; class InlineKeyResolverTest : public CxxTest::TestSuite { KeyInfoResolver* m_resolver; public: - InlineKeyResolverTest() : m_resolver(NULL) {} + InlineKeyResolverTest() : m_resolver(nullptr) {} void setUp() { string config = data_path + "InlineKeyResolver.xml"; @@ -39,25 +43,44 @@ public: 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 cred(dynamic_cast(m_resolver->resolve(kiObject.get()))); - TSM_ASSERT("Unable to resolve KeyInfo into Credential.", cred.get()!=NULL); + TSM_ASSERT("Unable to resolve KeyInfo into Credential.", cred.get()!=nullptr); - TSM_ASSERT("Unable to resolve public key.", cred->getPublicKey()!=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); + + 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); + } };