SimpleSigningRule(const DOMElement* e);
virtual ~SimpleSigningRule() {}
- void evaluate(const xmltooling::XMLObject& message, const GenericRequest* request, SecurityPolicy& policy) const;
+ const char* getType() const {
+ return SIMPLESIGNING_POLICY_RULE;
+ }
+ void evaluate(const XMLObject& message, const GenericRequest* request, SecurityPolicy& policy) const;
private:
// Appends a raw parameter=value pair to the string.
KeyInfo* keyInfo=NULL;
pch = request->getParameter("KeyInfo");
if (pch) {
- try {
- istringstream kstrm(pch);
- DOMDocument* doc = XMLToolingConfig::getConfig().getParser().parse(kstrm);
- XercesJanitor<DOMDocument> janitor(doc);
- XMLObject* kxml = XMLObjectBuilder::buildOneFromElement(doc->getDocumentElement(), true);
- janitor.release();
- if (!(keyInfo=dynamic_cast<KeyInfo*>(kxml)))
- delete kxml;
+ unsigned int x;
+ XMLByte* decoded=Base64::decode(reinterpret_cast<const XMLByte*>(pch),&x);
+ if (decoded) {
+ try {
+ istringstream kstrm(pch);
+ DOMDocument* doc = XMLToolingConfig::getConfig().getParser().parse(kstrm);
+ XercesJanitor<DOMDocument> janitor(doc);
+ XMLObject* kxml = XMLObjectBuilder::buildOneFromElement(doc->getDocumentElement(), true);
+ janitor.release();
+ if (!(keyInfo=dynamic_cast<KeyInfo*>(kxml)))
+ delete kxml;
+ }
+ catch (XMLToolingException& ex) {
+ log.warn("Failed to load KeyInfo from message: %s", ex.what());
+ }
}
- catch (XMLToolingException& ex) {
- log.warn("Failed to load KeyInfo from message: %s", ex.what());
+ else {
+ log.warn("Failed to load KeyInfo from message: Unable to decode base64-encoded KeyInfo.");
}
}
}
log.debug("signature verified against message issuer");
- policy.setSecure(true);
+ policy.setAuthenticated(true);
}