1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef NET_CERT_SIGNED_TREE_HEAD_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define NET_CERT_SIGNED_TREE_HEAD_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <string>
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <vector>
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/time/time.h"
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "net/base/hash_value.h"
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "net/base/net_export.h"
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "net/cert/signed_certificate_timestamp.h"
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace net {
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace ct {
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)static const uint8 kSthRootHashLength = 32;
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Signed Tree Head as defined in section 3.5. of RFC6962
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct NET_EXPORT SignedTreeHead {
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Version enum in RFC 6962, Section 3.2. Note that while in the current
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // RFC the STH and SCT share the versioning scheme, there are plans in
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // RFC6962-bis to use separate versions, so using a separate scheme here.
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  enum Version { V1 = 0, };
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  Version version;
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  base::Time timestamp;
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  uint64 tree_size;
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  char sha256_root_hash[kSthRootHashLength];
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DigitallySigned signature;
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace ct
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace net
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif
41