Skip to content

Commit 1e5968a

Browse files
committed
Add accumulated log entry type
1 parent 6b34c98 commit 1e5968a

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

draft-ietf-plants-merkle-tree-certs.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -922,14 +922,25 @@ Each entry in the log is a MerkleTreeCertEntry, defined with the TLS presentatio
922922
struct {} Empty;
923923

924924
enum {
925-
null_entry(0), tbs_cert_entry(1), (2^16-1)
925+
null_entry(0), tbs_cert_entry(1), accumulated(2), (2^16-1)
926926
} MerkleTreeCertEntryType;
927927

928+
enum {
929+
(2^16-1)
930+
} AccumulatedType;
931+
928932
struct {
933+
uint64 accumulated_count;
929934
MerkleTreeCertEntryType type;
930935
select (type) {
931936
case null_entry: Empty;
937+
932938
case tbs_cert_entry: opaque tbs_cert_entry_data[N];
939+
940+
case accumulated:
941+
AccumulatedType accumulated_type;
942+
select(accumulated_type) {}
943+
933944
/* May be extended with future types. */
934945
}
935946
} MerkleTreeCertEntry;
@@ -969,6 +980,8 @@ The fields of a TBSCertificateLogEntry are defined as follows:
969980

970981
Note the subject's public key algorithm is incorporated into both `subjectPublicKeyAlgorithm` and `subjectPublicKeyInfoHash`.
971982

983+
When `type` is `accumulated`, the entry may contain metadata and other operational information that accumulates over the lifetime of the log. For example, future documents may define a new value for `AccumulatedType` that contains pointers to cryptographically secure indices of the log's contents. The `accumulated_count` field is populated for every log entry to contain the total number of `accumulated` log entries, counting the current log entry if it is also has an `accumulated` type.
984+
972985
MerkleTreeCertEntry is an extensible structure. Future documents may define new values for MerkleTreeCertEntryType, with corresponding semantics. See {{certification-authority-cosigners}} and {{new-log-entry-types}} for additional discussion.
973986

974987
## Cosigners
@@ -1177,11 +1190,12 @@ struct {
11771190
uint64 start;
11781191
uint64 end;
11791192
HashValue inclusion_proof<0..2^16-1>;
1193+
uint64 accumulated_count;
11801194
MTCSignature signatures<0..2^16-1>;
11811195
} MTCProof;
11821196
~~~
11831197

1184-
`start` and `end` MUST contain the corresponding parameters of the chosen subtree. `inclusion_proof` MUST contain a subtree inclusion proof ({{subtree-inclusion-proofs}}) for the log entry and the subtree. `signatures` contains the chosen subtree signatures. In each signature, `cosigner_id` contains the cosigner ID ({{cosigners}}) in its binary representation ({{Section 3 of !I-D.ietf-tls-trust-anchor-ids}}), and `signature` contains the signature value as described in {{signature-format}}.
1198+
`start` and `end` MUST contain the corresponding parameters of the chosen subtree. `inclusion_proof` MUST contain a subtree inclusion proof ({{subtree-inclusion-proofs}}) for the log entry and the subtree. `accumulated_count` contains the `accumulated_count` from the leaf MerkleTreeCertEntry. `signatures` contains the chosen subtree signatures. In each signature, `cosigner_id` contains the cosigner ID ({{cosigners}}) in its binary representation ({{Section 3 of !I-D.ietf-tls-trust-anchor-ids}}), and `signature` contains the signature value as described in {{signature-format}}.
11851199

11861200
The MTCProof is encoded into the `signatureValue` with no additional ASN.1 wrapping. The most significant bit of the first octet of the signature value SHALL become the first bit of the bit string, and so on through the least significant bit of the last octet of the signature value, which SHALL become the last bit of the bit string.
11871201

0 commit comments

Comments
 (0)