\r
#include "internal.h"\r
#include "signature/CachingKeyResolver.h"\r
+#include "signature/KeyInfo.h"\r
#include "util/NDC.h"\r
#include "util/Threads.h"\r
+#include "util/XMLConstants.h"\r
+#include "validation/ValidatorSuite.h"\r
\r
-#include <algorithm>\r
#include <log4cpp/Category.hh>\r
#include <xercesc/util/XMLUniDefs.hpp>\r
#include <xsec/dsig/DSIGKeyInfoX509.hpp>\r
#endif\r
Category& log=Category::getInstance(XMLTOOLING_LOGCAT".KeyResolver");\r
\r
+ if (!keyInfo)\r
+ return NULL;\r
+\r
// Check for ds:X509Data\r
const vector<X509Data*>& x509Datas=keyInfo->getX509Datas();\r
for (vector<X509Data*>::const_iterator j=x509Datas.begin(); j!=x509Datas.end(); ++j) {\r
const vector<KeyValue*>& keyValues = keyInfo->getKeyValues();\r
for (vector<KeyValue*>::const_iterator i=keyValues.begin(); i!=keyValues.end(); ++i) {\r
try {\r
- KeyInfoSchemaValidators.validate(*i); // see if it's a "valid" key\r
+ SchemaValidators.validate(*i); // see if it's a "valid" key\r
RSAKeyValue* rsakv = (*i)->getRSAKeyValue();\r
if (rsakv) {\r
log.debug("resolving ds:RSAKeyValue");\r
#endif\r
Category& log=Category::getInstance(XMLTOOLING_LOGCAT".KeyResolver");\r
\r
+ if (!keyInfo)\r
+ return 0;\r
+\r
// Check for ds:X509Data\r
const vector<X509Data*>& x509Datas=keyInfo->getX509Datas();\r
for (vector<X509Data*>::const_iterator j=x509Datas.begin(); certs.empty() && j!=x509Datas.end(); ++j) {\r
#endif\r
Category& log=Category::getInstance(XMLTOOLING_LOGCAT".KeyResolver");\r
\r
+ if (!keyInfo)\r
+ return NULL;\r
+\r
// Check for ds:X509Data\r
const vector<X509Data*>& x509Datas=keyInfo->getX509Datas();\r
for (vector<X509Data*>::const_iterator j=x509Datas.begin(); j!=x509Datas.end(); ++j) {\r
NDC ndc("resolveKey");\r
#endif\r
\r
+ if (!keyInfo)\r
+ return NULL;\r
+\r
// Default resolver handles RSA/DSAKeyValue and X509Certificate elements.\r
try {\r
XSECKeyInfoResolverDefault def;\r
{\r
accessCertificates(certs).clear();\r
accessOwned(certs) = false;\r
+\r
+ if (!keyInfo)\r
+ return 0;\r
+\r
DSIGKeyInfoList::size_type sz = keyInfo->getSize();\r
for (DSIGKeyInfoList::size_type i=0; accessCertificates(certs).empty() && i<sz; ++i) {\r
if (keyInfo->item(i)->getKeyInfoType()==DSIGKeyInfo::KEYINFO_X509) {\r
NDC ndc("resolveCRL");\r
#endif\r
\r
+ if (!keyInfo)\r
+ return NULL;\r
+\r
DSIGKeyInfoList::size_type sz = keyInfo->getSize();\r
for (DSIGKeyInfoList::size_type i=0; i<sz; ++i) {\r
if (keyInfo->item(i)->getKeyInfoType()==DSIGKeyInfo::KEYINFO_X509) {\r