Diff
Modified: trunk/Source/WebKit2/ChangeLog (185499 => 185500)
--- trunk/Source/WebKit2/ChangeLog 2015-06-12 12:54:26 UTC (rev 185499)
+++ trunk/Source/WebKit2/ChangeLog 2015-06-12 12:58:36 UTC (rev 185500)
@@ -1,3 +1,24 @@
+2015-06-12 Antti Koivisto <[email protected]>
+
+ Network Cache: Use SHA1 for key hash
+ https://bugs.webkit.org/show_bug.cgi?id=143829
+
+ Reviewed by Anders Carlsson.
+
+ For consistency with blobs, use SHA1 instead of MD5.
+
+ * NetworkProcess/cache/NetworkCacheCoders.cpp:
+ (WebKit::NetworkCache::Coder<MD5::Digest>::encode): Deleted.
+ (WebKit::NetworkCache::Coder<MD5::Digest>::decode): Deleted.
+
+ No longer needed.
+
+ * NetworkProcess/cache/NetworkCacheCoders.h:
+ * NetworkProcess/cache/NetworkCacheKey.cpp:
+ (WebKit::NetworkCache::hashString):
+ (WebKit::NetworkCache::Key::computeHash):
+ * NetworkProcess/cache/NetworkCacheKey.h:
+
2015-06-12 Csaba Osztrogonác <[email protected]>
Fix mismatched-tags warning in Source/WebKit2/UIProcess/gtk/InputMethodFilter.h
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp (185499 => 185500)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp 2015-06-12 12:54:26 UTC (rev 185499)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp 2015-06-12 12:58:36 UTC (rev 185500)
@@ -166,16 +166,6 @@
return argumentDecoder.decode(certificateInfo);
}
-void Coder<MD5::Digest>::encode(Encoder& encoder, const MD5::Digest& digest)
-{
- encoder.encodeFixedLengthData(digest.data(), sizeof(digest));
-}
-
-bool Coder<MD5::Digest>::decode(Decoder& decoder, MD5::Digest& digest)
-{
- return decoder.decodeFixedLengthData(digest.data(), sizeof(digest));
-}
-
void Coder<SHA1::Digest>::encode(Encoder& encoder, const SHA1::Digest& digest)
{
encoder.encodeFixedLengthData(digest.data(), sizeof(digest));
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h (185499 => 185500)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h 2015-06-12 12:54:26 UTC (rev 185499)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h 2015-06-12 12:58:36 UTC (rev 185500)
@@ -35,7 +35,6 @@
#include <wtf/Forward.h>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
-#include <wtf/MD5.h>
#include <wtf/SHA1.h>
#include <wtf/Vector.h>
@@ -254,11 +253,6 @@
static bool decode(Decoder&, WebCore::CertificateInfo&);
};
-template<> struct Coder<MD5::Digest> {
- static void encode(Encoder&, const MD5::Digest&);
- static bool decode(Decoder&, MD5::Digest&);
-};
-
template<> struct Coder<SHA1::Digest> {
static void encode(Encoder&, const SHA1::Digest&);
static bool decode(Decoder&, SHA1::Digest&);
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheKey.cpp (185499 => 185500)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheKey.cpp 2015-06-12 12:54:26 UTC (rev 185499)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheKey.cpp 2015-06-12 12:58:36 UTC (rev 185500)
@@ -64,34 +64,33 @@
return *this;
}
-static void hashString(MD5& md5, const String& string)
+static void hashString(SHA1& sha1, const String& string)
{
- const uint8_t zero = 0;
-
if (string.isNull())
return;
if (string.is8Bit() && string.containsOnlyASCII()) {
- md5.addBytes(string.characters8(), string.length());
- md5.addBytes(&zero, 1);
+ const uint8_t nullByte = 0;
+ sha1.addBytes(string.characters8(), string.length());
+ sha1.addBytes(&nullByte, 1);
return;
}
auto cString = string.utf8();
- md5.addBytes(reinterpret_cast<const uint8_t*>(cString.data()), cString.length());
- md5.addBytes(&zero, 1);
+ // Include terminating null byte.
+ sha1.addBytes(reinterpret_cast<const uint8_t*>(cString.data()), cString.length() + 1);
}
Key::HashType Key::computeHash() const
{
// We don't really need a cryptographic hash. The key is always verified against the entry header.
- // MD5 just happens to be suitably sized, fast and available.
- MD5 md5;
- hashString(md5, m_method);
- hashString(md5, m_partition);
- hashString(md5, m_identifier);
- hashString(md5, m_range);
- MD5::Digest hash;
- md5.checksum(hash);
+ // SHA1 just happens to be suitably sized, fast and available.
+ SHA1 sha1;
+ hashString(sha1, m_method);
+ hashString(sha1, m_partition);
+ hashString(sha1, m_identifier);
+ hashString(sha1, m_range);
+ SHA1::Digest hash;
+ sha1.computeHash(hash);
return hash;
}
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheKey.h (185499 => 185500)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheKey.h 2015-06-12 12:54:26 UTC (rev 185499)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheKey.h 2015-06-12 12:58:36 UTC (rev 185500)
@@ -28,7 +28,7 @@
#if ENABLE(NETWORK_CACHE)
-#include <wtf/MD5.h>
+#include <wtf/SHA1.h>
#include <wtf/text/WTFString.h>
namespace WebKit {
@@ -39,7 +39,7 @@
class Key {
public:
- typedef MD5::Digest HashType;
+ typedef SHA1::Digest HashType;
Key() { }
Key(const Key&);
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp (185499 => 185500)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp 2015-06-12 12:54:26 UTC (rev 185499)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp 2015-06-12 12:58:36 UTC (rev 185500)
@@ -222,6 +222,8 @@
m_blobStorage.synchronize();
+ deleteEmptyRecordsDirectories(recordsPath());
+
LOG(NetworkCacheStorage, "(NetworkProcess) cache synchronization completed size=%zu count=%d", recordsSize, count);
});
}
@@ -859,8 +861,6 @@
}
});
- deleteEmptyRecordsDirectories(recordsPath);
-
RunLoop::main().dispatch([this] {
m_shrinkInProgress = false;
// We could synchronize during the shrink traversal. However this is fast and it is better to have just one code path.