X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml1%2Fbinding%2Fimpl%2FSAML1POSTEncoder.cpp;h=6b4a7d4370735094d44fed2a50d2e0c917dad4fa;hp=2a68bb46c6de0f2c03070de52957296eee2a069f;hb=f3a43f14f9dd53428f9e879bb489d6a4cf2674a8;hpb=38ec6425a33c32f3532a20aa85fd03f95f5ff472 diff --git a/saml/saml1/binding/impl/SAML1POSTEncoder.cpp b/saml/saml1/binding/impl/SAML1POSTEncoder.cpp index 2a68bb4..6b4a7d4 100644 --- a/saml/saml1/binding/impl/SAML1POSTEncoder.cpp +++ b/saml/saml1/binding/impl/SAML1POSTEncoder.cpp @@ -23,6 +23,7 @@ #include "internal.h" #include "exceptions.h" #include "binding/MessageEncoder.h" +#include "signature/ContentReference.h" #include "saml1/core/Protocols.h" #include @@ -54,7 +55,8 @@ namespace opensaml { const char* recipientID=NULL, const char* relayState=NULL, const Credential* credential=NULL, - const XMLCh* sigAlgorithm=NULL + const XMLCh* signatureAlg=NULL, + const XMLCh* digestAlg=NULL ) const; protected: @@ -89,7 +91,8 @@ long SAML1POSTEncoder::encode( const char* recipientID, const char* relayState, const Credential* credential, - const XMLCh* sigAlgorithm + const XMLCh* signatureAlg, + const XMLCh* digestAlg ) const { #ifdef _DEBUG @@ -118,8 +121,13 @@ long SAML1POSTEncoder::encode( // Build a Signature. Signature* sig = SignatureBuilder::buildSignature(); response->setSignature(sig); - if (sigAlgorithm) - sig->setSignatureAlgorithm(sigAlgorithm); + if (signatureAlg) + sig->setSignatureAlgorithm(signatureAlg); + if (digestAlg) { + opensaml::ContentReference* cr = dynamic_cast(sig->getContentReference()); + if (cr) + cr->setDigestAlgorithm(digestAlg); + } // Sign response while marshalling. vector sigs(1,sig);