auto_ptr<Credential> cred (getKeyInfoResolver()->resolve(k, Credential::RESOLVE_KEYS));\r
if (cred.get()) {\r
dest.push_back(string());\r
- dest.back() = SecurityHelper::getDEREncoding(*cred.get());\r
+ dest.back() = SecurityHelper::getDEREncoding(*cred.get(), m_hash);\r
if (dest.back().empty())\r
dest.pop_back();\r
}\r
return m_keyInfoResolver ? m_keyInfoResolver : XMLToolingConfig::getConfig().getKeyInfoResolver();\r
}\r
\r
+ bool m_hash;\r
KeyInfoResolver* m_keyInfoResolver;\r
};\r
\r
}\r
\r
static const XMLCh _KeyInfoResolver[] = UNICODE_LITERAL_15(K,e,y,I,n,f,o,R,e,s,o,l,v,e,r);\r
- static const XMLCh type[] = UNICODE_LITERAL_4(t,y,p,e);\r
+ static const XMLCh _hash[] = UNICODE_LITERAL_4(h,a,s,h);\r
+ static const XMLCh _type[] = UNICODE_LITERAL_4(t,y,p,e);\r
};\r
\r
-KeyInfoAttributeDecoder::KeyInfoAttributeDecoder(const DOMElement* e) : AttributeDecoder(e), m_keyInfoResolver(NULL) {\r
+KeyInfoAttributeDecoder::KeyInfoAttributeDecoder(const DOMElement* e) : AttributeDecoder(e), m_hash(false), m_keyInfoResolver(NULL) {\r
+ const XMLCh* flag = e ? e->getAttributeNS(NULL, _hash) : NULL;\r
+ m_hash = (flag && (*flag == chLatin_t || *flag == chDigit_1));\r
e = e ? XMLHelper::getFirstChildElement(e,_KeyInfoResolver) : NULL;\r
if (e) {\r
- auto_ptr_char t(e->getAttributeNS(NULL,type));\r
+ auto_ptr_char t(e->getAttributeNS(NULL, _type));\r
if (t.get() && *t.get())\r
m_keyInfoResolver = XMLToolingConfig::getConfig().KeyInfoResolverManager.newPlugin(t.get(), e);\r
else\r