Changeset 185513 in webkit


Ignore:
Timestamp:
Jun 12, 2015 10:43:31 AM (9 years ago)
Author:
Antti Koivisto
Message:

Network Cache: Use SHA1 for header checksum
https://bugs.webkit.org/show_bug.cgi?id=145928

Reviewed by Chris Dumez.

Use SHA1 everywhere for consistency and robustness.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::bodyPathForKey):
(WebKit::NetworkCache::RecordMetaData::RecordMetaData):
(WebKit::NetworkCache::decodeRecordMetaData):
(WebKit::NetworkCache::decodeRecordHeader):
(WebKit::NetworkCache::encodeRecordMetaData):
(WebKit::NetworkCache::Storage::encodeRecord):
(WebKit::NetworkCache::hashData): Deleted.

This was the last user of 32 bit hashes in cache code.

  • NetworkProcess/cache/NetworkCacheStorage.h:

Also bump the cache version number as recent changes have changed the format.
Old caches would transition fine but this makes it easier to identify which version user has.

Location:
trunk/Source/WebKit2
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r185511 r185513  
     12015-06-12  Antti Koivisto  <antti@apple.com>
     2
     3        Network Cache: Use SHA1 for header checksum
     4        https://bugs.webkit.org/show_bug.cgi?id=145928
     5
     6        Reviewed by Chris Dumez.
     7
     8        Use SHA1 everywhere for consistency and robustness.
     9
     10        * NetworkProcess/cache/NetworkCacheStorage.cpp:
     11        (WebKit::NetworkCache::Storage::bodyPathForKey):
     12        (WebKit::NetworkCache::RecordMetaData::RecordMetaData):
     13        (WebKit::NetworkCache::decodeRecordMetaData):
     14        (WebKit::NetworkCache::decodeRecordHeader):
     15        (WebKit::NetworkCache::encodeRecordMetaData):
     16        (WebKit::NetworkCache::Storage::encodeRecord):
     17        (WebKit::NetworkCache::hashData): Deleted.
     18
     19            This was the last user of 32 bit hashes in cache code.
     20
     21        * NetworkProcess/cache/NetworkCacheStorage.h:
     22
     23            Also bump the cache version number as recent changes have changed the format.
     24            Old caches would transition fine but this makes it easier to identify which version user has.
     25
    1262015-06-12  Simon Fraser  <simon.fraser@apple.com>
    227
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp

    r185500 r185513  
    3333#include "NetworkCacheFileSystem.h"
    3434#include "NetworkCacheIOChannel.h"
    35 #include <wtf/PageBlock.h>
    3635#include <wtf/RandomNumber.h>
    3736#include <wtf/RunLoop.h>
     
    273272}
    274273
    275 static unsigned hashData(const Data& data)
    276 {
    277     StringHasher hasher;
    278     data.apply([&hasher](const uint8_t* data, size_t size) {
    279         hasher.addCharacters(data, size);
    280         return true;
    281     });
    282     return hasher.hash();
    283 }
    284 
    285274struct RecordMetaData {
    286275    RecordMetaData() { }
     
    294283    // FIXME: Add encoder/decoder for time_point.
    295284    std::chrono::milliseconds epochRelativeTimeStamp;
    296     unsigned headerChecksum;
    297     uint64_t headerOffset;
     285    SHA1::Digest headerHash;
    298286    uint64_t headerSize;
    299287    SHA1::Digest bodyHash;
    300288    uint64_t bodySize;
    301289    bool isBodyInline;
     290
     291    // Not encoded as a field. Header starts immediately after meta data.
     292    uint64_t headerOffset;
    302293};
    303294
     
    313304        if (!decoder.decode(metaData.epochRelativeTimeStamp))
    314305            return false;
    315         if (!decoder.decode(metaData.headerChecksum))
     306        if (!decoder.decode(metaData.headerHash))
    316307            return false;
    317308        if (!decoder.decode(metaData.headerSize))
     
    345336
    346337    headerData = fileData.subrange(metaData.headerOffset, metaData.headerSize);
    347     if (metaData.headerChecksum != hashData(headerData)) {
     338    if (metaData.headerHash != computeSHA1(headerData)) {
    348339        LOG(NetworkCacheStorage, "(NetworkProcess) header checksum mismatch");
    349340        return false;
     
    395386    encoder << metaData.key;
    396387    encoder << metaData.epochRelativeTimeStamp;
    397     encoder << metaData.headerChecksum;
     388    encoder << metaData.headerHash;
    398389    encoder << metaData.headerSize;
    399390    encoder << metaData.bodyHash;
     
    437428    RecordMetaData metaData(record.key);
    438429    metaData.epochRelativeTimeStamp = std::chrono::duration_cast<std::chrono::milliseconds>(record.timeStamp.time_since_epoch());
    439     metaData.headerChecksum = hashData(record.header);
     430    metaData.headerHash = computeSHA1(record.header);
    440431    metaData.headerSize = record.header.size();
    441432    metaData.bodyHash = blob ? blob.value().hash : computeSHA1(record.body);
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h

    r185452 r185513  
    8585    size_t approximateSize() const;
    8686
    87     static const unsigned version = 3;
     87    static const unsigned version = 4;
    8888
    8989    String basePath() const;
Note: See TracChangeset for help on using the changeset viewer.