package safebrowsing;

// 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];
}