blob: 1a8428dc0f18baea684957693c271d74e40e2af7 [file]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SERVICES_NETWORK_ENTERPRISE_ENCRYPTION_ENCRYPTED_CACHE_ENTRY_HASHER_H_
#define SERVICES_NETWORK_ENTERPRISE_ENCRYPTION_ENCRYPTED_CACHE_ENTRY_HASHER_H_
#include <stdint.h>
#include "crypto/process_bound_string.h"
#include "net/disk_cache/cache_entry_hasher.h"
namespace network::enterprise_encryption {
// A CacheEntryHasher that uses a primary key to create salted hashes of cache
// keys. This prevents attackers from knowing the urls comparing against known
// url hash tables, as well as from creating hash collisions without knowing the
// primary key.
class EncryptedCacheEntryHasher : public disk_cache::CacheEntryHasher {
public:
explicit EncryptedCacheEntryHasher(crypto::ProcessBoundString primary_key);
EncryptedCacheEntryHasher(const EncryptedCacheEntryHasher&) = delete;
EncryptedCacheEntryHasher& operator=(const EncryptedCacheEntryHasher&) =
delete;
~EncryptedCacheEntryHasher() override;
// disk_cache::CacheEntryHasher:
uint64_t GetEntryHashKey(const std::string& key) const override;
private:
const crypto::ProcessBoundString primary_key_;
};
} // namespace network::enterprise_encryption
#endif // SERVICES_NETWORK_ENTERPRISE_ENCRYPTION_ENCRYPTED_CACHE_ENTRY_HASHER_H_