X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=blobdiff_plain;f=xmltoolingtest%2FEncryptionTest.h;h=8f9e4c7ffba01c69ded7a0e61f9e83abb4395737;hp=3f88890af0b8554e1c07bbc2fc9d12208c6ab8ce;hb=e7a65d784215bc04355f014141219b3e7ab4559a;hpb=77769b2e300d1295b8a5d717d9ede50e27d70cea diff --git a/xmltoolingtest/EncryptionTest.h b/xmltoolingtest/EncryptionTest.h index 3f88890..8f9e4c7 100644 --- a/xmltoolingtest/EncryptionTest.h +++ b/xmltoolingtest/EncryptionTest.h @@ -1,93 +1,93 @@ -/* - * Copyright 2001-2005 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 - * - * 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 - -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; - 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() - ); - } - - void tearDown() { - delete m_resolver; - } - - void testEncryption() { - string path=data_path + "ComplexXMLObject.xml"; - ifstream fs(path.c_str()); - DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs); - TS_ASSERT(doc!=NULL); - - try { - Locker locker(m_resolver); - Encrypter encrypter; - Encrypter::EncryptionParams ep; - Encrypter::KeyEncryptionParams kep(DSIGConstants::s_unicodeStrURIRSA_1_5,m_resolver->getKey()); - auto_ptr encData(encrypter.encryptElement(doc->getDocumentElement(),ep,&kep)); - - string buf; - XMLHelper::serialize(encData->marshall(), buf); - 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()); - XMLHelper::serialize(static_cast(frag->getFirstChild()), buf); - //TS_TRACE(buf.c_str()); - TS_ASSERT(doc->getDocumentElement()->isEqualNode(frag->getFirstChild())); - frag->release(); - doc->release(); - } - catch (XMLToolingException& e) { - TS_TRACE(e.what()); - doc->release(); - throw; - } - } - -}; +/* + * Copyright 2001-2005 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 + * + * 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 + +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; + 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() + ); + } + + void tearDown() { + delete m_resolver; + } + + void testEncryption() { + string path=data_path + "ComplexXMLObject.xml"; + ifstream fs(path.c_str()); + DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs); + TS_ASSERT(doc!=NULL); + + try { + Locker locker(m_resolver); + Encrypter encrypter; + Encrypter::EncryptionParams ep; + Encrypter::KeyEncryptionParams kep(DSIGConstants::s_unicodeStrURIRSA_1_5,m_resolver->getKey()); + auto_ptr encData(encrypter.encryptElement(doc->getDocumentElement(),ep,&kep)); + + string buf; + XMLHelper::serialize(encData->marshall(), buf); + 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()); + XMLHelper::serialize(static_cast(frag->getFirstChild()), buf); + //TS_TRACE(buf.c_str()); + TS_ASSERT(doc->getDocumentElement()->isEqualNode(frag->getFirstChild())); + frag->release(); + doc->release(); + } + catch (XMLToolingException& e) { + TS_TRACE(e.what()); + doc->release(); + throw; + } + } + +};