X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fbinding%2Fimpl%2FMessageEncoder.cpp;h=6799c8191aaf95ae7ee7f61392fe531f3106d06c;hb=26eda756f35b7ce3419fc3f508238a086b5b19a2;hp=c12aa2e73b24948ef6282ef9577cee3479792389;hpb=ceba6432d156e82a9016190c06ae4640c651a257;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/binding/impl/MessageEncoder.cpp b/saml/binding/impl/MessageEncoder.cpp index c12aa2e..6799c81 100644 --- a/saml/binding/impl/MessageEncoder.cpp +++ b/saml/binding/impl/MessageEncoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Internet2 + * 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. @@ -22,7 +22,7 @@ #include "internal.h" #include "binding/MessageEncoder.h" -#include "util/samlconstants.h" +#include "util/SAMLConstants.h" #include #include @@ -34,14 +34,18 @@ using namespace std; namespace opensaml { namespace saml1p { - SAML_DLLLOCAL PluginManager::Factory SAML1ArtifactEncoderFactory; - SAML_DLLLOCAL PluginManager::Factory SAML1POSTEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML1ArtifactEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML1POSTEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML1SOAPEncoderFactory; }; namespace saml2p { - SAML_DLLLOCAL PluginManager::Factory SAML2ArtifactEncoderFactory; - SAML_DLLLOCAL PluginManager::Factory SAML2POSTEncoderFactory; - SAML_DLLLOCAL PluginManager::Factory SAML2RedirectEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML2ArtifactEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML2POSTEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML2POSTSimpleSignEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML2RedirectEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML2SOAPEncoderFactory; + SAML_DLLLOCAL PluginManager< MessageEncoder,string,pair >::Factory SAML2ECPEncoderFactory; }; }; @@ -50,40 +54,11 @@ void SAML_API opensaml::registerMessageEncoders() SAMLConfig& conf=SAMLConfig::getConfig(); conf.MessageEncoderManager.registerFactory(samlconstants::SAML1_PROFILE_BROWSER_ARTIFACT, saml1p::SAML1ArtifactEncoderFactory); conf.MessageEncoderManager.registerFactory(samlconstants::SAML1_PROFILE_BROWSER_POST, saml1p::SAML1POSTEncoderFactory); + conf.MessageEncoderManager.registerFactory(samlconstants::SAML1_BINDING_SOAP, saml1p::SAML1SOAPEncoderFactory); conf.MessageEncoderManager.registerFactory(samlconstants::SAML20_BINDING_HTTP_ARTIFACT, saml2p::SAML2ArtifactEncoderFactory); conf.MessageEncoderManager.registerFactory(samlconstants::SAML20_BINDING_HTTP_POST, saml2p::SAML2POSTEncoderFactory); + conf.MessageEncoderManager.registerFactory(samlconstants::SAML20_BINDING_HTTP_POST_SIMPLESIGN, saml2p::SAML2POSTSimpleSignEncoderFactory); conf.MessageEncoderManager.registerFactory(samlconstants::SAML20_BINDING_HTTP_REDIRECT, saml2p::SAML2RedirectEncoderFactory); -} - -namespace { - class SAML_DLLLOCAL _addcert : public 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); - } - }; -}; - -Signature* MessageEncoder::buildSignature(const CredentialResolver* credResolver, const XMLCh* sigAlgorithm) const -{ - // Build a Signature. - Signature* sig = SignatureBuilder::buildSignature(); - if (sigAlgorithm) - sig->setSignatureAlgorithm(sigAlgorithm); - sig->setSigningKey(credResolver->getKey()); - - // Build KeyInfo. - const vector& certs = credResolver->getCertificates(); - if (!certs.empty()) { - KeyInfo* keyInfo=KeyInfoBuilder::buildKeyInfo(); - X509Data* x509Data=X509DataBuilder::buildX509Data(); - keyInfo->getX509Datas().push_back(x509Data); - for_each(certs.begin(),certs.end(),bind1st(_addcert(),x509Data)); - sig->setKeyInfo(keyInfo); - } - - return sig; + conf.MessageEncoderManager.registerFactory(samlconstants::SAML20_BINDING_SOAP, saml2p::SAML2SOAPEncoderFactory); + conf.MessageEncoderManager.registerFactory(samlconstants::SAML20_BINDING_PAOS, saml2p::SAML2ECPEncoderFactory); }