certificate_transparency.proto 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. syntax = "proto3";
  5. package chrome_browser_certificate_transparency;
  6. import "ct_timestamp.proto";
  7. option optimize_for = LITE_RUNTIME;
  8. // Represents the final state of a log at the time it was made read-only.
  9. message FinalTreeHead {
  10. // Size of the log at the time it was made read-only.
  11. uint64 tree_size = 1;
  12. // Root hash of the log (base64-encoded) at the time it was made read-only.
  13. string sha256_root_hash = 2;
  14. }
  15. message CTLog {
  16. // Human-readable description to identify log.
  17. string description = 1;
  18. // Public key of the log, as a DER-encoded ASN.1 SubjectPublicKeyInfo
  19. // structure, then encoded as base64
  20. // (https://tools.ietf.org/html/rfc5280#section-4.1.2.7).
  21. string key = 2;
  22. // The base64-encoded LogID found in SCTs issued by this log
  23. // (https://tools.ietf.org/html/rfc6962#section-3.2).
  24. string log_id = 3;
  25. // Maximum merge delay, in seconds. The log should not take longer than this
  26. // to incorporate a certificate.
  27. uint64 mmd_secs = 4;
  28. // URL of the log's HTTP API.
  29. string url = 5;
  30. message Interval {
  31. CTTimestamp start = 1;
  32. CTTimestamp end = 2;
  33. }
  34. // The log will only accept certificates that expire between those dates.
  35. // Start time is inclusive, end time is not inclusive.
  36. Interval temporal_interval = 6;
  37. enum Purpose {
  38. UNSET_PURPOSE = 0;
  39. PROD = 1;
  40. TEST = 2;
  41. }
  42. // Whether the log is for production purposes, or test only.
  43. Purpose purpose = 7;
  44. enum CurrentState {
  45. UNSET_STATE = 0;
  46. PENDING = 1;
  47. QUALIFIED = 2;
  48. USABLE = 3;
  49. READ_ONLY = 4;
  50. RETIRED = 5;
  51. REJECTED = 6;
  52. }
  53. message State {
  54. // Current state of the log.
  55. CurrentState current_state = 1;
  56. // Time at which the log entered this state.
  57. CTTimestamp state_start = 2;
  58. }
  59. // State history of the log. Inverse chronological order, first element should
  60. // be the current state.
  61. repeated State state = 8;
  62. message OperatorChange {
  63. // Name of the log operator.
  64. string name = 1;
  65. // Timestamp at which this operator started operating this log.
  66. CTTimestamp operator_start = 2;
  67. }
  68. // History of all log operators that have ever operated this log, including
  69. // the timestamp at which each started operating it. Inverse chronological
  70. // order, first element should be the current operator.
  71. repeated OperatorChange operator_history = 9;
  72. // State of the log at the time it was made read-only. Should only be set if
  73. // state is READ_ONLY.
  74. FinalTreeHead read_only_info = 16;
  75. }
  76. message LogOperator {
  77. // Name of this log operator.
  78. string name = 1;
  79. // Email addresses at which the log operator can be reached.
  80. repeated string email = 2;
  81. }
  82. message CTLogList {
  83. // Major version of the list, incremented any time there are changes in the
  84. // list, except for trivial (i.e. timestamp-only) changes.
  85. uint64 list_version_major = 1;
  86. // Minor version of the list, incremented any time the list is modified with
  87. // only trivial (i.e. timestamp-only) changes. Allows consumers to determine
  88. // the timestamp at which certain changes occur; for example, if a log is
  89. // rejected, a consumer can look at the minor version 1 of that major version
  90. // to determine at what timestamp that change was made.
  91. uint64 list_version_minor = 2;
  92. // Log list timestamp. This is meant to be used for freshness checks, and is
  93. // updated periodically regardless of whether the list contents' have changed.
  94. // Use list_version_major instead if monitoring for list contents' changes.
  95. CTTimestamp timestamp = 3;
  96. // Compatibility version, incremented if the list structure is changed in a
  97. // non-backwards-compatible way.
  98. uint64 compatibility_version = 4;
  99. // Contains all known log operators.
  100. repeated LogOperator operators = 5;
  101. // Contains all known logs.
  102. repeated CTLog logs = 6;
  103. }