*/\r
\r
#include "internal.h"\r
-#include "signature/KeyResolver.h"\r
+#include "signature/CachingKeyResolver.h"\r
#include "util/NDC.h"\r
#include "util/Threads.h"\r
\r
using namespace std;\r
\r
namespace xmlsignature {\r
- class XMLTOOL_DLLLOCAL InlineKeyResolver : public KeyResolver\r
+ class XMLTOOL_DLLLOCAL InlineKeyResolver : public CachingKeyResolver\r
{\r
public:\r
InlineKeyResolver(const DOMElement* e);\r
vector<XSECCryptoX509*>::size_type resolveCertificates(const KeyInfo* keyInfo, vector<XSECCryptoX509*>& certs) const;\r
vector<XSECCryptoX509*>::size_type resolveCertificates(DSIGKeyInfoList* keyInfo, vector<XSECCryptoX509*>& certs) const;\r
\r
+ void clearCache() {\r
+ if (m_lock)\r
+ m_lock->wrlock();\r
+ m_cache.clear();\r
+ if (m_lock)\r
+ m_lock->unlock();\r
+ }\r
+ \r
private:\r
struct XMLTOOL_DLLLOCAL CacheEntry {\r
CacheEntry() : m_key(NULL) {}\r
\r
InlineKeyResolver::~InlineKeyResolver()\r
{\r
- m_cache.clear();\r
+ clearCache();\r
delete m_lock;\r
}\r
\r