diff --git a/core/api/gen.go b/core/api/gen.go index 03939e20e..c3b83474e 100644 --- a/core/api/gen.go +++ b/core/api/gen.go @@ -18,5 +18,6 @@ package api //go:generate protoc -I=. -I=$GOPATH/src/github.com/google/trillian/ -I=$GOPATH/src/github.com/googleapis/googleapis/ -I=$GOPATH/src/github.com/google/tink/proto --grpc-gateway_out=logtostderr=true:$GOPATH/src v1/keytransparency.proto v1/admin.proto v1/frontend.proto //go:generate protoc -I=. -I=$GOPATH/src/github.com/google/trillian/ -I=$GOPATH/src/github.com/googleapis/googleapis/ -I=$GOPATH/src/github.com/google/tink/proto --doc_out=markdown,api.md:../../docs/ v1/keytransparency.proto v1/admin.proto v1/frontend.proto +//go:generate protoc -I=. -I=$GOPATH/src/github.com/google/trillian/ -I=$GOPATH/src/github.com/googleapis/googleapis/ -I=$GOPATH/src/github.com/google/tink/proto --go_out=,plugins=grpc:$GOPATH/src transcript/transcript.proto //go:generate protoc -I=. -I=$GOPATH/src/github.com/google/trillian/ -I=$GOPATH/src/github.com/googleapis/googleapis/ -I=$GOPATH/src/github.com/google/tink/proto --go_out=,plugins=grpc:$GOPATH/src monitor/v1/monitor.proto //go:generate protoc -I=. -I=$GOPATH/src/github.com/google/trillian/ -I=$GOPATH/src/github.com/googleapis/googleapis/ -I=$GOPATH/src/github.com/google/tink/proto --grpc-gateway_out=logtostderr=true:$GOPATH/src monitor/v1/monitor.proto diff --git a/core/api/transcript/transcript.proto b/core/api/transcript/transcript.proto new file mode 100644 index 000000000..c1d851371 --- /dev/null +++ b/core/api/transcript/transcript.proto @@ -0,0 +1,54 @@ +// Copyright 2019 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.keytransparency.transcript; + +option go_package = "github.com/google/keytransparency/core/api/transcript_go_proto"; + +import "v1/keytransparency.proto"; +import "v1/admin.proto"; + +message Transcript { + string description = 1; + v1.Directory directory = 2; + repeated Unary rpcs = 3; +} + +message Unary { + string full_method = 1; + string desc = 2; + v1.LogRootRequest last_verified_log_root = 3; + oneof req_resp_pair { + GetUser get_user = 4; + BatchGetUser batch_get_user = 5; + BatchListUserRevisions batch_list_user_revisions = 6; + } +} + +message GetUser { + v1.GetUserRequest request = 1; + v1.GetUserResponse response = 2; +} + +message BatchGetUser { + v1.BatchGetUserRequest request = 1; + v1.BatchGetUserResponse response = 2; +} + +message BatchListUserRevisions { + v1.BatchListUserRevisionsRequest request = 1; + v1.BatchListUserRevisionsResponse response = 2; +} diff --git a/core/api/transcript_go_proto/transcript.pb.go b/core/api/transcript_go_proto/transcript.pb.go new file mode 100644 index 000000000..e3de12ec8 --- /dev/null +++ b/core/api/transcript_go_proto/transcript.pb.go @@ -0,0 +1,384 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: transcript/transcript.proto + +package transcript_go_proto + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + keytransparency_go_proto "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +type Transcript struct { + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Directory *keytransparency_go_proto.Directory `protobuf:"bytes,2,opt,name=directory,proto3" json:"directory,omitempty"` + Rpcs []*Unary `protobuf:"bytes,3,rep,name=rpcs,proto3" json:"rpcs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Transcript) Reset() { *m = Transcript{} } +func (m *Transcript) String() string { return proto.CompactTextString(m) } +func (*Transcript) ProtoMessage() {} +func (*Transcript) Descriptor() ([]byte, []int) { + return fileDescriptor_5bd339d1227847d1, []int{0} +} + +func (m *Transcript) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Transcript.Unmarshal(m, b) +} +func (m *Transcript) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Transcript.Marshal(b, m, deterministic) +} +func (m *Transcript) XXX_Merge(src proto.Message) { + xxx_messageInfo_Transcript.Merge(m, src) +} +func (m *Transcript) XXX_Size() int { + return xxx_messageInfo_Transcript.Size(m) +} +func (m *Transcript) XXX_DiscardUnknown() { + xxx_messageInfo_Transcript.DiscardUnknown(m) +} + +var xxx_messageInfo_Transcript proto.InternalMessageInfo + +func (m *Transcript) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Transcript) GetDirectory() *keytransparency_go_proto.Directory { + if m != nil { + return m.Directory + } + return nil +} + +func (m *Transcript) GetRpcs() []*Unary { + if m != nil { + return m.Rpcs + } + return nil +} + +type Unary struct { + FullMethod string `protobuf:"bytes,1,opt,name=full_method,json=fullMethod,proto3" json:"full_method,omitempty"` + Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` + LastVerifiedLogRoot *keytransparency_go_proto.LogRootRequest `protobuf:"bytes,3,opt,name=last_verified_log_root,json=lastVerifiedLogRoot,proto3" json:"last_verified_log_root,omitempty"` + // Types that are valid to be assigned to ReqRespPair: + // *Unary_GetUser + // *Unary_BatchGetUser + // *Unary_BatchListUserRevisions + ReqRespPair isUnary_ReqRespPair `protobuf_oneof:"req_resp_pair"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Unary) Reset() { *m = Unary{} } +func (m *Unary) String() string { return proto.CompactTextString(m) } +func (*Unary) ProtoMessage() {} +func (*Unary) Descriptor() ([]byte, []int) { + return fileDescriptor_5bd339d1227847d1, []int{1} +} + +func (m *Unary) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Unary.Unmarshal(m, b) +} +func (m *Unary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Unary.Marshal(b, m, deterministic) +} +func (m *Unary) XXX_Merge(src proto.Message) { + xxx_messageInfo_Unary.Merge(m, src) +} +func (m *Unary) XXX_Size() int { + return xxx_messageInfo_Unary.Size(m) +} +func (m *Unary) XXX_DiscardUnknown() { + xxx_messageInfo_Unary.DiscardUnknown(m) +} + +var xxx_messageInfo_Unary proto.InternalMessageInfo + +func (m *Unary) GetFullMethod() string { + if m != nil { + return m.FullMethod + } + return "" +} + +func (m *Unary) GetDesc() string { + if m != nil { + return m.Desc + } + return "" +} + +func (m *Unary) GetLastVerifiedLogRoot() *keytransparency_go_proto.LogRootRequest { + if m != nil { + return m.LastVerifiedLogRoot + } + return nil +} + +type isUnary_ReqRespPair interface { + isUnary_ReqRespPair() +} + +type Unary_GetUser struct { + GetUser *GetUser `protobuf:"bytes,4,opt,name=get_user,json=getUser,proto3,oneof"` +} + +type Unary_BatchGetUser struct { + BatchGetUser *BatchGetUser `protobuf:"bytes,5,opt,name=batch_get_user,json=batchGetUser,proto3,oneof"` +} + +type Unary_BatchListUserRevisions struct { + BatchListUserRevisions *BatchListUserRevisions `protobuf:"bytes,6,opt,name=batch_list_user_revisions,json=batchListUserRevisions,proto3,oneof"` +} + +func (*Unary_GetUser) isUnary_ReqRespPair() {} + +func (*Unary_BatchGetUser) isUnary_ReqRespPair() {} + +func (*Unary_BatchListUserRevisions) isUnary_ReqRespPair() {} + +func (m *Unary) GetReqRespPair() isUnary_ReqRespPair { + if m != nil { + return m.ReqRespPair + } + return nil +} + +func (m *Unary) GetGetUser() *GetUser { + if x, ok := m.GetReqRespPair().(*Unary_GetUser); ok { + return x.GetUser + } + return nil +} + +func (m *Unary) GetBatchGetUser() *BatchGetUser { + if x, ok := m.GetReqRespPair().(*Unary_BatchGetUser); ok { + return x.BatchGetUser + } + return nil +} + +func (m *Unary) GetBatchListUserRevisions() *BatchListUserRevisions { + if x, ok := m.GetReqRespPair().(*Unary_BatchListUserRevisions); ok { + return x.BatchListUserRevisions + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*Unary) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*Unary_GetUser)(nil), + (*Unary_BatchGetUser)(nil), + (*Unary_BatchListUserRevisions)(nil), + } +} + +type GetUser struct { + Request *keytransparency_go_proto.GetUserRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + Response *keytransparency_go_proto.GetUserResponse `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUser) Reset() { *m = GetUser{} } +func (m *GetUser) String() string { return proto.CompactTextString(m) } +func (*GetUser) ProtoMessage() {} +func (*GetUser) Descriptor() ([]byte, []int) { + return fileDescriptor_5bd339d1227847d1, []int{2} +} + +func (m *GetUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUser.Unmarshal(m, b) +} +func (m *GetUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUser.Marshal(b, m, deterministic) +} +func (m *GetUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUser.Merge(m, src) +} +func (m *GetUser) XXX_Size() int { + return xxx_messageInfo_GetUser.Size(m) +} +func (m *GetUser) XXX_DiscardUnknown() { + xxx_messageInfo_GetUser.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUser proto.InternalMessageInfo + +func (m *GetUser) GetRequest() *keytransparency_go_proto.GetUserRequest { + if m != nil { + return m.Request + } + return nil +} + +func (m *GetUser) GetResponse() *keytransparency_go_proto.GetUserResponse { + if m != nil { + return m.Response + } + return nil +} + +type BatchGetUser struct { + Request *keytransparency_go_proto.BatchGetUserRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + Response *keytransparency_go_proto.BatchGetUserResponse `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BatchGetUser) Reset() { *m = BatchGetUser{} } +func (m *BatchGetUser) String() string { return proto.CompactTextString(m) } +func (*BatchGetUser) ProtoMessage() {} +func (*BatchGetUser) Descriptor() ([]byte, []int) { + return fileDescriptor_5bd339d1227847d1, []int{3} +} + +func (m *BatchGetUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BatchGetUser.Unmarshal(m, b) +} +func (m *BatchGetUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BatchGetUser.Marshal(b, m, deterministic) +} +func (m *BatchGetUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_BatchGetUser.Merge(m, src) +} +func (m *BatchGetUser) XXX_Size() int { + return xxx_messageInfo_BatchGetUser.Size(m) +} +func (m *BatchGetUser) XXX_DiscardUnknown() { + xxx_messageInfo_BatchGetUser.DiscardUnknown(m) +} + +var xxx_messageInfo_BatchGetUser proto.InternalMessageInfo + +func (m *BatchGetUser) GetRequest() *keytransparency_go_proto.BatchGetUserRequest { + if m != nil { + return m.Request + } + return nil +} + +func (m *BatchGetUser) GetResponse() *keytransparency_go_proto.BatchGetUserResponse { + if m != nil { + return m.Response + } + return nil +} + +type BatchListUserRevisions struct { + Request *keytransparency_go_proto.BatchListUserRevisionsRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + Response *keytransparency_go_proto.BatchListUserRevisionsResponse `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BatchListUserRevisions) Reset() { *m = BatchListUserRevisions{} } +func (m *BatchListUserRevisions) String() string { return proto.CompactTextString(m) } +func (*BatchListUserRevisions) ProtoMessage() {} +func (*BatchListUserRevisions) Descriptor() ([]byte, []int) { + return fileDescriptor_5bd339d1227847d1, []int{4} +} + +func (m *BatchListUserRevisions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BatchListUserRevisions.Unmarshal(m, b) +} +func (m *BatchListUserRevisions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BatchListUserRevisions.Marshal(b, m, deterministic) +} +func (m *BatchListUserRevisions) XXX_Merge(src proto.Message) { + xxx_messageInfo_BatchListUserRevisions.Merge(m, src) +} +func (m *BatchListUserRevisions) XXX_Size() int { + return xxx_messageInfo_BatchListUserRevisions.Size(m) +} +func (m *BatchListUserRevisions) XXX_DiscardUnknown() { + xxx_messageInfo_BatchListUserRevisions.DiscardUnknown(m) +} + +var xxx_messageInfo_BatchListUserRevisions proto.InternalMessageInfo + +func (m *BatchListUserRevisions) GetRequest() *keytransparency_go_proto.BatchListUserRevisionsRequest { + if m != nil { + return m.Request + } + return nil +} + +func (m *BatchListUserRevisions) GetResponse() *keytransparency_go_proto.BatchListUserRevisionsResponse { + if m != nil { + return m.Response + } + return nil +} + +func init() { + proto.RegisterType((*Transcript)(nil), "google.keytransparency.transcript.Transcript") + proto.RegisterType((*Unary)(nil), "google.keytransparency.transcript.Unary") + proto.RegisterType((*GetUser)(nil), "google.keytransparency.transcript.GetUser") + proto.RegisterType((*BatchGetUser)(nil), "google.keytransparency.transcript.BatchGetUser") + proto.RegisterType((*BatchListUserRevisions)(nil), "google.keytransparency.transcript.BatchListUserRevisions") +} + +func init() { proto.RegisterFile("transcript/transcript.proto", fileDescriptor_5bd339d1227847d1) } + +var fileDescriptor_5bd339d1227847d1 = []byte{ + // 514 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x41, 0x6f, 0xd3, 0x30, + 0x14, 0xc7, 0x17, 0xba, 0xad, 0xeb, 0xeb, 0x18, 0x92, 0x91, 0xaa, 0x30, 0x0e, 0x94, 0x8a, 0x43, + 0xd9, 0x21, 0x51, 0xc7, 0x85, 0x49, 0x08, 0xa1, 0x82, 0x58, 0x25, 0xc6, 0xc5, 0xa2, 0x20, 0x71, + 0xc0, 0x4a, 0xd3, 0xb7, 0xd4, 0x22, 0x8d, 0x33, 0xdb, 0x8d, 0xd4, 0x2f, 0xc2, 0x37, 0xe0, 0xce, + 0x77, 0xe0, 0xc0, 0xd7, 0x42, 0x71, 0x92, 0x36, 0x4a, 0x46, 0x17, 0x71, 0xca, 0xb3, 0x9f, 0xff, + 0x3f, 0xff, 0x9f, 0x5f, 0xf4, 0xe0, 0xb1, 0x96, 0x5e, 0xa4, 0x7c, 0xc9, 0x63, 0xed, 0x6e, 0x43, + 0x27, 0x96, 0x42, 0x0b, 0xf2, 0x34, 0x10, 0x22, 0x08, 0xd1, 0xf9, 0x8e, 0x6b, 0x93, 0x8b, 0x3d, + 0x89, 0x91, 0xbf, 0x76, 0xb6, 0x07, 0x4f, 0xed, 0x64, 0xe4, 0x56, 0xd3, 0x46, 0x7c, 0x7a, 0x92, + 0x8c, 0x5c, 0x6f, 0xbe, 0xe4, 0x51, 0xb6, 0x1e, 0xfc, 0xb2, 0x00, 0x3e, 0x6d, 0x84, 0xa4, 0x0f, + 0xdd, 0x39, 0x66, 0x31, 0x17, 0x91, 0x6d, 0xf5, 0xad, 0x61, 0x87, 0x96, 0xb7, 0xc8, 0x18, 0x3a, + 0x73, 0x2e, 0xd1, 0xd7, 0x42, 0xae, 0xed, 0x7b, 0x7d, 0x6b, 0xd8, 0x3d, 0x7f, 0xe6, 0xfc, 0xc3, + 0x51, 0x32, 0x72, 0xde, 0x15, 0x67, 0xe9, 0x56, 0x46, 0x5e, 0xc1, 0xbe, 0x8c, 0x7d, 0x65, 0xb7, + 0xfa, 0xad, 0x61, 0xf7, 0x7c, 0xe8, 0xdc, 0x59, 0x90, 0x33, 0x8d, 0x3c, 0xb9, 0xa6, 0x46, 0x35, + 0xf8, 0xd3, 0x82, 0x03, 0xb3, 0x26, 0x4f, 0xa0, 0x7b, 0xbd, 0x0a, 0x43, 0xb6, 0x44, 0xbd, 0x10, + 0xf3, 0xdc, 0x2d, 0xa4, 0x5b, 0x1f, 0xcd, 0x0e, 0x21, 0xb0, 0x9f, 0x7a, 0x37, 0x3e, 0x3b, 0xd4, + 0xc4, 0xe4, 0x1b, 0xf4, 0x42, 0x4f, 0x69, 0x96, 0xa0, 0xe4, 0xd7, 0x1c, 0xe7, 0x2c, 0x14, 0x01, + 0x93, 0x42, 0x68, 0xbb, 0x65, 0xaa, 0x79, 0xbe, 0xa3, 0x9a, 0x2b, 0x11, 0x50, 0x21, 0x34, 0xc5, + 0x9b, 0x15, 0x2a, 0x4d, 0x1f, 0xa6, 0xa0, 0xcf, 0x39, 0x27, 0xcf, 0x91, 0x4b, 0x38, 0x0a, 0x50, + 0xb3, 0x95, 0x42, 0x69, 0xef, 0x1b, 0xe2, 0x59, 0x83, 0x02, 0x2f, 0x51, 0x4f, 0x15, 0xca, 0xc9, + 0x1e, 0x6d, 0x07, 0x59, 0x48, 0xbe, 0xc0, 0xc9, 0xcc, 0xd3, 0xfe, 0x82, 0x6d, 0x70, 0x07, 0x06, + 0xe7, 0x36, 0xc0, 0x8d, 0x53, 0xe1, 0x96, 0x79, 0x3c, 0x2b, 0xad, 0x49, 0x02, 0x8f, 0x32, 0x70, + 0xc8, 0x55, 0x46, 0x66, 0x12, 0x13, 0xae, 0xb8, 0x88, 0x94, 0x7d, 0x68, 0xee, 0xb8, 0x68, 0x7a, + 0xc7, 0x15, 0x57, 0x06, 0x4a, 0x0b, 0xc0, 0x64, 0x8f, 0xf6, 0x66, 0xb7, 0x66, 0xc6, 0x0f, 0xe0, + 0xbe, 0xc4, 0x1b, 0x26, 0x51, 0xc5, 0x2c, 0xf6, 0xb8, 0x1c, 0xfc, 0xb0, 0xa0, 0x5d, 0x98, 0x7a, + 0x0b, 0x6d, 0x99, 0x3d, 0xab, 0xe9, 0xe3, 0xee, 0x3e, 0xe4, 0xa2, 0xa2, 0x0f, 0x85, 0x92, 0xbc, + 0x87, 0xa3, 0x94, 0x2e, 0x22, 0x85, 0xf9, 0xbf, 0x79, 0xd6, 0x84, 0x92, 0x29, 0xe8, 0x46, 0x3b, + 0xf8, 0x69, 0xc1, 0x71, 0xf9, 0x09, 0xc9, 0xa4, 0xea, 0xce, 0xd9, 0xc1, 0x2d, 0x2b, 0x6b, 0x16, + 0x3f, 0xd4, 0x2c, 0xba, 0x8d, 0x51, 0x35, 0x9f, 0xbf, 0x2d, 0xe8, 0xdd, 0xde, 0x06, 0x42, 0xab, + 0x8e, 0x5f, 0xde, 0x75, 0x4d, 0x8d, 0x51, 0xf3, 0x3e, 0xad, 0x79, 0xbf, 0xf8, 0x0f, 0x68, 0xb5, + 0x8a, 0xf1, 0x9b, 0xaf, 0xaf, 0x03, 0xae, 0x17, 0xab, 0x99, 0xe3, 0x8b, 0xa5, 0x9b, 0x01, 0xab, + 0xe3, 0xcb, 0xf5, 0x85, 0x44, 0xd7, 0x8b, 0x79, 0x69, 0x1e, 0xb2, 0x40, 0x30, 0x33, 0xc5, 0x66, + 0x87, 0xe6, 0xf3, 0xe2, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x16, 0x72, 0xfd, 0x38, 0x05, + 0x00, 0x00, +} diff --git a/core/api/v1/keytransparency.proto b/core/api/v1/keytransparency.proto index 2b3005c68..08ed79be6 100644 --- a/core/api/v1/keytransparency.proto +++ b/core/api/v1/keytransparency.proto @@ -338,6 +338,15 @@ message MapRoot { repeated bytes log_inclusion = 2; } +// LogRootRequest contains the information needed to requetst and verify LogRoot. +message LogRootRequest { + // root_hash is the log root hash. + bytes root_hash = 1; + // tree_size is the tree_size of the last log root the client + // verified. + int64 tree_size = 2; +} + // LogRoot contains the latest log root and its consistency proof. message LogRoot { // log_root is the latest globally consistent log root. diff --git a/core/api/v1/keytransparency_go_proto/keytransparency.pb.go b/core/api/v1/keytransparency_go_proto/keytransparency.pb.go index 6a40b3a7f..a47debaa7 100644 --- a/core/api/v1/keytransparency_go_proto/keytransparency.pb.go +++ b/core/api/v1/keytransparency_go_proto/keytransparency.pb.go @@ -1551,6 +1551,57 @@ func (m *MapRoot) GetLogInclusion() [][]byte { return nil } +// LogRootRequest contains the information needed to requetst and verify LogRoot. +type LogRootRequest struct { + // root_hash is the log root hash. + RootHash []byte `protobuf:"bytes,1,opt,name=root_hash,json=rootHash,proto3" json:"root_hash,omitempty"` + // tree_size is the tree_size of the last log root the client + // verified. + TreeSize int64 `protobuf:"varint,2,opt,name=tree_size,json=treeSize,proto3" json:"tree_size,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LogRootRequest) Reset() { *m = LogRootRequest{} } +func (m *LogRootRequest) String() string { return proto.CompactTextString(m) } +func (*LogRootRequest) ProtoMessage() {} +func (*LogRootRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9e925e13aa3e8f7d, []int{26} +} + +func (m *LogRootRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LogRootRequest.Unmarshal(m, b) +} +func (m *LogRootRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LogRootRequest.Marshal(b, m, deterministic) +} +func (m *LogRootRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_LogRootRequest.Merge(m, src) +} +func (m *LogRootRequest) XXX_Size() int { + return xxx_messageInfo_LogRootRequest.Size(m) +} +func (m *LogRootRequest) XXX_DiscardUnknown() { + xxx_messageInfo_LogRootRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_LogRootRequest proto.InternalMessageInfo + +func (m *LogRootRequest) GetRootHash() []byte { + if m != nil { + return m.RootHash + } + return nil +} + +func (m *LogRootRequest) GetTreeSize() int64 { + if m != nil { + return m.TreeSize + } + return 0 +} + // LogRoot contains the latest log root and its consistency proof. type LogRoot struct { // log_root is the latest globally consistent log root. @@ -1567,7 +1618,7 @@ func (m *LogRoot) Reset() { *m = LogRoot{} } func (m *LogRoot) String() string { return proto.CompactTextString(m) } func (*LogRoot) ProtoMessage() {} func (*LogRoot) Descriptor() ([]byte, []int) { - return fileDescriptor_9e925e13aa3e8f7d, []int{26} + return fileDescriptor_9e925e13aa3e8f7d, []int{27} } func (m *LogRoot) XXX_Unmarshal(b []byte) error { @@ -1621,7 +1672,7 @@ func (m *Revision) Reset() { *m = Revision{} } func (m *Revision) String() string { return proto.CompactTextString(m) } func (*Revision) ProtoMessage() {} func (*Revision) Descriptor() ([]byte, []int) { - return fileDescriptor_9e925e13aa3e8f7d, []int{27} + return fileDescriptor_9e925e13aa3e8f7d, []int{28} } func (m *Revision) XXX_Unmarshal(b []byte) error { @@ -1685,7 +1736,7 @@ func (m *ListMutationsRequest) Reset() { *m = ListMutationsRequest{} } func (m *ListMutationsRequest) String() string { return proto.CompactTextString(m) } func (*ListMutationsRequest) ProtoMessage() {} func (*ListMutationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9e925e13aa3e8f7d, []int{28} + return fileDescriptor_9e925e13aa3e8f7d, []int{29} } func (m *ListMutationsRequest) XXX_Unmarshal(b []byte) error { @@ -1750,7 +1801,7 @@ func (m *ListMutationsResponse) Reset() { *m = ListMutationsResponse{} } func (m *ListMutationsResponse) String() string { return proto.CompactTextString(m) } func (*ListMutationsResponse) ProtoMessage() {} func (*ListMutationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9e925e13aa3e8f7d, []int{29} + return fileDescriptor_9e925e13aa3e8f7d, []int{30} } func (m *ListMutationsResponse) XXX_Unmarshal(b []byte) error { @@ -1815,6 +1866,7 @@ func init() { proto.RegisterType((*GetRevisionRequest)(nil), "google.keytransparency.v1.GetRevisionRequest") proto.RegisterType((*GetLatestRevisionRequest)(nil), "google.keytransparency.v1.GetLatestRevisionRequest") proto.RegisterType((*MapRoot)(nil), "google.keytransparency.v1.MapRoot") + proto.RegisterType((*LogRootRequest)(nil), "google.keytransparency.v1.LogRootRequest") proto.RegisterType((*LogRoot)(nil), "google.keytransparency.v1.LogRoot") proto.RegisterType((*Revision)(nil), "google.keytransparency.v1.Revision") proto.RegisterType((*ListMutationsRequest)(nil), "google.keytransparency.v1.ListMutationsRequest") @@ -1824,128 +1876,130 @@ func init() { func init() { proto.RegisterFile("v1/keytransparency.proto", fileDescriptor_9e925e13aa3e8f7d) } var fileDescriptor_9e925e13aa3e8f7d = []byte{ - // 1928 bytes of a gzipped FileDescriptorProto + // 1959 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x8f, 0x1b, 0x49, - 0x15, 0x57, 0xf9, 0xdb, 0xcf, 0xf3, 0xe1, 0xa9, 0xcc, 0x26, 0x8e, 0x43, 0xa2, 0x50, 0x0b, 0x21, - 0x64, 0xb5, 0xee, 0xcc, 0x64, 0x93, 0x9d, 0x0c, 0x84, 0x2c, 0x33, 0x9b, 0xc9, 0xce, 0x64, 0x46, - 0x64, 0x7b, 0xb2, 0xb0, 0xe2, 0xd2, 0xea, 0xb1, 0x6b, 0x3c, 0xad, 0xd8, 0xdd, 0x9d, 0xae, 0xb2, + 0x15, 0x57, 0xf9, 0xdb, 0xcf, 0xf3, 0xe1, 0xa9, 0xcc, 0x26, 0x8e, 0x87, 0x44, 0xa1, 0x17, 0x42, + 0xc8, 0x6a, 0xdd, 0x99, 0xc9, 0x26, 0x3b, 0x19, 0x08, 0x59, 0x66, 0x36, 0x93, 0xcc, 0x64, 0x46, + 0x64, 0x7b, 0xb2, 0xb0, 0xe2, 0xd2, 0xea, 0xb1, 0x6b, 0xec, 0x56, 0xec, 0xee, 0x9e, 0xae, 0xb2, 0x15, 0x27, 0xca, 0x65, 0x39, 0x20, 0x01, 0x42, 0x42, 0xcb, 0x01, 0x71, 0xe0, 0x80, 0x10, 0x17, 0x24, 0x04, 0xdc, 0x60, 0x25, 0x04, 0x42, 0x5c, 0xb8, 0x21, 0xae, 0x1c, 0xf9, 0x43, 0x50, 0x7d, - 0x74, 0xbb, 0xfd, 0xd5, 0xb6, 0x67, 0x27, 0x12, 0x9c, 0xec, 0xaa, 0xae, 0x7a, 0xf5, 0x7b, 0xef, - 0xfd, 0xde, 0x7b, 0xfd, 0xaa, 0xa1, 0xd2, 0x5d, 0x33, 0x9e, 0xd2, 0x1e, 0x0f, 0x6c, 0x97, 0xf9, - 0x76, 0x40, 0xdd, 0x7a, 0xaf, 0xe6, 0x07, 0x1e, 0xf7, 0xf0, 0xc5, 0xa6, 0xe7, 0x35, 0x5b, 0xb4, - 0x36, 0xfc, 0xb4, 0xbb, 0x56, 0xfd, 0x82, 0x7a, 0x64, 0xd8, 0xbe, 0x63, 0xd8, 0xae, 0xeb, 0x71, - 0x9b, 0x3b, 0x9e, 0xcb, 0xd4, 0xc6, 0xea, 0x25, 0xfd, 0x54, 0x8e, 0x8e, 0x3a, 0xc7, 0x06, 0x6d, - 0xfb, 0x5c, 0x4b, 0xad, 0x2e, 0xf1, 0xc0, 0x69, 0xb5, 0x1c, 0xdb, 0xd5, 0xe3, 0xf3, 0xe1, 0xd8, - 0x6a, 0xdb, 0xbe, 0x65, 0xfb, 0x4e, 0xb8, 0xae, 0xbb, 0x66, 0xd8, 0x8d, 0xb6, 0xa3, 0xd7, 0x91, - 0x35, 0x28, 0x6e, 0x7b, 0xed, 0xb6, 0xc3, 0x39, 0x6d, 0xe0, 0x32, 0xa4, 0x9f, 0xd2, 0x5e, 0x05, - 0x5d, 0x45, 0xd7, 0x17, 0x4c, 0xf1, 0x17, 0x63, 0xc8, 0x34, 0x6c, 0x6e, 0x57, 0x52, 0x72, 0x4a, - 0xfe, 0x27, 0xbf, 0x45, 0x50, 0x7a, 0xe0, 0xf2, 0xa0, 0xf7, 0x91, 0xdf, 0xb0, 0x39, 0xc5, 0x17, - 0x20, 0xdf, 0x61, 0x34, 0xb0, 0x9c, 0x86, 0xdc, 0x59, 0x34, 0x73, 0x62, 0xb8, 0xdb, 0xc0, 0x5b, - 0x50, 0x68, 0x77, 0x94, 0x0e, 0x52, 0x40, 0x69, 0xfd, 0x5a, 0x6d, 0xa2, 0xf2, 0xb5, 0x43, 0xa7, - 0xe9, 0xd2, 0x86, 0x14, 0x6c, 0x46, 0xfb, 0xf0, 0x16, 0x14, 0xeb, 0x21, 0xbe, 0x4a, 0x5a, 0x0a, - 0xf9, 0x52, 0x82, 0x90, 0x48, 0x17, 0xb3, 0xbf, 0x8d, 0xfc, 0x0a, 0x41, 0x56, 0xca, 0xc5, 0xab, - 0x90, 0x75, 0xdc, 0x06, 0x7d, 0x2e, 0x25, 0x2d, 0x98, 0x6a, 0x80, 0xaf, 0x00, 0xa8, 0xc5, 0x6d, - 0xea, 0xf2, 0x4a, 0x4e, 0x3e, 0x8a, 0xcd, 0xe0, 0xb7, 0x60, 0xc5, 0xee, 0xf0, 0x13, 0x2f, 0x70, - 0x5e, 0xd0, 0x86, 0xf5, 0x94, 0xf6, 0x18, 0xe5, 0x95, 0xa2, 0x5c, 0x56, 0xee, 0x3f, 0x78, 0x24, - 0xe7, 0x71, 0x15, 0x0a, 0x7e, 0x40, 0xbb, 0x8e, 0xd7, 0x61, 0x95, 0x82, 0x5c, 0x13, 0x8d, 0xf7, - 0x32, 0x05, 0x54, 0x4e, 0xed, 0x65, 0x0a, 0xa9, 0x72, 0x7a, 0x2f, 0x53, 0xc8, 0x94, 0xb3, 0x7b, - 0x99, 0x42, 0xb6, 0x9c, 0xdb, 0xcb, 0x14, 0xf2, 0xe5, 0x02, 0xd9, 0x86, 0x52, 0xcc, 0x06, 0x02, - 0x2b, 0x15, 0x7f, 0xb4, 0x3b, 0xd4, 0x40, 0x60, 0x65, 0x4e, 0xd3, 0xb5, 0x79, 0x27, 0xa0, 0xac, - 0x92, 0xba, 0x9a, 0x16, 0x58, 0xfb, 0x33, 0xe4, 0xc7, 0x08, 0x16, 0x0f, 0xb4, 0xf1, 0x1e, 0x07, - 0x9e, 0x77, 0x3c, 0xe0, 0x05, 0x74, 0x4a, 0x2f, 0xdc, 0x05, 0x68, 0x51, 0xfb, 0xd8, 0xf2, 0x85, - 0x44, 0xed, 0xcb, 0x6a, 0x2d, 0xa2, 0xdc, 0x81, 0xed, 0xef, 0x53, 0xfb, 0x78, 0xd7, 0xad, 0xb7, - 0x3a, 0xcc, 0xf1, 0x5c, 0xb3, 0x28, 0x56, 0xcb, 0xe3, 0xc9, 0xb7, 0x60, 0xe9, 0xc0, 0xf6, 0x7d, - 0x1a, 0x1c, 0x50, 0x6e, 0x0b, 0xfe, 0xe0, 0x7b, 0x70, 0xe9, 0xc4, 0x69, 0x9e, 0x50, 0xc6, 0xad, - 0xe3, 0x4e, 0xab, 0xd5, 0xb3, 0xea, 0x5e, 0xdb, 0x6f, 0x51, 0x4e, 0x1b, 0x16, 0xa3, 0xcf, 0x24, - 0xc6, 0xb4, 0x59, 0xd1, 0x4b, 0x76, 0xc4, 0x8a, 0xed, 0x70, 0xc1, 0x21, 0x7d, 0x46, 0xbe, 0x87, - 0x60, 0xe9, 0x21, 0xe5, 0x1f, 0x31, 0x1a, 0x98, 0xf4, 0x59, 0x87, 0x32, 0x8e, 0xbf, 0x08, 0x0b, - 0x0d, 0x27, 0xa0, 0x75, 0xee, 0x05, 0xbd, 0x3e, 0x0d, 0x4b, 0xd1, 0xdc, 0x6e, 0x23, 0x4e, 0xd2, - 0xd4, 0x00, 0x49, 0x6f, 0xc3, 0x85, 0x96, 0xcd, 0xb8, 0xd5, 0xa5, 0x81, 0x73, 0xec, 0xd0, 0x86, - 0xc5, 0x03, 0x4a, 0x2d, 0xe6, 0xbc, 0xa0, 0x92, 0x24, 0x69, 0x73, 0x55, 0x3c, 0xfe, 0xb6, 0x7e, - 0xfa, 0x24, 0xa0, 0xf4, 0xd0, 0x79, 0x41, 0xc9, 0x6f, 0x10, 0xe4, 0xb5, 0xda, 0xf8, 0x12, 0x14, - 0xbb, 0x41, 0x68, 0x1c, 0xe5, 0xad, 0x42, 0x37, 0x50, 0xfa, 0xe3, 0xfb, 0xb0, 0x28, 0x22, 0xd0, - 0x09, 0x6d, 0x33, 0x83, 0xf5, 0x16, 0xda, 0xb6, 0x1f, 0x8d, 0xce, 0x24, 0x02, 0x7e, 0x80, 0x60, - 0x39, 0xb2, 0x19, 0xf3, 0x3d, 0x97, 0x51, 0x7c, 0x1f, 0x0a, 0x82, 0x97, 0xac, 0xcf, 0x8b, 0x37, - 0x13, 0xc4, 0x9a, 0x7a, 0xa9, 0x19, 0x6d, 0xc2, 0x77, 0x20, 0x23, 0xdc, 0xac, 0x15, 0x22, 0x09, - 0x9b, 0xb5, 0x86, 0xa6, 0x5c, 0x2f, 0xc0, 0x9c, 0xdb, 0xb2, 0x79, 0xfd, 0x64, 0x7e, 0x2f, 0x5e, - 0x84, 0x82, 0xf6, 0xa2, 0xe2, 0x7e, 0xd1, 0xcc, 0x2b, 0x37, 0xb2, 0xd3, 0xfa, 0xf1, 0x63, 0xa8, - 0xc4, 0xb1, 0xec, 0x8a, 0x84, 0x70, 0x26, 0x80, 0xc8, 0xef, 0x10, 0x5c, 0x1c, 0x23, 0x5a, 0x5b, - 0xff, 0x63, 0xc8, 0x49, 0xbe, 0xb0, 0x0a, 0xba, 0x9a, 0xbe, 0x5e, 0x5a, 0x7f, 0x2f, 0xc1, 0x7c, - 0x13, 0xa5, 0xd4, 0x24, 0xc5, 0x98, 0x8a, 0x56, 0x2d, 0xaf, 0x7a, 0x17, 0x4a, 0xb1, 0xe9, 0x78, - 0x4e, 0x2f, 0xaa, 0x9c, 0xbe, 0x0a, 0xd9, 0xae, 0xdd, 0xea, 0x50, 0x9d, 0xd4, 0xd5, 0x60, 0x33, - 0xb5, 0x81, 0xc8, 0x67, 0x29, 0x58, 0x1d, 0xf4, 0xcc, 0x59, 0x71, 0xe5, 0x39, 0xbc, 0x21, 0xa2, - 0xa0, 0x45, 0xed, 0x2e, 0x65, 0xd6, 0x51, 0xcf, 0xea, 0x07, 0xa3, 0xd0, 0x7e, 0x67, 0x46, 0xed, - 0x23, 0xc5, 0x15, 0xa3, 0xba, 0x94, 0x6d, 0xf5, 0xa4, 0x55, 0x74, 0xc6, 0x5a, 0x69, 0x0f, 0xcf, - 0x57, 0x4f, 0xe0, 0xfc, 0xf8, 0xc5, 0x63, 0x2c, 0xb3, 0x11, 0xb7, 0xcc, 0x6c, 0x94, 0x8e, 0x59, - 0xef, 0xef, 0x08, 0x2e, 0xec, 0x3b, 0x8c, 0x4b, 0xe9, 0x1f, 0x38, 0x4c, 0x50, 0x64, 0x12, 0x95, - 0x72, 0x89, 0x19, 0x6a, 0xb0, 0x8c, 0xae, 0x42, 0x96, 0x71, 0x3b, 0xe0, 0x12, 0x55, 0xda, 0x54, - 0x03, 0x91, 0x74, 0x7c, 0xbb, 0x19, 0x63, 0x78, 0xd6, 0x2c, 0x88, 0x09, 0xc1, 0xea, 0xa4, 0x60, - 0xc8, 0x4e, 0x0e, 0x06, 0x55, 0x93, 0xc8, 0x2b, 0xa8, 0x8c, 0xaa, 0xa1, 0x89, 0xb0, 0x05, 0x39, - 0xa9, 0x70, 0x48, 0xdb, 0x1b, 0x09, 0x26, 0x1a, 0xf2, 0x99, 0xa9, 0x77, 0xe2, 0xcb, 0x00, 0x2e, - 0x7d, 0xce, 0xad, 0xb8, 0x52, 0x45, 0x31, 0x73, 0x28, 0x26, 0xc8, 0xa7, 0x29, 0x75, 0xbe, 0xda, - 0xab, 0xf8, 0xc3, 0xce, 0x22, 0xd3, 0x7f, 0x19, 0x96, 0xe4, 0x91, 0x56, 0x44, 0x65, 0x95, 0x18, - 0x16, 0xe5, 0x6c, 0x78, 0x94, 0x38, 0x82, 0xba, 0x8d, 0xfe, 0xa2, 0x8c, 0x5c, 0x54, 0xa2, 0x6e, - 0x23, 0x5a, 0x32, 0x60, 0xfb, 0xec, 0x90, 0xed, 0x2f, 0x03, 0xc8, 0x87, 0xdc, 0x7b, 0x4a, 0x5d, - 0xed, 0x68, 0xb9, 0xfc, 0x89, 0x98, 0x48, 0x72, 0x4d, 0x3e, 0x21, 0x4f, 0xfd, 0x10, 0x41, 0xe9, - 0xc0, 0xf6, 0x23, 0x08, 0xf7, 0xa0, 0x20, 0x02, 0x2a, 0xf0, 0x3c, 0xae, 0x23, 0x72, 0x0a, 0x5b, - 0x4d, 0xcf, 0xe3, 0x66, 0xbe, 0xad, 0xfe, 0x84, 0xdb, 0xe7, 0xcc, 0xdf, 0x79, 0x15, 0x5e, 0xc7, - 0xe4, 0xdf, 0x08, 0x2e, 0x8e, 0xf1, 0x91, 0x26, 0xc9, 0x1e, 0x2c, 0xb7, 0x6c, 0x2e, 0xea, 0x7b, - 0xcb, 0x6b, 0xce, 0x0a, 0x71, 0xdf, 0x6b, 0x4a, 0x88, 0x8b, 0x6a, 0xab, 0x1e, 0xe2, 0x47, 0xaa, - 0x7c, 0x86, 0xde, 0x60, 0x3a, 0x61, 0x5c, 0x9b, 0xa2, 0x6c, 0x98, 0x81, 0x44, 0x29, 0x8d, 0x00, - 0xe2, 0x6b, 0xb0, 0x2c, 0x99, 0x17, 0xf3, 0x4f, 0x5a, 0xfa, 0x67, 0x51, 0x4c, 0x3f, 0x0e, 0x7d, - 0x44, 0x7e, 0x9e, 0x82, 0xcb, 0x32, 0xed, 0x7c, 0x1e, 0x1e, 0x26, 0xd4, 0xaa, 0xff, 0x6b, 0x26, - 0xfe, 0x3e, 0x05, 0x65, 0x69, 0x9c, 0x33, 0xa4, 0x23, 0x4f, 0x2e, 0x0f, 0x5b, 0xd3, 0xca, 0x43, - 0x0c, 0xca, 0xff, 0x64, 0x69, 0xf8, 0x33, 0x82, 0x2b, 0x93, 0x08, 0xf5, 0x1a, 0x82, 0xe6, 0xf1, - 0xf8, 0xa0, 0x79, 0x6b, 0x0e, 0x33, 0x0e, 0x46, 0x0e, 0xf9, 0x29, 0x02, 0xac, 0xda, 0x3d, 0x65, - 0xcd, 0x09, 0x61, 0x90, 0x1d, 0x0d, 0x83, 0x5d, 0x41, 0x62, 0x1e, 0xf4, 0xac, 0x8e, 0xdc, 0x2e, - 0x49, 0x9c, 0x1c, 0xbf, 0xb1, 0xde, 0x52, 0x90, 0x3d, 0x1a, 0x0c, 0xb5, 0x4f, 0xe9, 0x72, 0x86, - 0x7c, 0x82, 0xe0, 0x92, 0x44, 0xfe, 0x61, 0x87, 0x76, 0xa8, 0x30, 0xac, 0xde, 0x37, 0x7b, 0x98, - 0xbe, 0x07, 0x79, 0x85, 0x6c, 0x96, 0xd4, 0x12, 0x87, 0x16, 0x6e, 0x13, 0xef, 0xb3, 0xf8, 0x21, - 0x8d, 0xc2, 0x76, 0x0e, 0xdb, 0x54, 0x87, 0x5e, 0xab, 0xd2, 0xb1, 0x37, 0xa6, 0x84, 0xe8, 0x4c, - 0x25, 0x44, 0x27, 0x87, 0xca, 0x43, 0xca, 0xf7, 0x25, 0x1d, 0xa6, 0x21, 0x1a, 0x63, 0x8d, 0x53, - 0x9e, 0x7a, 0x24, 0x9b, 0x21, 0xc9, 0xbd, 0xf5, 0x91, 0x4c, 0x70, 0xa1, 0xdf, 0xea, 0xa8, 0xee, - 0x72, 0x24, 0xfc, 0xdf, 0x84, 0x45, 0x41, 0xfa, 0x78, 0x8f, 0x24, 0xfa, 0xda, 0x85, 0x96, 0xd7, - 0x8c, 0xfa, 0x20, 0x72, 0x0c, 0xf9, 0x90, 0xdf, 0xeb, 0x50, 0x18, 0x0a, 0x92, 0x91, 0x33, 0xc2, - 0xc8, 0xc8, 0xb7, 0xf4, 0x9e, 0xaf, 0xc0, 0xb2, 0xd8, 0x53, 0xf7, 0x5c, 0xe6, 0x30, 0x2e, 0x1c, - 0xaa, 0x4f, 0x59, 0x6a, 0x79, 0xcd, 0xed, 0xfe, 0x2c, 0xf9, 0x07, 0x82, 0x42, 0x3c, 0x05, 0x4f, - 0x33, 0x59, 0x3c, 0xf5, 0x65, 0xe7, 0x4f, 0x7d, 0x63, 0xe2, 0x3e, 0x77, 0xca, 0xb8, 0x8f, 0x87, - 0x86, 0x7e, 0x97, 0xfb, 0x09, 0x82, 0x55, 0x91, 0x73, 0xc2, 0x2b, 0x01, 0x76, 0x46, 0xec, 0x1c, - 0x2c, 0x2d, 0xe9, 0xe1, 0xd2, 0x32, 0x50, 0x96, 0x32, 0x83, 0x65, 0x89, 0x7c, 0x1f, 0xc1, 0x1b, - 0x43, 0x98, 0x74, 0x0e, 0xdc, 0x81, 0x62, 0x78, 0xe5, 0xc0, 0x2a, 0x39, 0x19, 0x8d, 0xd7, 0x93, - 0x6c, 0x19, 0xbf, 0xe7, 0x30, 0xfb, 0x5b, 0xc7, 0xd5, 0xf9, 0xfc, 0x98, 0x3a, 0xbf, 0xfe, 0xd7, - 0x73, 0xb0, 0xfc, 0x88, 0xf6, 0x9e, 0xc4, 0xe4, 0xe2, 0x1f, 0x21, 0x58, 0x78, 0x48, 0xf9, 0xfb, - 0xa1, 0x21, 0x70, 0x2d, 0xf9, 0x15, 0x37, 0x5a, 0xa8, 0x2d, 0x5b, 0x4d, 0x6a, 0xce, 0xa3, 0xc5, - 0xe4, 0xda, 0x27, 0xff, 0xfa, 0xcf, 0xa7, 0xa9, 0xab, 0xf8, 0x8a, 0xd1, 0x5d, 0x33, 0x42, 0xab, - 0x3b, 0x94, 0x19, 0x2f, 0xe3, 0x6e, 0x79, 0x85, 0x7f, 0x81, 0xa0, 0x14, 0x4b, 0x2e, 0xf8, 0xed, - 0x64, 0x34, 0x43, 0x21, 0x5f, 0x9d, 0xa5, 0x4d, 0x23, 0x5f, 0x93, 0x58, 0x6e, 0xe3, 0x5b, 0xc9, - 0x58, 0x8c, 0xa8, 0x9e, 0x18, 0x2f, 0xc3, 0xbf, 0xaf, 0xf0, 0xaf, 0x11, 0xac, 0x8c, 0x64, 0x1c, - 0x7c, 0x2b, 0x19, 0xe6, 0xd8, 0xfc, 0x34, 0x1b, 0xd8, 0x77, 0x25, 0xd8, 0x35, 0x6c, 0xcc, 0x0a, - 0x76, 0x53, 0xc5, 0x08, 0xfe, 0xa5, 0x02, 0x1a, 0x0a, 0x3a, 0xe4, 0x01, 0xb5, 0xdb, 0xaf, 0xc5, - 0x9e, 0xf3, 0x43, 0x64, 0x12, 0xcc, 0x4d, 0x84, 0xff, 0x88, 0x60, 0x71, 0x20, 0x36, 0xb0, 0x91, - 0x94, 0x06, 0xc6, 0x44, 0x76, 0xf5, 0xe6, 0xec, 0x1b, 0x54, 0xd8, 0x91, 0x07, 0x12, 0xef, 0x7d, - 0x7c, 0xef, 0x14, 0xfe, 0x37, 0xfa, 0x51, 0xf7, 0x17, 0x04, 0xe7, 0x06, 0x0e, 0xd0, 0x26, 0x9e, - 0x5b, 0x83, 0x99, 0x63, 0x9e, 0xec, 0x4b, 0xe4, 0x3b, 0xf8, 0xfd, 0xcf, 0x85, 0xbc, 0x6f, 0xfe, - 0x9f, 0x21, 0xc8, 0xeb, 0xb6, 0x15, 0x7f, 0x75, 0x96, 0xd6, 0x56, 0x01, 0x9e, 0xa3, 0x0b, 0x26, - 0x77, 0x24, 0xe4, 0x9b, 0xb8, 0x36, 0x05, 0xb2, 0x78, 0x03, 0x66, 0xc6, 0x4b, 0xfd, 0x22, 0x2c, - 0xe3, 0x6c, 0x21, 0x7e, 0x15, 0x92, 0x98, 0x97, 0xc6, 0x5c, 0xaf, 0x55, 0x8d, 0x39, 0xef, 0x58, - 0xc8, 0x6d, 0x89, 0xd4, 0xc0, 0x6f, 0xcf, 0x82, 0x74, 0xf3, 0x48, 0x8b, 0xc0, 0x7f, 0x42, 0xb0, - 0x32, 0x72, 0x63, 0x95, 0x98, 0x10, 0x26, 0x5d, 0xc0, 0x55, 0xdf, 0x39, 0xcd, 0xa5, 0x18, 0xd9, - 0x94, 0xb8, 0xdf, 0xc1, 0xeb, 0x73, 0xe1, 0x56, 0x30, 0x3f, 0x43, 0x50, 0x1e, 0xbe, 0xfc, 0xc0, - 0xeb, 0x53, 0x08, 0x3c, 0xe6, 0xc2, 0xa7, 0x7a, 0x6b, 0xae, 0x3d, 0x1a, 0xf9, 0x37, 0x24, 0xf2, - 0x0d, 0x7c, 0x67, 0x3e, 0x6e, 0x18, 0x27, 0x1a, 0xe8, 0xdf, 0x10, 0xac, 0x8c, 0x74, 0x18, 0x78, - 0x1a, 0x94, 0x71, 0x0d, 0x6e, 0xa2, 0xe9, 0x27, 0x36, 0x31, 0x64, 0x5b, 0x2a, 0x70, 0x8f, 0x6c, - 0xcc, 0xa9, 0x40, 0x3f, 0x13, 0xa2, 0x1b, 0xf8, 0x9f, 0x08, 0xce, 0x8f, 0x6f, 0x96, 0xf0, 0xc6, - 0x34, 0x42, 0x4c, 0xd4, 0xe7, 0xee, 0x29, 0x76, 0x6a, 0xa5, 0xb6, 0xa4, 0x52, 0x5f, 0x27, 0xef, - 0xce, 0xce, 0x27, 0x21, 0xcc, 0x8c, 0xeb, 0xf4, 0x07, 0x04, 0x65, 0xd9, 0xa3, 0xc4, 0x3f, 0x9c, - 0x25, 0xd5, 0x9e, 0xd1, 0x66, 0xab, 0x7a, 0x3e, 0x5c, 0x1e, 0x7e, 0x00, 0xac, 0x3d, 0x68, 0xfb, - 0xbc, 0x47, 0xbe, 0x23, 0xf1, 0x7d, 0x48, 0xbe, 0x39, 0x9b, 0xd1, 0xe3, 0xdd, 0x58, 0x2d, 0xf4, - 0xc0, 0xe6, 0x33, 0x01, 0x6e, 0x73, 0xa0, 0x55, 0x13, 0x15, 0x73, 0x75, 0x5c, 0x77, 0x85, 0xef, - 0x4c, 0x33, 0xe6, 0xf8, 0x76, 0x6c, 0xa2, 0x06, 0x3a, 0x62, 0xc9, 0x94, 0x82, 0xa9, 0x6c, 0xab, - 0x64, 0x4b, 0xb9, 0x9b, 0xe8, 0xc6, 0xd6, 0x07, 0xdf, 0xdd, 0x69, 0x3a, 0xfc, 0xa4, 0x73, 0x54, - 0xab, 0x7b, 0x6d, 0x43, 0x7f, 0x22, 0x1d, 0xc2, 0x65, 0xd4, 0xbd, 0x40, 0x7d, 0x55, 0x1d, 0xfd, - 0x2a, 0x6b, 0x35, 0x3d, 0x4b, 0xc1, 0xc9, 0xc9, 0x9f, 0x5b, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, - 0x6e, 0x33, 0x4d, 0x3e, 0xbb, 0x1d, 0x00, 0x00, + 0x74, 0xbb, 0x6d, 0xb7, 0xdb, 0xf6, 0xec, 0xac, 0x04, 0x27, 0xbb, 0xaa, 0xeb, 0xbd, 0xfe, 0xbd, + 0xf7, 0x7e, 0xef, 0x55, 0xbd, 0x6a, 0xa8, 0xf4, 0xd6, 0xf5, 0xe7, 0xa4, 0xcf, 0x7c, 0xcb, 0xa1, + 0x9e, 0xe5, 0x13, 0xa7, 0xde, 0xaf, 0x79, 0xbe, 0xcb, 0x5c, 0x7c, 0xb9, 0xe9, 0xba, 0xcd, 0x36, + 0xa9, 0x8d, 0x3e, 0xed, 0xad, 0x57, 0xbf, 0x20, 0x1f, 0xe9, 0x96, 0x67, 0xeb, 0x96, 0xe3, 0xb8, + 0xcc, 0x62, 0xb6, 0xeb, 0x50, 0x29, 0x58, 0x5d, 0x53, 0x4f, 0xc5, 0xe8, 0xb8, 0x7b, 0xa2, 0x93, + 0x8e, 0xc7, 0x94, 0xd6, 0xea, 0x12, 0xf3, 0xed, 0x76, 0xdb, 0xb6, 0x1c, 0x35, 0xbe, 0x18, 0x8c, + 0xcd, 0x8e, 0xe5, 0x99, 0x96, 0x67, 0x07, 0xeb, 0x7a, 0xeb, 0xba, 0xd5, 0xe8, 0xd8, 0x6a, 0x9d, + 0xb6, 0x0e, 0xc5, 0x1d, 0xb7, 0xd3, 0xb1, 0x19, 0x23, 0x0d, 0x5c, 0x86, 0xf4, 0x73, 0xd2, 0xaf, + 0xa0, 0x6b, 0xe8, 0xc6, 0x82, 0xc1, 0xff, 0x62, 0x0c, 0x99, 0x86, 0xc5, 0xac, 0x4a, 0x4a, 0x4c, + 0x89, 0xff, 0xda, 0x6f, 0x11, 0x94, 0x1e, 0x3a, 0xcc, 0xef, 0x7f, 0xe8, 0x35, 0x2c, 0x46, 0xf0, + 0x25, 0xc8, 0x77, 0x29, 0xf1, 0x4d, 0xbb, 0x21, 0x24, 0x8b, 0x46, 0x8e, 0x0f, 0xf7, 0x1a, 0x78, + 0x1b, 0x0a, 0x9d, 0xae, 0xb4, 0x41, 0x28, 0x28, 0x6d, 0x5c, 0xaf, 0x4d, 0x34, 0xbe, 0x76, 0x64, + 0x37, 0x1d, 0xd2, 0x10, 0x8a, 0x8d, 0x50, 0x0e, 0x6f, 0x43, 0xb1, 0x1e, 0xe0, 0xab, 0xa4, 0x85, + 0x92, 0x2f, 0x25, 0x28, 0x09, 0x6d, 0x31, 0x06, 0x62, 0xda, 0xaf, 0x10, 0x64, 0x85, 0x5e, 0xbc, + 0x0a, 0x59, 0xdb, 0x69, 0x90, 0x17, 0x42, 0xd3, 0x82, 0x21, 0x07, 0xf8, 0x2a, 0x80, 0x5c, 0xdc, + 0x21, 0x0e, 0xab, 0xe4, 0xc4, 0xa3, 0xc8, 0x0c, 0x7e, 0x0b, 0x56, 0xac, 0x2e, 0x6b, 0xb9, 0xbe, + 0xfd, 0x92, 0x34, 0xcc, 0xe7, 0xa4, 0x4f, 0x09, 0xab, 0x14, 0xc5, 0xb2, 0xf2, 0xe0, 0xc1, 0x13, + 0x31, 0x8f, 0xab, 0x50, 0xf0, 0x7c, 0xd2, 0xb3, 0xdd, 0x2e, 0xad, 0x14, 0xc4, 0x9a, 0x70, 0xbc, + 0x9f, 0x29, 0xa0, 0x72, 0x6a, 0x3f, 0x53, 0x48, 0x95, 0xd3, 0xfb, 0x99, 0x42, 0xa6, 0x9c, 0xdd, + 0xcf, 0x14, 0xb2, 0xe5, 0xdc, 0x7e, 0xa6, 0x90, 0x2f, 0x17, 0xb4, 0x1d, 0x28, 0x45, 0x7c, 0xc0, + 0xb1, 0x12, 0xfe, 0x47, 0x85, 0x43, 0x0e, 0x38, 0x56, 0x6a, 0x37, 0x1d, 0x8b, 0x75, 0x7d, 0x42, + 0x2b, 0xa9, 0x6b, 0x69, 0x8e, 0x75, 0x30, 0xa3, 0xfd, 0x18, 0xc1, 0xe2, 0xa1, 0x72, 0xde, 0x53, + 0xdf, 0x75, 0x4f, 0x86, 0xa2, 0x80, 0xce, 0x18, 0x85, 0x7b, 0x00, 0x6d, 0x62, 0x9d, 0x98, 0x1e, + 0xd7, 0xa8, 0x62, 0x59, 0xad, 0x85, 0x94, 0x3b, 0xb4, 0xbc, 0x03, 0x62, 0x9d, 0xec, 0x39, 0xf5, + 0x76, 0x97, 0xda, 0xae, 0x63, 0x14, 0xf9, 0x6a, 0xf1, 0x7a, 0xed, 0x5b, 0xb0, 0x74, 0x68, 0x79, + 0x1e, 0xf1, 0x0f, 0x09, 0xb3, 0x38, 0x7f, 0xf0, 0x7d, 0x58, 0x6b, 0xd9, 0xcd, 0x16, 0xa1, 0xcc, + 0x3c, 0xe9, 0xb6, 0xdb, 0x7d, 0xb3, 0xee, 0x76, 0xbc, 0x36, 0x61, 0xa4, 0x61, 0x52, 0x72, 0x2a, + 0x30, 0xa6, 0x8d, 0x8a, 0x5a, 0xb2, 0xcb, 0x57, 0xec, 0x04, 0x0b, 0x8e, 0xc8, 0xa9, 0xf6, 0x3d, + 0x04, 0x4b, 0x8f, 0x08, 0xfb, 0x90, 0x12, 0xdf, 0x20, 0xa7, 0x5d, 0x42, 0x19, 0xfe, 0x22, 0x2c, + 0x34, 0x6c, 0x9f, 0xd4, 0x99, 0xeb, 0xf7, 0x07, 0x34, 0x2c, 0x85, 0x73, 0x7b, 0x8d, 0x28, 0x49, + 0x53, 0x43, 0x24, 0xbd, 0x03, 0x97, 0xda, 0x16, 0x65, 0x66, 0x8f, 0xf8, 0xf6, 0x89, 0x4d, 0x1a, + 0x26, 0xf3, 0x09, 0x31, 0xa9, 0xfd, 0x92, 0x08, 0x92, 0xa4, 0x8d, 0x55, 0xfe, 0xf8, 0xdb, 0xea, + 0xe9, 0x33, 0x9f, 0x90, 0x23, 0xfb, 0x25, 0xd1, 0x7e, 0x83, 0x20, 0xaf, 0xcc, 0xc6, 0x6b, 0x50, + 0xec, 0xf9, 0x81, 0x73, 0x64, 0xb4, 0x0a, 0x3d, 0x5f, 0xda, 0x8f, 0x1f, 0xc0, 0x22, 0xcf, 0x40, + 0x3b, 0xf0, 0xcd, 0x0c, 0xde, 0x5b, 0xe8, 0x58, 0x5e, 0x38, 0x3a, 0x97, 0x0c, 0xf8, 0x01, 0x82, + 0xe5, 0xd0, 0x67, 0xd4, 0x73, 0x1d, 0x4a, 0xf0, 0x03, 0x28, 0x70, 0x5e, 0xd2, 0x01, 0x2f, 0xde, + 0x4c, 0x50, 0x6b, 0xa8, 0xa5, 0x46, 0x28, 0x84, 0xef, 0x42, 0x86, 0x87, 0x59, 0x19, 0xa4, 0x25, + 0x08, 0x2b, 0x0b, 0x0d, 0xb1, 0x9e, 0x83, 0xb9, 0xb0, 0x6d, 0xb1, 0x7a, 0x6b, 0xfe, 0x28, 0x5e, + 0x86, 0x82, 0x8a, 0xa2, 0xe4, 0x7e, 0xd1, 0xc8, 0xcb, 0x30, 0xd2, 0xb3, 0xc6, 0xf1, 0x23, 0xa8, + 0x44, 0xb1, 0xec, 0xf1, 0x82, 0x70, 0x2e, 0x80, 0xb4, 0xdf, 0x21, 0xb8, 0x1c, 0xa3, 0x5a, 0x79, + 0xff, 0x23, 0xc8, 0x09, 0xbe, 0xd0, 0x0a, 0xba, 0x96, 0xbe, 0x51, 0xda, 0x78, 0x2f, 0xc1, 0x7d, + 0x13, 0xb5, 0xd4, 0x04, 0xc5, 0xa8, 0xcc, 0x56, 0xa5, 0xaf, 0x7a, 0x0f, 0x4a, 0x91, 0xe9, 0x68, + 0x4d, 0x2f, 0xca, 0x9a, 0xbe, 0x0a, 0xd9, 0x9e, 0xd5, 0xee, 0x12, 0x55, 0xd4, 0xe5, 0x60, 0x2b, + 0xb5, 0x89, 0xb4, 0x4f, 0x53, 0xb0, 0x3a, 0x1c, 0x99, 0xf3, 0xe2, 0xca, 0x0b, 0x78, 0x83, 0x67, + 0x41, 0x9b, 0x58, 0x3d, 0x42, 0xcd, 0xe3, 0xbe, 0x39, 0x48, 0x46, 0x6e, 0xfd, 0xee, 0x8c, 0xd6, + 0x87, 0x86, 0x4b, 0x46, 0xf5, 0x08, 0xdd, 0xee, 0x0b, 0xaf, 0xa8, 0x8a, 0xb5, 0xd2, 0x19, 0x9d, + 0xaf, 0xb6, 0xe0, 0x62, 0xfc, 0xe2, 0x18, 0xcf, 0x6c, 0x46, 0x3d, 0x33, 0x1b, 0xa5, 0x23, 0xde, + 0xfb, 0x3b, 0x82, 0x4b, 0x07, 0x36, 0x65, 0x42, 0xfb, 0x63, 0x9b, 0x72, 0x8a, 0x4c, 0xa2, 0x52, + 0x2e, 0xb1, 0x42, 0x0d, 0x6f, 0xa3, 0xab, 0x90, 0xa5, 0xcc, 0xf2, 0x99, 0x40, 0x95, 0x36, 0xe4, + 0x80, 0x17, 0x1d, 0xcf, 0x6a, 0x46, 0x18, 0x9e, 0x35, 0x0a, 0x7c, 0x82, 0xb3, 0x3a, 0x29, 0x19, + 0xb2, 0x93, 0x93, 0x41, 0xee, 0x49, 0xda, 0x6b, 0xa8, 0x8c, 0x9b, 0xa1, 0x88, 0xb0, 0x0d, 0x39, + 0x61, 0x70, 0x40, 0xdb, 0x9b, 0x09, 0x2e, 0x1a, 0x89, 0x99, 0xa1, 0x24, 0xf1, 0x15, 0x00, 0x87, + 0xbc, 0x60, 0x66, 0xd4, 0xa8, 0x22, 0x9f, 0x39, 0xe2, 0x13, 0xda, 0x27, 0x29, 0xf9, 0x7e, 0x29, + 0x2b, 0xf9, 0x43, 0xcf, 0xa3, 0xd2, 0x7f, 0x19, 0x96, 0xc4, 0x2b, 0xcd, 0x90, 0xca, 0xb2, 0x30, + 0x2c, 0x8a, 0xd9, 0xe0, 0x55, 0xfc, 0x15, 0xc4, 0x69, 0x0c, 0x16, 0x65, 0xc4, 0xa2, 0x12, 0x71, + 0x1a, 0xe1, 0x92, 0x21, 0xdf, 0x67, 0x47, 0x7c, 0x7f, 0x05, 0x40, 0x3c, 0x64, 0xee, 0x73, 0xe2, + 0xa8, 0x40, 0x8b, 0xe5, 0xcf, 0xf8, 0x44, 0x52, 0x68, 0xf2, 0x09, 0x75, 0xea, 0x87, 0x08, 0x4a, + 0x87, 0x96, 0x17, 0x42, 0xb8, 0x0f, 0x05, 0x9e, 0x50, 0xbe, 0xeb, 0x32, 0x95, 0x91, 0x53, 0xd8, + 0x6a, 0xb8, 0x2e, 0x33, 0xf2, 0x1d, 0xf9, 0x27, 0x10, 0x9f, 0xb3, 0x7e, 0xe7, 0x65, 0x7a, 0x9d, + 0x68, 0xff, 0x46, 0x70, 0x39, 0x26, 0x46, 0x8a, 0x24, 0xfb, 0xb0, 0xdc, 0xb6, 0x18, 0xdf, 0xdf, + 0xdb, 0x6e, 0x73, 0x56, 0x88, 0x07, 0x6e, 0x53, 0x40, 0x5c, 0x94, 0xa2, 0x6a, 0x88, 0x9f, 0xc8, + 0xed, 0x33, 0x88, 0x06, 0x55, 0x05, 0xe3, 0xfa, 0x14, 0x63, 0x83, 0x0a, 0xc4, 0xb7, 0xd2, 0x10, + 0x20, 0xbe, 0x0e, 0xcb, 0x82, 0x79, 0x91, 0xf8, 0xa4, 0x45, 0x7c, 0x16, 0xf9, 0xf4, 0xd3, 0x20, + 0x46, 0xda, 0xcf, 0x53, 0x70, 0x45, 0x94, 0x9d, 0xcf, 0xc2, 0xc3, 0x84, 0xbd, 0xea, 0xff, 0x9a, + 0x89, 0xbf, 0x4f, 0x41, 0x59, 0x38, 0xe7, 0x1c, 0xe9, 0xc8, 0x92, 0xb7, 0x87, 0xed, 0x69, 0xdb, + 0x43, 0x04, 0xca, 0xff, 0xe4, 0xd6, 0xf0, 0x67, 0x04, 0x57, 0x27, 0x11, 0xea, 0x73, 0x48, 0x9a, + 0xa7, 0xf1, 0x49, 0xf3, 0xd6, 0x1c, 0x6e, 0x1c, 0xce, 0x1c, 0xed, 0xa7, 0x08, 0xb0, 0x6c, 0xf7, + 0xa4, 0x37, 0x27, 0xa4, 0x41, 0x76, 0x3c, 0x0d, 0xf6, 0x38, 0x89, 0x99, 0xdf, 0x37, 0xbb, 0x42, + 0x5c, 0x90, 0x38, 0x39, 0x7f, 0x23, 0xbd, 0x25, 0x27, 0x7b, 0x38, 0x18, 0x69, 0x9f, 0xd2, 0xe5, + 0x8c, 0xf6, 0x31, 0x82, 0x35, 0x81, 0xfc, 0x83, 0x2e, 0xe9, 0x12, 0xee, 0x58, 0x25, 0x37, 0x7b, + 0x9a, 0xbe, 0x07, 0x79, 0x89, 0x6c, 0x96, 0xd2, 0x12, 0x85, 0x16, 0x88, 0xf1, 0xf3, 0x2c, 0x7e, + 0x44, 0xc2, 0xb4, 0x9d, 0xc3, 0x37, 0xd5, 0x91, 0x63, 0x55, 0x3a, 0x72, 0x62, 0x4a, 0xc8, 0xce, + 0x54, 0x42, 0x76, 0x32, 0xa8, 0x3c, 0x22, 0xec, 0x40, 0xd0, 0x61, 0x1a, 0xa2, 0x18, 0x6f, 0x9c, + 0xf1, 0xad, 0xc7, 0xa2, 0x19, 0x12, 0xdc, 0xdb, 0x18, 0xab, 0x04, 0x97, 0x06, 0xad, 0x8e, 0xec, + 0x2e, 0xc7, 0xd2, 0xff, 0x4d, 0x58, 0xe4, 0xa4, 0x8f, 0xf6, 0x48, 0xbc, 0xaf, 0x5d, 0x68, 0xbb, + 0xcd, 0xb0, 0x0f, 0xd2, 0xf6, 0x61, 0x29, 0xa0, 0xbb, 0xb2, 0x67, 0x0d, 0x8a, 0xfc, 0x35, 0x66, + 0xcb, 0xa2, 0xad, 0xa0, 0xef, 0xe2, 0x13, 0x8f, 0x2d, 0xda, 0xe2, 0x0f, 0x47, 0xb1, 0x17, 0x58, + 0x80, 0xf7, 0x04, 0xf2, 0x41, 0xae, 0x6c, 0x40, 0x61, 0x24, 0xe1, 0xc6, 0xf0, 0x06, 0xaf, 0xcd, + 0xb7, 0x95, 0xcc, 0x57, 0x60, 0x99, 0xcb, 0xd4, 0x5d, 0x87, 0xda, 0x94, 0x71, 0x72, 0x28, 0xc4, + 0x4b, 0x6d, 0xb7, 0xb9, 0x33, 0x98, 0xd5, 0xfe, 0x81, 0xa0, 0x10, 0x2d, 0xe7, 0xd3, 0xdc, 0x1f, + 0x2d, 0xa3, 0xd9, 0xf9, 0xcb, 0x68, 0x4c, 0x0d, 0xc9, 0x9d, 0xb1, 0x86, 0x44, 0xd3, 0x4c, 0x9d, + 0x0b, 0x7f, 0x82, 0x60, 0x95, 0xd7, 0xaf, 0xe0, 0x7a, 0x81, 0x9e, 0x13, 0xd3, 0x87, 0xb7, 0xa9, + 0xf4, 0xe8, 0x36, 0x35, 0xb4, 0xc5, 0x65, 0x86, 0xb7, 0x38, 0xed, 0xfb, 0x08, 0xde, 0x18, 0xc1, + 0xa4, 0xea, 0xe9, 0x2e, 0x14, 0x83, 0xeb, 0x0b, 0x5a, 0xc9, 0x89, 0xcc, 0xbe, 0x91, 0xe4, 0xcb, + 0xe8, 0x9d, 0x89, 0x31, 0x10, 0x8d, 0x3b, 0x33, 0xe4, 0x63, 0xce, 0x0c, 0x1b, 0x7f, 0xbd, 0x00, + 0xcb, 0x4f, 0x48, 0xff, 0x59, 0x44, 0x2f, 0xfe, 0x11, 0x82, 0x85, 0x47, 0x84, 0xbd, 0x1f, 0x38, + 0x02, 0xd7, 0x92, 0x8f, 0xcb, 0xe1, 0x42, 0xe5, 0xd9, 0x6a, 0x52, 0xa3, 0x1f, 0x2e, 0xd6, 0xae, + 0x7f, 0xfc, 0xaf, 0xff, 0x7c, 0x92, 0xba, 0x86, 0xaf, 0xea, 0xbd, 0x75, 0x3d, 0xf0, 0xba, 0x4d, + 0xa8, 0xfe, 0x2a, 0x1a, 0x96, 0xd7, 0xf8, 0x17, 0x08, 0x4a, 0x91, 0x42, 0x85, 0xdf, 0x4e, 0x46, + 0x33, 0x52, 0x3e, 0xaa, 0xb3, 0xb4, 0x7c, 0xda, 0xd7, 0x04, 0x96, 0x3b, 0xf8, 0x76, 0x32, 0x16, + 0x3d, 0xdc, 0x9b, 0xf4, 0x57, 0xc1, 0xdf, 0xd7, 0xf8, 0xd7, 0x08, 0x56, 0xc6, 0xaa, 0x17, 0xbe, + 0x9d, 0x0c, 0x33, 0xb6, 0xd6, 0xcd, 0x06, 0xf6, 0x5d, 0x01, 0x76, 0x1d, 0xeb, 0xb3, 0x82, 0xdd, + 0x92, 0x39, 0x82, 0x7f, 0x29, 0x81, 0x06, 0x8a, 0x8e, 0x98, 0x4f, 0xac, 0xce, 0xe7, 0xe2, 0xcf, + 0xf9, 0x21, 0x52, 0x01, 0xe6, 0x16, 0xc2, 0x7f, 0x44, 0xb0, 0x38, 0x94, 0x1b, 0x58, 0x4f, 0x2a, + 0x03, 0x31, 0x99, 0x5d, 0xbd, 0x35, 0xbb, 0x80, 0x4c, 0x3b, 0xed, 0xa1, 0xc0, 0xfb, 0x00, 0xdf, + 0x3f, 0x43, 0xfc, 0xf5, 0x41, 0xd6, 0xfd, 0x05, 0xc1, 0x85, 0xa1, 0x17, 0x28, 0x17, 0xcf, 0x6d, + 0xc1, 0xcc, 0x39, 0xaf, 0x1d, 0x08, 0xe4, 0xbb, 0xf8, 0xfd, 0xcf, 0x84, 0x7c, 0xe0, 0xfe, 0x9f, + 0x21, 0xc8, 0xab, 0x16, 0x18, 0x7f, 0x75, 0x96, 0x36, 0x59, 0x02, 0x9e, 0xa3, 0xa3, 0xd6, 0xee, + 0x0a, 0xc8, 0xb7, 0x70, 0x6d, 0x0a, 0x64, 0x7e, 0x9a, 0xa6, 0xfa, 0x2b, 0x75, 0xa8, 0x16, 0x79, + 0xb6, 0x10, 0xbd, 0x56, 0x49, 0xac, 0x4b, 0x31, 0x57, 0x75, 0x55, 0x7d, 0xce, 0xfb, 0x1a, 0xed, + 0x8e, 0x40, 0xaa, 0xe3, 0xb7, 0x67, 0x41, 0xba, 0x75, 0xac, 0x54, 0xe0, 0x3f, 0x21, 0x58, 0x19, + 0xbb, 0xfd, 0x4a, 0x2c, 0x08, 0x93, 0x2e, 0xf3, 0xaa, 0xef, 0x9c, 0xe5, 0x82, 0x4d, 0xdb, 0x12, + 0xb8, 0xdf, 0xc1, 0x1b, 0x73, 0xe1, 0x96, 0x30, 0x3f, 0x45, 0x50, 0x1e, 0xbd, 0x48, 0xc1, 0x1b, + 0x53, 0x08, 0x1c, 0x73, 0x79, 0x54, 0xbd, 0x3d, 0x97, 0x8c, 0x42, 0xfe, 0x0d, 0x81, 0x7c, 0x13, + 0xdf, 0x9d, 0x8f, 0x1b, 0x7a, 0x4b, 0x01, 0xfd, 0x1b, 0x82, 0x95, 0xb1, 0x6e, 0x05, 0x4f, 0x83, + 0x12, 0xd7, 0x2c, 0x27, 0xba, 0x7e, 0x62, 0x43, 0xa4, 0xed, 0x08, 0x03, 0xee, 0x6b, 0x9b, 0x73, + 0x1a, 0x30, 0xa8, 0x84, 0xe8, 0x26, 0xfe, 0x27, 0x82, 0x8b, 0xf1, 0x8d, 0x17, 0xde, 0x9c, 0x46, + 0x88, 0x89, 0xf6, 0xdc, 0x3b, 0x83, 0xa4, 0x32, 0x6a, 0x5b, 0x18, 0xf5, 0x75, 0xed, 0xdd, 0xd9, + 0xf9, 0xc4, 0x95, 0x19, 0x51, 0x9b, 0xfe, 0x80, 0xa0, 0x2c, 0xfa, 0x9d, 0xe8, 0x47, 0xb8, 0xa4, + 0xbd, 0x67, 0xbc, 0x71, 0xab, 0x5e, 0x0c, 0x96, 0x07, 0x1f, 0x13, 0x6b, 0x0f, 0x3b, 0x1e, 0xeb, + 0x6b, 0xdf, 0x11, 0xf8, 0x3e, 0xd0, 0xbe, 0x39, 0x9b, 0xd3, 0xa3, 0x9d, 0x5d, 0x2d, 0x88, 0xc0, + 0xd6, 0x29, 0x07, 0xb7, 0x35, 0xd4, 0xf6, 0xf1, 0x1d, 0x73, 0x35, 0xae, 0x53, 0xc3, 0x77, 0xa7, + 0x39, 0x33, 0xbe, 0xb5, 0x9b, 0x68, 0x81, 0xca, 0x58, 0x6d, 0xca, 0x86, 0x29, 0x7d, 0x2b, 0x75, + 0x0b, 0xbd, 0x5b, 0xe8, 0xe6, 0xf6, 0xe3, 0xef, 0xee, 0x36, 0x6d, 0xd6, 0xea, 0x1e, 0xd7, 0xea, + 0x6e, 0x47, 0x57, 0x9f, 0x5b, 0x47, 0x70, 0xe9, 0x75, 0xd7, 0x97, 0x5f, 0x68, 0xc7, 0xbf, 0xf0, + 0x9a, 0x4d, 0xd7, 0x94, 0x70, 0x72, 0xe2, 0xe7, 0xf6, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x68, + 0xf6, 0x8b, 0xc5, 0x07, 0x1e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/core/client/batch_get_and_verify.go b/core/client/batch_get_and_verify.go index 03d2d48c7..ec27bcf90 100644 --- a/core/client/batch_get_and_verify.go +++ b/core/client/batch_get_and_verify.go @@ -19,9 +19,10 @@ import ( "runtime" "sync" - pb "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" "github.com/google/trillian/monitoring" "github.com/google/trillian/types" + + pb "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" ) // BatchVerifyGetUserIndex fetches and verifies the indexes for a list of users. @@ -102,15 +103,20 @@ func (c *Client) BatchVerifiedGetUser(ctx context.Context, userIDs []string) ( *types.MapRootV1, map[string]*pb.MapLeaf, error) { c.trustedLock.Lock() defer c.trustedLock.Unlock() - resp, err := c.cli.BatchGetUser(ctx, &pb.BatchGetUserRequest{ + req := &pb.BatchGetUserRequest{ DirectoryId: c.DirectoryID, UserIds: userIDs, LastVerifiedTreeSize: int64(c.trusted.TreeSize), - }) + } + resp, err := c.cli.BatchGetUser(ctx, req) if err != nil { return nil, nil, err } + if err := c.VerifyBatchGetUser(c.trusted, req, resp); err != nil { + return nil, nil, err + } + slr, smr, err := c.VerifyRevision(resp.Revision, c.trusted) if err != nil { return nil, nil, err @@ -119,9 +125,6 @@ func (c *Client) BatchVerifiedGetUser(ctx context.Context, userIDs []string) ( leavesByUserID := make(map[string]*pb.MapLeaf) for userID, leaf := range resp.MapLeavesByUserId { - if err := c.VerifyMapLeaf(c.DirectoryID, userID, leaf, smr); err != nil { - return nil, nil, err - } leavesByUserID[userID] = leaf } return smr, leavesByUserID, nil diff --git a/core/client/client.go b/core/client/client.go index 687dd9d70..70c7c26c3 100644 --- a/core/client/client.go +++ b/core/client/client.go @@ -70,6 +70,8 @@ var ( // VerifierInterface is used to verify specific outputs from Key Transparency. type VerifierInterface interface { + VerifyGetUser(trusted types.LogRootV1, req *pb.GetUserRequest, resp *pb.GetUserResponse) error + VerifyBatchGetUser(trusted types.LogRootV1, req *pb.BatchGetUserRequest, resp *pb.BatchGetUserResponse) error // Index computes the index of a userID from a VRF proof, obtained from the server. Index(vrfProof []byte, directoryID, userID string) ([]byte, error) // VerifyMapLeaf verifies everything about a MapLeaf. diff --git a/core/client/client_test.go b/core/client/client_test.go index 14b20287d..40825f297 100644 --- a/core/client/client_test.go +++ b/core/client/client_test.go @@ -303,6 +303,12 @@ func (f *fakeKeyServer) BatchQueueUserUpdate(context.Context, *pb.BatchQueueUser type fakeVerifier struct{} +func (f *fakeVerifier) VerifyGetUser(trusted types.LogRootV1, req *pb.GetUserRequest, resp *pb.GetUserResponse) error { + return nil +} +func (f *fakeVerifier) VerifyBatchGetUser(trusted types.LogRootV1, req *pb.BatchGetUserRequest, resp *pb.BatchGetUserResponse) error { + return nil +} func (f *fakeVerifier) Index(vrfProof []byte, directoryID, userID string) ([]byte, error) { return make([]byte, 32), nil } diff --git a/core/client/get_and_verify.go b/core/client/get_and_verify.go index 44e9c9b9e..e65e52d9b 100644 --- a/core/client/get_and_verify.go +++ b/core/client/get_and_verify.go @@ -28,24 +28,26 @@ import ( func (c *Client) VerifiedGetUser(ctx context.Context, userID string) (*types.MapRootV1, *pb.MapLeaf, error) { c.trustedLock.Lock() defer c.trustedLock.Unlock() - resp, err := c.cli.GetUser(ctx, &pb.GetUserRequest{ + req := &pb.GetUserRequest{ DirectoryId: c.DirectoryID, UserId: userID, LastVerifiedTreeSize: int64(c.trusted.TreeSize), - }) + } + resp, err := c.cli.GetUser(ctx, req) if err != nil { return nil, nil, err } - slr, smr, err := c.VerifyRevision(resp.Revision, c.trusted) - if err != nil { + if err := c.VerifyGetUser(c.trusted, req, resp); err != nil { return nil, nil, err } - c.updateTrusted(slr) - if err := c.VerifyMapLeaf(c.DirectoryID, userID, resp.Leaf, smr); err != nil { + // TODO(gbelvin): Refactor updating the SLR into a separate tracker package. + slr, smr, err := c.VerifyRevision(resp.Revision, c.trusted) + if err != nil { return nil, nil, err } + c.updateTrusted(slr) return smr, resp.Leaf, nil } diff --git a/core/client/verifier/pairs.go b/core/client/verifier/pairs.go new file mode 100644 index 000000000..2779b0008 --- /dev/null +++ b/core/client/verifier/pairs.go @@ -0,0 +1,46 @@ +// Copyright 2019 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package verifier + +import ( + "github.com/google/trillian/types" + + pb "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" +) + +func (v *Verifier) VerifyGetUser(trusted types.LogRootV1, req *pb.GetUserRequest, resp *pb.GetUserResponse) error { + _, smr, err := v.VerifyRevision(resp.GetRevision(), trusted) + if err != nil { + return err + } + if err := v.VerifyMapLeaf(req.GetDirectoryId(), req.GetUserId(), resp.GetLeaf(), smr); err != nil { + return err + } + return nil +} + +func (v *Verifier) VerifyBatchGetUser(trusted types.LogRootV1, req *pb.BatchGetUserRequest, resp *pb.BatchGetUserResponse) error { + _, smr, err := v.VerifyRevision(resp.Revision, trusted) + if err != nil { + return err + } + for userID, leaf := range resp.MapLeavesByUserId { + if err := v.VerifyMapLeaf(req.DirectoryId, userID, leaf, smr); err != nil { + return err + } + } + return nil + +} diff --git a/core/client/verifier/verifier_test.go b/core/client/verifier/verifier_test.go index 4c98d76fc..7db46a3fb 100644 --- a/core/client/verifier/verifier_test.go +++ b/core/client/verifier/verifier_test.go @@ -15,59 +15,57 @@ package verifier import ( - "encoding/json" - "io/ioutil" - "os" "testing" - "github.com/golang/protobuf/jsonpb" "github.com/google/keytransparency/core/testdata" "github.com/google/trillian/types" - pb "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" + tpb "github.com/google/keytransparency/core/api/transcript_go_proto" ) // Test vectors in core/testdata are generated by running // go generate ./core/testdata -func TestVerifyGetUserResponse(t *testing.T) { - directoryFile := "../../testdata/directory_get_and_update.json" - f, err := os.Open(directoryFile) - if err != nil { - t.Fatalf("ReadFile(%v): %v", directoryFile, err) - } - defer f.Close() - var directoryPB pb.Directory - if err := jsonpb.Unmarshal(f, &directoryPB); err != nil { - t.Fatalf("jsonpb.Unmarshal(): %v", err) - } - v, err := NewFromDirectory(&directoryPB) - if err != nil { - t.Fatal(err) +func TestTranscripts(t *testing.T) { + for _, name := range []string{ + "TestEmptyGetAndUpdate", + "TestBatchGetUser", + } { + t.Run(name, func(t *testing.T) { + transcript, err := testdata.ReadTranscript(name) + if err != nil { + t.Fatal(err) + } + RunTranscriptTest(t, transcript) + }) } +} + +func RunTranscriptTest(t *testing.T, transcript *tpb.Transcript) { + t.Helper() - respFile := "../../testdata/get_and_update.json" - b, err := ioutil.ReadFile(respFile) + v, err := NewFromDirectory(transcript.Directory) if err != nil { - t.Fatalf("ReadFile(%v): %v", respFile, err) - } - var getUserResponses []testdata.ResponseVector - if err := json.Unmarshal(b, &getUserResponses); err != nil { - t.Fatalf("Unmarshal(): %v", err) + t.Fatal(err) } - trusted := &types.LogRootV1{} - for _, tc := range getUserResponses { - t.Run(tc.Desc, func(t *testing.T) { - slr, smr, err := v.VerifyRevision(tc.GetUserResp.Revision, *trusted) - if err != nil { - t.Errorf("VerifyRevision(): %v", err) - } - if err == nil && tc.TrustNewLog { - trusted = slr + for _, rpc := range transcript.Rpcs { + t.Run(rpc.Desc, func(t *testing.T) { + trusted := types.LogRootV1{ + TreeSize: uint64(rpc.LastVerifiedLogRoot.GetTreeSize()), + RootHash: rpc.LastVerifiedLogRoot.GetRootHash(), } - if err := v.VerifyMapLeaf(directoryPB.DirectoryId, tc.UserID, - tc.GetUserResp.Leaf, smr); err != nil { - t.Errorf("VerifyMapLeaf(): %v)", err) + switch pair := rpc.ReqRespPair.(type) { + case *tpb.Unary_GetUser: + if err := v.VerifyGetUser(trusted, pair.GetUser.Request, pair.GetUser.Response); err != nil { + t.Errorf("VerifyGetUser(): %v)", err) + } + case *tpb.Unary_BatchGetUser: + if err := v.VerifyBatchGetUser(trusted, pair.BatchGetUser.Request, pair.BatchGetUser.Response); err != nil { + t.Errorf("VerifyGetUser(): %v)", err) + } + + default: + t.Errorf("Unknown ReqRespPair: %T", pair) } }) } diff --git a/core/crypto/vrf/p256/p256_test.go b/core/crypto/vrf/p256/p256_test.go index 983dc44ef..96aef94b4 100644 --- a/core/crypto/vrf/p256/p256_test.go +++ b/core/crypto/vrf/p256/p256_test.go @@ -19,20 +19,16 @@ import ( "context" "crypto/rand" "encoding/hex" - "encoding/json" - "io/ioutil" "math" - "os" "testing" - "github.com/golang/protobuf/jsonpb" "github.com/golang/protobuf/proto" "github.com/google/keytransparency/core/testdata" "github.com/google/trillian/crypto/keys" "github.com/google/trillian/crypto/keys/der" "github.com/google/trillian/crypto/keyspb" - pb "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" + tpb "github.com/google/keytransparency/core/api/transcript_go_proto" _ "github.com/google/trillian/crypto/keys/der/proto" ) @@ -187,35 +183,26 @@ func TestVRF(t *testing.T) { // Test vectors in core/testdata are generated by running // go generate ./core/testdata func TestProofToHash(t *testing.T) { - directoryFile := "../../../testdata/directory_get_and_update.json" - f, err := os.Open(directoryFile) + transcript, err := testdata.ReadTranscript("TestEmptyGetAndUpdate") if err != nil { - t.Fatalf("ReadFile(%v): %v", directoryFile, err) + t.Fatal(err) } - defer f.Close() - var directory pb.Directory - if err := jsonpb.Unmarshal(f, &directory); err != nil { - t.Fatalf("jsonpb.Unmarshal(): %v", err) - } - pk, err := NewVRFVerifierFromRawKey(directory.GetVrf().GetDer()) + + pk, err := NewVRFVerifierFromRawKey(transcript.GetDirectory().GetVrf().GetDer()) if err != nil { t.Fatalf("NewVRFVerifier failure: %v", err) } - respFile := "../../../testdata/get_and_update.json" - b, err := ioutil.ReadFile(respFile) - if err != nil { - t.Fatalf("ReadFile(%v): %v", respFile, err) - } - var getUserResponses []testdata.ResponseVector - if err := json.Unmarshal(b, &getUserResponses); err != nil { - t.Fatalf("Unmarshal(): %v", err) - } - for _, tc := range getUserResponses { - t.Run(tc.Desc, func(t *testing.T) { - _, err := pk.ProofToHash([]byte(tc.UserID), tc.GetUserResp.GetLeaf().GetVrfProof()) - if err != nil { - t.Errorf("ProofToHash(%v): %v)", tc.Desc, err) + for _, rpc := range transcript.Rpcs { + t.Run(rpc.Desc, func(t *testing.T) { + switch pair := rpc.ReqRespPair.(type) { + case *tpb.Unary_GetUser: + userID := pair.GetUser.Request.UserId + vrfProof := pair.GetUser.Response.GetLeaf().GetVrfProof() + _, err := pk.ProofToHash([]byte(userID), vrfProof) + if err != nil { + t.Errorf("ProofToHash(%v): %v)", rpc.Desc, err) + } } }) } diff --git a/core/integration/alltests.go b/core/integration/alltests.go index 5d7a8a696..b9576e789 100644 --- a/core/integration/alltests.go +++ b/core/integration/alltests.go @@ -22,9 +22,9 @@ import ( "time" "github.com/google/keytransparency/core/client" - "github.com/google/keytransparency/core/testdata" "google.golang.org/grpc" + tpb "github.com/google/keytransparency/core/api/transcript_go_proto" pb "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" spb "github.com/google/keytransparency/core/sequencer/sequencer_go_proto" ) @@ -45,10 +45,8 @@ type CallOptions func(userID string) []grpc.CallOption // NamedTestFn is a binding between a readable test name (used for a Go subtest) // and a function that performs the test, given a test environment. type NamedTestFn struct { - Name string - Fn func(context.Context, *Env, *testing.T) []testdata.ResponseVector - DirectoryFilename string - RespFilename string + Name string + Fn func(context.Context, *Env, *testing.T) []*tpb.Unary } // AllTests contains all the integration tests. @@ -56,12 +54,12 @@ type NamedTestFn struct { // This is done so that tests can be run in different environments in a portable way. var AllTests = []NamedTestFn{ // Client Tests - {Name: "TestEmptyGetAndUpdate", Fn: TestEmptyGetAndUpdate, DirectoryFilename: "directory_get_and_update.json", RespFilename: "get_and_update.json"}, - {Name: "TestBatchGetUser", Fn: TestBatchGetUser, DirectoryFilename: "directory_batch_get_user.json", RespFilename: "batch_get_user.json"}, + {Name: "TestEmptyGetAndUpdate", Fn: TestEmptyGetAndUpdate}, + {Name: "TestBatchGetUser", Fn: TestBatchGetUser}, {Name: "TestListHistory", Fn: TestListHistory}, {Name: "TestBatchUpdate", Fn: TestBatchUpdate}, {Name: "TestBatchCreate", Fn: TestBatchCreate}, - {Name: "TestBatchListUserRevisions", Fn: TestBatchListUserRevisions, DirectoryFilename: "directory_batch_list_user_revisions.json", RespFilename: "batch_list_user_revisions.json"}, + {Name: "TestBatchListUserRevisions", Fn: TestBatchListUserRevisions}, // Monitor Tests {Name: "TestMonitor", Fn: TestMonitor}, } diff --git a/core/integration/client_tests.go b/core/integration/client_tests.go index 75d3bee45..89c20eba3 100644 --- a/core/integration/client_tests.go +++ b/core/integration/client_tests.go @@ -25,7 +25,6 @@ import ( "github.com/google/keytransparency/core/client" "github.com/google/keytransparency/core/sequencer" - "github.com/google/keytransparency/core/testdata" "github.com/google/keytransparency/core/testutil" "github.com/google/trillian/types" @@ -35,6 +34,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + tpb "github.com/google/keytransparency/core/api/transcript_go_proto" pb "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" spb "github.com/google/keytransparency/core/sequencer/sequencer_go_proto" ) @@ -94,7 +94,7 @@ func genUserIDs(count int) []string { } // TestBatchCreate verifies that the batch functions are working correctly. -func TestBatchCreate(ctx context.Context, env *Env, t *testing.T) []testdata.ResponseVector { +func TestBatchCreate(ctx context.Context, env *Env, t *testing.T) []*tpb.Unary { go runSequencer(ctx, t, env.Directory.DirectoryId, env) signers1 := testutil.SignKeysetsFromPEMs(testPrivKey1) authorizedKeys1 := testutil.VerifyKeysetFromPEMs(testPubKey1) @@ -129,7 +129,7 @@ func TestBatchCreate(ctx context.Context, env *Env, t *testing.T) []testdata.Res } // TestBatchUpdate verifies that the batch functions are working correctly. -func TestBatchUpdate(ctx context.Context, env *Env, t *testing.T) []testdata.ResponseVector { +func TestBatchUpdate(ctx context.Context, env *Env, t *testing.T) []*tpb.Unary { go runSequencer(ctx, t, env.Directory.DirectoryId, env) signers1 := testutil.SignKeysetsFromPEMs(testPrivKey1) authorizedKeys1 := testutil.VerifyKeysetFromPEMs(testPubKey1) @@ -167,7 +167,7 @@ func TestBatchUpdate(ctx context.Context, env *Env, t *testing.T) []testdata.Res } // TestEmptyGetAndUpdate verifies set/get semantics. -func TestEmptyGetAndUpdate(ctx context.Context, env *Env, t *testing.T) []testdata.ResponseVector { +func TestEmptyGetAndUpdate(ctx context.Context, env *Env, t *testing.T) []*tpb.Unary { go runSequencer(ctx, t, env.Directory.DirectoryId, env) // Create lists of signers. @@ -181,7 +181,7 @@ func TestEmptyGetAndUpdate(ctx context.Context, env *Env, t *testing.T) []testda authorizedKeys3 := testutil.VerifyKeysetFromPEMs("", testPubKey2) // Collect a list of valid GetUserResponses - getUserResps := make([]testdata.ResponseVector, 0) + transcript := []*tpb.Unary{} // Start with an empty trusted log root slr := &types.LogRootV1{} @@ -260,6 +260,7 @@ func TestEmptyGetAndUpdate(ctx context.Context, env *Env, t *testing.T) []testda } { t.Run(tc.desc, func(t *testing.T) { // Check profile. + reqSLR := *slr e, newslr, err := CheckProfile(ctx, env, tc.userID, tc.wantProfile, slr) if err != nil { t.Fatalf("%v", err) @@ -271,11 +272,20 @@ func TestEmptyGetAndUpdate(ctx context.Context, env *Env, t *testing.T) []testda if trust { slr = newslr } - getUserResps = append(getUserResps, testdata.ResponseVector{ - Desc: tc.desc, - UserID: tc.userID, - GetUserResp: e, - TrustNewLog: trust, + transcript = append(transcript, &tpb.Unary{ + Desc: tc.desc, + LastVerifiedLogRoot: &pb.LogRootRequest{ + TreeSize: int64(reqSLR.TreeSize), + RootHash: reqSLR.RootHash, + }, + ReqRespPair: &tpb.Unary_GetUser{GetUser: &tpb.GetUser{ + Request: &pb.GetUserRequest{ + DirectoryId: env.Directory.DirectoryId, + UserId: tc.userID, + LastVerifiedTreeSize: int64(reqSLR.TreeSize), + }, + Response: e, + }}, }) // Update profile. @@ -294,7 +304,7 @@ func TestEmptyGetAndUpdate(ctx context.Context, env *Env, t *testing.T) []testda } }) } - return getUserResps + return transcript } // CheckProfile verifies that the retrieved profile of userID is correct. @@ -321,11 +331,11 @@ func CheckProfile(ctx context.Context, env *Env, userID string, wantProfile []by } // TestBatchGetUser tests fetching multiple users in a single request. -func TestBatchGetUser(ctx context.Context, env *Env, t *testing.T) []testdata.ResponseVector { +func TestBatchGetUser(ctx context.Context, env *Env, t *testing.T) []*tpb.Unary { go runSequencer(ctx, t, env.Directory.DirectoryId, env) signers1 := testutil.SignKeysetsFromPEMs(testPrivKey1) authorizedKeys1 := testutil.VerifyKeysetFromPEMs(testPubKey1) - batchResps := make([]testdata.ResponseVector, 0) + transcript := []*tpb.Unary{} users := []*client.User{ { @@ -397,7 +407,8 @@ func TestBatchGetUser(ctx context.Context, env *Env, t *testing.T) []testdata.Re if err != nil { t.Fatalf("BatchGetUser(): %v", err) } - _, smr, err := env.Client.VerifyRevision(resp.Revision, types.LogRootV1{}) + slr := types.LogRootV1{} + _, smr, err := env.Client.VerifyRevision(resp.Revision, slr) if err != nil { t.Fatalf("VerifyRevision(): %v", nil) } @@ -409,18 +420,28 @@ func TestBatchGetUser(ctx context.Context, env *Env, t *testing.T) []testdata.Re t.Fatalf("key mismatch for %s: %s, want %s", userID, got, want) } } - batchResps = append(batchResps, testdata.ResponseVector{ - Desc: tc.desc, - UserIDs: userIDs, - BatchGetUserResp: resp, + transcript = append(transcript, &tpb.Unary{ + Desc: tc.desc, + LastVerifiedLogRoot: &pb.LogRootRequest{ + TreeSize: int64(slr.TreeSize), + RootHash: slr.RootHash, + }, + ReqRespPair: &tpb.Unary_BatchGetUser{ + BatchGetUser: &tpb.BatchGetUser{ + Request: &pb.BatchGetUserRequest{ + UserIds: userIDs, + }, + Response: resp, + }, + }, }) }) } - return batchResps + return transcript } // TestListHistory verifies that repeated history values get collapsed properly. -func TestListHistory(ctx context.Context, env *Env, t *testing.T) []testdata.ResponseVector { +func TestListHistory(ctx context.Context, env *Env, t *testing.T) []*tpb.Unary { userID := "bob" opts := env.CallOpts(userID) @@ -541,7 +562,7 @@ func sortHistory(history map[uint64][]byte) [][]byte { } // TestBatchListUserRevisions verifies that BatchListUserRevisions() in keyserver works properly. -func TestBatchListUserRevisions(ctx context.Context, env *Env, t *testing.T) []testdata.ResponseVector { +func TestBatchListUserRevisions(ctx context.Context, env *Env, t *testing.T) []*tpb.Unary { // Create lists of signers and authorized keys signers := testutil.SignKeysetsFromPEMs(testPrivKey1) authorizedKeys := testutil.VerifyKeysetFromPEMs(testPubKey1) @@ -553,7 +574,7 @@ func TestBatchListUserRevisions(ctx context.Context, env *Env, t *testing.T) []t request := &pb.BatchListUserRevisionsRequest{ DirectoryId: env.Directory.DirectoryId, } - responseVec := make([]testdata.ResponseVector, 0) + transcript := []*tpb.Unary{} for _, tc := range []struct { desc string start, end int64 @@ -580,10 +601,14 @@ func TestBatchListUserRevisions(ctx context.Context, env *Env, t *testing.T) []t if err != nil { return } - responseVec = append(responseVec, testdata.ResponseVector{ - Desc: tc.desc, - UserIDs: tc.userIDs, - BatchListUserRevisionsResp: response, + transcript = append(transcript, &tpb.Unary{ + Desc: tc.desc, + ReqRespPair: &tpb.Unary_BatchListUserRevisions{ + BatchListUserRevisions: &tpb.BatchListUserRevisions{ + Request: request, + Response: response, + }, + }, }) var got [][]byte for _, rev := range response.MapRevisions { @@ -596,7 +621,7 @@ func TestBatchListUserRevisions(ctx context.Context, env *Env, t *testing.T) []t } }) } - return responseVec + return transcript } func (env *Env) setupHistoryMultipleUsers(ctx context.Context, directory *pb.Directory, signers []tink.Signer, diff --git a/core/integration/monitor_tests.go b/core/integration/monitor_tests.go index 89ea349ad..bdf8eea97 100644 --- a/core/integration/monitor_tests.go +++ b/core/integration/monitor_tests.go @@ -23,7 +23,6 @@ import ( "github.com/google/keytransparency/core/client" "github.com/google/keytransparency/core/fake" "github.com/google/keytransparency/core/monitor" - "github.com/google/keytransparency/core/testdata" "github.com/google/keytransparency/core/testutil" "github.com/google/tink/go/tink" "google.golang.org/grpc/codes" @@ -33,6 +32,7 @@ import ( "github.com/google/trillian/crypto/keys/pem" "github.com/google/trillian/types" + tpb "github.com/google/keytransparency/core/api/transcript_go_proto" spb "github.com/google/keytransparency/core/sequencer/sequencer_go_proto" ) @@ -45,7 +45,7 @@ amFdON6OhjYnBmJWe4fVnbxny0PfpkvXtg== ) // TestMonitor verifies that the monitor correctly verifies transitions between revisions. -func TestMonitor(ctx context.Context, env *Env, t *testing.T) []testdata.ResponseVector { +func TestMonitor(ctx context.Context, env *Env, t *testing.T) []*tpb.Unary { // setup monitor: privKey, err := pem.UnmarshalPrivateKey(monitorPrivKey, "") if err != nil { diff --git a/core/testdata/TestBatchCreate.json b/core/testdata/TestBatchCreate.json new file mode 100644 index 000000000..171bdfab4 --- /dev/null +++ b/core/testdata/TestBatchCreate.json @@ -0,0 +1,31 @@ +{ + "description": "TestBatchCreate", + "directory": { + "directoryId": "integration", + "log": { + "treeId": "4821318422028900880", + "treeType": "PREORDERED_LOG", + "hashStrategy": "RFC6962_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" + } + }, + "map": { + "treeId": "5892011389996388160", + "treeType": "MAP", + "hashStrategy": "CONIKS_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" + } + }, + "vrf": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" + }, + "minInterval": "0.100s", + "maxInterval": "216000s" + } +} \ No newline at end of file diff --git a/core/testdata/TestBatchGetUser.json b/core/testdata/TestBatchGetUser.json new file mode 100644 index 000000000..bc96da5c1 --- /dev/null +++ b/core/testdata/TestBatchGetUser.json @@ -0,0 +1,2363 @@ +{ + "description": "TestBatchGetUser", + "directory": { + "directoryId": "integration", + "log": { + "treeId": "1283056646755542265", + "treeType": "PREORDERED_LOG", + "hashStrategy": "RFC6962_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" + } + }, + "map": { + "treeId": "2062628227332804898", + "treeType": "MAP", + "hashStrategy": "CONIKS_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" + } + }, + "vrf": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" + }, + "minInterval": "0.100s", + "maxInterval": "216000s" + }, + "rpcs": [ + { + "desc": "single empty", + "lastVerifiedLogRoot": { + + }, + "batchGetUser": { + "request": { + "userIds": [ + "alice" + ] + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgwlMPr4XLj7jtTRwk2JNcJIW+QEIA1+G7AXl/7a5kTR8Vr6jJLjuY0AAAAAAAAAABABISAhgBEgwQ+bG/w5KZ6tcVGAI=", + "signature": "MEUCIQD2YZgaEsWs6kyB5tsa6ZVAesfalXPdHUvKWCKRa+8mdgIgIrZ3ce1dJAHpUcWkgx7XYEeHbqd7fs7H4iCgZztQ4Z8=" + }, + "logInclusion": [ + "Qp3RT4fw04wyqs9icst1tJ2NJ8Bj1tk2zjfG3VnvnRQ=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "Ec5VOOiRZPk=", + "logRoot": "AAEAAAAAAAAAAiBqLcr2nVfnVVhl+RLEf6Ac/AEF2MCUmwjB7AE1nU0pQBWvqMk8iYnYAAAAAAAAAAIAAA==", + "logRootSignature": "MEUCIDTr3ykrPAD1w6YlZCp1LUiyCkAedhFYWdG3anmbnCWiAiEA1es887SsA1IU8TvYx0xfv8FsOBkRmoPpyiC4XbRWHdQ=" + } + } + }, + "mapLeavesByUserId": { + "alice": { + "vrfProof": "PKFlR5o7s++xQfxzGrz1fmfLS+TD4Cs3157kslE1aPoRIwUCDet4TN5NU8B3mT1TdDyiF9TB3CkIOISTAG0JLARTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "index": "A9/B/HF0DP6pap5CSp8/Jo05FhoGWECfsTAnRlVdzvM=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "vH6SqM1b2mz6CHCcQkm6/okqHkH6yR6tUzVixd0GVf4=", + "PGtA1G8D3pAEQ70/EpYWfjI7dr6GOX7YmjB3Y3CB2HM=", + "" + ] + } + } + } + } + } + }, + { + "desc": "multi empty", + "lastVerifiedLogRoot": { + + }, + "batchGetUser": { + "request": { + "userIds": [ + "zelda", + "alice" + ] + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgwlMPr4XLj7jtTRwk2JNcJIW+QEIA1+G7AXl/7a5kTR8Vr6jJLjuY0AAAAAAAAAABABISAhgBEgwQ+bG/w5KZ6tcVGAI=", + "signature": "MEUCIQD2YZgaEsWs6kyB5tsa6ZVAesfalXPdHUvKWCKRa+8mdgIgIrZ3ce1dJAHpUcWkgx7XYEeHbqd7fs7H4iCgZztQ4Z8=" + }, + "logInclusion": [ + "Qp3RT4fw04wyqs9icst1tJ2NJ8Bj1tk2zjfG3VnvnRQ=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "Ec5VOOiRZPk=", + "logRoot": "AAEAAAAAAAAAAiBqLcr2nVfnVVhl+RLEf6Ac/AEF2MCUmwjB7AE1nU0pQBWvqMk8iYnYAAAAAAAAAAIAAA==", + "logRootSignature": "MEUCIDTr3ykrPAD1w6YlZCp1LUiyCkAedhFYWdG3anmbnCWiAiEA1es887SsA1IU8TvYx0xfv8FsOBkRmoPpyiC4XbRWHdQ=" + } + } + }, + "mapLeavesByUserId": { + "alice": { + "vrfProof": "LLbvvN/w3Bo+ia/ydJ6JzPIhcX5rHNwsx90wVCtdov/SMpyGWgM43ybzW348bjG8M+UdkhpxOkRAK/q7dRiHFARTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "index": "A9/B/HF0DP6pap5CSp8/Jo05FhoGWECfsTAnRlVdzvM=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "vH6SqM1b2mz6CHCcQkm6/okqHkH6yR6tUzVixd0GVf4=", + "PGtA1G8D3pAEQ70/EpYWfjI7dr6GOX7YmjB3Y3CB2HM=", + "" + ] + } + }, + "zelda": { + "vrfProof": "2VyqW4/RldQQWuN85hYZiSBT6QRgXFa4LQCbqKNN7GqtomxJZl0qJIGJzOKxUcgll9+tncB92KfSAhje15m5YwQtrUX0DufLX9SITX79ae9LqiYFNaU8XDMHSZ44UUb2kMU6/IycyPbQiVogsuIIrgNYXImVlFvuCSyjC6Kg03hK", + "mapInclusion": { + "leaf": { + "index": "L+Kt2w2EizRLIRMNTQu0J9o4c37Jhf2MT+xy8XZ/QVo=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "g6kWnF0rW7xxNLoMji6vxWx5yo3uc2Z+WnMFdeCQv+s=", + "", + "", + "PGtA1G8D3pAEQ70/EpYWfjI7dr6GOX7YmjB3Y3CB2HM=", + "" + ] + } + } + } + } + } + }, + { + "desc": "single full", + "lastVerifiedLogRoot": { + + }, + "batchGetUser": { + "request": { + "userIds": [ + "bob" + ] + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgwlMPr4XLj7jtTRwk2JNcJIW+QEIA1+G7AXl/7a5kTR8Vr6jJLjuY0AAAAAAAAAABABISAhgBEgwQ+bG/w5KZ6tcVGAI=", + "signature": "MEUCIQD2YZgaEsWs6kyB5tsa6ZVAesfalXPdHUvKWCKRa+8mdgIgIrZ3ce1dJAHpUcWkgx7XYEeHbqd7fs7H4iCgZztQ4Z8=" + }, + "logInclusion": [ + "Qp3RT4fw04wyqs9icst1tJ2NJ8Bj1tk2zjfG3VnvnRQ=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "Ec5VOOiRZPk=", + "logRoot": "AAEAAAAAAAAAAiBqLcr2nVfnVVhl+RLEf6Ac/AEF2MCUmwjB7AE1nU0pQBWvqMk8iYnYAAAAAAAAAAIAAA==", + "logRootSignature": "MEUCIDTr3ykrPAD1w6YlZCp1LUiyCkAedhFYWdG3anmbnCWiAiEA1es887SsA1IU8TvYx0xfv8FsOBkRmoPpyiC4XbRWHdQ=" + } + } + }, + "mapLeavesByUserId": { + "bob": { + "vrfProof": "+1c0mXZmSWIMSBBctDz5wTGcbVTowxRIoz095kI8KF0XLgOc0WEw6t8HCV1k3soTRVRfv3hvzHdPRhdKgpXhDQSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", + "leafHash": "FWe23DE9CnefBSVqywlR7eFff1hlO5WzKwz97y9c2LE=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIg/xYaCmaSj8A4GrHJBR3uHzkOVHT+RzCzVrxmsVi+x4JCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAj4oouCEk6eye0x0gJ+OvCfyT4f8u3R2oR9xzb9I0CYoCIG93EO52yudSEEkUuLoKj77dHxTLO6tlen/Xq3X+JItC" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AL1oZUt2p1JF5D/kMoi5QAeXDMfJAOKRVOYYm4xhkWI=", + "" + ] + }, + "committed": { + "key": "U1sA4snyDBsTzjHt2HZPCw==", + "data": "Ym9iLWtleQ==" + } + } + } + } + } + }, + { + "desc": "multi full", + "lastVerifiedLogRoot": { + + }, + "batchGetUser": { + "request": { + "userIds": [ + "bob", + "carol" + ] + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgwlMPr4XLj7jtTRwk2JNcJIW+QEIA1+G7AXl/7a5kTR8Vr6jJLjuY0AAAAAAAAAABABISAhgBEgwQ+bG/w5KZ6tcVGAI=", + "signature": "MEUCIQD2YZgaEsWs6kyB5tsa6ZVAesfalXPdHUvKWCKRa+8mdgIgIrZ3ce1dJAHpUcWkgx7XYEeHbqd7fs7H4iCgZztQ4Z8=" + }, + "logInclusion": [ + "Qp3RT4fw04wyqs9icst1tJ2NJ8Bj1tk2zjfG3VnvnRQ=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "Ec5VOOiRZPk=", + "logRoot": "AAEAAAAAAAAAAiBqLcr2nVfnVVhl+RLEf6Ac/AEF2MCUmwjB7AE1nU0pQBWvqMk8iYnYAAAAAAAAAAIAAA==", + "logRootSignature": "MEUCIDTr3ykrPAD1w6YlZCp1LUiyCkAedhFYWdG3anmbnCWiAiEA1es887SsA1IU8TvYx0xfv8FsOBkRmoPpyiC4XbRWHdQ=" + } + } + }, + "mapLeavesByUserId": { + "bob": { + "vrfProof": "PsksYijl0f+pxnBAWE5K+kF3+lVisg59JZ6lqf3O8/u6z6rBYvu4UPKS6nLFIrZrZO0OuqwyDWVteDYn9n4cRgSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", + "leafHash": "FWe23DE9CnefBSVqywlR7eFff1hlO5WzKwz97y9c2LE=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIg/xYaCmaSj8A4GrHJBR3uHzkOVHT+RzCzVrxmsVi+x4JCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAj4oouCEk6eye0x0gJ+OvCfyT4f8u3R2oR9xzb9I0CYoCIG93EO52yudSEEkUuLoKj77dHxTLO6tlen/Xq3X+JItC" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AL1oZUt2p1JF5D/kMoi5QAeXDMfJAOKRVOYYm4xhkWI=", + "" + ] + }, + "committed": { + "key": "U1sA4snyDBsTzjHt2HZPCw==", + "data": "Ym9iLWtleQ==" + } + }, + "carol": { + "vrfProof": "Hp706xZGIi05bigFM3BVMq72/LzKi7469qI77N6VtHLSzuRuZyGsXm9V4rvKyD2zfhHV5gRUFfQksXEB3q5PnwSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "index": "JYx5mwUZM4rLnxSas5/NC9GiuqMYVWThqNqJdDz6bvw=", + "leafHash": "WyNJSMn2BbouZok1taEO2PNi59PX/oETjLL28XEmc9A=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgnMpJwNoyyHHq9OHoS0GADqscQItnWwXwYHowTBE0wXBCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiBXtv7+VtINTE3bPeFBhlfITwoeXdoekz7VZBwQ5b0CxwIgLfxtsKnuTmKlg5HXlSr2pjvITTVMDNok02ylSOQTWFM=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "PGtA1G8D3pAEQ70/EpYWfjI7dr6GOX7YmjB3Y3CB2HM=", + "" + ] + }, + "committed": { + "key": "5AnHrMDTAod5XXQgyDFYog==", + "data": "Y2Fyb2wta2V5" + } + } + } + } + } + }, + { + "desc": "multi mixed", + "lastVerifiedLogRoot": { + + }, + "batchGetUser": { + "request": { + "userIds": [ + "alice", + "bob" + ] + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgwlMPr4XLj7jtTRwk2JNcJIW+QEIA1+G7AXl/7a5kTR8Vr6jJLjuY0AAAAAAAAAABABISAhgBEgwQ+bG/w5KZ6tcVGAI=", + "signature": "MEUCIQD2YZgaEsWs6kyB5tsa6ZVAesfalXPdHUvKWCKRa+8mdgIgIrZ3ce1dJAHpUcWkgx7XYEeHbqd7fs7H4iCgZztQ4Z8=" + }, + "logInclusion": [ + "Qp3RT4fw04wyqs9icst1tJ2NJ8Bj1tk2zjfG3VnvnRQ=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "Ec5VOOiRZPk=", + "logRoot": "AAEAAAAAAAAAAiBqLcr2nVfnVVhl+RLEf6Ac/AEF2MCUmwjB7AE1nU0pQBWvqMk8iYnYAAAAAAAAAAIAAA==", + "logRootSignature": "MEUCIDTr3ykrPAD1w6YlZCp1LUiyCkAedhFYWdG3anmbnCWiAiEA1es887SsA1IU8TvYx0xfv8FsOBkRmoPpyiC4XbRWHdQ=" + } + } + }, + "mapLeavesByUserId": { + "alice": { + "vrfProof": "EKsciMDdKXH4oMoiSmAlSTJyRmXcSGJgGO33E/w6eeoXj7zO1Gztc0HLl/ZfM8cc/DTSBqH5k7hshTXdnM7C0gRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "index": "A9/B/HF0DP6pap5CSp8/Jo05FhoGWECfsTAnRlVdzvM=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "vH6SqM1b2mz6CHCcQkm6/okqHkH6yR6tUzVixd0GVf4=", + "PGtA1G8D3pAEQ70/EpYWfjI7dr6GOX7YmjB3Y3CB2HM=", + "" + ] + } + }, + "bob": { + "vrfProof": "t59+Eh2ulY+VH765BAUoIDTVajUfUw1E4pdMB0ugNo5mUs5PyEz+xjAgsteTr3dP77AG93lcHP9yHqxkGNmw8gSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", + "leafHash": "FWe23DE9CnefBSVqywlR7eFff1hlO5WzKwz97y9c2LE=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIg/xYaCmaSj8A4GrHJBR3uHzkOVHT+RzCzVrxmsVi+x4JCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAj4oouCEk6eye0x0gJ+OvCfyT4f8u3R2oR9xzb9I0CYoCIG93EO52yudSEEkUuLoKj77dHxTLO6tlen/Xq3X+JItC" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AL1oZUt2p1JF5D/kMoi5QAeXDMfJAOKRVOYYm4xhkWI=", + "" + ] + }, + "committed": { + "key": "U1sA4snyDBsTzjHt2HZPCw==", + "data": "Ym9iLWtleQ==" + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/core/testdata/TestBatchListUserRevisions.json b/core/testdata/TestBatchListUserRevisions.json new file mode 100644 index 000000000..854ff578c --- /dev/null +++ b/core/testdata/TestBatchListUserRevisions.json @@ -0,0 +1,5129 @@ +{ + "description": "TestBatchListUserRevisions", + "directory": { + "directoryId": "integration", + "log": { + "treeId": "7166363604494653072", + "treeType": "PREORDERED_LOG", + "hashStrategy": "RFC6962_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" + } + }, + "map": { + "treeId": "2254048446176788384", + "treeType": "MAP", + "hashStrategy": "CONIKS_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" + } + }, + "vrf": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" + }, + "minInterval": "0.100s", + "maxInterval": "216000s" + }, + "rpcs": [ + { + "desc": "single revision", + "batchListUserRevisions": { + "request": { + "directoryId": "integration", + "userIds": [ + "alice", + "bob", + "carol" + ], + "startRevision": "7", + "endRevision": "10" + }, + "response": { + "latestLogRoot": { + "logRoot": { + "keyHint": "Y3QJurExFpA=", + "logRoot": "AAEAAAAAAAAACyC5Z0R8Ej236U42mngvWb3+cdA0HhKEj6AkuMTfJMUmohWvqM2AoObQAAAAAAAAAAsAAA==", + "logRootSignature": "MEUCIQD8O+kDxjXHFNEtkLQkIRb24iEdto3Qe/rsrN81BboNFQIgQoZfo28S5xyWvMvmq2HuD5O7ZHP0oLBfITM1b2PoZHA=" + } + }, + "mapRevisions": [ + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEg6S1M18dISZuZIUA06VRXkvmOkqa/NxyuW4Yn7mjo98UVr6jMgbUbAAAAAAAAAAADABwSFgjJ79GLxpnq1xUQqd2ghsiZ6tcVGAESAhgC", + "signature": "MEUCIQDZjvy0V2HaU5jBwlDsbXSD3dAQo+VU+F1RIOcTJ/NHYAIgWVEX6wxmERbNTPz5oPaiXlsF9udzNPYXRNGQWviZotQ=" + }, + "logInclusion": [ + "NClgzw9WRJJhxyf5iy484GNjm8p8q9lxyDDOKAFElwU=", + "DqgDOhHODMl6J9h5b9N++8hXVKwzXIaTgwHwAYD9Sk8=", + "XrFTKTJlYDz8l4LSk8vhy5YINX22DUh7cgx6mXSswu4=", + "19gCYUgFiHJeEOnGXuIeJ8sNnaEcAbX1ql+JWVQSoCo=" + ] + }, + "mapLeavesByUserId": { + "alice": { + "vrfProof": "JkihVjISxMrZbhb6HjFHicgemZK+/DZ6RT3Ic79i83kyQP5qU7ykKlwVCvRWCa3eHPqYH9HCNw4d0wodOruFrwRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "leafHash": "G1PGyQmKlIPsr0YZ226Q5xrelQtT5lwuC79uMDNBD1o=", + "leafValue": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIg8kU8KaZp0e4Pg5h3VUCobpgnwTgfXJNHYxGuGOkI3sRCINXSAcfWXdzCHoF/IARw1fm5RGFSJju6Pb9i9Z8HWhadSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiBZxA3/hh19I5e73V246ZApX9yBysmmXG4nH7eDCLIijQIhAPSirnDwhfjYtlozH4VdCxTdjyxDD08dW2GVDoF+lclU" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "vjmfgpct2sPL7E4+8S9DJQ3SsJi6VRZuha3yFS5iVJc=", + "" + ] + }, + "committed": { + "key": "8DAmlmzC0n/Kw8GXjvS4gw==", + "data": "YmFyMg==" + } + }, + "bob": { + "vrfProof": "/ADfJIvnIQ5qgKcU0vk1AXEYUJl9q80GERLj3fo2I9E61dVggHd8zjTVX1lnHFll6BY9kvI83zUBhVS0gbe45gSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "leafHash": "xYHsZU6km7C8DluGzdT2SuTuAmMH04HU3dbBcx0n7po=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgl1QOoX0onWSefcbiX+l8Dz1PSj093Pwu9RH0dk8ch9JCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiBK5x+GXyDm1CskzE/NtSA+Q7hcRpvLI5CFd4sBIbOtVgIhAP5aELr99/pYmMGQqFnH2rTe1fxEa9cg3brgP3IFDgZw" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "pvMjdSazuMOmaOt64vkG5F/vyveXXz9/ZJYcgeFJ59Q=", + "" + ] + }, + "committed": { + "key": "bqu/a+Dx8zt9ZRS8yoHFyg==", + "data": "YmFyMTE=" + } + } + } + } + ] + } + } + }, + { + "desc": "multiple revisions test 1", + "batchListUserRevisions": { + "request": { + "directoryId": "integration", + "userIds": [ + "alice", + "bob", + "carol" + ], + "startRevision": "7", + "endRevision": "10" + }, + "response": { + "latestLogRoot": { + "logRoot": { + "keyHint": "Y3QJurExFpA=", + "logRoot": "AAEAAAAAAAAACyC5Z0R8Ej236U42mngvWb3+cdA0HhKEj6AkuMTfJMUmohWvqM2AoObQAAAAAAAAAAsAAA==", + "logRootSignature": "MEUCIQD8O+kDxjXHFNEtkLQkIRb24iEdto3Qe/rsrN81BboNFQIgQoZfo28S5xyWvMvmq2HuD5O7ZHP0oLBfITM1b2PoZHA=" + } + }, + "mapRevisions": [ + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgvskiTSQCBJdpunasD8k5OdpNRyz2EWcYSqbwAmktw9MVr6jMotBLcAAAAAAAAAAEABwSFgip3aCGyJnq1xUQ+Yu9j8qZ6tcVGAESAhgC", + "signature": "MEUCIQDS8MHHn1OFefpASF7s7yKu5ebt4p8FnnUv4HoAGOCCawIgClMmA37N2ZGqIdRVrGPaHxl4H9Q16STpcplgWdwqhGM=" + }, + "logInclusion": [ + "H3iHh8IwPkaLFR2LkEmCExEj/9ugnsk5D39KbkEXbzI=", + "KDGZlKoHioXxD8aCtoc/PBuCcuO2bqqcVh2m394SCNE=", + "fIM8vK7FdNCcIudgq87V4KsM+ZerLv8Xyq6nUvZysT8=", + "19gCYUgFiHJeEOnGXuIeJ8sNnaEcAbX1ql+JWVQSoCo=" + ] + }, + "mapLeavesByUserId": { + "carol": { + "vrfProof": "14j1vtSLzLiSHQNmPWAmtmeL75OvM7J8KzYcCIFxZD+YKOD4AHQgqbxaGYkS3kep0k8tlONSz0OWccpDupOO0QSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "leafHash": "M0G0YU8wkQ96x9ElI8HF/Fx0CbhSC2LkQO6cgXDOrlo=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgr66S9xllU7ql0I07gd19DGJv5GkTaG2eMKRC+RxitStCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAoTVKvWjdy7w9KtTIp2wDPpIjsQvtYGdM4CuS5hfPmbUCIAIZ5h2Ni3mHLD8aQqv/EglzHAJzDIKtDhWcmWMrnOeN" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "9jMJXxrdQIM2pnbOMYTYkadkIzW7QyAd6cYWbB4M/3w=", + "vjmfgpct2sPL7E4+8S9DJQ3SsJi6VRZuha3yFS5iVJc=", + "" + ] + }, + "committed": { + "key": "G1jC1xOh2V3r6zJ2mlxm3A==", + "data": "YmFyMjE=" + } + } + } + }, + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEg9aYr9fUbcD8kubIYIFucHfTkD4oo/2uJ4szeYR1SGO0Vr6jMwNp68AAAAAAAAAAFABwSFgj5i72Pypnq1xUQmdjM/8uZ6tcVGAESAhgC", + "signature": "MEQCIElqhfkvon0nl5h4/8bTnEJdEm/7EE/sUJP6C3vcDvDqAiB7nbo9JzryxMnofmfj04MWCKHSe9UlbRR+ONYWFs4aRg==" + }, + "logInclusion": [ + "S6fyZyFfZJOioSwrnb/xIqjDxqnRJHP+ocEB1VBT19E=", + "KDGZlKoHioXxD8aCtoc/PBuCcuO2bqqcVh2m394SCNE=", + "fIM8vK7FdNCcIudgq87V4KsM+ZerLv8Xyq6nUvZysT8=", + "19gCYUgFiHJeEOnGXuIeJ8sNnaEcAbX1ql+JWVQSoCo=" + ] + }, + "mapLeavesByUserId": { + "carol": { + "vrfProof": "CwITa8kVEYLJSwP9si2FqlrYU37l/TtFJIxvFav0y34iUvBCDbXKVLWqCGyCUgv0gAcneBXCfdpjvgEDnBecSASmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "leafHash": "pyEQPyzO8mW9FQnNk1FYSG5UESZq/baj30s1h2uudC8=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgVHwy5kyjQAujnjBbfdBPoLgdY1ykHEI1f2WEXhLXIhlCIBrS/3b7EhhtnAQpk/tlHUnl6r5/Gafs6VwPUZiNsFCYSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiBUsEEVZtFLQMEZ+TvbP5kmZVrZmffDGa2Cw96YSgmYSwIhANRHi9+P3Ee2Qp1CozWf87nd8h3u/X9nKLTDUfd8OzIK" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "9jMJXxrdQIM2pnbOMYTYkadkIzW7QyAd6cYWbB4M/3w=", + "vjmfgpct2sPL7E4+8S9DJQ3SsJi6VRZuha3yFS5iVJc=", + "" + ] + }, + "committed": { + "key": "w3ksr+CR6Uy6zMdyIdQ6tQ==", + "data": "YmFyMjI=" + } + } + } + }, + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgnUGp6acNA92AiAEdgu1/Yljcbg4WSjYFO9r4+kAdmPkVr6jM36ewOAAAAAAAAAAGABwSFgiZ2Mz/y5nq1xUQmdmu9c2Z6tcVGAESAhgC", + "signature": "MEYCIQCFIt5UBTf/072/2G9E2A56ulE7hNx699Ot3LEoYPp9TwIhAJhvFjQoHPWIdCGnLEcM2j6kDk9fM27m0gQA+UiBG4li" + }, + "logInclusion": [ + "VIRPV53kTxgS+G7aMjzf8znodRxVOTZ5o8r1NX0y0jo=", + "AhZ35RRm9cneTGOfppdxCmj6tGyZ7Sl958R6RyB0rc0=", + "fIM8vK7FdNCcIudgq87V4KsM+ZerLv8Xyq6nUvZysT8=", + "19gCYUgFiHJeEOnGXuIeJ8sNnaEcAbX1ql+JWVQSoCo=" + ] + }, + "mapLeavesByUserId": { + "carol": { + "vrfProof": "I75hOKzf+ClocGbMFR58YHfLJbs4s1DfgS5waD/MN0MP2cJs4NBDzjlOiiwfjrGtpAd4IzgbvqomnXWAv+baFASmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "leafHash": "pyEQPyzO8mW9FQnNk1FYSG5UESZq/baj30s1h2uudC8=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgVHwy5kyjQAujnjBbfdBPoLgdY1ykHEI1f2WEXhLXIhlCIBrS/3b7EhhtnAQpk/tlHUnl6r5/Gafs6VwPUZiNsFCYSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiBUsEEVZtFLQMEZ+TvbP5kmZVrZmffDGa2Cw96YSgmYSwIhANRHi9+P3Ee2Qp1CozWf87nd8h3u/X9nKLTDUfd8OzIK" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "9jMJXxrdQIM2pnbOMYTYkadkIzW7QyAd6cYWbB4M/3w=", + "Ufb6dTrjubt4EQWE0C91a83Yh1ijgsvBhjvczGMEOg0=", + "" + ] + }, + "committed": { + "key": "w3ksr+CR6Uy6zMdyIdQ6tQ==", + "data": "YmFyMjI=" + } + } + } + }, + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEg98DFdpFzqhRhdKmZvr5uP0MfzW8oF54QXPt2JoLWCREVr6jNAn7koAAAAAAAAAAHACYSFgiZ2a71zZnq1xUQmdmu9c2Z6tcVGAESDBCpwsyM0Jnq1xUYAg==", + "signature": "MEYCIQCqN0DCf7XWqk0U7gKrht/6jjcVFZH+BmPLsmLgjC7JRwIhAI8LZL2xd29IdN+FX/oEn72XWJh2dWdC2dgbgRITi1Hc" + }, + "logInclusion": [ + "269ZZbOtb6KDil4j5WG/XnmJxIRll3ITEj/xwvCCqi8=", + "AhZ35RRm9cneTGOfppdxCmj6tGyZ7Sl958R6RyB0rc0=", + "fIM8vK7FdNCcIudgq87V4KsM+ZerLv8Xyq6nUvZysT8=", + "19gCYUgFiHJeEOnGXuIeJ8sNnaEcAbX1ql+JWVQSoCo=" + ] + }, + "mapLeavesByUserId": { + "carol": { + "vrfProof": "J3pANTPJn0Mzqf0jsbpZLl1LzrJNOOrmc4oRsKG4+29cY0T2e77tM6CccGiVchpEswIJy9yTP3jCpzPlk/QS7wSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "leafHash": "pyEQPyzO8mW9FQnNk1FYSG5UESZq/baj30s1h2uudC8=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgVHwy5kyjQAujnjBbfdBPoLgdY1ykHEI1f2WEXhLXIhlCIBrS/3b7EhhtnAQpk/tlHUnl6r5/Gafs6VwPUZiNsFCYSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiBUsEEVZtFLQMEZ+TvbP5kmZVrZmffDGa2Cw96YSgmYSwIhANRHi9+P3Ee2Qp1CozWf87nd8h3u/X9nKLTDUfd8OzIK" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "gw7oE4UyJJLThpC06/udree1BCaSUmGtxeyfCsOnjz8=", + "Ufb6dTrjubt4EQWE0C91a83Yh1ijgsvBhjvczGMEOg0=", + "" + ] + }, + "committed": { + "key": "w3ksr+CR6Uy6zMdyIdQ6tQ==", + "data": "YmFyMjI=" + } + } + } + } + ] + } + } + }, + { + "desc": "multiple revisions test 2", + "batchListUserRevisions": { + "request": { + "directoryId": "integration", + "userIds": [ + "alice", + "bob", + "carol" + ], + "startRevision": "7", + "endRevision": "10" + }, + "response": { + "latestLogRoot": { + "logRoot": { + "keyHint": "Y3QJurExFpA=", + "logRoot": "AAEAAAAAAAAACyC5Z0R8Ej236U42mngvWb3+cdA0HhKEj6AkuMTfJMUmohWvqM2AoObQAAAAAAAAAAsAAA==", + "logRootSignature": "MEUCIQD8O+kDxjXHFNEtkLQkIRb24iEdto3Qe/rsrN81BboNFQIgQoZfo28S5xyWvMvmq2HuD5O7ZHP0oLBfITM1b2PoZHA=" + } + }, + "mapRevisions": [ + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEg98DFdpFzqhRhdKmZvr5uP0MfzW8oF54QXPt2JoLWCREVr6jNAn7koAAAAAAAAAAHACYSFgiZ2a71zZnq1xUQmdmu9c2Z6tcVGAESDBCpwsyM0Jnq1xUYAg==", + "signature": "MEYCIQCqN0DCf7XWqk0U7gKrht/6jjcVFZH+BmPLsmLgjC7JRwIhAI8LZL2xd29IdN+FX/oEn72XWJh2dWdC2dgbgRITi1Hc" + }, + "logInclusion": [ + "269ZZbOtb6KDil4j5WG/XnmJxIRll3ITEj/xwvCCqi8=", + "AhZ35RRm9cneTGOfppdxCmj6tGyZ7Sl958R6RyB0rc0=", + "fIM8vK7FdNCcIudgq87V4KsM+ZerLv8Xyq6nUvZysT8=", + "19gCYUgFiHJeEOnGXuIeJ8sNnaEcAbX1ql+JWVQSoCo=" + ] + }, + "mapLeavesByUserId": { + "alice": { + "vrfProof": "jZZXQypyh3EbB1PQl8bJraSlh3OkgQMhO8KGs7xa/3qF4d9OJC7rlos18O749eDcpZbkLdu/tjB3WrzLyIuKXQRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "leafHash": "CWHh/WxWO7yC6JEEC4HIVJ3mypGXarZXeTaV86LV8Qs=", + "leafValue": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgLi12F5xJYnS+wc/SBRiqDOjmS5D3u5Mp1tAqOk/R8zZCICopC/kKCgKnjPJtoV/nWCHXAF0B2SLK9D5AOHMaeyZHSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAjenNPxqGo1GigqL3F+IfPU0w9N+RuybPF4lbzrp8BckCIC2ZlNBqI3bPTFnKaq5eiMWwuZNoM/0WLauXh3+lq4XR" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "18Pv3OBds0lrkg+DalxandkWa3mpd6/FXzgS1KXRfEE=", + "Ufb6dTrjubt4EQWE0C91a83Yh1ijgsvBhjvczGMEOg0=", + "" + ] + }, + "committed": { + "key": "RXR2D20jyWa9Kd4bXH7NIw==", + "data": "YmFyMw==" + } + }, + "bob": { + "vrfProof": "eRBFn6yu7SQkyDLVMWPqEIpLaOsJq8g8bxg17u/MCkm/7tMkM5SzdpY5li3kdeVFMMtNNKBM4BQR+df3kp3cUASHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "leafHash": "GSTfhCqJahzBl/fQ/lJp93UJ098qE0CTeTZ2WsyOzcQ=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgPEtbLU7133vhn9M9m6ICFR57rLWb37cv8H13pIxTZ1ZCIP0T5Qw+/i6I69+BQoVqGci9o5E0lbYIVsTE45f8xOtmSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiBeS3dwCBvtWVW0T3ESRppVvi1Kf7HlItsj9BhYWK0ZugIgCe/LqI93IhajHlPKMXArvC1SmUSFl0+6wZLKws7E8Qg=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "K4Q4pIuVzPKVmRmHk1PhQKuNyDscBGrlhhRyTlkGQXk=", + "" + ] + }, + "committed": { + "key": "mEh41k1KI+ejbIOW88C9CA==", + "data": "YmFyMTI=" + } + }, + "carol": { + "vrfProof": "Un2JJgv0txWap5EcjsO/zFYnM8rBOKwok9H4lXkRKOIBI39Yc3wgKWGlflSJ62gihcZLZp6zhydNdHyGgmLncgSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "leafHash": "pyEQPyzO8mW9FQnNk1FYSG5UESZq/baj30s1h2uudC8=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgVHwy5kyjQAujnjBbfdBPoLgdY1ykHEI1f2WEXhLXIhlCIBrS/3b7EhhtnAQpk/tlHUnl6r5/Gafs6VwPUZiNsFCYSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiBUsEEVZtFLQMEZ+TvbP5kmZVrZmffDGa2Cw96YSgmYSwIhANRHi9+P3Ee2Qp1CozWf87nd8h3u/X9nKLTDUfd8OzIK" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "gw7oE4UyJJLThpC06/udree1BCaSUmGtxeyfCsOnjz8=", + "Ufb6dTrjubt4EQWE0C91a83Yh1ijgsvBhjvczGMEOg0=", + "" + ] + }, + "committed": { + "key": "w3ksr+CR6Uy6zMdyIdQ6tQ==", + "data": "YmFyMjI=" + } + } + } + }, + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgyFY5xbYY2TSwxaKcb7k/t6sKdVA+jRPSDRhS3IeKmqAVr6jNDSn0+AAAAAAAAAAIADASFgiZ2a71zZnq1xUQydLM4dCZ6tcVGAESFgipwsyM0Jnq1xUQqcLMjNCZ6tcVGAI=", + "signature": "MEUCIQDvgWeIx1HvJ70Y8JrOth9/SH3PQsf7lL5AmOh+sRd9bwIgIe3NUALkfYb7QmaCYloC8aUEOsGxXlH++yMD35ebt28=" + }, + "logInclusion": [ + "Nw5RAbCQnHz+gf+PFR6AbmSKXSS5/r5FVphOrk98sMs=", + "gmmYPuQz6Hsm7LaN2gnf6u8edMC8qNw74VfSQTUR7Qo=", + "fOTiHTs/fpwQCX/S0FV3FFBLGDcBbC8N2uFuQ5Rya0M=" + ] + }, + "mapLeavesByUserId": { + "alice": { + "vrfProof": "mKf7mjkP40wdJTY41RPH18pO9hQm4anL/2yiKznD5uirsETI9UoK1GC23FMwQdaPWpj8CrM7qfqCfigbBj8srgRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "leafHash": "CWHh/WxWO7yC6JEEC4HIVJ3mypGXarZXeTaV86LV8Qs=", + "leafValue": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgLi12F5xJYnS+wc/SBRiqDOjmS5D3u5Mp1tAqOk/R8zZCICopC/kKCgKnjPJtoV/nWCHXAF0B2SLK9D5AOHMaeyZHSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAjenNPxqGo1GigqL3F+IfPU0w9N+RuybPF4lbzrp8BckCIC2ZlNBqI3bPTFnKaq5eiMWwuZNoM/0WLauXh3+lq4XR" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "18Pv3OBds0lrkg+DalxandkWa3mpd6/FXzgS1KXRfEE=", + "CQk/CayXNGE/Cxw6hNy3xWC1plmPcP1UDW3bUiN8x24=", + "" + ] + }, + "committed": { + "key": "RXR2D20jyWa9Kd4bXH7NIw==", + "data": "YmFyMw==" + } + }, + "bob": { + "vrfProof": "fBs+hMbHZTMe8cyKl4SXdkukwnVfGn8GmkMlhfH3H5w5U9yAQtm5204nk7MnRGvNjUSSvQOBW+DgsmOgdfTCywSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "leafHash": "LJB9n/vSrBEKJr2c22qFcMBtCkQvD+5rtpwnaIqVuj8=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgXMZ3mAC8SGBbxoTcuXfW0MgGoWOLeAR98Li1zgTG3nRCIBQAeB5CZzNAxpJWso36BgBj35CSAhbsqBOcEHeN2youSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSSDBGAiEAoxL5Mg7lmyKKrVdp1KmzmzIDCyjvXyzSX/sKIF94qAECIQDLI6TQXnrRkVmdrngwJNvMqXy51BRMsF4eYVjzdNzDfA==" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "K4Q4pIuVzPKVmRmHk1PhQKuNyDscBGrlhhRyTlkGQXk=", + "" + ] + }, + "committed": { + "key": "OTNXp7uDQsHx5fRLMHrs3g==", + "data": "YmFyMTM=" + } + }, + "carol": { + "vrfProof": "GfexYxLkem6k03aZQ1i/75f7VCCRveQzGsIJk3ACBEyLlv6TCLNebXl4WO0bcvXRxycX2JsixMUDFhKOE0dRvASmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "leafHash": "pyEQPyzO8mW9FQnNk1FYSG5UESZq/baj30s1h2uudC8=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgVHwy5kyjQAujnjBbfdBPoLgdY1ykHEI1f2WEXhLXIhlCIBrS/3b7EhhtnAQpk/tlHUnl6r5/Gafs6VwPUZiNsFCYSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiBUsEEVZtFLQMEZ+TvbP5kmZVrZmffDGa2Cw96YSgmYSwIhANRHi9+P3Ee2Qp1CozWf87nd8h3u/X9nKLTDUfd8OzIK" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "gw7oE4UyJJLThpC06/udree1BCaSUmGtxeyfCsOnjz8=", + "CQk/CayXNGE/Cxw6hNy3xWC1plmPcP1UDW3bUiN8x24=", + "" + ] + }, + "committed": { + "key": "w3ksr+CR6Uy6zMdyIdQ6tQ==", + "data": "YmFyMjI=" + } + } + } + }, + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgZEm4TE3wImqQqk7+IPOMK37yXtcN7m9FGhnWs7Nn4FcVr6jNLXf5+AAAAAAAAAAJADASFgjJ0szh0Jnq1xUQydLM4dCZ6tcVGAESFgipwsyM0Jnq1xUQwa6w5NKZ6tcVGAI=", + "signature": "MEUCIAyd7IedkRgbPDDDVYl5eNCfUiijpyFqAWbxvbW1PH7fAiEA/Z9ZUYuJTYEoB5VKKdIW/iLkNTC4DGc9ga61BJ+s8Iw=" + }, + "logInclusion": [ + "N7gTBVGfUtzS6W+XcxDsQ7qKj7bttvZt6HwFpyQ+Wa4=", + "gmmYPuQz6Hsm7LaN2gnf6u8edMC8qNw74VfSQTUR7Qo=", + "fOTiHTs/fpwQCX/S0FV3FFBLGDcBbC8N2uFuQ5Rya0M=" + ] + }, + "mapLeavesByUserId": { + "alice": { + "vrfProof": "Xkqrw09++aCnjPjtcSb+bBE3xQcQ209EzyLkRi2DKAmW53M5gCtjqWd1qYo9PzvQ+ipDP2U3ckBGtC7WO1hapgRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "leafHash": "CWHh/WxWO7yC6JEEC4HIVJ3mypGXarZXeTaV86LV8Qs=", + "leafValue": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgLi12F5xJYnS+wc/SBRiqDOjmS5D3u5Mp1tAqOk/R8zZCICopC/kKCgKnjPJtoV/nWCHXAF0B2SLK9D5AOHMaeyZHSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAjenNPxqGo1GigqL3F+IfPU0w9N+RuybPF4lbzrp8BckCIC2ZlNBqI3bPTFnKaq5eiMWwuZNoM/0WLauXh3+lq4XR" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "aDcB5azUaaFrQIoGSmUAJ+SgRqSy5LJA/nR9igOjctw=", + "CQk/CayXNGE/Cxw6hNy3xWC1plmPcP1UDW3bUiN8x24=", + "" + ] + }, + "committed": { + "key": "RXR2D20jyWa9Kd4bXH7NIw==", + "data": "YmFyMw==" + } + }, + "bob": { + "vrfProof": "AQZ0W5IcdyZoDLhzqNhvmFf1RDmA+vCdQmxu9Jzo5Yo7LupdEFL/shFTYaDMmyYMOEYffm5mtdws5g2swWxW6gSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "leafHash": "LJB9n/vSrBEKJr2c22qFcMBtCkQvD+5rtpwnaIqVuj8=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgXMZ3mAC8SGBbxoTcuXfW0MgGoWOLeAR98Li1zgTG3nRCIBQAeB5CZzNAxpJWso36BgBj35CSAhbsqBOcEHeN2youSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSSDBGAiEAoxL5Mg7lmyKKrVdp1KmzmzIDCyjvXyzSX/sKIF94qAECIQDLI6TQXnrRkVmdrngwJNvMqXy51BRMsF4eYVjzdNzDfA==" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "43PuvVmZFzkcVEKfwZYRgMt+WuQxxsAfGzbRY5mq0c4=", + "" + ] + }, + "committed": { + "key": "OTNXp7uDQsHx5fRLMHrs3g==", + "data": "YmFyMTM=" + } + }, + "carol": { + "vrfProof": "sC0+yhNP2iVujRf2qplPFwEOcUwVumNdqY3ZHpnALU/+SB6pRuO6AAJ4xJZpNpWPhJIDTVftp985RxoTYB9XyASmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "leafHash": "Avshcj7ULBqV09Y7rCn2cUWlMN9OUgf0YCJyK6MTQdo=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgwkKS6ZSEG8ao8xUxsZH0sEWlP59kLFpU65oiCl5VBjRCIHU0X2mNzU2lC6piS5htUbEWC/aS+YrIKOBq9daTCrR3SpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAqNvSDBtHPlAc2naJ30Pe4K9PAXcnmgSHTi6Jj1uYP6kCIGOwqGWzyeo51M+BKXI6MI+zKo7u04UXpgveHpX20l0x" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "gw7oE4UyJJLThpC06/udree1BCaSUmGtxeyfCsOnjz8=", + "CQk/CayXNGE/Cxw6hNy3xWC1plmPcP1UDW3bUiN8x24=", + "" + ] + }, + "committed": { + "key": "w86CYu8sB5beeBzMd18NJA==", + "data": "YmFyMjM=" + } + } + } + }, + { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgMtkp85eJbF9BEZmZmo5ZYTAB+HvmA2htushv2knbC/sVr6jNak9ySAAAAAAAAAAKADASFgjJ0szh0Jnq1xUQ0c3AytaZ6tcVGAESFgjBrrDk0pnq1xUQwa6w5NKZ6tcVGAI=", + "signature": "MEQCIFeh6tXz6VHvW2qTppofcaS33wltV83yh54X1aQoDA2bAiBJbUfYjk3JbDioS21a52kfk/0F4vMa/1Pis3pwVKCLNw==" + }, + "logInclusion": [ + "CejQKE0jo8Q0iqgFxYUf2OgrDrFeETD2eFtz5JGVeYc=", + "fOTiHTs/fpwQCX/S0FV3FFBLGDcBbC8N2uFuQ5Rya0M=" + ] + }, + "mapLeavesByUserId": { + "alice": { + "vrfProof": "qQQqRIWFnLfH02Q2wxArbbdXo3/z7KR6anKu92DaHITY6b4709mzb34ayRlWxI2fNPsZ0QtYkAFCDCHN6dPH4ARTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "leafHash": "CWHh/WxWO7yC6JEEC4HIVJ3mypGXarZXeTaV86LV8Qs=", + "leafValue": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgLi12F5xJYnS+wc/SBRiqDOjmS5D3u5Mp1tAqOk/R8zZCICopC/kKCgKnjPJtoV/nWCHXAF0B2SLK9D5AOHMaeyZHSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAjenNPxqGo1GigqL3F+IfPU0w9N+RuybPF4lbzrp8BckCIC2ZlNBqI3bPTFnKaq5eiMWwuZNoM/0WLauXh3+lq4XR" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "0abBMq20W4Eh8+SBRJWQeUOm0O3euiBwzijqUO+T+xM=", + "CQk/CayXNGE/Cxw6hNy3xWC1plmPcP1UDW3bUiN8x24=", + "" + ] + }, + "committed": { + "key": "RXR2D20jyWa9Kd4bXH7NIw==", + "data": "YmFyMw==" + } + }, + "bob": { + "vrfProof": "vy4u6asClkDpaIawJF8k+zL314INe//Xpo6hHtck1oQ8H0A4wno5guIRqLJ9F5jXB+5/bHRtuSx0K2xc4ah/iASHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "leafHash": "LJB9n/vSrBEKJr2c22qFcMBtCkQvD+5rtpwnaIqVuj8=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgXMZ3mAC8SGBbxoTcuXfW0MgGoWOLeAR98Li1zgTG3nRCIBQAeB5CZzNAxpJWso36BgBj35CSAhbsqBOcEHeN2youSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSSDBGAiEAoxL5Mg7lmyKKrVdp1KmzmzIDCyjvXyzSX/sKIF94qAECIQDLI6TQXnrRkVmdrngwJNvMqXy51BRMsF4eYVjzdNzDfA==" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "o24rU07fnwVPWZs8fQO8BdO7/JjmEVpdEONjy3zhsmU=", + "" + ] + }, + "committed": { + "key": "OTNXp7uDQsHx5fRLMHrs3g==", + "data": "YmFyMTM=" + } + }, + "carol": { + "vrfProof": "aD1EKovHq5wBjY/iXoYQkm+AWZGNTrocNDj/ooW0ZsFlG0oG1+oKRBOTfc1fJWEpnRZlrrKTFA3ncrQJSspx8wSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "leafHash": "0b4MEMUD7AkhW2Ulzz5NrRlKMpjAfOJERoxTOdrPnNc=", + "leafValue": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgJw5L2wdsBXLexmPAI2h65kT+dgErPxxjg4vRIjSQkdVCIEUkaJw9ooZkWxyGXUSWFDaPChHZsg0olwvAyhqMru2eSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSSDBGAiEApH6/TU74c7Ms0IHmGc2SjXQPWV9NLRtJ5fMSgjMYeZwCIQCOOb7mhARS6igY+R6pnjP68h2nAtShZWC+GwyUvJjqtQ==" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "gw7oE4UyJJLThpC06/udree1BCaSUmGtxeyfCsOnjz8=", + "CQk/CayXNGE/Cxw6hNy3xWC1plmPcP1UDW3bUiN8x24=", + "" + ] + }, + "committed": { + "key": "y50z37qM+fzuEMb4zugJtg==", + "data": "YmFyMjQ=" + } + } + } + } + ] + } + } + } + ] +} \ No newline at end of file diff --git a/core/testdata/TestBatchUpdate.json b/core/testdata/TestBatchUpdate.json new file mode 100644 index 000000000..36df95444 --- /dev/null +++ b/core/testdata/TestBatchUpdate.json @@ -0,0 +1,31 @@ +{ + "description": "TestBatchUpdate", + "directory": { + "directoryId": "integration", + "log": { + "treeId": "532508971529424315", + "treeType": "PREORDERED_LOG", + "hashStrategy": "RFC6962_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" + } + }, + "map": { + "treeId": "2567834446019030304", + "treeType": "MAP", + "hashStrategy": "CONIKS_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" + } + }, + "vrf": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" + }, + "minInterval": "0.100s", + "maxInterval": "216000s" + } +} \ No newline at end of file diff --git a/core/testdata/TestEmptyGetAndUpdate.json b/core/testdata/TestEmptyGetAndUpdate.json new file mode 100644 index 000000000..fa04b9dfa --- /dev/null +++ b/core/testdata/TestEmptyGetAndUpdate.json @@ -0,0 +1,2180 @@ +{ + "description": "TestEmptyGetAndUpdate", + "directory": { + "directoryId": "integration", + "log": { + "treeId": "4652464534098148926", + "treeType": "PREORDERED_LOG", + "hashStrategy": "RFC6962_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" + } + }, + "map": { + "treeId": "2982758428897235112", + "treeType": "MAP", + "hashStrategy": "CONIKS_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" + } + }, + "vrf": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" + }, + "minInterval": "0.100s", + "maxInterval": "216000s" + }, + "rpcs": [ + { + "desc": "empty_alice", + "lastVerifiedLogRoot": { + + }, + "getUser": { + "request": { + "directoryId": "integration", + "userId": "alice" + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgpFhAue92brGIkyHgozYWeTucuVGN8uy0eD5AobIyz1kVr6jH+Tip0AAAAAAAAAAAAAA=", + "signature": "MEQCIHlRXbOFygtknni3xHGFxU2XBKUfdt8jQctajwa6AfcpAiAj/gh0Xf69zvWDK7ocKNdwH13mrritbPGD4mJRbGmOng==" + } + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "QJDf2A0F/j4=", + "logRoot": "AAEAAAAAAAAAASABFOrjZKP3UIzO/LD+eiBCuaH479VOEbZ+4SLpUaQq5xWvqMgVKbloAAAAAAAAAAEAAA==", + "logRootSignature": "MEQCIBC9a+IIH7BbFIMRl3iQ//rIH7SqT9SkmUPl4MHRoZrpAiBdyzkJ4oHWpGrdJ8vizoKdDm6WpIBgkY3iqAfz8dZc+g==" + } + } + }, + "leaf": { + "vrfProof": "ML5Vn7hFjfoiqoimOzUp3CAnuFLZGMbr6BXpKlyAcnMk3ij6Rf3PsGciEeWgoAUJppMuQboLlN40vdcmef1u0gRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", + "mapInclusion": { + "leaf": { + "index": "A9/B/HF0DP6pap5CSp8/Jo05FhoGWECfsTAnRlVdzvM=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + } + } + } + } + }, + { + "desc": "bob0_set", + "lastVerifiedLogRoot": { + "rootHash": "ARTq42Sj91CMzvyw/nogQrmh+O/VThG2fuEi6VGkKuc=", + "treeSize": "1" + }, + "getUser": { + "request": { + "directoryId": "integration", + "userId": "bob", + "lastVerifiedTreeSize": "1" + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgxczHSh5YruwDiIXb7cqAtDRkBcyjvVY6phmxh9RIPv8Vr6jIN8yu0AAAAAAAAAABABISAhgBEgwQ6fWcpoOZ6tcVGAI=", + "signature": "MEUCIH/tcVzbUElVSmeyqMJeCxgjJvsbEeZEJyN94OVx7p70AiEArEDwsWoaPtNVrZ2scvlBZgRhtoZSu11eDZBBrwxgG6Y=" + }, + "logInclusion": [ + "ARTq42Sj91CMzvyw/nogQrmh+O/VThG2fuEi6VGkKuc=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "QJDf2A0F/j4=", + "logRoot": "AAEAAAAAAAAAAiBAD/qSNEHq7/VBI3yBJa5FhXaRGvYIjI7+HFkkkdLVIBWvqMhQ+iXgAAAAAAAAAAIAAA==", + "logRootSignature": "MEUCIQCSsindXTr8Xca24UOBnuFxuCOkVixn4BUr5xsfDMIVtAIgRTXrwx5Amko/lSsEFrW4QzPUK6vRo8LRQ60jOCf+nSk=" + }, + "logConsistency": [ + "A4nHcLk60Ha3XznrfeBt8Zb7ZAEQWHqe1AZyS8GgTV4=" + ] + } + }, + "leaf": { + "vrfProof": "45MwM9G0ggkamqrfNHCn2O8nETpkpd5T7isONhKNx4nDFzL7Hb6x7W7AQrMzadLzk1LJPbN+YgIcw9Dq9237XQSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "mOn7l4rtjVZTD++VIttfbR65a3HAISvK5roSfqdHyD4=", + "" + ] + } + } + } + } + }, + { + "desc": "set_carol", + "lastVerifiedLogRoot": { + "rootHash": "ARTq42Sj91CMzvyw/nogQrmh+O/VThG2fuEi6VGkKuc=", + "treeSize": "1" + }, + "getUser": { + "request": { + "directoryId": "integration", + "userId": "carol", + "lastVerifiedTreeSize": "1" + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgJ4gGRn8cmJXILVp8NhL5x7xlPi7KJs47z5hgPhloLYQVr6jIXAiP0AAAAAAAAAACABwSAhgBEhYI6fWcpoOZ6tcVEPGk+biFmerXFRgC", + "signature": "MEQCIDoH2pkXEKB36GU1k6aDKC9XIhkhp1Chw/wmw36voJ9HAiA8aBkj9cM+Iat1AJBAq0HW2cVxDQ+HA8PdBd+ccJc0IA==" + }, + "logInclusion": [ + "QA/6kjRB6u/1QSN8gSWuRYV2kRr2CIyO/hxZJJHS1SA=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "QJDf2A0F/j4=", + "logRoot": "AAEAAAAAAAAAAyBv008DnWpxPOb5tS4Ih8IKkgjXIxPOzbpLlvoKD7cBBxWvqMhuz6UYAAAAAAAAAAMAAA==", + "logRootSignature": "MEUCIQDDDXOQ2b12T+X/oqGIStQ+57/B89cjRw98hEwcsc9wVAIgKdOIj4Vi4rBrKZ98EaL7HfUL75w16oVgY0RNbwoBOLM=" + }, + "logConsistency": [ + "A4nHcLk60Ha3XznrfeBt8Zb7ZAEQWHqe1AZyS8GgTV4=", + "6eO/eSZDzRuPwXRN53MfPOdt/eJ9oHFfVc2vltWHkdg=" + ] + } + }, + "leaf": { + "vrfProof": "xK8ZigdCRTXNVgJfOAT3e55h38JnOhGZDl1v4E81Y2oUx7DIlAe9vfjD6YE9LbxCK7YsmL6zENr9bVYRsLPNigSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", + "mapInclusion": { + "leaf": { + "index": "JYx5mwUZM4rLnxSas5/NC9GiuqMYVWThqNqJdDz6bvw=" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "NjmXG16cfVZTwt2DvgynfNuny7AUEQbfYkfAiqvgiWw=", + "K1QpNYKTVuNWwOO7rmAdkSgJEcoRkQbZbUFQpbvT9pE=", + "" + ] + } + } + } + } + }, + { + "desc": "bob1_get", + "lastVerifiedLogRoot": { + "rootHash": "ARTq42Sj91CMzvyw/nogQrmh+O/VThG2fuEi6VGkKuc=", + "treeSize": "1" + }, + "getUser": { + "request": { + "directoryId": "integration", + "userId": "bob", + "lastVerifiedTreeSize": "1" + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgo6GbVxP1NS/asAMSs6Q0Bpgtye6g09V/bL21VmnRa6IVr6jIeUPmMAAAAAAAAAADABwSAhgBEhYI8aT5uIWZ6tcVELnS3LSHmerXFRgC", + "signature": "MEUCIQCO/WuAKJn1d6IzphlOLSK/lGrtWOjCMYAiZ8U51F1eTgIgbBb3tHzOekpl18QmmDPvxuG9M8D1/X0YdUMlsZ19aS0=" + }, + "logInclusion": [ + "6eO/eSZDzRuPwXRN53MfPOdt/eJ9oHFfVc2vltWHkdg=", + "QA/6kjRB6u/1QSN8gSWuRYV2kRr2CIyO/hxZJJHS1SA=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "QJDf2A0F/j4=", + "logRoot": "AAEAAAAAAAAABCCdRcIlnNkvQlTQuwOpWqJ5pU2+dc0Pd+zj4sygecdZwhWvqMiMpJewAAAAAAAAAAQAAA==", + "logRootSignature": "MEUCIBUyOJSLKw0MefrxkR223BRW81S6nt/LBksbFiyTZHKTAiEAqwGcJhTdwdCIUkvaCKlgpw6brwgezWVD6spjyauulv4=" + }, + "logConsistency": [ + "A4nHcLk60Ha3XznrfeBt8Zb7ZAEQWHqe1AZyS8GgTV4=", + "5LiZAoPBkclCzQ0HPaEnabfe2xZve3edrkGr2V3Uz04=" + ] + } + }, + "leaf": { + "vrfProof": "L5aELoKsUIeFS4blJWjT9HXM0A7xGMCs1F+KF119k6u4lqIZDRdmQlMqUGcUUaKFm/76J+ibTPJDYURNK3aO1wSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", + "leafHash": "ZCQtLhAEQn62WHfohOp5EMGWjiacszjp9G9wIqWqVQk=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgSuMJM/Ih9adaBBH4RG5h4dymNNqTnPsix3Ul2j7Gyj1CIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiADhfcVXRPdkOZjOgTRuE1/JfIR/Ts/+EP4M7EYozlgMAIhAKj1BOd+WJ0ChFC0iErPdgWZGwrP3ZaxKjmyIHhnYF2M" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "EnxDkfdf9WFuKcuCuo2wbfFVIYvFwU+OXZAiBkVJwWQ=", + "" + ] + }, + "committed": { + "key": "yYH8eEabXNz8iV3if8uzRA==", + "data": "Ym9iLWtleTE=" + } + } + } + } + }, + { + "desc": "bob1_set", + "lastVerifiedLogRoot": { + "rootHash": "ARTq42Sj91CMzvyw/nogQrmh+O/VThG2fuEi6VGkKuc=", + "treeSize": "1" + }, + "getUser": { + "request": { + "directoryId": "integration", + "userId": "bob", + "lastVerifiedTreeSize": "1" + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgo6GbVxP1NS/asAMSs6Q0Bpgtye6g09V/bL21VmnRa6IVr6jIeUPmMAAAAAAAAAADABwSAhgBEhYI8aT5uIWZ6tcVELnS3LSHmerXFRgC", + "signature": "MEUCIQCO/WuAKJn1d6IzphlOLSK/lGrtWOjCMYAiZ8U51F1eTgIgbBb3tHzOekpl18QmmDPvxuG9M8D1/X0YdUMlsZ19aS0=" + }, + "logInclusion": [ + "6eO/eSZDzRuPwXRN53MfPOdt/eJ9oHFfVc2vltWHkdg=", + "QA/6kjRB6u/1QSN8gSWuRYV2kRr2CIyO/hxZJJHS1SA=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "QJDf2A0F/j4=", + "logRoot": "AAEAAAAAAAAABCCdRcIlnNkvQlTQuwOpWqJ5pU2+dc0Pd+zj4sygecdZwhWvqMiMpJewAAAAAAAAAAQAAA==", + "logRootSignature": "MEUCIBUyOJSLKw0MefrxkR223BRW81S6nt/LBksbFiyTZHKTAiEAqwGcJhTdwdCIUkvaCKlgpw6brwgezWVD6spjyauulv4=" + }, + "logConsistency": [ + "A4nHcLk60Ha3XznrfeBt8Zb7ZAEQWHqe1AZyS8GgTV4=", + "5LiZAoPBkclCzQ0HPaEnabfe2xZve3edrkGr2V3Uz04=" + ] + } + }, + "leaf": { + "vrfProof": "xS0TpBr7cV8OmJRR1hHCVZNNoNfFFxLzBZh9bq/eP3ZJPCbGlTA9mOxGgGNDzbvScHHZRBiWm3Dgl5o4VhS4ywSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", + "leafHash": "ZCQtLhAEQn62WHfohOp5EMGWjiacszjp9G9wIqWqVQk=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgSuMJM/Ih9adaBBH4RG5h4dymNNqTnPsix3Ul2j7Gyj1CIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiADhfcVXRPdkOZjOgTRuE1/JfIR/Ts/+EP4M7EYozlgMAIhAKj1BOd+WJ0ChFC0iErPdgWZGwrP3ZaxKjmyIHhnYF2M" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "EnxDkfdf9WFuKcuCuo2wbfFVIYvFwU+OXZAiBkVJwWQ=", + "" + ] + }, + "committed": { + "key": "yYH8eEabXNz8iV3if8uzRA==", + "data": "Ym9iLWtleTE=" + } + } + } + } + }, + { + "desc": "bob2_setkeys", + "lastVerifiedLogRoot": { + "rootHash": "ARTq42Sj91CMzvyw/nogQrmh+O/VThG2fuEi6VGkKuc=", + "treeSize": "1" + }, + "getUser": { + "request": { + "directoryId": "integration", + "userId": "bob", + "lastVerifiedTreeSize": "1" + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgdCW0p7/a6U+/5//nsOy8gYOhZCKdxA79YBvR08wrxwMVr6jIlwgrQAAAAAAAAAAEABwSAhgBEhYIudLctIeZ6tcVEOG6xqSJmerXFRgC", + "signature": "MEYCIQDj9qcDmwshndwO/R660h+J36C2yM5gO7+RPnwq1/LJ1AIhALo+qUHAV/lykNiLTRYlrVZPwkf736gUXFaHsZIHHYDG" + }, + "logInclusion": [ + "nUXCJZzZL0JU0LsDqVqieaVNvnXND3fs4+LMoHnHWcI=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "QJDf2A0F/j4=", + "logRoot": "AAEAAAAAAAAABSCCPk/Vxa8D3cECGzfGquzS58HeQlxfBAUe2S9tiIZAIhWvqMiqtNngAAAAAAAAAAUAAA==", + "logRootSignature": "MEQCIBEAqpTqDcTjDJmbEcPsZwxlJzsHtxvvrUBFfNIC8PhDAiAneb4m5NXEND/VCrTm+RA6XPM320OpBPml2c4Wr1T9nA==" + }, + "logConsistency": [ + "A4nHcLk60Ha3XznrfeBt8Zb7ZAEQWHqe1AZyS8GgTV4=", + "5LiZAoPBkclCzQ0HPaEnabfe2xZve3edrkGr2V3Uz04=", + "zBALLoZ1+2r1OOAHqeGbsytzDIzZx6PiPmiQQzBnIfs=" + ] + } + }, + "leaf": { + "vrfProof": "xg+L/29/xt38q6B8Ykqp+RHRjW9C0NGsD/V5KJqvb7gXsUKD6yAw/8llRsuQwfNscoEJZ1oU/TJqJ34Quj3ctwSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", + "leafHash": "pzHv0HWQ3scULCMltKCiJ0zv6tgH0ALuNoRUsekDkEE=", + "leafValue": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgAL7lS/GTrEe6KWrneuWnNCty3hXt45gXUEBAGS/yqmVCIHtvjEatNjvRbh27qsMh+fiVaOYVvrRU2UuKWHzV/MZUSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEA4Y8gSd/zVHLoUihSJLFhAoib/7n7+UePInes3xt0s+wCIHUHpXpe2WjpByWvhLEcSqrqoaTHw25X1ygN7jNsGrn6" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "EnxDkfdf9WFuKcuCuo2wbfFVIYvFwU+OXZAiBkVJwWQ=", + "" + ] + }, + "committed": { + "key": "/ROrkSXeAwnHaa+DGH9jow==", + "data": "Ym9iLWtleTI=" + } + } + } + } + }, + { + "desc": "bob3_setnewkeys", + "lastVerifiedLogRoot": { + "rootHash": "ARTq42Sj91CMzvyw/nogQrmh+O/VThG2fuEi6VGkKuc=", + "treeSize": "1" + }, + "getUser": { + "request": { + "directoryId": "integration", + "userId": "bob", + "lastVerifiedTreeSize": "1" + }, + "response": { + "revision": { + "mapRoot": { + "mapRoot": { + "mapRoot": "AAEgomeSxdMZnMwwKlzih4O7V+RkC/XNI6moMgjt3f1E7dwVr6jItLGJmAAAAAAAAAAFACYSDBDZrJSei5nq1xUYARIWCOG6xqSJmerXFRDhusakiZnq1xUYAg==", + "signature": "MEUCIQCBopiSW/qWbwyBCMJjF7MzzxDOuvgaZNi6L8nbQTlJfwIgXNL6yex5CRqJcEa3AcqPQBcURxvjsUmNNusdQ+Hf6zA=" + }, + "logInclusion": [ + "zBALLoZ1+2r1OOAHqeGbsytzDIzZx6PiPmiQQzBnIfs=", + "nUXCJZzZL0JU0LsDqVqieaVNvnXND3fs4+LMoHnHWcI=" + ] + }, + "latestLogRoot": { + "logRoot": { + "keyHint": "QJDf2A0F/j4=", + "logRoot": "AAEAAAAAAAAABiDJ3/bPuiGyHPC9EsrrKlLo9eyFdVjBr5OxBEjnoEX+5hWvqMjIqjFwAAAAAAAAAAYAAA==", + "logRootSignature": "MEYCIQDNbK+zo00DLbGvE0EwgwGq9Z81UPXnOGyYn4thrJxCuQIhALZZ4EQSGbbzDCakep+MVvpeffdGCG/08fmKkkzyeT/J" + }, + "logConsistency": [ + "A4nHcLk60Ha3XznrfeBt8Zb7ZAEQWHqe1AZyS8GgTV4=", + "5LiZAoPBkclCzQ0HPaEnabfe2xZve3edrkGr2V3Uz04=", + "2aDi76Y5yEzTj5zC4fkjsccHH0eLbaezf/63/mSkVSg=" + ] + } + }, + "leaf": { + "vrfProof": "eRpbqKQIZNPA+ien9DGKw3OlpQtfRRL27K/lkT5Gd3tFXlqdvSCTtwEDXhKDo0VEN1UqK/pl3N34pPU+9+OzDwSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", + "mapInclusion": { + "leaf": { + "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", + "leafHash": "uNC6wSdbdjkfYfK6PHJcm6+pIHghTo8G7FEwnyUn4IM=", + "leafValue": "CpEDGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgcVxxrP8c2gAv5rlQa252CVAb9FF1xHT9BtPc0FrHRzVCIPgsTtdGjuozfizdHmJszOy/d1blbKoBb7WhuYMZYZEfSqgCCAISkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhogJKDbR4uyhSMXW80x02NtYRUFlMQbLOA+tLe/MbwZ69QiIJF0bpHH3Z/21sLp3PtRWzIju8iNL73rWwQsDoV5H3WUGAMQARgCIAMSRzBFAiEAv4P99R4bLTwvJPQIA0ocl9ezSvDR/p9H4Nf/rZorMa0CIDoqFrBkSxmC3v2UFD9lauvbRXnFf0nu2/IJca/T1aogEkcwRQIgTntznFEvDeHK9G6vpDg4yp8b3OK0PSpF/qNL2l4yMLwCIQDkun7hmkT+fANBaYnA5i6tLw9fYjZkHVAuHTGi6FYSUQ==" + }, + "inclusion": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "EnxDkfdf9WFuKcuCuo2wbfFVIYvFwU+OXZAiBkVJwWQ=", + "" + ] + }, + "committed": { + "key": "57JLjK2z6uX3asxSPubfiA==", + "data": "Ym9iLWtleTM=" + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/core/testdata/TestListHistory.json b/core/testdata/TestListHistory.json new file mode 100644 index 000000000..67e5c8ff8 --- /dev/null +++ b/core/testdata/TestListHistory.json @@ -0,0 +1,31 @@ +{ + "description": "TestListHistory", + "directory": { + "directoryId": "integration", + "log": { + "treeId": "3580969859088593025", + "treeType": "PREORDERED_LOG", + "hashStrategy": "RFC6962_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" + } + }, + "map": { + "treeId": "2300502853446332255", + "treeType": "MAP", + "hashStrategy": "CONIKS_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" + } + }, + "vrf": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" + }, + "minInterval": "0.100s", + "maxInterval": "216000s" + } +} \ No newline at end of file diff --git a/core/testdata/TestMonitor.json b/core/testdata/TestMonitor.json new file mode 100644 index 000000000..12c551c6f --- /dev/null +++ b/core/testdata/TestMonitor.json @@ -0,0 +1,31 @@ +{ + "description": "TestMonitor", + "directory": { + "directoryId": "integration", + "log": { + "treeId": "5163005729436006755", + "treeType": "PREORDERED_LOG", + "hashStrategy": "RFC6962_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" + } + }, + "map": { + "treeId": "6992631502357884499", + "treeType": "MAP", + "hashStrategy": "CONIKS_SHA256", + "hashAlgorithm": "SHA256", + "signatureAlgorithm": "ECDSA", + "publicKey": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" + } + }, + "vrf": { + "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" + }, + "minInterval": "0.100s", + "maxInterval": "216000s" + } +} \ No newline at end of file diff --git a/core/testdata/batch_get_user.json b/core/testdata/batch_get_user.json deleted file mode 100644 index 63f2fbe87..000000000 --- a/core/testdata/batch_get_user.json +++ /dev/null @@ -1,2317 +0,0 @@ -[ - { - "Desc": "single empty", - "UserID": "", - "GetUserResp": null, - "TrustNewLog": false, - "UserIDs": [ - "alice" - ], - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEg1mYgOw0fW/80sZbn3pmNnpOnCg95aJYXTipVliXR+bsVp4TLRiME9wAAAAAAAAABABISDBDo7qKKtJnh0xUYARICGAI=", - "signature": "MEUCIFw04OO/kYmhZIrhpyRbNXXCpfby0EUmfdrqZy8CSjjBAiEAlZ25Szll5vXds8JVcQ7Q6qR9fRNWFykvzGnCOuigiT0=" - }, - "log_inclusion": [ - "Ny7n/tq+dcbTuhB4qaqtPzDbp9GbrogtA5C4lZyNcHA=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "SmMkQHsAW3E=", - "log_root": "AAEAAAAAAAAAAiBMfakpQJqCprWQd0oYO7wLjOsomZ6F9pWhgth4ouq1yRWnhMtZe50jAAAAAAAAAAIAAA==", - "log_root_signature": "MEQCIBFuSTPlMqF5A/pQHcaK/fgu3CFGLbI11fntW4o+MbpYAiBRVwxvDzeMmPavmnaA6FUekktESNB85HGKdj+wdAcuEw==" - } - } - }, - "map_leaves_by_user_id": { - "alice": { - "vrf_proof": "vVAiT/ESFgipuO5EZuQ5NcMSaOR0l3OwV2gRA98R6AFpA8LhAoC15aCSnneZ3ev1ydHi7P7tB8mVQgo8t8Fk6ARTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "index": "A9/B/HF0DP6pap5CSp8/Jo05FhoGWECfsTAnRlVdzvM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "SGq1NrAlVXTaBYluqcrC70DLlg8pVBlATXGVBvETJ/I=", - "N9CNeyq1Hc1n9qCMRYgPS4k9nGETmh4ZrCWUZbuQsPo=", - "" - ] - } - } - } - } - }, - { - "Desc": "multi empty", - "UserID": "", - "GetUserResp": null, - "TrustNewLog": false, - "UserIDs": [ - "alice", - "zelda" - ], - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEg1mYgOw0fW/80sZbn3pmNnpOnCg95aJYXTipVliXR+bsVp4TLRiME9wAAAAAAAAABABISDBDo7qKKtJnh0xUYARICGAI=", - "signature": "MEUCIFw04OO/kYmhZIrhpyRbNXXCpfby0EUmfdrqZy8CSjjBAiEAlZ25Szll5vXds8JVcQ7Q6qR9fRNWFykvzGnCOuigiT0=" - }, - "log_inclusion": [ - "Ny7n/tq+dcbTuhB4qaqtPzDbp9GbrogtA5C4lZyNcHA=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "SmMkQHsAW3E=", - "log_root": "AAEAAAAAAAAAAiBMfakpQJqCprWQd0oYO7wLjOsomZ6F9pWhgth4ouq1yRWnhMtZe50jAAAAAAAAAAIAAA==", - "log_root_signature": "MEQCIBFuSTPlMqF5A/pQHcaK/fgu3CFGLbI11fntW4o+MbpYAiBRVwxvDzeMmPavmnaA6FUekktESNB85HGKdj+wdAcuEw==" - } - } - }, - "map_leaves_by_user_id": { - "alice": { - "vrf_proof": "ZHJMsyJlPfd1kyisG3NGTPDU8LskffXsaQXgVenUpEclq+T9iJe2uvPrf2QXGsLJ4ghAjlO+g42qehQB+Xu2dwRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "index": "A9/B/HF0DP6pap5CSp8/Jo05FhoGWECfsTAnRlVdzvM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "SGq1NrAlVXTaBYluqcrC70DLlg8pVBlATXGVBvETJ/I=", - "N9CNeyq1Hc1n9qCMRYgPS4k9nGETmh4ZrCWUZbuQsPo=", - "" - ] - } - }, - "zelda": { - "vrf_proof": "x77ZimPOW1xMkmHcNvUpH4++bs8814hgd7fSNG/1LIxxgXdQtd32Xx/eFsAF/8JsmNqUm8AbGmrQLm1r6y4IqwQtrUX0DufLX9SITX79ae9LqiYFNaU8XDMHSZ44UUb2kMU6/IycyPbQiVogsuIIrgNYXImVlFvuCSyjC6Kg03hK", - "map_inclusion": { - "leaf": { - "index": "L+Kt2w2EizRLIRMNTQu0J9o4c37Jhf2MT+xy8XZ/QVo=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "3uBr7egI67ujpzsyyCc9bdMvbPjakjRHInmlIe6RN3s=", - "", - "", - "N9CNeyq1Hc1n9qCMRYgPS4k9nGETmh4ZrCWUZbuQsPo=", - "" - ] - } - } - } - } - }, - { - "Desc": "single full", - "UserID": "", - "GetUserResp": null, - "TrustNewLog": false, - "UserIDs": [ - "bob" - ], - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEg1mYgOw0fW/80sZbn3pmNnpOnCg95aJYXTipVliXR+bsVp4TLRiME9wAAAAAAAAABABISDBDo7qKKtJnh0xUYARICGAI=", - "signature": "MEUCIFw04OO/kYmhZIrhpyRbNXXCpfby0EUmfdrqZy8CSjjBAiEAlZ25Szll5vXds8JVcQ7Q6qR9fRNWFykvzGnCOuigiT0=" - }, - "log_inclusion": [ - "Ny7n/tq+dcbTuhB4qaqtPzDbp9GbrogtA5C4lZyNcHA=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "SmMkQHsAW3E=", - "log_root": "AAEAAAAAAAAAAiBMfakpQJqCprWQd0oYO7wLjOsomZ6F9pWhgth4ouq1yRWnhMtZe50jAAAAAAAAAAIAAA==", - "log_root_signature": "MEQCIBFuSTPlMqF5A/pQHcaK/fgu3CFGLbI11fntW4o+MbpYAiBRVwxvDzeMmPavmnaA6FUekktESNB85HGKdj+wdAcuEw==" - } - } - }, - "map_leaves_by_user_id": { - "bob": { - "vrf_proof": "vF84GVjlgE+w+0tuvElkicBWdd86Sk9uP2zGkbvt1JZaYwazDhpqD/QQhqz+XaXUmoYED9nmY33NS8lMrxxx4ASHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", - "leaf_hash": "E/VlhcBnhsuvbL1wcSQZ95rx/uUcB2CNNnS5Wq6+jrU=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgIfC/zZl+3xeM4VwhQgEyIoPt5A5Np93rt8Ibjwonpx5CIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEA+yRJDxnot3jVk3RyS/P6IErs/MNgxfNJHjjjEbtYPekCIHZB2JtLnszAWrjGzROZRp4AG1jAQDyrSTQl66tvgQi3" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "q8MzmCp/dTL3aVqvvPOxU0WOzAWZixnaB5rEymXxogg=", - "" - ] - }, - "committed": { - "key": "MGu3ZuMXoxW0TmK+FN0ELg==", - "data": "Ym9iLWtleQ==" - } - } - } - } - }, - { - "Desc": "multi full", - "UserID": "", - "GetUserResp": null, - "TrustNewLog": false, - "UserIDs": [ - "bob", - "carol" - ], - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEg1mYgOw0fW/80sZbn3pmNnpOnCg95aJYXTipVliXR+bsVp4TLRiME9wAAAAAAAAABABISDBDo7qKKtJnh0xUYARICGAI=", - "signature": "MEUCIFw04OO/kYmhZIrhpyRbNXXCpfby0EUmfdrqZy8CSjjBAiEAlZ25Szll5vXds8JVcQ7Q6qR9fRNWFykvzGnCOuigiT0=" - }, - "log_inclusion": [ - "Ny7n/tq+dcbTuhB4qaqtPzDbp9GbrogtA5C4lZyNcHA=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "SmMkQHsAW3E=", - "log_root": "AAEAAAAAAAAAAiBMfakpQJqCprWQd0oYO7wLjOsomZ6F9pWhgth4ouq1yRWnhMtZe50jAAAAAAAAAAIAAA==", - "log_root_signature": "MEQCIBFuSTPlMqF5A/pQHcaK/fgu3CFGLbI11fntW4o+MbpYAiBRVwxvDzeMmPavmnaA6FUekktESNB85HGKdj+wdAcuEw==" - } - } - }, - "map_leaves_by_user_id": { - "bob": { - "vrf_proof": "cjKo+LWmC3VpoaEwrQcgijvlXOraFN4dg4efPHfbPYJ3naBuGvOyhNpgxzA+irJDeZx9kRrG5rFgLcwvidYNJwSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", - "leaf_hash": "E/VlhcBnhsuvbL1wcSQZ95rx/uUcB2CNNnS5Wq6+jrU=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgIfC/zZl+3xeM4VwhQgEyIoPt5A5Np93rt8Ibjwonpx5CIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEA+yRJDxnot3jVk3RyS/P6IErs/MNgxfNJHjjjEbtYPekCIHZB2JtLnszAWrjGzROZRp4AG1jAQDyrSTQl66tvgQi3" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "q8MzmCp/dTL3aVqvvPOxU0WOzAWZixnaB5rEymXxogg=", - "" - ] - }, - "committed": { - "key": "MGu3ZuMXoxW0TmK+FN0ELg==", - "data": "Ym9iLWtleQ==" - } - }, - "carol": { - "vrf_proof": "e1F/gWp1dnBRoD4tMaTd51diRzeBckzhzJKkS1JKJkJ/9bPC3zx50zkdsakArBzJ+kvg1wQTNNlhyk4FxVz6SQSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "index": "JYx5mwUZM4rLnxSas5/NC9GiuqMYVWThqNqJdDz6bvw=", - "leaf_hash": "tSgAqqErkUDkbkbibS4VK/6FAuw3YtdXU/dV1qrevXk=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgn3pRjw8fTJFkRZASx5BsovRe+EgFk2aLm/HhwwWlS7lCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAmWcsLI0QXbeSaSo/AnuXvT/zL4AnhENksBtwCcm0Up8CIFDcoy3gpkkhoK7AdyDV27PZHhqQK2C1mY6xenhfi0jG" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "N9CNeyq1Hc1n9qCMRYgPS4k9nGETmh4ZrCWUZbuQsPo=", - "" - ] - }, - "committed": { - "key": "b6dd5hxoljaq7imIR2jFyw==", - "data": "Y2Fyb2wta2V5" - } - } - } - } - }, - { - "Desc": "multi mixed", - "UserID": "", - "GetUserResp": null, - "TrustNewLog": false, - "UserIDs": [ - "alice", - "bob" - ], - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEg1mYgOw0fW/80sZbn3pmNnpOnCg95aJYXTipVliXR+bsVp4TLRiME9wAAAAAAAAABABISDBDo7qKKtJnh0xUYARICGAI=", - "signature": "MEUCIFw04OO/kYmhZIrhpyRbNXXCpfby0EUmfdrqZy8CSjjBAiEAlZ25Szll5vXds8JVcQ7Q6qR9fRNWFykvzGnCOuigiT0=" - }, - "log_inclusion": [ - "Ny7n/tq+dcbTuhB4qaqtPzDbp9GbrogtA5C4lZyNcHA=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "SmMkQHsAW3E=", - "log_root": "AAEAAAAAAAAAAiBMfakpQJqCprWQd0oYO7wLjOsomZ6F9pWhgth4ouq1yRWnhMtZe50jAAAAAAAAAAIAAA==", - "log_root_signature": "MEQCIBFuSTPlMqF5A/pQHcaK/fgu3CFGLbI11fntW4o+MbpYAiBRVwxvDzeMmPavmnaA6FUekktESNB85HGKdj+wdAcuEw==" - } - } - }, - "map_leaves_by_user_id": { - "alice": { - "vrf_proof": "60X4g4nnstSHomRbcc5LNJHOQTLiMpB/eM2uLkNx0z27igDP56lme+8zNWNrwmXr+MwaQT1hBPZTLcpH7Lg55wRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "index": "A9/B/HF0DP6pap5CSp8/Jo05FhoGWECfsTAnRlVdzvM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "SGq1NrAlVXTaBYluqcrC70DLlg8pVBlATXGVBvETJ/I=", - "N9CNeyq1Hc1n9qCMRYgPS4k9nGETmh4ZrCWUZbuQsPo=", - "" - ] - } - }, - "bob": { - "vrf_proof": "xoIDahPbAsQaVT1/381Dvqk8XDaoR5kGoLiKLEE1/5wuVpAU9hn2SEWuJI98osNwkbtB0DBMOlHqk/3JWO2NJwSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", - "leaf_hash": "E/VlhcBnhsuvbL1wcSQZ95rx/uUcB2CNNnS5Wq6+jrU=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgIfC/zZl+3xeM4VwhQgEyIoPt5A5Np93rt8Ibjwonpx5CIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEA+yRJDxnot3jVk3RyS/P6IErs/MNgxfNJHjjjEbtYPekCIHZB2JtLnszAWrjGzROZRp4AG1jAQDyrSTQl66tvgQi3" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "q8MzmCp/dTL3aVqvvPOxU0WOzAWZixnaB5rEymXxogg=", - "" - ] - }, - "committed": { - "key": "MGu3ZuMXoxW0TmK+FN0ELg==", - "data": "Ym9iLWtleQ==" - } - } - } - } - } -] \ No newline at end of file diff --git a/core/testdata/batch_list_user_revisions.json b/core/testdata/batch_list_user_revisions.json deleted file mode 100644 index 6bf3fba1e..000000000 --- a/core/testdata/batch_list_user_revisions.json +++ /dev/null @@ -1,5086 +0,0 @@ -[ - { - "Desc": "single revision", - "UserID": "", - "GetUserResp": null, - "TrustNewLog": false, - "UserIDs": [ - "alice", - "bob" - ], - "BatchListUserRevisionsResp": { - "latest_log_root": { - "log_root": { - "key_hint": "Suo5OhL9dIk=", - "log_root": "AAEAAAAAAAAACyD9iAKWPyPKkD39N3GHvY7B27WreRJK7GDo1fYYPj+0ExWnhNBdlGLyAAAAAAAAAAsAAA==", - "log_root_signature": "MEUCIH4/FucXNQH/VQvnn+wZWZDfQm0MFB2mQ7oxPh/2CP2vAiEAtVqGzIkL37DrZpiz/p/tKdQnUjBaN0UXDoMMbjqQYg4=" - } - }, - "map_revisions": [ - { - "map_root": { - "map_root": { - "map_root": "AAEgdLIijOyx3OKkuyXgzdNrCqv3rkI+qy7HKN6tAW2M344Vp4TPbO+4SgAAAAAAAAADABwSAhgBEhYI1biqkPSZ4dMVENbX/9b2meHTFRgC", - "signature": "MEUCIDl08m+7JmEAI8nfi0nLRsN25CmBBPYstuivf6MxOG6PAiEAoEri8VEXqaAAPtERiTppNmvi2SzPvgsI9y15MHTXtkg=" - }, - "log_inclusion": [ - "UZ58xq3+qBAuAeMiVtDYne/G9so0ivuKUCBDADCvBhE=", - "xzuhwSnw8ujKmqgkWaFM4oDGq67Hc/xiM8aRAHYH0x0=", - "sxb6MVxL/zRbO2KsPS/3xOOzFdVVa5a2TM+oFkf8OXI=", - "SIsBCCOnPWjp7FIky6ygBPd14KXWmUo1wUwb+k7gKeo=" - ] - }, - "map_leaves_by_user_id": { - "alice": { - "vrf_proof": "12Zw49DQQ4m7Z/s2X+2AchoC8aCcpfqr6z2ZjvkV0AJeQFAmGYWRCD+cJEBx1DZsw6eG22KMz2kt6FXeao9wHQRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "leaf_hash": "BRqfIxzO53fHJArvedQujyCxY6NVZVYeVvQZpr/L9wQ=", - "leaf_value": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgTNKrTzG2iBrT6Ughi8VEj6zuBeOr34HBjUsSGRZOEvpCIBorH1muJTaCTq+f6Nh2SFtPVtrT/6KST6FKoraQUaznSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSSDBGAiEAqavlkVUEV8qJRx1EQjBGHA+mzOEjLlHeWfTMXTfIqqUCIQC296iD9Ep2Ar+RKYEbPKAB1y9qquxcIUQpX784io+wTQ==" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "e4cW/lyIIWce5wMjf1n8l0/alECmKg90gX5AjLwKM5s=", - "" - ] - }, - "committed": { - "key": "oTU71KbrZ3qtfuOd+u5hQA==", - "data": "YmFyMg==" - } - }, - "bob": { - "vrf_proof": "+nXLFTRmBOFzfdXBT6uOy6DQWcc+RQRnfh2IowMys6TAY+NBWV6lR5nmRMuh22Jh/nYNrdDdpreDwYkNqeto6QSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "leaf_hash": "rXnI1F43hZR7zQIzU1MngoiaYrc7Yb9DJF8oBAIX/zQ=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgR+xteBRVmETS7vB5fOYrbqhLcxVInbp9EvhJc8pvZBRCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiBAMONHNQ8c1XprZklDOfC542spvdEAc180Ls4dKD0EwwIhALf78NxYeXMMcZ9mToyKA8qhy/zG+pLHDfgPvu/DxRlg" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "lDpjrmsfYBuxa0+ds90kWSRemK/EzGX5+gnFocmgg3Q=", - "" - ] - }, - "committed": { - "key": "wGjLZH/xsm+hlA+4mRYxkw==", - "data": "YmFyMTE=" - } - } - } - } - ] - }, - "BatchGetUserResp": null - }, - { - "Desc": "multiple revisions test 1", - "UserID": "", - "GetUserResp": null, - "TrustNewLog": false, - "UserIDs": [ - "carol" - ], - "BatchListUserRevisionsResp": { - "latest_log_root": { - "log_root": { - "key_hint": "Suo5OhL9dIk=", - "log_root": "AAEAAAAAAAAACyD9iAKWPyPKkD39N3GHvY7B27WreRJK7GDo1fYYPj+0ExWnhNBdlGLyAAAAAAAAAAsAAA==", - "log_root_signature": "MEUCIH4/FucXNQH/VQvnn+wZWZDfQm0MFB2mQ7oxPh/2CP2vAiEAtVqGzIkL37DrZpiz/p/tKdQnUjBaN0UXDoMMbjqQYg4=" - } - }, - "map_revisions": [ - { - "map_root": { - "map_root": { - "map_root": "AAEg+N1vHA1e8xBYCu3CQpabBXleFyNSUaczEqV1/MML80AVp4TPfsbZgQAAAAAAAAAEABwSAhgBEhYI1tf/1vaZ4dMVENTA+uP3meHTFRgC", - "signature": "MEYCIQDOVhTt8B4x6DmB8LUbDQ6FDmSpI2O7LIdJiV3duGG35QIhANdx8Y4tPtT8J5qHZH7SFaWwgK+MlNgBFrgf3UM/CoST" - }, - "log_inclusion": [ - "PRMGnzMutZT0tsBnJu1VTLo6d1rERk06XDg9b5cVL1w=", - "BeW2lpoVjb0P6EB7/W1yCnOV/CyDNb+W0ig+i6jRKiw=", - "ITYpUBZUyinF17A144BAUooR+VOMPtBLtTP6O1AHl3I=", - "SIsBCCOnPWjp7FIky6ygBPd14KXWmUo1wUwb+k7gKeo=" - ] - }, - "map_leaves_by_user_id": { - "carol": { - "vrf_proof": "NNkd8pH6NGNTed0YtC4v0v3UIpxpP+XSa8buao+ZygoiwtSxaRcOWOHTLTzL70f6Q6fgSKhml2cb2ZwYsV8awwSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "leaf_hash": "R3j8xFB5po/TjsnURMEssD3A8E9qb+yumkm2GAfqr44=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIg3A2nOCpqQF5E+YnQ3qBzavnk4FmnY33BRWLc0Ol5P1JCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiAg7UteY1ULeVNl6DJgRC5ojaq+dBtb4KboKVeRH/u3pAIhAN2WK6LiKsgKIYlEOxRNMFXnUDKAQgjx0GUhJ8ykuVyn" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "PbpXyGZHtH7dT+Jit1diqhz7ST1/PKGd2MOlRkCo3EQ=", - "e4cW/lyIIWce5wMjf1n8l0/alECmKg90gX5AjLwKM5s=", - "" - ] - }, - "committed": { - "key": "7B90WTAv9TSWw5XYtJyu0Q==", - "data": "YmFyMjE=" - } - } - } - }, - { - "map_root": { - "map_root": { - "map_root": "AAEg30Ei4ES0Kkz7nrwNQtj4pPoFXykxTmuITW/xo5RgnnEVp4TPnkgDIQAAAAAAAAAFABwSAhgBEhYI1MD64/eZ4dMVEJiJ9OH5meHTFRgC", - "signature": "MEQCIBhskbFWHVVKLhC+euvD4akfvF43YiBaw0TMiRfPOPUtAiAQfw2TZtvSZbM+bedXiMH0lm5SICeQ5zRFyQKlI8eeBg==" - }, - "log_inclusion": [ - "wdLKjdYFG8CP8g30uGI/TN3A5AJrov30xGoJcweKfVI=", - "BeW2lpoVjb0P6EB7/W1yCnOV/CyDNb+W0ig+i6jRKiw=", - "ITYpUBZUyinF17A144BAUooR+VOMPtBLtTP6O1AHl3I=", - "SIsBCCOnPWjp7FIky6ygBPd14KXWmUo1wUwb+k7gKeo=" - ] - }, - "map_leaves_by_user_id": { - "carol": { - "vrf_proof": "0Ie+rzsB8uB86jnCgENX3c/O5H+I6vkby1C8yQzt4UVhOlH0O2P0ryqwo2yRIz0v7+qs6O/0ZEUq1uB2Q6jHpgSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "leaf_hash": "R7UOhGlCesWl69/3ayJAd/PQBRF2y3XNItmLZ6SYk0s=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgedsbU+kmuUXbGMMvI+S4d0Kvk7F/E0x08fP+5NZdsW9CIK/YTacUavxw7OunFDQMrmVgJ9MNKl+sOWtHmA5QsnLBSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiAWmktGknDg+NvuMX9zeSrmUPWQyug/j8+NBHQttNLlaAIgAbzC+JpsBPC0ndemzU0q9Dh/F54xQzAL308rcGouldM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "PbpXyGZHtH7dT+Jit1diqhz7ST1/PKGd2MOlRkCo3EQ=", - "e4cW/lyIIWce5wMjf1n8l0/alECmKg90gX5AjLwKM5s=", - "" - ] - }, - "committed": { - "key": "1a+He1H4Su6GPymwHAY21A==", - "data": "YmFyMjI=" - } - } - } - }, - { - "map_root": { - "map_root": { - "map_root": "AAEgl6LWxRYCPC1Z1ft4cXWm5MW4rj7pp5ppHnsFL3RD2KMVp4TPslQZYQAAAAAAAAAGACYSDBDMs/aA+5nh0xUYARIWCJiJ9OH5meHTFRCYifTh+Znh0xUYAg==", - "signature": "MEQCIGLBvN3Y/qRV6sI66gqapVg/1+9q0/xxLXWwMiuSwoM1AiAekO1D2KzWDsLQiBvgx9sY/JYwivfpte7D21YERM+K4A==" - }, - "log_inclusion": [ - "RAtWuOv9wOo55eNznKDAPlbTD+0efnGu26q+5TFn+Uk=", - "Woc969ok8y+l0SkXk06jzNcpkcwBrAQXIjrCk5q8jm0=", - "ITYpUBZUyinF17A144BAUooR+VOMPtBLtTP6O1AHl3I=", - "SIsBCCOnPWjp7FIky6ygBPd14KXWmUo1wUwb+k7gKeo=" - ] - }, - "map_leaves_by_user_id": { - "carol": { - "vrf_proof": "KxoRF2VOTZ2t845u6/ioT/bjhaT3eXANufz1d4dxcHKSQNPuP6SV0aqwNTNaYshYLB7lyOwLUGpF2rmjkBd/lwSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "leaf_hash": "R7UOhGlCesWl69/3ayJAd/PQBRF2y3XNItmLZ6SYk0s=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgedsbU+kmuUXbGMMvI+S4d0Kvk7F/E0x08fP+5NZdsW9CIK/YTacUavxw7OunFDQMrmVgJ9MNKl+sOWtHmA5QsnLBSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiAWmktGknDg+NvuMX9zeSrmUPWQyug/j8+NBHQttNLlaAIgAbzC+JpsBPC0ndemzU0q9Dh/F54xQzAL308rcGouldM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "PbpXyGZHtH7dT+Jit1diqhz7ST1/PKGd2MOlRkCo3EQ=", - "8CM+Sgv5cws8C9GPiPKLcxliHO0l0Pn7DEAT9I6jXEw=", - "" - ] - }, - "committed": { - "key": "1a+He1H4Su6GPymwHAY21A==", - "data": "YmFyMjI=" - } - } - } - }, - { - "map_root": { - "map_root": { - "map_root": "AAEgeLa5snMvlp5H/sQUt3eiVBRaS0uPACkB8wwHROS/pJIVp4TP+D50ngAAAAAAAAAHADASFgjMs/aA+5nh0xUQsL64r/+Z4dMVGAESFgiYifTh+Znh0xUQmIn04fmZ4dMVGAI=", - "signature": "MEYCIQCJWBQcD308dJq3tWC4TvxLKSv4dFNnqYvPgz7IM4bMzwIhANwJuOb3QjlvxH1Cp17Bz9qIl+iBUzmITFV40qhNglui" - }, - "log_inclusion": [ - "PJI2GrEoCKEhQsT3132uw30+CScxhM3NN8U34brnyuA=", - "Woc969ok8y+l0SkXk06jzNcpkcwBrAQXIjrCk5q8jm0=", - "ITYpUBZUyinF17A144BAUooR+VOMPtBLtTP6O1AHl3I=", - "SIsBCCOnPWjp7FIky6ygBPd14KXWmUo1wUwb+k7gKeo=" - ] - }, - "map_leaves_by_user_id": { - "carol": { - "vrf_proof": "Hkpgg37NHb3pGz2B3CgrGj4o7C6PLkF1XjpneBJ3ox88+NKMWML/jkHyyCcLxC3+l2CLIFwZdKc32ryOGKMctASmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "leaf_hash": "R7UOhGlCesWl69/3ayJAd/PQBRF2y3XNItmLZ6SYk0s=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgedsbU+kmuUXbGMMvI+S4d0Kvk7F/E0x08fP+5NZdsW9CIK/YTacUavxw7OunFDQMrmVgJ9MNKl+sOWtHmA5QsnLBSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiAWmktGknDg+NvuMX9zeSrmUPWQyug/j8+NBHQttNLlaAIgAbzC+JpsBPC0ndemzU0q9Dh/F54xQzAL308rcGouldM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "1AVyfIu17OQJauKJm/atXyy88nixzluAzbs9cHwLUvY=", - "8CM+Sgv5cws8C9GPiPKLcxliHO0l0Pn7DEAT9I6jXEw=", - "" - ] - }, - "committed": { - "key": "1a+He1H4Su6GPymwHAY21A==", - "data": "YmFyMjI=" - } - } - } - } - ] - }, - "BatchGetUserResp": null - }, - { - "Desc": "multiple revisions test 2", - "UserID": "", - "GetUserResp": null, - "TrustNewLog": false, - "UserIDs": [ - "alice", - "bob", - "carol" - ], - "BatchListUserRevisionsResp": { - "latest_log_root": { - "log_root": { - "key_hint": "Suo5OhL9dIk=", - "log_root": "AAEAAAAAAAAACyD9iAKWPyPKkD39N3GHvY7B27WreRJK7GDo1fYYPj+0ExWnhNBdlGLyAAAAAAAAAAsAAA==", - "log_root_signature": "MEUCIH4/FucXNQH/VQvnn+wZWZDfQm0MFB2mQ7oxPh/2CP2vAiEAtVqGzIkL37DrZpiz/p/tKdQnUjBaN0UXDoMMbjqQYg4=" - } - }, - "map_revisions": [ - { - "map_root": { - "map_root": { - "map_root": "AAEgeLa5snMvlp5H/sQUt3eiVBRaS0uPACkB8wwHROS/pJIVp4TP+D50ngAAAAAAAAAHADASFgjMs/aA+5nh0xUQsL64r/+Z4dMVGAESFgiYifTh+Znh0xUQmIn04fmZ4dMVGAI=", - "signature": "MEYCIQCJWBQcD308dJq3tWC4TvxLKSv4dFNnqYvPgz7IM4bMzwIhANwJuOb3QjlvxH1Cp17Bz9qIl+iBUzmITFV40qhNglui" - }, - "log_inclusion": [ - "PJI2GrEoCKEhQsT3132uw30+CScxhM3NN8U34brnyuA=", - "Woc969ok8y+l0SkXk06jzNcpkcwBrAQXIjrCk5q8jm0=", - "ITYpUBZUyinF17A144BAUooR+VOMPtBLtTP6O1AHl3I=", - "SIsBCCOnPWjp7FIky6ygBPd14KXWmUo1wUwb+k7gKeo=" - ] - }, - "map_leaves_by_user_id": { - "alice": { - "vrf_proof": "da324ZC7bG8D4wSrRzhRDdwAqkISur5Rlf98htFUKekkSX0u2E119UucHEOvfUm+DMn5piv9MOTrA37Srg/etwRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "leaf_hash": "YdBSH4AlLojl1mdIgC1Zl/FqYe6FhpcVYzR4NgMxkSE=", - "leaf_value": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgu2TjByWoti/CrkPZiuNHc/V6u3V1uZruflz+0xoEiKxCIDmqpK8yVseaE7PKrVIHNoKJAGX57rJbaG24+17wlQmaSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiB9XBBnSRoSvluZxqwxo5H6bA9MVyhMbmu4CRlfB9w+zgIgHNvqFGNDmC52NpsLs6NcBOfvrd2lJj5pOvEQ6qlT+KU=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "gfwnp9aT0ZcPoN/b6sLoWPD6JnIvjzFBL/2weffes64=", - "8CM+Sgv5cws8C9GPiPKLcxliHO0l0Pn7DEAT9I6jXEw=", - "" - ] - }, - "committed": { - "key": "4oAMhbt6GnIOs3p7OWjiHQ==", - "data": "YmFyMw==" - } - }, - "bob": { - "vrf_proof": "ZXWcWUJqPHyIFWzAJcJaWUrOrFmObzCz5IzCN62LQH3bPv+Ish9nu2qqsjteMsZCD42ow79gchVVxhk5hCr2uASHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "leaf_hash": "7pxTw1b+msoxiClgD5d3/UyzVswL0rTctwZzDETd+lY=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgEriTC0yI1SeD/IBpQ3INgjdOlhWLyVU+Gbvc/KVlO/5CIBHaq9s09OzIpzCXQhGpKiOYeP7PxXjhmkOH+fMh1vthSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiAD/5c2JznRxepA9mqKq88KhEMMPnAVpBncd+zHNpa/GgIgFuD1ywHNlooBQ5cL6Gkl2VIuWfnJAmiAw60zscWjcmE=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "4ozyvsltW+rUYOb0kGgyPUTaXOpb3uFwDozcJa/wQRM=", - "" - ] - }, - "committed": { - "key": "oPXvOCUKjh2ZAkbTEp/hig==", - "data": "YmFyMTI=" - } - }, - "carol": { - "vrf_proof": "IUqiovXavde8DRfSZpDZRzv1fynym3EplDxzSbD5R+MZpxDfpnwwpy9L2zoSwi0z1FzNM6EFufTQD5tln6EVnASmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "leaf_hash": "R7UOhGlCesWl69/3ayJAd/PQBRF2y3XNItmLZ6SYk0s=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgedsbU+kmuUXbGMMvI+S4d0Kvk7F/E0x08fP+5NZdsW9CIK/YTacUavxw7OunFDQMrmVgJ9MNKl+sOWtHmA5QsnLBSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiAWmktGknDg+NvuMX9zeSrmUPWQyug/j8+NBHQttNLlaAIgAbzC+JpsBPC0ndemzU0q9Dh/F54xQzAL308rcGouldM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "1AVyfIu17OQJauKJm/atXyy88nixzluAzbs9cHwLUvY=", - "8CM+Sgv5cws8C9GPiPKLcxliHO0l0Pn7DEAT9I6jXEw=", - "" - ] - }, - "committed": { - "key": "1a+He1H4Su6GPymwHAY21A==", - "data": "YmFyMjI=" - } - } - } - }, - { - "map_root": { - "map_root": { - "map_root": "AAEgMhGdvLznoiWrDXyGQS95PGKffSMphwKvxG3xIN/qwLgVp4TQG6JDTgAAAAAAAAAIADASFgiwvriv/5nh0xUQkaK0y4Ga4dMVGAESFgiYifTh+Znh0xUQmIn04fmZ4dMVGAI=", - "signature": "MEUCIQD++Jy9yzj4gyXiikuqwaLqi1JcTNBw/Owc/FciBiE3egIgRHjxR+l1NSfrTdzjR63wX9I/zAzzo117JKwp+rvREE0=" - }, - "log_inclusion": [ - "fXRF42rwxtTt/Cppn/C/l1NGAJnrKEPCMXcda8phuyE=", - "/KL8DT04Qx2UvrJGzv6oK5Eldw+bl3AIrsCpw6Po5lw=", - "MaQ22XutGaJ1UDrUvgBGyPO7PVlsEW+XxKLtm12B2SY=" - ] - }, - "map_leaves_by_user_id": { - "alice": { - "vrf_proof": "EBBH/tN5JTArvVT0iNfC9upweOghuLVKRRqSjbhCN+T/f3Egwx6NkQxVecCtlv7/n43P7wQUP0e4yNzsg1XDbwRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "leaf_hash": "YdBSH4AlLojl1mdIgC1Zl/FqYe6FhpcVYzR4NgMxkSE=", - "leaf_value": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgu2TjByWoti/CrkPZiuNHc/V6u3V1uZruflz+0xoEiKxCIDmqpK8yVseaE7PKrVIHNoKJAGX57rJbaG24+17wlQmaSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiB9XBBnSRoSvluZxqwxo5H6bA9MVyhMbmu4CRlfB9w+zgIgHNvqFGNDmC52NpsLs6NcBOfvrd2lJj5pOvEQ6qlT+KU=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "gfwnp9aT0ZcPoN/b6sLoWPD6JnIvjzFBL/2weffes64=", - "9XXD6Ivorps2K6YdEqyUXUlHqRJxkpaab6/h0IcS+g4=", - "" - ] - }, - "committed": { - "key": "4oAMhbt6GnIOs3p7OWjiHQ==", - "data": "YmFyMw==" - } - }, - "bob": { - "vrf_proof": "95l5vd+8iQnWoFg08X0aSlubJib+NiN9Ei7u4WJ2QnzhD3SZ3Qpbt5x53+/3P8vd6Im0se9m5Xqo8AA0Ttg3/wSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "leaf_hash": "qHK5YTFYKihYunWtFBtiwlhxAPcTPXvYrXgKuNwB4Ts=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgnnqe0Nsw9PbObiS6WOQy+rVV13J1wXgYgTuC6kQhKndCIAA9/ojuXNHS0U/fKC4NoPNqrtuxDn0Q260fDq9NuvPlSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiBKKK7GMTlSJXRBlGoNZTQdT7YGCbIilJUGpnGhYOcnhAIgVgjvws1UdekZ2gGu+PavZgC6J5gLyvgO9hRTSWqyXoU=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "4ozyvsltW+rUYOb0kGgyPUTaXOpb3uFwDozcJa/wQRM=", - "" - ] - }, - "committed": { - "key": "v0GJN4QPlkJaP3ZJUJPsDw==", - "data": "YmFyMTM=" - } - }, - "carol": { - "vrf_proof": "udebcnv0LZsHeP9AWJANWj6vBfsN0wtt1SIRUaZ0Pnw0qdO44k6hOenwx33BS4eWCIUuikIe0k2jPTy61w5z4wSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "leaf_hash": "R7UOhGlCesWl69/3ayJAd/PQBRF2y3XNItmLZ6SYk0s=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgedsbU+kmuUXbGMMvI+S4d0Kvk7F/E0x08fP+5NZdsW9CIK/YTacUavxw7OunFDQMrmVgJ9MNKl+sOWtHmA5QsnLBSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiAWmktGknDg+NvuMX9zeSrmUPWQyug/j8+NBHQttNLlaAIgAbzC+JpsBPC0ndemzU0q9Dh/F54xQzAL308rcGouldM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "1AVyfIu17OQJauKJm/atXyy88nixzluAzbs9cHwLUvY=", - "9XXD6Ivorps2K6YdEqyUXUlHqRJxkpaab6/h0IcS+g4=", - "" - ] - }, - "committed": { - "key": "1a+He1H4Su6GPymwHAY21A==", - "data": "YmFyMjI=" - } - } - } - }, - { - "map_root": { - "map_root": { - "map_root": "AAEgq+DaoAsYh73Y6HUWU1J1nMCqiUw57E34CX7j6zckzTIVp4TQLtD/yQAAAAAAAAAJADASFgiRorTLgZrh0xUQkaK0y4Ga4dMVGAESFgiYifTh+Znh0xUQqo694IKa4dMVGAI=", - "signature": "MEUCIQDf1LvuZInSf2RbX0d8hTBHUFNz7Pd6EszedTMQNbPZbwIgNvJ9spE9A/1i2GIPunKLRq2Xo1YwjxZeHz5gWu68QJs=" - }, - "log_inclusion": [ - "docVnlvGe8wxVZ8pTI0ROaIbeG2M4vP2Mp/RX2+jklo=", - "/KL8DT04Qx2UvrJGzv6oK5Eldw+bl3AIrsCpw6Po5lw=", - "MaQ22XutGaJ1UDrUvgBGyPO7PVlsEW+XxKLtm12B2SY=" - ] - }, - "map_leaves_by_user_id": { - "alice": { - "vrf_proof": "T5URgllwkOsR8vAfwGTl7kmA3hDR7LM/BSK5+8Hw0y5eM3JPVWNq4wFFe4PYtpjCitqNUbBqNMPPoYdemBn1tQRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "leaf_hash": "YdBSH4AlLojl1mdIgC1Zl/FqYe6FhpcVYzR4NgMxkSE=", - "leaf_value": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgu2TjByWoti/CrkPZiuNHc/V6u3V1uZruflz+0xoEiKxCIDmqpK8yVseaE7PKrVIHNoKJAGX57rJbaG24+17wlQmaSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiB9XBBnSRoSvluZxqwxo5H6bA9MVyhMbmu4CRlfB9w+zgIgHNvqFGNDmC52NpsLs6NcBOfvrd2lJj5pOvEQ6qlT+KU=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "oA0DLo+/n9vjHTIuRf16tPnbpecQa/c8K9nTaSJfMd8=", - "9XXD6Ivorps2K6YdEqyUXUlHqRJxkpaab6/h0IcS+g4=", - "" - ] - }, - "committed": { - "key": "4oAMhbt6GnIOs3p7OWjiHQ==", - "data": "YmFyMw==" - } - }, - "bob": { - "vrf_proof": "DHi4c4SA5UtKRMHRb//B3uGfqs+rMaTkmwWKW+D3jkXtBJF/e4TyR52zl+f89D6zzIWVQhgGMSWOs2sZcdEXbASHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "leaf_hash": "qHK5YTFYKihYunWtFBtiwlhxAPcTPXvYrXgKuNwB4Ts=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgnnqe0Nsw9PbObiS6WOQy+rVV13J1wXgYgTuC6kQhKndCIAA9/ojuXNHS0U/fKC4NoPNqrtuxDn0Q260fDq9NuvPlSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiBKKK7GMTlSJXRBlGoNZTQdT7YGCbIilJUGpnGhYOcnhAIgVgjvws1UdekZ2gGu+PavZgC6J5gLyvgO9hRTSWqyXoU=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "v9BY0tkY3YammCmNypGU6pJUEDtLATG76DwktRIHSKg=", - "" - ] - }, - "committed": { - "key": "v0GJN4QPlkJaP3ZJUJPsDw==", - "data": "YmFyMTM=" - } - }, - "carol": { - "vrf_proof": "zpb35w0BeTq72NinFgzBvZbPJ47NyNn80BNSIa1Ie+cYPSNRnIt2THOePd4EXeUdZxEM9l67aBiqxLamyJnOVQSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "leaf_hash": "diFWX0eGZA77s2tPfJPCR3gUK0vHLYNX24LteIXRFHg=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIguGkgiXGxOp3KegL1cG3VQqu4zUQPeIs14cy1iDhDvddCIIAseY6sVMGPgjqX85+cfqnxPY/n8wMkn3ZSh3qAfSz7SpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSSDBGAiEA3xRMLGd9rlDqDl1WrciS510RjFIkxL1jxctL6U5CXZQCIQDOwjpSie2YztBR+cUzmV43WzUUPP0KxxETCFbdQgp9wQ==" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "1AVyfIu17OQJauKJm/atXyy88nixzluAzbs9cHwLUvY=", - "9XXD6Ivorps2K6YdEqyUXUlHqRJxkpaab6/h0IcS+g4=", - "" - ] - }, - "committed": { - "key": "p0tRXWzFkrOwDKN3TFFR2g==", - "data": "YmFyMjM=" - } - } - } - }, - { - "map_root": { - "map_root": { - "map_root": "AAEgLsqw51HAk7kU3p1Dd2k6JeKW2ApMSEDx1eoIiD5+0UMVp4TQUc19eAAAAAAAAAAKADASFgiRorTLgZrh0xUQkaK0y4Ga4dMVGAESFgiqjr3ggprh0xUQw7LZ+oSa4dMVGAI=", - "signature": "MEUCIDuuZwdeByKY1oCm+T3SOtobDemRm2SWGSFj7OT2fsoqAiEAz/G7Qo1c3waC+KdhSeZ8parwODVzQNeP44eAJU1qQLE=" - }, - "log_inclusion": [ - "606+qhGp857xt5ZJm2Yrq42a96D6x2F03pzbQrsO8s0=", - "MaQ22XutGaJ1UDrUvgBGyPO7PVlsEW+XxKLtm12B2SY=" - ] - }, - "map_leaves_by_user_id": { - "alice": { - "vrf_proof": "jFHlrk3LeTcjewPiG6CIQQPHigoYONhvpM+yATNes2GfUK2VCPgDAz++RXNv1sGOTX6inVTdwrd7V1sbheq2kwRTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "leaf_hash": "YdBSH4AlLojl1mdIgC1Zl/FqYe6FhpcVYzR4NgMxkSE=", - "leaf_value": "Cv4BGiAD38H8cXQM/qlqnkJKnz8mjTkWGgZYQJ+xMCdGVV3O8zIgu2TjByWoti/CrkPZiuNHc/V6u3V1uZruflz+0xoEiKxCIDmqpK8yVseaE7PKrVIHNoKJAGX57rJbaG24+17wlQmaSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiB9XBBnSRoSvluZxqwxo5H6bA9MVyhMbmu4CRlfB9w+zgIgHNvqFGNDmC52NpsLs6NcBOfvrd2lJj5pOvEQ6qlT+KU=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "dEwuj455e6OBnmS49eXvM/Pnre1SYhtXj5In4ctUQ/M=", - "9XXD6Ivorps2K6YdEqyUXUlHqRJxkpaab6/h0IcS+g4=", - "" - ] - }, - "committed": { - "key": "4oAMhbt6GnIOs3p7OWjiHQ==", - "data": "YmFyMw==" - } - }, - "bob": { - "vrf_proof": "eBA8y7zvhQot94XrWk5guWzMTjNfnLtE6jDpCfC3fuiPfSJeL8oTreVQVSKbq+GcSLlbY6lfG8ru8rNoTwaUdgSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "leaf_hash": "qHK5YTFYKihYunWtFBtiwlhxAPcTPXvYrXgKuNwB4Ts=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIgnnqe0Nsw9PbObiS6WOQy+rVV13J1wXgYgTuC6kQhKndCIAA9/ojuXNHS0U/fKC4NoPNqrtuxDn0Q260fDq9NuvPlSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRjBEAiBKKK7GMTlSJXRBlGoNZTQdT7YGCbIilJUGpnGhYOcnhAIgVgjvws1UdekZ2gGu+PavZgC6J5gLyvgO9hRTSWqyXoU=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "irXKAo1ZvYuNnHBccYnUpzkWmuxC+qanuTQylm4jnA0=", - "" - ] - }, - "committed": { - "key": "v0GJN4QPlkJaP3ZJUJPsDw==", - "data": "YmFyMTM=" - } - }, - "carol": { - "vrf_proof": "bAEC+9XygHi19gEK6M4kQ8UAjpn0pRjC3cHioSkKr6J2JCtf6sHZGLczFMMUYUcawjf2QybGrJLURGaqK5PF1QSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "leaf_hash": "Rg7RijLCAajGKwt4+rXptRxOYTVW4Hwf8gJJDuOBWPI=", - "leaf_value": "Cv4BGiAljHmbBRkzisufFJqzn80L0aK6oxhVZOGo2ol0PPpu/DIgwmGlkZMJsGVjSDfmOELDe7yeLreYrsB7W+SZDql2h51CIM5QMTrKfeWDqO38dFIV0FeJYkNiM+/aPJ0FedkJNzqXSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSSDBGAiEAydSIXdFphq0tmg2jR4nbahUg2WIVAz2G7ZllSO7XVMECIQC/yKtv29cRBwA8XSperI1cNVuamnrWiIySnC3RO5cJRg==" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "1AVyfIu17OQJauKJm/atXyy88nixzluAzbs9cHwLUvY=", - "9XXD6Ivorps2K6YdEqyUXUlHqRJxkpaab6/h0IcS+g4=", - "" - ] - }, - "committed": { - "key": "POwfSp38LOvs1JgU8Dyekg==", - "data": "YmFyMjQ=" - } - } - } - } - ] - }, - "BatchGetUserResp": null - } -] \ No newline at end of file diff --git a/core/testdata/directory_batch_get_user.json b/core/testdata/directory_batch_get_user.json deleted file mode 100644 index 724c94fac..000000000 --- a/core/testdata/directory_batch_get_user.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "directoryId": "integration", - "log": { - "treeId": "5360167840861150065", - "treeType": "PREORDERED_LOG", - "hashStrategy": "RFC6962_SHA256", - "hashAlgorithm": "SHA256", - "signatureAlgorithm": "ECDSA", - "publicKey": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" - } - }, - "map": { - "treeId": "8167195044445726954", - "treeType": "MAP", - "hashStrategy": "CONIKS_SHA256", - "hashAlgorithm": "SHA256", - "signatureAlgorithm": "ECDSA", - "publicKey": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" - } - }, - "vrf": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" - }, - "minInterval": "0.100s", - "maxInterval": "216000s" -} \ No newline at end of file diff --git a/core/testdata/directory_batch_list_user_revisions.json b/core/testdata/directory_batch_list_user_revisions.json deleted file mode 100644 index f8825b513..000000000 --- a/core/testdata/directory_batch_list_user_revisions.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "directoryId": "integration", - "log": { - "treeId": "5398190024946447497", - "treeType": "PREORDERED_LOG", - "hashStrategy": "RFC6962_SHA256", - "hashAlgorithm": "SHA256", - "signatureAlgorithm": "ECDSA", - "publicKey": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" - } - }, - "map": { - "treeId": "1674190657110097801", - "treeType": "MAP", - "hashStrategy": "CONIKS_SHA256", - "hashAlgorithm": "SHA256", - "signatureAlgorithm": "ECDSA", - "publicKey": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" - } - }, - "vrf": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" - }, - "minInterval": "0.100s", - "maxInterval": "216000s" -} \ No newline at end of file diff --git a/core/testdata/directory_get_and_update.json b/core/testdata/directory_get_and_update.json deleted file mode 100644 index 87a8175af..000000000 --- a/core/testdata/directory_get_and_update.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "directoryId": "integration", - "log": { - "treeId": "1596332138688820793", - "treeType": "PREORDERED_LOG", - "hashStrategy": "RFC6962_SHA256", - "hashAlgorithm": "SHA256", - "signatureAlgorithm": "ECDSA", - "publicKey": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqGXPnhMIclRmYHSmAnCMmfDUJ9iNBMmFxR/wHJdL12AuVUkgcuhbEp2hy5ETs7bfFc2P95IYFlmbiuHMq3UY/A==" - } - }, - "map": { - "treeId": "7332718643287639250", - "treeType": "MAP", - "hashStrategy": "CONIKS_SHA256", - "hashAlgorithm": "SHA256", - "signatureAlgorithm": "ECDSA", - "publicKey": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWLHm0TLYaTzENpPkBl2E79ySqJI+EW51VpoWh7wqY3OjSJcft4zgEeNeHYEb/T2jBFH4eYg4iSN7D/VYaJxJRA==" - } - }, - "vrf": { - "der": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF2Pm2kKya+JBun1QRmKQMcoMOIBNWp8fjECkJX+/hNWdV1UKb12W+yXcX2MqN7ZMX77hS9mLus/WaE0NS370mA==" - }, - "minInterval": "0.100s", - "maxInterval": "216000s" -} \ No newline at end of file diff --git a/core/testdata/get_and_update.json b/core/testdata/get_and_update.json deleted file mode 100644 index 17c2944ed..000000000 --- a/core/testdata/get_and_update.json +++ /dev/null @@ -1,2109 +0,0 @@ -[ - { - "Desc": "empty_alice", - "UserID": "alice", - "GetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEg6KFJFW4H8XU86QDreVsq4BxK4wXbLZ6T466E+Wn3lZsVp4TKEWilyAAAAAAAAAAAAAA=", - "signature": "MEUCIBGpATAMuCZW4iunBeQPorLM0SBTX2Vzwf1+utr/XBCyAiEAtl7nz5aKDFgO4F3TWYkEZld8k/XfpNxqt+Qpza9YRJ0=" - } - }, - "latest_log_root": { - "log_root": { - "key_hint": "FidPn1YWNjk=", - "log_root": "AAEAAAAAAAAAASBQKBrFuBwZoMJinwDc9HtTsOlzoenVEtigYV+7ybaD8hWnhMolxuk0AAAAAAAAAAEAAA==", - "log_root_signature": "MEUCIQCPK2FfQ8QeFyJHT5SWZiv0sIHDvX1fVe4VtzHDgbHfHwIgcKnOzyG2+KTWF1R2+is7Z5TNTOgOMRpFkpgSibjBiA4=" - } - } - }, - "leaf": { - "vrf_proof": "4KMxEFtY6epJzPQ3K7Ix62dG+CSevVEbd+xYsNUZ/sZmQQy0ragiZs7LtWWPg63m6PxavpDMbkVh5BDN+55lsARTJUYW21qW/fCBqGRPufN2+S2CHVyVSP1EWLTIn1M0zJgw+OQcAgHUdSP1DkqoE5X9Le+VWO+nuJtc4eJODJCo", - "map_inclusion": { - "leaf": { - "index": "A9/B/HF0DP6pap5CSp8/Jo05FhoGWECfsTAnRlVdzvM=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - } - } - }, - "TrustNewLog": true, - "UserIDs": null, - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": null - }, - { - "Desc": "bob0_set", - "UserID": "bob", - "GetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEgtgXKUPD6DAvMex7SKChLGd5E3qpbocNCsUGRQkDLOc4Vp4TKPI2SMwAAAAAAAAABABISAhgBEgwQld6Bo6OZ4dMVGAI=", - "signature": "MEUCIQDjEOEFcgBwQ/zq1kyLP52ODyFY4zShI9xTCNN9exVzqwIgHI42YQsotL5WT1ZhOJrcM8smWdikYROFdna8vCBVt8w=" - }, - "log_inclusion": [ - "UCgaxbgcGaDCYp8A3PR7U7Dpc6Hp1RLYoGFfu8m2g/I=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "FidPn1YWNjk=", - "log_root": "AAEAAAAAAAAAAiDXsJQMeqvzvdFLfOAYx/fyyVKIK9p6v86owmg+GfjW4hWnhMpDasn8AAAAAAAAAAIAAA==", - "log_root_signature": "MEQCIG9RBWXUyl4A3V4XFzpLyWHYu7vARRP9vyA2zwPjykEhAiBGCfkZF3WWG9sEUuFo61LifRxbCf2ck0kKXkvaj2NGQQ==" - }, - "log_consistency": [ - "rHwPEjE/DGc/jvUwqI0Zwb/VTOWMcTFJ4iGVWm1uaT8=" - ] - } - }, - "leaf": { - "vrf_proof": "Pr4bUF8suP9XTXXq1ArL+EOD+H4mkqlkBplhOXjTNv7Exj3xYbtDfAMQFriExhl/pCWaqbL1rNvn98ypkQr8tASHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "8e+Y2pdNsPnFkXwabQs5RXHrkk54znnGlE37lxS+KXM=", - "" - ] - } - } - }, - "TrustNewLog": false, - "UserIDs": null, - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": null - }, - { - "Desc": "set_carol", - "UserID": "carol", - "GetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEgkCFKbh1MJaewqGsxLlhJVSVb4BVEBkLSVp5sHLwlEZ8Vp4TKVAwMaAAAAAAAAAACACYSDBDkhNLupJnh0xUYARIWCJXegaOjmeHTFRCV3oGjo5nh0xUYAg==", - "signature": "MEYCIQCuefeSdBBIlwhdtBZMs16DQPf7OyVlPHB0q2IrN+LxkAIhAOAGO4FAHzynUg1/yiWEtuH7EH91dPUMijAsRFx2o84m" - }, - "log_inclusion": [ - "17CUDHqr873RS3zgGMf38slSiCvaer/OqMJoPhn41uI=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "FidPn1YWNjk=", - "log_root": "AAEAAAAAAAAAAyCQ4QL/ECYfA4swzKZDIA/+sEDYG+mpXQ838tOUetzT1BWnhMphLT7ZAAAAAAAAAAMAAA==", - "log_root_signature": "MEUCIC2iyVWeq6HoWoUazJ/ADl8oVYb8sCLtGs8XIAapc+seAiEA00fiUwcLK6ZCn4LqrGW5tKyeDSsBdTB4hDGq9cm9KXs=" - }, - "log_consistency": [ - "rHwPEjE/DGc/jvUwqI0Zwb/VTOWMcTFJ4iGVWm1uaT8=", - "x1DayzaOsSOZZyDA9AegC7kuSHjoK3wNgvga6JPSPfI=" - ] - } - }, - "leaf": { - "vrf_proof": "kM5Ls4Orf9GJ9hx48d74pi8OzG5SEiVV7an0CunYvC+nQ/5c6jV7Y6LxyF/ZUarkv/8DTGt4W2XxmUik3PLpYgSmXjmxq3oAt/q89fwRZiF4eoAGepK4YcyzKtBD4mfS6gB7/AQ7PNRUocMVfUQnZCienTNXyrdtaOTCtzwaDIjc", - "map_inclusion": { - "leaf": { - "index": "JYx5mwUZM4rLnxSas5/NC9GiuqMYVWThqNqJdDz6bvw=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "/3I61XQQ8fQoBnw99Uq5nFRA5oVMsEzONa9glcNj6fA=", - "m298LGdOOdE7VFw5cx3TSGjV4Iuzxrp2nHMVCryGdAA=", - "" - ] - } - } - }, - "TrustNewLog": false, - "UserIDs": null, - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": null - }, - { - "Desc": "bob1_get", - "UserID": "bob", - "GetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEg+yaON0pl4pvs+3j+VvOsHqqOqVj14oKNdVlyikkMVpIVp4TKcQf8CAAAAAAAAAADADASFgjkhNLupJnh0xUQ5ITS7qSZ4dMVGAESFgiV3oGjo5nh0xUQ6MSH8aaZ4dMVGAI=", - "signature": "MEUCICYrOEiAUuV5wAGmH+ncTIx/IuK2jaUgbzkL++aEkPheAiEAnS1qpWb5zqywHOZcCda1URXjTl8zwtvHeiu3DDqJnLw=" - }, - "log_inclusion": [ - "x1DayzaOsSOZZyDA9AegC7kuSHjoK3wNgvga6JPSPfI=", - "17CUDHqr873RS3zgGMf38slSiCvaer/OqMJoPhn41uI=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "FidPn1YWNjk=", - "log_root": "AAEAAAAAAAAABCAmhXTHHE3BAERDFw/3bQb6d+hBT9dS5aH0/ryvPmpsSBWnhMp+/LduAAAAAAAAAAQAAA==", - "log_root_signature": "MEYCIQCD3OI5vl6Jb6cmQjaSL8qt/m2vZRL/CB4hifQWlwJZUQIhAJ1QTeF8akU5QoAfDHybB0o1x7mDdNMRuB5I6Lp/ckCe" - }, - "log_consistency": [ - "rHwPEjE/DGc/jvUwqI0Zwb/VTOWMcTFJ4iGVWm1uaT8=", - "3uVnL7i4Te9MDe9yQ4X16iCcfIeuE/zCrbaweYvOeDA=" - ] - } - }, - "leaf": { - "vrf_proof": "EtJrc+g5cU+K9CXniQ6UGZtGmjJch4ngimFbhGm7B9hXH86L0SsPBj1bDRECORsF8m6k2MSOgf+7bSScFApJBASHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", - "leaf_hash": "9olqj4HFD6M9uivPe5mDrxvHxq3YMYOgJhwIU70XsZI=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIg4u4GLEpQ/rbFUSv4MUjsvnJ4GSWGDG4kl9Yd90TzUUVCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAsg8LXFUM7Mltn7AUfc8/gwZbvEcY1u7NbhV/uGG5BLgCIADXi/RrAuH2UN3BFuTqIfVocClUSLbFZ5Inixk7IDXN" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "om83aaRS0KV8jz14knMqe09WmE8ApWINpk6MxSu0LR4=", - "" - ] - }, - "committed": { - "key": "7beYQpVT94a26OdwUaj19Q==", - "data": "Ym9iLWtleTE=" - } - } - }, - "TrustNewLog": false, - "UserIDs": null, - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": null - }, - { - "Desc": "bob1_set", - "UserID": "bob", - "GetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEg+yaON0pl4pvs+3j+VvOsHqqOqVj14oKNdVlyikkMVpIVp4TKcQf8CAAAAAAAAAADADASFgjkhNLupJnh0xUQ5ITS7qSZ4dMVGAESFgiV3oGjo5nh0xUQ6MSH8aaZ4dMVGAI=", - "signature": "MEUCICYrOEiAUuV5wAGmH+ncTIx/IuK2jaUgbzkL++aEkPheAiEAnS1qpWb5zqywHOZcCda1URXjTl8zwtvHeiu3DDqJnLw=" - }, - "log_inclusion": [ - "x1DayzaOsSOZZyDA9AegC7kuSHjoK3wNgvga6JPSPfI=", - "17CUDHqr873RS3zgGMf38slSiCvaer/OqMJoPhn41uI=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "FidPn1YWNjk=", - "log_root": "AAEAAAAAAAAABCAmhXTHHE3BAERDFw/3bQb6d+hBT9dS5aH0/ryvPmpsSBWnhMp+/LduAAAAAAAAAAQAAA==", - "log_root_signature": "MEYCIQCD3OI5vl6Jb6cmQjaSL8qt/m2vZRL/CB4hifQWlwJZUQIhAJ1QTeF8akU5QoAfDHybB0o1x7mDdNMRuB5I6Lp/ckCe" - }, - "log_consistency": [ - "rHwPEjE/DGc/jvUwqI0Zwb/VTOWMcTFJ4iGVWm1uaT8=", - "3uVnL7i4Te9MDe9yQ4X16iCcfIeuE/zCrbaweYvOeDA=" - ] - } - }, - "leaf": { - "vrf_proof": "T8gaQ5lfHRp+EbirRNKIymvYY5PMEeGvgA4x7BFqnIvl7xALMwILf+rmz795Opj1mr1BfIx6K1CqBL2fOH5y0ASHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", - "leaf_hash": "9olqj4HFD6M9uivPe5mDrxvHxq3YMYOgJhwIU70XsZI=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIg4u4GLEpQ/rbFUSv4MUjsvnJ4GSWGDG4kl9Yd90TzUUVCIOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVSpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSRzBFAiEAsg8LXFUM7Mltn7AUfc8/gwZbvEcY1u7NbhV/uGG5BLgCIADXi/RrAuH2UN3BFuTqIfVocClUSLbFZ5Inixk7IDXN" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "om83aaRS0KV8jz14knMqe09WmE8ApWINpk6MxSu0LR4=", - "" - ] - }, - "committed": { - "key": "7beYQpVT94a26OdwUaj19Q==", - "data": "Ym9iLWtleTE=" - } - } - }, - "TrustNewLog": false, - "UserIDs": null, - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": null - }, - { - "Desc": "bob2_setkeys", - "UserID": "bob", - "GetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEgmEpkLa+Wtl5h72fdWNT4JRO3D1yOX4VBs0DXkqT9t+QVp4TKjtCNjgAAAAAAAAAEADASFgjkhNLupJnh0xUQtuL/3aiZ4dMVGAESFgjoxIfxppnh0xUQ6MSH8aaZ4dMVGAI=", - "signature": "MEQCICDkNF6SaqFMG5O2AKv9cTPQstWhb0t//GSJVlTpWZXuAiAcGlztMqCpm6udqurbvGum8I1CLW5ayAW1crXiUMJAbA==" - }, - "log_inclusion": [ - "JoV0xxxNwQBEQxcP920G+nfoQU/XUuWh9P68rz5qbEg=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "FidPn1YWNjk=", - "log_root": "AAEAAAAAAAAABSAwvLhPS6FLU+8iIicGD7lTHreYSsOxxAJhBLL5dy8lPRWnhMqcyIKZAAAAAAAAAAUAAA==", - "log_root_signature": "MEUCIQCB0Eva4Gy0ZTYsRA3l6918+Ciwja7sVJpLSVmT/mhBBAIgRpTjOvuMBVg7WIgIv5qwV0vPxhSaQ2ytDKqq4smbTac=" - }, - "log_consistency": [ - "rHwPEjE/DGc/jvUwqI0Zwb/VTOWMcTFJ4iGVWm1uaT8=", - "3uVnL7i4Te9MDe9yQ4X16iCcfIeuE/zCrbaweYvOeDA=", - "18iODhqD84v4LKAfa6CLAjooImnfIfpCYAww5qVsK3E=" - ] - } - }, - "leaf": { - "vrf_proof": "yHxmWRnFIuyLjrmKjKHUgshsU4/GBBTNUa//TRgnTleXJdwvc60FPHPbT4XG2TqEGnQbkTMJjRK0D+MLaaIgFwSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", - "leaf_hash": "RUhZiJOmFbwufqvtX9zV9WYUcO6ClXIuuxXjL+aoQco=", - "leaf_value": "Cv4BGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIg7ZdHCRfU38uBWUOI4EpOMj2chuVVJwcEpiXwm0vPq4hCIFGjpvlKeBgC4Q37UwRn6ljfmOrMv66PZEeLAXYsS+oASpUBCAESkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSSDBGAiEA+nbPyww4V391WlvAD20zFhZMceXvhYCCpxSMzhDgrIsCIQCDvFWfBEmCyQamYcrxOLyqxzZFZCf0FNyNd7xtwx0XZQ==" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "om83aaRS0KV8jz14knMqe09WmE8ApWINpk6MxSu0LR4=", - "" - ] - }, - "committed": { - "key": "mY9geUOPh/5UUJCYHcfTtQ==", - "data": "Ym9iLWtleTI=" - } - } - }, - "TrustNewLog": false, - "UserIDs": null, - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": null - }, - { - "Desc": "bob3_setnewkeys", - "UserID": "bob", - "GetUserResp": { - "revision": { - "map_root": { - "map_root": { - "map_root": "AAEgJGzXq8qjByksmcdssXEW5FtiMq9C5ba93KUZ4dag+/wVp4TKrY6tOAAAAAAAAAAFADASFgi24v/dqJnh0xUQ59WYt6qZ4dMVGAESFgjoxIfxppnh0xUQ6MSH8aaZ4dMVGAI=", - "signature": "MEQCIBQpebTjNpdhs/+E3quLkXZesrd2MfdUgZ4W24iprj4lAiAzlUarMzoyrG10MVodN5enR6AxzZmCjwMQfjD8lanuDA==" - }, - "log_inclusion": [ - "18iODhqD84v4LKAfa6CLAjooImnfIfpCYAww5qVsK3E=", - "JoV0xxxNwQBEQxcP920G+nfoQU/XUuWh9P68rz5qbEg=" - ] - }, - "latest_log_root": { - "log_root": { - "key_hint": "FidPn1YWNjk=", - "log_root": "AAEAAAAAAAAABiB/UJll6BwMgUwKxo+8JdVXog/PeL5vFG7Rw/sVRKtJzxWnhMq6nNiJAAAAAAAAAAYAAA==", - "log_root_signature": "MEYCIQCkU6MGMjbBQfV9Dx9mbARTUC+5xnsdikqR1OkLCL5l+wIhANQqGxf3hfBZ3Ui4x4XIBV3BQU1nrGtFiAFcIg4lQIwC" - }, - "log_consistency": [ - "rHwPEjE/DGc/jvUwqI0Zwb/VTOWMcTFJ4iGVWm1uaT8=", - "3uVnL7i4Te9MDe9yQ4X16iCcfIeuE/zCrbaweYvOeDA=", - "EQmXvNT+P1JenQ0dyiuSumJ3k3N1Bwau2JnKswprYBY=" - ] - } - }, - "leaf": { - "vrf_proof": "u5kUE6TpFmgmn4cQq6qBzXwa2mU8N3fxme4g468Ajr//pwE/1VW35RMelEoZPE00XLSKuDuTeP+ZRlS3+E9K4wSHy1HLhWFLT+nQFEzzYq4x2psj6PyUNlaPWfnwVizyOB31qTBMPiNmlf7Qgp/yArNoYDSuvrjR9Jmlku+iA5MU", - "map_inclusion": { - "leaf": { - "index": "Umn2fclcSdomcb9UlHcDY1SLm1A/wILzh8NdoYffbcQ=", - "leaf_hash": "VJJ2Zde3iGxmioyNm3ZhtqE9Vwk9SiS2PtOsnuebXKo=", - "leaf_value": "CpEDGiBSafZ9yVxJ2iZxv1SUdwNjVIubUD/AgvOHw12hh99txDIg8EY1bbMN47NaEVyA6ZUR7UjqlPcvrhMm6U6h7mI/Sl9CIIS3W2Yr5xKAuJqf8YhJaaO/yRNNTJLsmCc1UDD4Tof3SqgCCAISkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhog+xVOdphkfpEtl7OF8oCyvWw31dV4hnGbXDPbdFlL1nkiIJrKGerIR9F1c2WkFPZT2FdxLGWIojWsesAkUPHedy20GAMQARgBIAMSkAEKhwEKNXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmNyeXB0by50aW5rLkVjZHNhUHVibGljS2V5EkwSBggDEAIYAhogJKDbR4uyhSMXW80x02NtYRUFlMQbLOA+tLe/MbwZ69QiIJF0bpHH3Z/21sLp3PtRWzIju8iNL73rWwQsDoV5H3WUGAMQARgCIAMSSDBGAiEAp/2EuxfrC7OdUlWW5jCErHbP3m2kKgubYThWWtn+sDACIQDnZsoc5X4GD7hmUX6uYAh8dEcQY4SEudnPKRUldSKoxxJHMEUCIQDue7Fk/HwIlOruiofgFN8FBoZZZsLlC75RWL07q8929AIgL69+jlCVNKlzOThWg2Z5AfiuHJRq05MrxWayKIGWVIo=" - }, - "inclusion": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "om83aaRS0KV8jz14knMqe09WmE8ApWINpk6MxSu0LR4=", - "" - ] - }, - "committed": { - "key": "+Rlz1xvEgb4LaW3nC7czzA==", - "data": "Ym9iLWtleTM=" - } - } - }, - "TrustNewLog": true, - "UserIDs": null, - "BatchListUserRevisionsResp": null, - "BatchGetUserResp": null - } -] \ No newline at end of file diff --git a/core/testdata/io.go b/core/testdata/io.go new file mode 100644 index 000000000..0ff0a01e5 --- /dev/null +++ b/core/testdata/io.go @@ -0,0 +1,84 @@ +// Copyright 2018 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package testdata + +import ( + "fmt" + "go/build" + "os" + "path" + "path/filepath" + + "github.com/golang/protobuf/jsonpb" + + tpb "github.com/google/keytransparency/core/api/transcript_go_proto" +) + +// packagePath returns the on-disk path of *this* package. +func packagePath() (string, error) { + basePkg := "github.com/google/keytransparency/core/testdata" + p, err := build.Default.Import(basePkg, "", build.FindOnly) + if err != nil { + return "", err + } + return p.Dir, nil +} + +// ReadTranscript returns the test vectors for the requested test name. +func ReadTranscript(testName string) (*tpb.Transcript, error) { + selfPath, err := packagePath() + if err != nil { + return nil, err + } + relPath := path.Join(selfPath, fmt.Sprintf("%v.json", testName)) + absPath, err := filepath.Abs(relPath) + if err != nil { + return nil, err + } + transcriptFile := absPath + + f, err := os.Open(transcriptFile) + if err != nil { + return nil, err + } + defer f.Close() + + var transcript tpb.Transcript + if err := jsonpb.Unmarshal(f, &transcript); err != nil { + return nil, fmt.Errorf("jsonpb.Unmarshal(): %v", err) + } + return &transcript, nil +} + +// WriteTranscript saves the transcript to the files in this package. +func WriteTranscript(testName string, t *tpb.Transcript) error { + marshaler := &jsonpb.Marshaler{Indent: "\t"} + + selfPath, err := packagePath() + if err != nil { + return err + } + // Output all key material needed to verify the test vectors. + testFile := path.Join(selfPath, fmt.Sprintf("%v.json", testName)) + f, err := os.Create(testFile) + if err != nil { + return err + } + defer f.Close() + if err := marshaler.Marshal(f, t); err != nil { + return fmt.Errorf("jsonpb.Marshal(): %v", err) + } + return nil +} diff --git a/core/testdata/types.go b/core/testdata/types.go deleted file mode 100644 index 499c6792a..000000000 --- a/core/testdata/types.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package testdata contains data and data types for interoperability testing. -package testdata - -import ( - pb "github.com/google/keytransparency/core/api/v1/keytransparency_go_proto" -) - -// ResponseVector is a captured response that should verify without errors. -type ResponseVector struct { - Desc string - UserID string - GetUserResp *pb.GetUserResponse - TrustNewLog bool - UserIDs []string - BatchListUserRevisionsResp *pb.BatchListUserRevisionsResponse - BatchGetUserResp *pb.BatchGetUserResponse -} diff --git a/docs/api.md b/docs/api.md index e3ce85035..8e13ac313 100644 --- a/docs/api.md +++ b/docs/api.md @@ -29,6 +29,7 @@ - [ListUserRevisionsRequest](#google.keytransparency.v1.ListUserRevisionsRequest) - [ListUserRevisionsResponse](#google.keytransparency.v1.ListUserRevisionsResponse) - [LogRoot](#google.keytransparency.v1.LogRoot) + - [LogRootRequest](#google.keytransparency.v1.LogRootRequest) - [MapLeaf](#google.keytransparency.v1.MapLeaf) - [MapRevision](#google.keytransparency.v1.MapRevision) - [MapRoot](#google.keytransparency.v1.MapRoot) @@ -509,6 +510,22 @@ LogRoot contains the latest log root and its consistency proof. + + +### LogRootRequest +LogRootRequest contains the information needed to requetst and verify LogRoot. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| root_hash | [bytes](#bytes) | | root_hash is the log root hash. | +| tree_size | [int64](#int64) | | tree_size is the tree_size of the last log root the client verified. | + + + + + + ### MapLeaf diff --git a/impl/integration/main_test.go b/impl/integration/main_test.go index d70372dac..b62347c73 100644 --- a/impl/integration/main_test.go +++ b/impl/integration/main_test.go @@ -16,24 +16,18 @@ package integration import ( "context" - "encoding/json" "flag" - "fmt" - "io/ioutil" - "os" "testing" - "github.com/golang/protobuf/jsonpb" "github.com/google/keytransparency/core/integration" "github.com/google/keytransparency/core/testdata" "github.com/google/trillian/storage/testdb" -) -var ( - generate = flag.Bool("generate", false, "Defines if test vectors should be generated") - testdataDir = flag.String("testdata", "../../core/testdata", "The directory in which to place the generated test data") + tpb "github.com/google/keytransparency/core/api/transcript_go_proto" ) +var generate = flag.Bool("generate", false, "Defines if test vectors should be generated") + // TestIntegration runs all KeyTransparency integration tests. func TestIntegration(t *testing.T) { // We can only run the integration tests if there is a MySQL instance available. @@ -48,48 +42,22 @@ func TestIntegration(t *testing.T) { } defer env.Close() - func() { - // Cancel the test function context (and thus - // exit any background sequencer loops) - // *before* shutting down the server and - // canceling the master context. - ctx, cancel := context.WithCancel(ctx) - defer cancel() - resps := test.Fn(ctx, env.Env, t) - if *generate && resps != nil { - if err = SaveTestVectors(*testdataDir, test.DirectoryFilename, test.RespFilename, env.Env, resps); err != nil { - t.Fatalf("saveTestVectors() failed: %v", err) - } + ctx, cancel = context.WithCancel(ctx) + resps := test.Fn(ctx, env.Env, t) + // Cancel the test function context (and thus exit any + // background sequencer loops) *before* shutting down + // the server and canceling the master context. + cancel() + + if *generate { + if testdata.WriteTranscript(test.Name, &tpb.Transcript{ + Description: test.Name, + Directory: env.Env.Directory, + Rpcs: resps, + }); err != nil { + t.Fatalf("WriteTranscript() failed: %v", err) } - }() + } }) } } - -// SaveTestVectors generates test vectors for interoprability testing. -func SaveTestVectors(dir, directoryFilename, responseFilename string, env *integration.Env, resps []testdata.ResponseVector) error { - marshaler := &jsonpb.Marshaler{ - Indent: "\t", - } - // Output all key material needed to verify the test vectors. - directoryFile := dir + "/" + directoryFilename - f, err := os.Create(directoryFile) - if err != nil { - return err - } - defer f.Close() - if err := marshaler.Marshal(f, env.Directory); err != nil { - return fmt.Errorf("jsonpb.Marshal(): %v", err) - } - - // Save list of responses - respFile := dir + "/" + responseFilename - out, err := json.MarshalIndent(resps, "", "\t") - if err != nil { - return fmt.Errorf("json.Marshal(): %v", err) - } - if err := ioutil.WriteFile(respFile, out, 0666); err != nil { - return fmt.Errorf("writeFile(%v): %v", respFile, err) - } - return nil -}