projects
/
shibboleth
/
cpp-opensaml.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Settable digest algorithm, enhanced prefix handling in signatures, pending xmlsec...
[shibboleth/cpp-opensaml.git]
/
saml
/
saml1
/
binding
/
impl
/
SAML1POSTEncoder.cpp
diff --git
a/saml/saml1/binding/impl/SAML1POSTEncoder.cpp
b/saml/saml1/binding/impl/SAML1POSTEncoder.cpp
index
2a68bb4
..
6b4a7d4
100644
(file)
--- 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 "internal.h"
#include "exceptions.h"
#include "binding/MessageEncoder.h"
+#include "signature/ContentReference.h"
#include "saml1/core/Protocols.h"
#include <fstream>
#include "saml1/core/Protocols.h"
#include <fstream>
@@
-54,7
+55,8
@@
namespace opensaml {
const char* recipientID=NULL,
const char* relayState=NULL,
const Credential* credential=NULL,
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:
) const;
protected:
@@
-89,7
+91,8
@@
long SAML1POSTEncoder::encode(
const char* recipientID,
const char* relayState,
const Credential* credential,
const char* recipientID,
const char* relayState,
const Credential* credential,
- const XMLCh* sigAlgorithm
+ const XMLCh* signatureAlg,
+ const XMLCh* digestAlg
) const
{
#ifdef _DEBUG
) const
{
#ifdef _DEBUG
@@
-118,8
+121,13
@@
long SAML1POSTEncoder::encode(
// Build a Signature.
Signature* sig = SignatureBuilder::buildSignature();
response->setSignature(sig);
// 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<opensaml::ContentReference*>(sig->getContentReference());
+ if (cr)
+ cr->setDigestAlgorithm(digestAlg);
+ }
// Sign response while marshalling.
vector<Signature*> sigs(1,sig);
// Sign response while marshalling.
vector<Signature*> sigs(1,sig);