+XSECCryptoX509CRL* InlineKeyResolver::_resolveCRL(const KeyInfo* keyInfo) const\r
+{\r
+#ifdef _DEBUG\r
+ NDC ndc("_resolveCRL");\r
+#endif\r
+ Category& log=Category::getInstance(XMLTOOLING_LOGCAT".KeyResolver");\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<X509CRL*> x509CRLs=const_cast<const X509Data*>(*j)->getX509CRLs();\r
+ for (vector<X509CRL*>::const_iterator k=x509CRLs.begin(); k!=x509CRLs.end(); ++k) {\r
+ try {\r
+ auto_ptr_char x((*k)->getValue());\r
+ if (!x.get()) {\r
+ log.warn("skipping empty ds:X509CRL");\r
+ }\r
+ else {\r
+ log.debug("resolving ds:X509CRL");\r
+ auto_ptr<XSECCryptoX509CRL> crl(XMLToolingConfig::getConfig().X509CRL());\r
+ crl->loadX509CRLBase64Bin(x.get(), strlen(x.get()));\r
+ return crl.release();\r
+ }\r
+ }\r
+ catch(XSECException& e) {\r
+ auto_ptr_char temp(e.getMsg());\r
+ log.error("caught XML-Security exception loading certificate: %s", temp.get());\r
+ }\r
+ catch(XSECCryptoException& e) {\r
+ log.error("caught XML-Security exception loading certificate: %s", e.getMsg());\r
+ }\r
+ }\r
+ }\r
+ return NULL;\r
+}\r
+\r