X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=blobdiff_plain;f=xmltoolingtest%2FEncryptionTest.h;h=b70c70f2a45bfafd508ed822a397cc37793da744;hp=8085fbe12d6a7155d27f42bcdc60b94bf2fc044d;hb=HEAD;hpb=5cb314df178f78c6fa7b9826c2c5a5298ec7a473 diff --git a/xmltoolingtest/EncryptionTest.h b/xmltoolingtest/EncryptionTest.h index 8085fbe..b70c70f 100644 --- a/xmltoolingtest/EncryptionTest.h +++ b/xmltoolingtest/EncryptionTest.h @@ -1,24 +1,31 @@ -/* - * Copyright 2001-2007 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" #include #include -#include +#include +#include +#include +#include #include #include @@ -26,31 +33,23 @@ using namespace xmlencryption; -class _addcert : public std::binary_function { -public: - void operator()(X509Data* bag, XSECCryptoX509* cert) const { - safeBuffer& buf=cert->getDEREncodingSB(); - X509Certificate* x=X509CertificateBuilder::buildX509Certificate(); - x->setValue(buf.sbStrToXMLCh()); - bag->getX509Certificates().push_back(x); - } -}; - class EncryptionTest : public CxxTest::TestSuite { CredentialResolver* m_resolver; public: void setUp() { - m_resolver=NULL; + m_resolver=nullptr; string config = data_path + "FilesystemCredentialResolver.xml"; ifstream in(config.c_str()); DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in); XercesJanitor janitor(doc); m_resolver = XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin( - FILESYSTEM_CREDENTIAL_RESOLVER,doc->getDocumentElement() + CHAINING_CREDENTIAL_RESOLVER,doc->getDocumentElement() ); + XMLObjectBuilder::registerDefaultBuilder(new UnknownElementBuilder()); } void tearDown() { + XMLObjectBuilder::deregisterDefaultBuilder(); delete m_resolver; } @@ -58,25 +57,31 @@ public: string path=data_path + "ComplexXMLObject.xml"; ifstream fs(path.c_str()); DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs); - TS_ASSERT(doc!=NULL); + TS_ASSERT(doc!=nullptr); try { + CredentialCriteria cc; + cc.setUsage(Credential::ENCRYPTION_CREDENTIAL); Locker locker(m_resolver); + const Credential* cred=m_resolver->resolve(&cc); + TSM_ASSERT("Retrieved credential was null", cred!=nullptr); + Encrypter encrypter; Encrypter::EncryptionParams ep; - Encrypter::KeyEncryptionParams kep(DSIGConstants::s_unicodeStrURIRSA_1_5,m_resolver->getKey()); + Encrypter::KeyEncryptionParams kep(*cred); auto_ptr encData(encrypter.encryptElement(doc->getDocumentElement(),ep,&kep)); string buf; XMLHelper::serialize(encData->marshall(), buf); + //TS_TRACE(buf.c_str()); istringstream is(buf); DOMDocument* doc2=XMLToolingConfig::getConfig().getValidatingParser().parse(is); auto_ptr encData2( dynamic_cast(XMLObjectBuilder::buildOneFromElement(doc2->getDocumentElement(),true)) ); - Decrypter decrypter(new KeyResolver(m_resolver->getKey())); - DOMDocumentFragment* frag = decrypter.decryptData(encData2.get()); + Decrypter decrypter(m_resolver); + DOMDocumentFragment* frag = decrypter.decryptData(*encData2.get()); XMLHelper::serialize(static_cast(frag->getFirstChild()), buf); //TS_TRACE(buf.c_str()); TS_ASSERT(doc->getDocumentElement()->isEqualNode(frag->getFirstChild()));