summaryrefslogtreecommitdiff
path: root/chromium/net/cert/sct_status_flags.h
blob: 86daa0c59253e6f7e144e42eaf12d0d7dbfa3e4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Copyright 2013 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 NET_CERT_SCT_STATUS_FLAGS_H_
#define NET_CERT_SCT_STATUS_FLAGS_H_

#include <stdint.h>

#include "net/base/net_export.h"

namespace net {

namespace ct {

// The possible verification statuses for a SignedCertificateTimestamp.
// Note: The numeric values are used within histograms and should not change
// or be re-assigned.
enum SCTVerifyStatus : uint32_t {
  // Not a real status, this just prevents a default int value from being
  // mis-interpreseted as a valid status.
  // Also used to count SCTs that cannot be decoded in the histogram.
  SCT_STATUS_NONE = 0,

  // The SCT is from an unknown log, so we cannot verify its signature.
  SCT_STATUS_LOG_UNKNOWN = 1,

  // Obsolete. Kept here to avoid reuse.
  // SCT_STATUS_INVALID = 2,

  // The SCT is from a known log, and the signature is valid.
  SCT_STATUS_OK = 3,

  // The SCT is from a known log, but the signature is invalid.
  SCT_STATUS_INVALID_SIGNATURE = 4,

  // The SCT is from a known log, but the timestamp is in the future.
  SCT_STATUS_INVALID_TIMESTAMP = 5,

  // Used to bound the enum values. Since this enum is passed over IPC,
  // the last value must be a valid one (rather than one past a valid one).
  SCT_STATUS_MAX = SCT_STATUS_INVALID_TIMESTAMP,
};

// Returns true if |status| denotes a valid value in SCTVerifyStatus, which
// is all current values in the enum except SCT_STATUS_NONE.
NET_EXPORT bool IsValidSCTStatus(uint32_t status);

}  // namespace ct

}  // namespace net

#endif  // NET_CERT_SCT_STATUS_FLAGS_H_