security/ct/BTTypes.h
author Alastor Wu <alwu@mozilla.com>
Tue, 05 Mar 2019 02:06:22 +0000
changeset 516285 dc39216dfad387efd439083045062e323869a428
parent 508163 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1530220 - part1 : allow some non-printalble keys as supported user gesture inputs to activate document. r=masayuki,cpearce a=lizzard `carriage return` and `space` are common keys which user might use to start media, so we should take account them as supported user gesture inputs. As their pseudo char code are zero, we have to check their key code in order to distinguish them from other controls keys such as shift, alt... Differential Revision: https://phabricator.services.mozilla.com/D21253

/* -*- 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