// Copyright 2014 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.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package safe_browsing;

// Everything below this comment was copied from the page
// <https://devsite.googleplex.com/safe-browsing/developers_guide_v3> ,
// section "HTTP Response for Data" under "Response Body".

// Chunk data encoding format for the shavar-proto list format.
message ChunkData {
  required int32 chunk_number = 1;

  // The chunk type is either an add or sub chunk.
  enum ChunkType {
    ADD = 0;
    SUB = 1;
  }
  optional ChunkType chunk_type = 2 [default = ADD];

  // Prefix type which currently is either 4B or 32B.  The default is set
  // to the prefix length, so it doesn't have to be set at all for most
  // chunks.
  enum PrefixType {
    PREFIX_4B = 0;
    FULL_32B = 1;
  }
  optional PrefixType prefix_type = 3 [default = PREFIX_4B];
  // Stores all SHA256 add or sub prefixes or full-length hashes. The number
  // of hashes can be inferred from the length of the hashes string and the
  // prefix type above.
  optional bytes hashes = 4;

  // Sub chunks also encode one add chunk number for every hash stored above.
  repeated int32 add_numbers = 5 [packed = true];
}