+ if (strlen(context) > m_storageCaps.getContextSize()) {
+ // This is a design/coding failure.
+ Category::getInstance(XMLTOOLING_LOGCAT".ReplayCache").error(
+ "context (%s) too long for StorageService (limit %u)", context, m_storageCaps.getContextSize()
+ );
+ return false;
+ }
+ else if (strlen(s) > m_storageCaps.getKeySize()) {
+ // This is something to work around with a hash.
+#ifndef XMLTOOLING_NO_XMLSEC
+ string h = SecurityHelper::doHash("SHA1", s, strlen(s));
+ // In storage already?
+ if (m_storage->readString(context, h.c_str()))
+ return false;
+ m_storage->createString(context, h.c_str(), "x", expires);
+ return true;
+#else
+ Category::getInstance(XMLTOOLING_LOGCAT".ReplayCache").error(
+ "key (%s) too long for StorageService (limit %u)", s, m_storageCaps.getKeySize()
+ );
+ return false;
+#endif
+ }
+