Skip to content

Commit d767bb5

Browse files
Fixup! add default driver
Signed-off-by: sapthasurendran <[email protected]>
1 parent 9329a82 commit d767bb5

File tree

7 files changed

+87
-84
lines changed

7 files changed

+87
-84
lines changed

platform/view/core/id/provider.go

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ SPDX-License-Identifier: Apache-2.0
77
package id
88

99
import (
10-
"io/ioutil"
11-
1210
"github.com/pkg/errors"
1311

1412
"github.com/hyperledger-labs/fabric-smart-client/platform/view/driver"
1513
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging"
16-
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/id/ecdsa"
14+
kms "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kms"
1715
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
1816
)
1917

@@ -44,13 +42,15 @@ type provider struct {
4442
defaultID view.Identity
4543
admins []view.Identity
4644
clients []view.Identity
45+
kms kms.Driver
4746
}
4847

49-
func NewProvider(configProvider ConfigProvider, sigService SigService, endpointService EndpointService) *provider {
48+
func NewProvider(configProvider ConfigProvider, sigService SigService, endpointService EndpointService, driver kms.Driver) *provider {
5049
return &provider{
5150
configProvider: configProvider,
5251
sigService: sigService,
5352
endpointService: endpointService,
53+
kms: driver,
5454
}
5555
}
5656

@@ -96,20 +96,12 @@ func (p *provider) loadDefaultIdentity() error {
9696
if err != nil {
9797
return errors.Wrapf(err, "failed loading SFC Node Identity")
9898
}
99-
defaultID
10099

101-
id, verifier, err := ecdsa.NewIdentityFromPEMCert(defaultID)
100+
id, signer, verifier, err := p.kms.Load(p.configProvider, defaultID)
102101
if err != nil {
103-
return errors.Wrap(err, "failed loading default verifier")
102+
return errors.Wrapf(err, "failed loading default signer")
104103
}
105-
// fileCont, err := ioutil.ReadFile(p.configProvider.GetPath("fsc.identity.key.file"))
106-
// if err != nil {
107-
// return errors.Wrapf(err, "failed reading file [%s]", fileCont)
108-
// }
109-
// signer, err := ecdsa.NewSignerFromPEM(fileCont)
110-
// if err != nil {
111-
// return errors.Wrapf(err, "failed loading default signer")
112-
// }
104+
113105
if err := p.sigService.RegisterSigner(id, signer, verifier); err != nil {
114106
return errors.Wrapf(err, "failed registering default identity signer")
115107
}

platform/view/core/id/provider_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313

1414
"github.com/hyperledger-labs/fabric-smart-client/platform/view/core/id"
1515
"github.com/hyperledger-labs/fabric-smart-client/platform/view/core/id/mock"
16+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kms"
17+
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kms/driver/default"
1618
)
1719

1820
func TestLoad(t *testing.T) {
@@ -29,7 +31,9 @@ func TestLoad(t *testing.T) {
2931
cp.TranslatePathReturnsOnCall(1, "./testdata/client/client.pem")
3032
sigService := &mock.SigService{}
3133

32-
idProvider := id.NewProvider(cp, sigService, nil)
34+
kmsDriver, err := kms.GetKMSDriver("default")
35+
assert.NoError(t, err, "failed getting kms driver")
36+
idProvider := id.NewProvider(cp, sigService, nil, kmsDriver)
3337
assert.NoError(t, idProvider.Load(), "failed loading identities")
3438

3539
raw, err := id.LoadIdentity("./testdata/default/signcerts/default.pem")

platform/view/sdk/sdk.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import (
2929
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/events/simple"
3030
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging"
3131
grpc2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/grpc"
32+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kms"
33+
_ "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kms/driver/default"
3234
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs"
3335
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/metrics/operations"
3436
view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/server/view"
@@ -106,8 +108,14 @@ func (p *p) Install() error {
106108
assert.NoError(err, "failed instantiating endpoint service")
107109
assert.NoError(p.registry.RegisterService(endpointService), "failed registering endpoint service")
108110

111+
//Get Default KMS Driver
112+
kmsDriver, err := kms.GetKMSDriver("default")
113+
if err != nil {
114+
return errors.Wrapf(err, "failed getting key management driver")
115+
}
116+
109117
// Set Identity Provider
110-
idProvider := id.NewProvider(configProvider, signerService, endpointService)
118+
idProvider := id.NewProvider(configProvider, signerService, endpointService, kmsDriver)
111119
assert.NoError(idProvider.Load(), "failed loading identities")
112120
assert.NoError(p.registry.RegisterService(idProvider))
113121

platform/view/services/kms/driver/bccsp/driver.go

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
Copyright IBM Corp. All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package driver
8+
9+
import (
10+
"io/ioutil"
11+
12+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/driver"
13+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/id/ecdsa"
14+
kms "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kms"
15+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
16+
17+
"github.com/pkg/errors"
18+
)
19+
20+
type Driver struct{}
21+
22+
func (d *Driver) Load(configProvider kms.ConfigProvider, pemBytes []byte) (view.Identity, driver.Signer, driver.Verifier, error) {
23+
fileCont, err := ioutil.ReadFile(configProvider.GetPath("fsc.identity.key.file"))
24+
if err != nil {
25+
return nil, nil, nil, errors.Wrapf(err, "failed reading file [%s]", fileCont)
26+
}
27+
id, verifier, err := ecdsa.NewIdentityFromPEMCert(pemBytes)
28+
if err != nil {
29+
return nil, nil, nil, errors.Wrap(err, "failed loading default verifier")
30+
}
31+
signer, err := ecdsa.NewSignerFromPEM(fileCont)
32+
if err != nil {
33+
return id, nil, verifier, errors.Wrapf(err, "failed loading default signer")
34+
}
35+
return id, signer, verifier, nil
36+
}
37+
38+
func init() {
39+
kms.Register("default", &Driver{})
40+
}

platform/view/services/kms/driver/driver.go

Lines changed: 0 additions & 11 deletions
This file was deleted.

platform/view/services/kms/kms.go

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,32 @@ import (
1010
"sort"
1111
"sync"
1212

13-
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kms/driver"
13+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/driver"
14+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
1415
"github.com/pkg/errors"
1516
)
1617

1718
var (
1819
driversMu sync.RWMutex
19-
drivers = make(map[string]driver.Driver)
20+
drivers = make(map[string]Driver)
2021
)
2122

22-
// Register makes a db driver available by the provided name.
23+
// Driver models the key management interface
24+
type Driver interface {
25+
// Load returns the signer, verifier and signing identity bound to the byte representation of passed pem encoded public key.
26+
Load(configProvider ConfigProvider, pemBytes []byte) (view.Identity, driver.Signer, driver.Verifier, error)
27+
}
28+
29+
type ConfigProvider interface {
30+
GetPath(s string) string
31+
GetStringSlice(key string) []string
32+
TranslatePath(path string) string
33+
}
34+
35+
// Register makes a kms driver available by the provided name.
2336
// If Register is called twice with the same name or if driver is nil,
2437
// it panics.
25-
func Register(name string, driver driver.Driver) {
38+
func Register(name string, driver Driver) {
2639
driversMu.Lock()
2740
defer driversMu.Unlock()
2841
if driver == nil {
@@ -46,38 +59,17 @@ func Drivers() []string {
4659
return list
4760
}
4861

49-
func GetKeyManagementService(name string) (*driver.Driver, error) {
50-
// TODO: support multiple external committers
62+
// GetKMSDriver returns the registered drivers.
63+
func GetKMSDriver(driverName string) (Driver, error) {
5164
dNames := Drivers()
5265
if len(dNames) == 0 {
53-
return nil, errors.New("no kms driver found" )
66+
return nil, errors.New("no kms driver found")
5467
}
55-
return drivers[dNames[0]], nil
56-
57-
}
58-
59-
// // Config models the DB configuration
60-
// type Config interface {
61-
// // UnmarshalKey takes a single key and unmarshals it into a Struct
62-
// UnmarshalKey(key string, rawVal interface{}) error
63-
// }
64-
65-
// // Open returns a new persistence handle. Similarly to database/sql:
66-
// // driverName is a string that describes the driver
67-
// // dataSourceName describes the data source in a driver-specific format.
68-
// // The returned connection is only used by one goroutine at a time.
69-
// func Open(sp view.ServiceProvider, driverName, dataSourceName string, config Config) (driver.Persistence, error) {
70-
// driversMu.RLock()
71-
// driver, ok := drivers[driverName]
72-
// driversMu.RUnlock()
73-
// if !ok {
74-
// return nil, errors.Errorf("driver [%s] not found", driverName)
75-
// }
76-
// d, err := driver.New(sp, dataSourceName, config)
77-
// if err != nil {
78-
// return nil, errors.Wrapf(err, "failed opening datasource [%s][%s[", driverName, dataSourceName)
79-
// }
80-
// return d, nil
81-
// }
68+
driver, ok := drivers[driverName]
69+
if !ok {
70+
return nil, errors.New("no kms driver found with name" + driverName)
8271

72+
}
73+
return driver, nil
8374

75+
}

0 commit comments

Comments
 (0)