diff options
Diffstat (limited to 'security/ct/BTTypes.h')
-rw-r--r-- | security/ct/BTTypes.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/security/ct/BTTypes.h b/security/ct/BTTypes.h new file mode 100644 index 0000000000..aa16072150 --- /dev/null +++ b/security/ct/BTTypes.h @@ -0,0 +1,64 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BTTypes_h +#define BTTypes_h + +#include <vector> + +#include "Buffer.h" + +namespace mozilla { +namespace ct { + +// Represents a Merkle inclusion proof for purposes of serialization, +// deserialization, and verification of the proof. The format for inclusion +// proofs in RFC 6962-bis is as follows: +// +// opaque LogID<2..127>; +// opaque NodeHash<32..2^8-1>; +// +// struct { +// LogID log_id; +// uint64 tree_size; +// uint64 leaf_index; +// NodeHash inclusion_path<1..2^16-1>; +// } InclusionProofDataV2; + +struct InclusionProofDataV2 { + Buffer logId; + uint64_t treeSize; + uint64_t leafIndex; + std::vector<Buffer> inclusionPath; +}; + +// Represents a Signed Tree Head as per RFC 6962-bis. All extensions are +// ignored. The signature field covers the data in the tree_head field. +// +// struct { +// LogID log_id; +// TreeHeadDataV2 tree_head; +// opaque signature<0..2^16-1>; +// } SignedTreeHeadDataV2; +// +// struct { +// uint64 timestamp; +// uint64 tree_size; +// NodeHash root_hash; +// Extension sth_extensions<0..2^16-1>; +// } TreeHeadDataV2; + +struct SignedTreeHeadDataV2 { + Buffer logId; + uint64_t timestamp; + uint64_t treeSize; + Buffer rootHash; +}; + +} // namespace ct +} // namespace mozilla + +#endif // BTTypes_h |