// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABILITY_METRICS_H_
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABILITY_METRICS_H_

#include <cstdint>
#include <cstring>
#include <type_traits>

#include "base/containers/span.h"
#include "third_party/blink/public/common/common_export.h"

namespace blink {

// IdentifiabilityDigestOfBytes, which is NOT a cryptographic hash function,
// takes a span of bytes as input and calculates a digest that can be used with
// identifiability metric reporting functions.
//
// The returned digest ...:
//
// * Is Stable: The returned digest will be consistent across different versions
//   of Chromium. Thus it can be persisted and meaningfully aggregated across
//   browser versions.
//
// * Is approximately uniformly distributed when the input is uniformly
//   distributed.
//
// * Is NOT optimized for any other distribution of input including narrow
//   integral ranges.
//
// * Is NOT collision resistant: Callers should assume that it is easy to come
//   up with collisions, and to come up with a pre-image given a digest.
//
// Note: This is NOT a cryptographic hash function.
BLINK_COMMON_EXPORT uint64_t
IdentifiabilityDigestOfBytes(base::span<const uint8_t> in);

// The zero-length digest, i.e. the digest computed for no bytes.
static constexpr uint64_t kIdentifiabilityDigestOfNoBytes =
    UINT64_C(0x9ae16a3b2f90404f);

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABILITY_METRICS_H_
