Skip to content

Commit dac4434

Browse files
committed
[FAB-12090] Retrieve SBEP for private data by key hash
Change-Id: Id325a27bc93ef9af6aff0c7e895ac27c1b0b2a33 Signed-off-by: Alessandro Sorniotti <ale.linux@sopit.net> Signed-off-by: Matthias Neugschwandtner <eug@zurich.ibm.com>
1 parent d4beab0 commit dac4434

File tree

4 files changed

+33
-40
lines changed

4 files changed

+33
-40
lines changed

core/common/validation/statebased/validator_keylevel_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func TestKeylevelValidation(t *testing.T) {
8787
// We simulate policy check success and failure
8888

8989
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
90-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
90+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
9191
ms := &mockStateFetcher{FetchStateRv: mr}
9292
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
9393
pe := &mockPolicyEvaluator{}
@@ -128,7 +128,7 @@ func TestKeylevelValidationPvtData(t *testing.T) {
128128
// We simulate policy check success and failure
129129

130130
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
131-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
131+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
132132
ms := &mockStateFetcher{FetchStateRv: mr}
133133
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
134134
pe := &mockPolicyEvaluator{}
@@ -166,7 +166,7 @@ func TestKeylevelValidationMetaUpdate(t *testing.T) {
166166
// We simulate policy check success and failure
167167

168168
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
169-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
169+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
170170
ms := &mockStateFetcher{FetchStateRv: mr}
171171
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
172172
pe := &mockPolicyEvaluator{}
@@ -204,7 +204,7 @@ func TestKeylevelValidationPvtMetaUpdate(t *testing.T) {
204204
// We simulate policy check success and failure
205205

206206
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
207-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
207+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
208208
ms := &mockStateFetcher{FetchStateRv: mr}
209209
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
210210
pe := &mockPolicyEvaluator{}
@@ -269,7 +269,7 @@ func TestCCEPValidation(t *testing.T) {
269269
// touch any key with a state-based endorsement policy;
270270
// we expect to check the normal cc-endorsement policy.
271271

272-
mr := &mockState{GetStateMetadataRv: map[string][]byte{}, GetPrivateDataMetadataRv: map[string][]byte{}}
272+
mr := &mockState{GetStateMetadataRv: map[string][]byte{}, GetPrivateDataMetadataByHashRv: map[string][]byte{}}
273273
ms := &mockStateFetcher{FetchStateRv: mr}
274274
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
275275
pe := &mockPolicyEvaluator{}
@@ -309,7 +309,7 @@ func TestCCEPValidationReads(t *testing.T) {
309309
// touch any key with a state-based endorsement policy;
310310
// we expect to check the normal cc-endorsement policy.
311311

312-
mr := &mockState{GetStateMetadataRv: map[string][]byte{}, GetPrivateDataMetadataRv: map[string][]byte{}}
312+
mr := &mockState{GetStateMetadataRv: map[string][]byte{}, GetPrivateDataMetadataByHashRv: map[string][]byte{}}
313313
ms := &mockStateFetcher{FetchStateRv: mr}
314314
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
315315
pe := &mockPolicyEvaluator{}
@@ -391,7 +391,7 @@ func TestCCEPValidationPvtReads(t *testing.T) {
391391
// touch any key with a state-based endorsement policy;
392392
// we expect to check the normal cc-endorsement policy.
393393

394-
mr := &mockState{GetStateMetadataRv: map[string][]byte{}, GetPrivateDataMetadataRv: map[string][]byte{}}
394+
mr := &mockState{GetStateMetadataRv: map[string][]byte{}, GetPrivateDataMetadataByHashRv: map[string][]byte{}}
395395
ms := &mockStateFetcher{FetchStateRv: mr}
396396
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
397397
pe := &mockPolicyEvaluator{}
@@ -431,7 +431,7 @@ func TestKeylevelValidationFailure(t *testing.T) {
431431
// for that very same key.
432432

433433
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
434-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
434+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: []byte("EP")}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: []byte("EP")}}
435435
ms := &mockStateFetcher{FetchStateRv: mr}
436436
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
437437
validator := NewKeyLevelValidator(&mockPolicyEvaluator{}, pm)

core/common/validation/statebased/vpmanager_test.go

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ import (
2626
)
2727

2828
type mockState struct {
29-
GetStateMetadataRv map[string][]byte
30-
GetStateMetadataErr error
31-
GetPrivateDataMetadataRv map[string][]byte
32-
GetPrivateDataMetadataErr error
33-
DoneCalled bool
29+
GetStateMetadataRv map[string][]byte
30+
GetStateMetadataErr error
31+
GetPrivateDataMetadataByHashRv map[string][]byte
32+
GetPrivateDataMetadataByHashErr error
33+
DoneCalled bool
3434
}
3535

3636
func (ms *mockState) GetStateMultipleKeys(namespace string, keys []string) ([][]byte, error) {
@@ -45,12 +45,8 @@ func (ms *mockState) GetStateMetadata(namespace, key string) (map[string][]byte,
4545
return ms.GetStateMetadataRv, ms.GetStateMetadataErr
4646
}
4747

48-
func (ms *mockState) GetPrivateDataMetadata(namespace, collection, key string) (map[string][]byte, error) {
49-
return ms.GetPrivateDataMetadataRv, ms.GetPrivateDataMetadataErr
50-
}
51-
5248
func (ms *mockState) GetPrivateDataMetadataByHash(namespace, collection string, keyhash []byte) (map[string][]byte, error) {
53-
return nil, nil
49+
return ms.GetPrivateDataMetadataByHashRv, ms.GetPrivateDataMetadataByHashErr
5450
}
5551

5652
func (ms *mockState) Done() {
@@ -77,10 +73,10 @@ func (ms *mockStateFetcher) FetchState() (validation.State, error) {
7773
var rv *mockState
7874
if ms.FetchStateRv != nil {
7975
rv = &mockState{
80-
GetPrivateDataMetadataErr: ms.FetchStateRv.GetPrivateDataMetadataErr,
81-
GetStateMetadataErr: ms.FetchStateRv.GetStateMetadataErr,
82-
GetPrivateDataMetadataRv: ms.FetchStateRv.GetPrivateDataMetadataRv,
83-
GetStateMetadataRv: ms.FetchStateRv.GetStateMetadataRv,
76+
GetPrivateDataMetadataByHashErr: ms.FetchStateRv.GetPrivateDataMetadataByHashErr,
77+
GetStateMetadataErr: ms.FetchStateRv.GetStateMetadataErr,
78+
GetPrivateDataMetadataByHashRv: ms.FetchStateRv.GetPrivateDataMetadataByHashRv,
79+
GetStateMetadataRv: ms.FetchStateRv.GetStateMetadataRv,
8480
}
8581
ms.mutex.Lock()
8682
if ms.returnedStates != nil {
@@ -99,7 +95,7 @@ func TestSimple(t *testing.T) {
9995

10096
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
10197
spe := cauthdsl.SignedByMspMember("foo")
102-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
98+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
10399
ms := &mockStateFetcher{FetchStateRv: mr}
104100
pm := &KeyLevelValidationParameterManagerImpl{
105101
StateFetcher: ms,
@@ -190,7 +186,7 @@ func TestDependencyNoConflict(t *testing.T) {
190186

191187
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
192188
spe := cauthdsl.SignedByMspMember("foo")
193-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
189+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
194190
ms := &mockStateFetcher{FetchStateRv: mr}
195191
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
196192

@@ -234,7 +230,7 @@ func TestDependencyConflict(t *testing.T) {
234230

235231
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
236232
spe := cauthdsl.SignedByMspMember("foo")
237-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
233+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
238234
ms := &mockStateFetcher{FetchStateRv: mr}
239235
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
240236

@@ -277,7 +273,7 @@ func TestMultipleDependencyNoConflict(t *testing.T) {
277273

278274
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
279275
spe := cauthdsl.SignedByMspMember("foo")
280-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
276+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
281277
ms := &mockStateFetcher{FetchStateRv: mr}
282278
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
283279

@@ -327,7 +323,7 @@ func TestMultipleDependencyConflict(t *testing.T) {
327323

328324
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
329325
spe := cauthdsl.SignedByMspMember("foo")
330-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
326+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
331327
ms := &mockStateFetcher{FetchStateRv: mr}
332328
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
333329

@@ -371,7 +367,7 @@ func TestPvtDependencyNoConflict(t *testing.T) {
371367

372368
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
373369
spe := cauthdsl.SignedByMspMember("foo")
374-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
370+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
375371
ms := &mockStateFetcher{FetchStateRv: mr}
376372
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
377373

@@ -409,7 +405,7 @@ func TestPvtDependencyConflict(t *testing.T) {
409405

410406
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
411407
spe := cauthdsl.SignedByMspMember("foo")
412-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
408+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
413409
ms := &mockStateFetcher{FetchStateRv: mr}
414410
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
415411

@@ -449,7 +445,7 @@ func TestBlockValidationTerminatesBeforeNewBlock(t *testing.T) {
449445

450446
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
451447
spe := cauthdsl.SignedByMspMember("foo")
452-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
448+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
453449
ms := &mockStateFetcher{FetchStateRv: mr}
454450
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
455451

@@ -472,8 +468,8 @@ func TestLedgerErrors(t *testing.T) {
472468
// GetValidationParameterForKey returns an error
473469

474470
mr := &mockState{
475-
GetStateMetadataErr: fmt.Errorf("Ledger error"),
476-
GetPrivateDataMetadataErr: fmt.Errorf("Ledger error"),
471+
GetStateMetadataErr: fmt.Errorf("Ledger error"),
472+
GetPrivateDataMetadataByHashErr: fmt.Errorf("Ledger error"),
477473
}
478474
ms := &mockStateFetcher{FetchStateRv: mr, FetchStateErr: fmt.Errorf("Ledger error")}
479475
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
@@ -546,7 +542,7 @@ func TestBadRwsetIsNoDependency(t *testing.T) {
546542

547543
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
548544
spe := cauthdsl.SignedByMspMember("foo")
549-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
545+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
550546
ms := &mockStateFetcher{FetchStateRv: mr}
551547
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
552548

@@ -584,7 +580,7 @@ func TestWritesIntoDifferentNamespaces(t *testing.T) {
584580

585581
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
586582
spe := cauthdsl.SignedByMspMember("foo")
587-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
583+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
588584
ms := &mockStateFetcher{FetchStateRv: mr}
589585
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
590586

@@ -621,7 +617,7 @@ func TestCombinedCalls(t *testing.T) {
621617

622618
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
623619
spe := cauthdsl.SignedByMspMember("foo")
624-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
620+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
625621
ms := &mockStateFetcher{FetchStateRv: mr}
626622
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
627623

@@ -681,7 +677,7 @@ func TestForRaces(t *testing.T) {
681677

682678
vpMetadataKey := pb.MetaDataKeys_VALIDATION_PARAMETER.String()
683679
spe := cauthdsl.SignedByMspMember("foo")
684-
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
680+
mr := &mockState{GetStateMetadataRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}, GetPrivateDataMetadataByHashRv: map[string][]byte{vpMetadataKey: utils.MarshalOrPanic(spe)}}
685681
ms := &mockStateFetcher{FetchStateRv: mr}
686682
pm := &KeyLevelValidationParameterManagerImpl{StateFetcher: ms}
687683

core/common/validation/statebased/vpmanagerimpl.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ func (m *KeyLevelValidationParameterManagerImpl) GetValidationParameterForKey(cc
318318
return nil, err
319319
}
320320
} else {
321-
mdMap, err = state.GetPrivateDataMetadata(cc, coll, key)
321+
mdMap, err = state.GetPrivateDataMetadataByHash(cc, coll, []byte(key))
322322
if err != nil {
323323
err = errors.WithMessage(err, fmt.Sprintf("could not retrieve metadata for %s:%s:%x", cc, coll, []byte(key)))
324324
logger.Errorf(err.Error())

core/handlers/validation/api/state/state.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ type State interface {
2525
// GetStateMetadata returns the metadata for given namespace and key
2626
GetStateMetadata(namespace, key string) (map[string][]byte, error)
2727

28-
// GetPrivateDataMetadata gets the metadata of a private data item identified by a tuple <namespace, collection, key>
29-
GetPrivateDataMetadata(namespace, collection, key string) (map[string][]byte, error)
30-
3128
// GetPrivateDataMetadataByHash gets the metadata of a private data item identified by a tuple <namespace, collection, keyhash>
3229
GetPrivateDataMetadataByHash(namespace, collection string, keyhash []byte) (map[string][]byte, error)
3330

0 commit comments

Comments
 (0)