Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/platform/view/db-driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ However, they all share one common interface such as the following:
type BindingStore interface {
GetLongTerm(ephemeral view.Identity) (view.Identity, error)
HaveSameBinding(this, that view.Identity) (bool, error)
PutBinding(ephemeral, longTerm view.Identity) error
PutBindings(longTerm view.Identity, ephemeral ...view.Identity) error
}

type AuditInfoStore interface {
Expand Down
2 changes: 1 addition & 1 deletion platform/common/driver/kvs.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type AuditInfoStore interface {
type BindingStore interface {
GetLongTerm(ctx context.Context, ephemeral view.Identity) (view.Identity, error)
HaveSameBinding(ctx context.Context, this, that view.Identity) (bool, error)
PutBinding(ctx context.Context, ephemeral, longTerm view.Identity) error
PutBindings(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
}

type MetadataStore[K any, M any] interface {
Expand Down
2 changes: 1 addition & 1 deletion platform/fabric/core/generic/endpoint/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (r *Resolver) GetIdentity() (view.Identity, error) {
}

type Service interface {
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
AddResolver(name string, domain string, addresses map[string]string, aliases []string, id []byte) (view.Identity, error)
AddPublicKeyExtractor(extractor endpoint.PublicKeyExtractor) error
}
Expand Down
2 changes: 1 addition & 1 deletion platform/fabric/core/generic/msp/driver/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ type SignerService interface {
}

type BinderService interface {
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
GetIdentity(label string, pkiID []byte) (view.Identity, error)
}

Expand Down
18 changes: 0 additions & 18 deletions platform/fabric/sdk/dig/sdk_test.go

This file was deleted.

2 changes: 1 addition & 1 deletion platform/view/sdk/dig/support/endpoint/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ type IdentityService interface {
}

type Backend interface {
Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error
Bind(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error
AddResolver(name string, domain string, addresses map[string]string, aliases []string, id []byte) (view.Identity, error)
}

Expand Down
86 changes: 40 additions & 46 deletions platform/view/services/endpoint/mock/binding_store.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 11 additions & 9 deletions platform/view/services/endpoint/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,18 +146,20 @@ func (r *Service) GetResolver(ctx context.Context, id view.Identity) (*Resolver,
return r.resolver(ctx, id)
}

func (r *Service) Bind(ctx context.Context, longTerm view.Identity, ephemeral view.Identity) error {
if longTerm.Equal(ephemeral) {
logger.DebugfContext(ctx, "cannot bind [%s] to [%s], they are the same", longTerm, ephemeral)
func (r *Service) Bind(ctx context.Context, longTerm view.Identity, ephemeralIDs ...view.Identity) error {
// filter out any identities equal to the longTerm identity
var toBind []view.Identity
for _, id := range ephemeralIDs {
if !longTerm.Equal(id) {
toBind = append(toBind, id)
}
}
if len(toBind) == 0 {
return nil
}

logger.DebugfContext(ctx, "bind [%s] to [%s]", ephemeral, longTerm)

if err := r.bindingKVS.PutBinding(ctx, ephemeral, longTerm); err != nil {
return errors.WithMessagef(err, "failed storing binding of [%s] to [%s]", ephemeral.UniqueID(), longTerm.UniqueID())
if err := r.bindingKVS.PutBindings(ctx, longTerm, toBind...); err != nil {
return errors.WithMessagef(err, "failed storing bindings")
}

return nil
}

Expand Down
10 changes: 6 additions & 4 deletions platform/view/services/endpoint/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ func (k mockKVS) GetLongTerm(ctx context.Context, ephemeral view.Identity) (view
func (k mockKVS) HaveSameBinding(ctx context.Context, this, that view.Identity) (bool, error) {
return false, nil
}
func (k mockKVS) PutBinding(ctx context.Context, ephemeral, longTerm view.Identity) error { return nil }
func (k mockKVS) PutBindings(ctx context.Context, longTerm view.Identity, ephemeral ...view.Identity) error {
return nil
}

type mockExtractor struct{}

Expand Down Expand Up @@ -58,7 +60,7 @@ func TestPKIResolveConcurrency(t *testing.T) {
func TestGetIdentity(t *testing.T) {
// setup
bindingStore := &mock.BindingStore{}
bindingStore.PutBindingReturns(nil)
bindingStore.PutBindingsReturns(nil)

service, err := endpoint.NewService(bindingStore)
require.NoError(t, err)
Expand All @@ -73,7 +75,7 @@ func TestGetIdentity(t *testing.T) {
require.NoError(t, err)
resolvers := service.Resolvers()
assert.Len(t, resolvers, 1)
assert.Equal(t, 0, bindingStore.PutBindingCallCount())
assert.Equal(t, 0, bindingStore.PutBindingsCallCount())

_, err = service.AddResolver(
"alice",
Expand All @@ -85,7 +87,7 @@ func TestGetIdentity(t *testing.T) {
require.NoError(t, err)
resolvers = service.Resolvers()
assert.Len(t, resolvers, 1)
assert.Equal(t, 1, bindingStore.PutBindingCallCount())
assert.Equal(t, 1, bindingStore.PutBindingsCallCount())

err = service.AddPublicKeyExtractor(ext)
require.NoError(t, err)
Expand Down
6 changes: 0 additions & 6 deletions platform/view/services/id/mock/config_provider.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 16 additions & 16 deletions platform/view/services/id/mock/sig_service.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading