package client
import "github.com/google/trillian/client"
Package client verifies responses from the Trillian log.
Index ¶
- func CreateAndInitTree( ctx context.Context, req *trillian.CreateTreeRequest, adminClient trillian.TrillianAdminClient, mapClient trillian.TrillianMapClient, logClient trillian.TrillianLogClient) (*trillian.Tree, error)
- func InitLog(ctx context.Context, tree *trillian.Tree, logClient trillian.TrillianLogClient) error
- func InitMap(ctx context.Context, tree *trillian.Tree, mapClient trillian.TrillianMapClient) error
- type LogClient
- func New(logID int64, client trillian.TrillianLogClient, verifier LogVerifier) *LogClient
- func NewFromTree(client trillian.TrillianLogClient, config *trillian.Tree) (*LogClient, error)
- func (c *LogClient) AddLeaf(ctx context.Context, data []byte) error
- func (c *LogClient) GetAndVerifyInclusionAtIndex(ctx context.Context, data []byte, index int64) error
- func (c *LogClient) GetByIndex(ctx context.Context, index int64) (*trillian.LogLeaf, error)
- func (c *LogClient) ListByIndex(ctx context.Context, start, count int64) ([]*trillian.LogLeaf, error)
- func (c *LogClient) QueueLeaf(ctx context.Context, data []byte) error
- func (c *LogClient) UpdateRoot(ctx context.Context) (*trillian.SignedLogRoot, error)
- func (c *LogClient) VerifyInclusion(ctx context.Context, data []byte) error
- func (c *LogClient) WaitForInclusion(ctx context.Context, data []byte) error
- func (c *LogClient) WaitForRootUpdate(ctx context.Context, waitForTreeSize int64) (*trillian.SignedLogRoot, error)
- type LogVerifier
- func NewLogVerifier(hasher hashers.LogHasher, pubKey crypto.PublicKey) LogVerifier
- func NewLogVerifierFromTree(config *trillian.Tree) (LogVerifier, error)
- type MapVerifier
- func NewMapVerifierFromTree(config *trillian.Tree) (*MapVerifier, error)
- func (m *MapVerifier) VerifyMapLeafInclusion(smr *trillian.SignedMapRoot, leafProof *trillian.MapLeafInclusion) error
- func (m *MapVerifier) VerifySignedMapRoot(smr *trillian.SignedMapRoot) error
- type MockLogClient
- func (c *MockLogClient) AddSequencedLeaf(ctx context.Context, in *trillian.AddSequencedLeafRequest, opts ...grpc.CallOption) (*trillian.AddSequencedLeafResponse, error)
- func (c *MockLogClient) AddSequencedLeaves(ctx context.Context, in *trillian.AddSequencedLeavesRequest, opts ...grpc.CallOption) (*trillian.AddSequencedLeavesResponse, error)
- func (c *MockLogClient) GetConsistencyProof(ctx context.Context, in *trillian.GetConsistencyProofRequest, opts ...grpc.CallOption) (*trillian.GetConsistencyProofResponse, error)
- func (c *MockLogClient) GetEntryAndProof(ctx context.Context, in *trillian.GetEntryAndProofRequest, opts ...grpc.CallOption) (*trillian.GetEntryAndProofResponse, error)
- func (c *MockLogClient) GetInclusionProof(ctx context.Context, in *trillian.GetInclusionProofRequest, opts ...grpc.CallOption) (*trillian.GetInclusionProofResponse, error)
- func (c *MockLogClient) GetInclusionProofByHash(ctx context.Context, in *trillian.GetInclusionProofByHashRequest, opts ...grpc.CallOption) (*trillian.GetInclusionProofByHashResponse, error)
- func (c *MockLogClient) GetLatestSignedLogRoot(ctx context.Context, in *trillian.GetLatestSignedLogRootRequest, opts ...grpc.CallOption) (*trillian.GetLatestSignedLogRootResponse, error)
- func (c *MockLogClient) GetLeavesByHash(ctx context.Context, in *trillian.GetLeavesByHashRequest, opts ...grpc.CallOption) (*trillian.GetLeavesByHashResponse, error)
- func (c *MockLogClient) GetLeavesByIndex(ctx context.Context, in *trillian.GetLeavesByIndexRequest, opts ...grpc.CallOption) (*trillian.GetLeavesByIndexResponse, error)
- func (c *MockLogClient) GetLeavesByRange(ctx context.Context, in *trillian.GetLeavesByRangeRequest, opts ...grpc.CallOption) (*trillian.GetLeavesByRangeResponse, error)
- func (c *MockLogClient) GetSequencedLeafCount(ctx context.Context, in *trillian.GetSequencedLeafCountRequest, opts ...grpc.CallOption) (*trillian.GetSequencedLeafCountResponse, error)
- func (c *MockLogClient) InitLog(ctx context.Context, in *trillian.InitLogRequest, opts ...grpc.CallOption) (*trillian.InitLogResponse, error)
- func (c *MockLogClient) QueueLeaf(ctx context.Context, in *trillian.QueueLeafRequest, opts ...grpc.CallOption) (*trillian.QueueLeafResponse, error)
- func (c *MockLogClient) QueueLeaves(ctx context.Context, in *trillian.QueueLeavesRequest, opts ...grpc.CallOption) (*trillian.QueueLeavesResponse, error)
- type VerifyingLogClient
Functions ¶
func CreateAndInitTree ¶
func CreateAndInitTree( ctx context.Context, req *trillian.CreateTreeRequest, adminClient trillian.TrillianAdminClient, mapClient trillian.TrillianMapClient, logClient trillian.TrillianLogClient) (*trillian.Tree, error)
CreateAndInitTree uses the adminClient and mapClient to create the tree described by req. If req describes a MAP tree, then this function will also call the InitMap function using mapClient. Internally, the function will continue to retry failed requests until either the tree is created (and if necessary, initialised) successfully, or ctx is cancelled.
func InitLog ¶
InitLog initialises a freshly created Log tree.
func InitMap ¶
InitMap initialises a freshly created Map tree.
Types ¶
type LogClient ¶
type LogClient struct { LogVerifier LogID int64 // contains filtered or unexported fields }
LogClient represents a client for a given Trillian log instance.
func New ¶
func New(logID int64, client trillian.TrillianLogClient, verifier LogVerifier) *LogClient
New returns a new LogClient.
func NewFromTree ¶
NewFromTree creates a new LogClient given a tree config.
func (*LogClient) AddLeaf ¶
AddLeaf adds leaf to the append only log. Blocks until it gets a verifiable response.
func (*LogClient) GetAndVerifyInclusionAtIndex ¶
func (c *LogClient) GetAndVerifyInclusionAtIndex(ctx context.Context, data []byte, index int64) error
GetAndVerifyInclusionAtIndex updates the log root and ensures that the given leaf data has been included in the log at a particular index.
func (*LogClient) GetByIndex ¶
GetByIndex returns a single leaf at the requested index.
func (*LogClient) ListByIndex ¶
func (c *LogClient) ListByIndex(ctx context.Context, start, count int64) ([]*trillian.LogLeaf, error)
ListByIndex returns the requested leaves by index.
func (*LogClient) QueueLeaf ¶
QueueLeaf adds a leaf to a Trillian log without blocking. AlreadyExists is considered a success case by this function.
func (*LogClient) UpdateRoot ¶
UpdateRoot retrieves the current SignedLogRoot, verifying it against roots this client has seen in the past, and updating the currently trusted root if the new root verifies.
func (*LogClient) VerifyInclusion ¶
VerifyInclusion updates the log root and ensures that the given leaf data has been included in the log.
func (*LogClient) WaitForInclusion ¶
WaitForInclusion blocks until the requested data has been verified with an inclusion proof. This assumes that the data has already been submitted. Best practice is to call this method with a context that will timeout.
func (*LogClient) WaitForRootUpdate ¶
func (c *LogClient) WaitForRootUpdate(ctx context.Context, waitForTreeSize int64) (*trillian.SignedLogRoot, error)
WaitForRootUpdate repeatedly fetches the Root until the fetched tree size >= waitForTreeSize or until ctx times out.
type LogVerifier ¶
type LogVerifier interface { // VerifyRoot verifies that newRoot is a valid append-only operation from trusted. // If trusted.TreeSize is zero, an append-only proof is not needed. VerifyRoot(trusted, newRoot *trillian.SignedLogRoot, consistency [][]byte) error // VerifyInclusionAtIndex verifies that the inclusion proof for data at index matches // the currently trusted root. The inclusion proof must be requested for Root().TreeSize. VerifyInclusionAtIndex(trusted *trillian.SignedLogRoot, data []byte, leafIndex int64, proof [][]byte) error // VerifyInclusionByHash verifies the inclusion proof for data VerifyInclusionByHash(trusted *trillian.SignedLogRoot, leafHash []byte, proof *trillian.Proof) error // BuildLeaf runs the leaf hasher over data and builds a leaf. BuildLeaf(data []byte) (*trillian.LogLeaf, error) }
LogVerifier verifies responses from a Trillian Log.
func NewLogVerifier ¶
func NewLogVerifier(hasher hashers.LogHasher, pubKey crypto.PublicKey) LogVerifier
NewLogVerifier returns an object that can verify output from Trillian Logs.
func NewLogVerifierFromTree ¶
func NewLogVerifierFromTree(config *trillian.Tree) (LogVerifier, error)
NewLogVerifierFromTree creates a new LogVerifier using the algorithms specified by *trillian.Tree.
type MapVerifier ¶
MapVerifier verifies protos produced by the Trillian Map.
func NewMapVerifierFromTree ¶
func NewMapVerifierFromTree(config *trillian.Tree) (*MapVerifier, error)
NewMapVerifierFromTree creates a new MapVerifier.
func (*MapVerifier) VerifyMapLeafInclusion ¶
func (m *MapVerifier) VerifyMapLeafInclusion(smr *trillian.SignedMapRoot, leafProof *trillian.MapLeafInclusion) error
VerifyMapLeafInclusion verifies a MapLeafInclusion response.
func (*MapVerifier) VerifySignedMapRoot ¶
func (m *MapVerifier) VerifySignedMapRoot(smr *trillian.SignedMapRoot) error
VerifySignedMapRoot verifies the signature on the SignedMapRoot.
type MockLogClient ¶
type MockLogClient struct {
// contains filtered or unexported fields
}
MockLogClient supports applying mutations to the return values of the TrillianLogClient
func (*MockLogClient) AddSequencedLeaf ¶
func (c *MockLogClient) AddSequencedLeaf(ctx context.Context, in *trillian.AddSequencedLeafRequest, opts ...grpc.CallOption) (*trillian.AddSequencedLeafResponse, error)
AddSequencedLeaf forwards requests.
func (*MockLogClient) AddSequencedLeaves ¶
func (c *MockLogClient) AddSequencedLeaves(ctx context.Context, in *trillian.AddSequencedLeavesRequest, opts ...grpc.CallOption) (*trillian.AddSequencedLeavesResponse, error)
AddSequencedLeaves forwards requests.
func (*MockLogClient) GetConsistencyProof ¶
func (c *MockLogClient) GetConsistencyProof(ctx context.Context, in *trillian.GetConsistencyProofRequest, opts ...grpc.CallOption) (*trillian.GetConsistencyProofResponse, error)
GetConsistencyProof forwards requests and optionally corrupts responses.
func (*MockLogClient) GetEntryAndProof ¶
func (c *MockLogClient) GetEntryAndProof(ctx context.Context, in *trillian.GetEntryAndProofRequest, opts ...grpc.CallOption) (*trillian.GetEntryAndProofResponse, error)
GetEntryAndProof forwards requests.
func (*MockLogClient) GetInclusionProof ¶
func (c *MockLogClient) GetInclusionProof(ctx context.Context, in *trillian.GetInclusionProofRequest, opts ...grpc.CallOption) (*trillian.GetInclusionProofResponse, error)
GetInclusionProof forwards requests and optionally corrupts the response.
func (*MockLogClient) GetInclusionProofByHash ¶
func (c *MockLogClient) GetInclusionProofByHash(ctx context.Context, in *trillian.GetInclusionProofByHashRequest, opts ...grpc.CallOption) (*trillian.GetInclusionProofByHashResponse, error)
GetInclusionProofByHash forwards requests and optionaly corrupts responses.
func (*MockLogClient) GetLatestSignedLogRoot ¶
func (c *MockLogClient) GetLatestSignedLogRoot(ctx context.Context, in *trillian.GetLatestSignedLogRootRequest, opts ...grpc.CallOption) (*trillian.GetLatestSignedLogRootResponse, error)
GetLatestSignedLogRoot forwards requests.
func (*MockLogClient) GetLeavesByHash ¶
func (c *MockLogClient) GetLeavesByHash(ctx context.Context, in *trillian.GetLeavesByHashRequest, opts ...grpc.CallOption) (*trillian.GetLeavesByHashResponse, error)
GetLeavesByHash forwards requests.
func (*MockLogClient) GetLeavesByIndex ¶
func (c *MockLogClient) GetLeavesByIndex(ctx context.Context, in *trillian.GetLeavesByIndexRequest, opts ...grpc.CallOption) (*trillian.GetLeavesByIndexResponse, error)
GetLeavesByIndex forwards requests.
func (*MockLogClient) GetLeavesByRange ¶
func (c *MockLogClient) GetLeavesByRange(ctx context.Context, in *trillian.GetLeavesByRangeRequest, opts ...grpc.CallOption) (*trillian.GetLeavesByRangeResponse, error)
GetLeavesByRange forwards requests.
func (*MockLogClient) GetSequencedLeafCount ¶
func (c *MockLogClient) GetSequencedLeafCount(ctx context.Context, in *trillian.GetSequencedLeafCountRequest, opts ...grpc.CallOption) (*trillian.GetSequencedLeafCountResponse, error)
GetSequencedLeafCount forwards requests.
func (*MockLogClient) InitLog ¶
func (c *MockLogClient) InitLog(ctx context.Context, in *trillian.InitLogRequest, opts ...grpc.CallOption) (*trillian.InitLogResponse, error)
InitLog forwards requests.
func (*MockLogClient) QueueLeaf ¶
func (c *MockLogClient) QueueLeaf(ctx context.Context, in *trillian.QueueLeafRequest, opts ...grpc.CallOption) (*trillian.QueueLeafResponse, error)
QueueLeaf forwards requests.
func (*MockLogClient) QueueLeaves ¶
func (c *MockLogClient) QueueLeaves(ctx context.Context, in *trillian.QueueLeavesRequest, opts ...grpc.CallOption) (*trillian.QueueLeavesResponse, error)
QueueLeaves forwards requests.
type VerifyingLogClient ¶
type VerifyingLogClient interface { // AddLeaf adds data to the Trillian Log and blocks until an inclusion proof // is available. If no proof is available within the ctx deadline, DeadlineExceeded // is returned. AddLeaf(ctx context.Context, data []byte) error // VerifyInclusion ensures that data has been included in the log // via an inclusion proof. VerifyInclusion(ctx context.Context, data []byte) error // VerifyInclusionAtIndex ensures that data has been included in the log // via in inclusion proof for a particular index. VerifyInclusionAtIndex(ctx context.Context, data []byte, index int64) error // UpdateRoot fetches and verifies the current SignedTreeRoot. // It checks signatures as well as consistency proofs from the last-seen root. UpdateRoot(ctx context.Context) error // Root provides the last root obtained by UpdateRoot. Root() trillian.SignedLogRoot // GetByIndex returns a single leaf. Does not verify the leaf's inclusion proof. GetByIndex(ctx context.Context, index int64) (*trillian.LogLeaf, error) // ListByIndex returns a contiguous range. Does not verify the leaf's inclusion proof. ListByIndex(ctx context.Context, start, count int64) ([]*trillian.LogLeaf, error) }
VerifyingLogClient is a client that verifies output from Trillian.
Source Files ¶
admin.go log_client.go log_interface.go log_verifier.go map_verifier.go mock_log_client.go
Directories ¶
Path | Synopsis |
---|---|
client/backoff | Package backoff allows retrying an operation with backoff. |
- Version
- v1.0.7
- Published
- Mar 1, 2018
- Platform
- js/wasm
- Imports
- 18 packages
- Last checked
- 4 hours ago –
Tools for package owners.