X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fbinding%2Fimpl%2FSAML2RedirectEncoder.cpp;h=937f8eaae9d20224ae47274ecf6285af16a880a4;hb=11cd3b15c71ee22f2818d810a17c213123e8c248;hp=c450177528661c4bb09e6797f086b83205b10e09;hpb=b7e3a0d516bca1b98d11c33a53f614bd1fb6f936;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/binding/impl/SAML2RedirectEncoder.cpp b/saml/saml2/binding/impl/SAML2RedirectEncoder.cpp index c450177..937f8ea 100644 --- a/saml/saml2/binding/impl/SAML2RedirectEncoder.cpp +++ b/saml/saml2/binding/impl/SAML2RedirectEncoder.cpp @@ -22,7 +22,6 @@ #include "internal.h" #include "exceptions.h" -#include "binding/HTTPResponse.h" #include "binding/MessageEncoder.h" #include "saml2/binding/SAML2Redirect.h" #include "saml2/core/Protocols.h" @@ -31,10 +30,12 @@ #include #include #include +#include #include #include using namespace opensaml::saml2p; +using namespace opensaml::saml2md; using namespace opensaml; using namespace xmlsignature; using namespace xmltooling; @@ -46,24 +47,29 @@ namespace opensaml { class SAML_DLLLOCAL SAML2RedirectEncoder : public MessageEncoder { public: - SAML2RedirectEncoder(const DOMElement* e) {} + SAML2RedirectEncoder() {} virtual ~SAML2RedirectEncoder() {} + + bool isCompact() const { + return true; + } long encode( GenericResponse& genericResponse, XMLObject* xmlObject, const char* destination, - const char* recipientID=NULL, + const EntityDescriptor* recipient=NULL, const char* relayState=NULL, + const ArtifactGenerator* artifactGenerator=NULL, const Credential* credential=NULL, const XMLCh* signatureAlg=NULL, const XMLCh* digestAlg=NULL ) const; }; - MessageEncoder* SAML_DLLLOCAL SAML2RedirectEncoderFactory(const DOMElement* const & e) + MessageEncoder* SAML_DLLLOCAL SAML2RedirectEncoderFactory(const pair& p) { - return new SAML2RedirectEncoder(e); + return new SAML2RedirectEncoder(); } }; }; @@ -72,8 +78,9 @@ long SAML2RedirectEncoder::encode( GenericResponse& genericResponse, XMLObject* xmlObject, const char* destination, - const char* recipientID, + const EntityDescriptor* recipient, const char* relayState, + const ArtifactGenerator* artifactGenerator, const Credential* credential, const XMLCh* signatureAlg, const XMLCh* digestAlg @@ -129,6 +136,8 @@ long SAML2RedirectEncoder::encode( xmlbuf = xmlbuf + "&RelayState=" + escaper->encode(relayState); if (credential) { + log.debug("signing the message"); + // Sign the query string after adding the algorithm. if (!signatureAlg) signatureAlg = DSIGConstants::s_unicodeStrURIRSA_SHA1; @@ -143,7 +152,7 @@ long SAML2RedirectEncoder::encode( // Generate redirect. log.debug("message encoded, sending redirect to client"); - xmlbuf.insert(0,1,(strchr(destination,'?') ? '&' : '?')); + xmlbuf.insert((string::size_type)0,(string::size_type)1,(strchr(destination,'?') ? '&' : '?')); xmlbuf.insert(0,destination); long ret = httpResponse->sendRedirect(xmlbuf.c_str());