mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
|
// Copyright 2016 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_MERKLE_AUDIT_PROOF_H_
|
||
|
#define NET_CERT_MERKLE_AUDIT_PROOF_H_
|
||
|
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#include <string>
|
||
|
#include <vector>
|
||
|
|
||
|
#include "base/macros.h"
|
||
|
#include "net/base/net_export.h"
|
||
|
|
||
|
namespace net {
|
||
|
namespace ct {
|
||
|
|
||
|
// Returns the length of the audit path for a leaf at |leaf_index| in a Merkle
|
||
|
// tree containing |tree_size| leaves.
|
||
|
// The |leaf_index| must be less than the |tree_size|.
|
||
|
NET_EXPORT uint64_t CalculateAuditPathLength(uint64_t leaf_index,
|
||
|
uint64_t tree_size);
|
||
|
|
||
|
// Audit proof for a Merkle tree leaf, as defined in section 2.1.1. of RFC6962.
|
||
|
struct NET_EXPORT MerkleAuditProof {
|
||
|
MerkleAuditProof();
|
||
|
MerkleAuditProof(const MerkleAuditProof& other);
|
||
|
MerkleAuditProof(uint64_t leaf_index,
|
||
|
uint64_t tree_size,
|
||
|
const std::vector<std::string>& audit_path);
|
||
|
~MerkleAuditProof();
|
||
|
|
||
|
// Index of the tree leaf in the log.
|
||
|
// Must be provided when fetching the proof from the log.
|
||
|
uint64_t leaf_index = 0;
|
||
|
|
||
|
// The proof works only in conjunction with an STH for this tree size.
|
||
|
// Must be provided when fetching the proof from the log.
|
||
|
uint64_t tree_size = 0;
|
||
|
|
||
|
// Audit path nodes.
|
||
|
// Using the leaf hash and these nodes, the STH hash can be reconstructed to
|
||
|
// prove that leaf was included in the log's tree.
|
||
|
std::vector<std::string> nodes;
|
||
|
};
|
||
|
|
||
|
} // namespace ct
|
||
|
} // namespace net
|
||
|
|
||
|
#endif // NET_CERT_MERKLE_AUDIT_PROOF_H_
|