X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltoolingtest%2FEncryptionTest.h;h=3d6c79af268af29eb81ebb7960ca274a90a1daaa;hb=10f9e25bb2f29ec48303b02352166754157100e5;hp=77fc7af60e5bafc354bc0cd1dc16d2e784cb078d;hpb=085daff2d0c1d078f006f23808b4092130110eb9;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltoolingtest/EncryptionTest.h b/xmltoolingtest/EncryptionTest.h index 77fc7af..3d6c79a 100644 --- a/xmltoolingtest/EncryptionTest.h +++ b/xmltoolingtest/EncryptionTest.h @@ -18,6 +18,8 @@ #include #include +#include +#include #include #include @@ -26,16 +28,6 @@ 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: @@ -48,9 +40,11 @@ public: m_resolver = XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin( FILESYSTEM_CREDENTIAL_RESOLVER,doc->getDocumentElement() ); + XMLObjectBuilder::registerDefaultBuilder(new UnknownElementBuilder()); } void tearDown() { + XMLObjectBuilder::deregisterDefaultBuilder(); delete m_resolver; } @@ -61,22 +55,28 @@ public: TS_ASSERT(doc!=NULL); try { + CredentialCriteria cc; + cc.setUsage(CredentialCriteria::ENCRYPTION_CREDENTIAL); Locker locker(m_resolver); + const Credential* cred=m_resolver->resolve(&cc); + TSM_ASSERT("Retrieved credential was null", cred!=NULL); + 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()));