Skip to content

Commit 0fef156

Browse files
authored
identity service refactoring (#569)
Signed-off-by: Angelo De Caro <[email protected]>
1 parent 06fbf62 commit 0fef156

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+818
-998
lines changed

integration/token/fungible/support.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,6 +1059,7 @@ func Withdraw(network *integration.Infrastructure, wpm *WalletManagerProvider, u
10591059
} else {
10601060
Expect(network.Client(auditor).IsTxFinal(common.JSONUnmarshalString(txid))).NotTo(HaveOccurred())
10611061
}
1062+
Expect(network.Client(IssuerId).IsTxFinal(common.JSONUnmarshalString(txid))).NotTo(HaveOccurred())
10621063
return common.JSONUnmarshalString(txid)
10631064
}
10641065

integration/token/fungible/tests.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,14 @@ func TestAll(network *integration.Infrastructure, auditor string, onAuditorResta
298298
CheckAcceptedTransactions(network, "alice", "", AliceAcceptedTransactions[:2], &t0, &t3, nil)
299299
CheckAcceptedTransactions(network, "alice", "", AliceAcceptedTransactions[1:2], &t2, &t3, nil)
300300

301+
h := ListIssuerHistory(network, "", "USD", "issuer")
302+
Expect(h.Count() > 0).To(BeTrue())
303+
Expect(h.Sum(64).ToBigInt().Cmp(big.NewInt(120))).To(BeEquivalentTo(0), "expected [%d]=[120]", h.Sum(64).ToBigInt().Int64())
304+
Expect(h.ByType("USD").Count()).To(BeEquivalentTo(h.Count()))
305+
306+
h = ListIssuerHistory(network, "", "EUR", "issuer")
307+
Expect(h.Count()).To(BeEquivalentTo(0))
308+
301309
Restart(network, true, auditor)
302310
RegisterAuditor(network, auditor, onAuditorRestart)
303311

@@ -310,9 +318,9 @@ func TestAll(network *integration.Infrastructure, auditor string, onAuditorResta
310318
CheckAcceptedTransactions(network, "alice", "", AliceAcceptedTransactions[:2], &t0, &t3, nil)
311319
CheckAcceptedTransactions(network, "alice", "", AliceAcceptedTransactions[1:2], &t2, &t3, nil)
312320

313-
h := ListIssuerHistory(network, "", "USD", "issuer")
321+
h = ListIssuerHistory(network, "", "USD", "issuer")
314322
Expect(h.Count() > 0).To(BeTrue())
315-
Expect(h.Sum(64).ToBigInt().Cmp(big.NewInt(120))).To(BeEquivalentTo(0))
323+
Expect(h.Sum(64).ToBigInt().Cmp(big.NewInt(120))).To(BeEquivalentTo(0), "expected [%d]=[120]", h.Sum(64).ToBigInt().Int64())
316324
Expect(h.ByType("USD").Count()).To(BeEquivalentTo(h.Count()))
317325

318326
h = ListIssuerHistory(network, "", "EUR", "issuer")

token/core/fabtoken/driver/deserializer.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func NewDeserializer() *Deserializer {
3838
return &Deserializer{
3939
auditorDeserializer: &x509.MSPIdentityDeserializer{},
4040
issuerDeserializer: &x509.MSPIdentityDeserializer{},
41-
ownerDeserializer: htlc.NewDeserializer(identity.NewRawOwnerIdentityDeserializer(&x509.MSPIdentityDeserializer{})),
41+
ownerDeserializer: htlc.NewDeserializer(identity.NewTypedIdentityDeserializer(&x509.MSPIdentityDeserializer{})),
4242
}
4343
}
4444

@@ -68,7 +68,7 @@ func (d *Deserializer) GetOwnerMatcher(raw []byte) (driver.Matcher, error) {
6868
}
6969

7070
func (d *Deserializer) Recipients(raw []byte) ([]view.Identity, error) {
71-
owner, err := identity.UnmarshallRawOwner(raw)
71+
owner, err := identity.UnmarshalTypedIdentity(raw)
7272
if err != nil {
7373
return nil, errors.Wrap(err, "failed to unmarshal owner of input token")
7474
}
@@ -89,7 +89,7 @@ func (d *Deserializer) Match(id view.Identity, ai []byte) error {
8989
}
9090

9191
// match identity and audit info
92-
recipient, err := identity.UnmarshallRawOwner(id)
92+
recipient, err := identity.UnmarshalTypedIdentity(id)
9393
if err != nil {
9494
return errors.Wrapf(err, "failed to unmarshal identity [%s]", id)
9595
}

token/core/fabtoken/driver/driver.go

Lines changed: 38 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ func (d *Driver) NewTokenService(sp driver.ServiceProvider, networkID string, ch
5555
return nil, errors.WithMessage(err, "failed to create config manager")
5656
}
5757

58-
// Prepare wallets
58+
// Prepare roles
5959
storageProvider, err := identity.GetStorageProvider(sp)
6060
if err != nil {
6161
return nil, errors.Wrapf(err, "failed to get identity storage provider")
6262
}
6363
fscIdentity := view.GetIdentityProvider(sp).DefaultIdentity()
64-
wallets := identity.NewWallets()
64+
roles := identity.NewRoles()
6565
deserializerManager := deserializer.NewMultiplexDeserializer()
6666
tmsID := token.TMSID{
6767
Network: networkID,
@@ -73,7 +73,7 @@ func (d *Driver) NewTokenService(sp driver.ServiceProvider, networkID string, ch
7373
return nil, errors.Wrapf(err, "failed to open identity db for tms [%s]", tmsID)
7474
}
7575
sigService := sig.NewService(deserializerManager, identityDB)
76-
mspWalletFactory := msp.NewWalletFactory(
76+
roleFactory := msp.NewRoleFactory(
7777
tmsID,
7878
config2.NewIdentityConfig(cs, tmsConfig), // config
7979
fscIdentity, // FSC identity
@@ -84,48 +84,40 @@ func (d *Driver) NewTokenService(sp driver.ServiceProvider, networkID string, ch
8484
deserializerManager,
8585
false,
8686
)
87-
wallet, err := mspWalletFactory.NewX509Wallet(driver.OwnerRole)
87+
role, err := roleFactory.NewWrappedX509(driver.OwnerRole)
8888
if err != nil {
89-
return nil, errors.WithMessage(err, "failed to create owner wallet")
89+
return nil, errors.WithMessage(err, "failed to create owner role")
9090
}
91-
wallets.Put(driver.OwnerRole, wallet)
92-
wallet, err = mspWalletFactory.NewX509Wallet(driver.IssuerRole)
91+
roles.Register(driver.OwnerRole, role)
92+
role, err = roleFactory.NewX509(driver.IssuerRole)
9393
if err != nil {
94-
return nil, errors.WithMessage(err, "failed to create issuer wallet")
94+
return nil, errors.WithMessage(err, "failed to create issuer role")
9595
}
96-
wallets.Put(driver.IssuerRole, wallet)
97-
wallet, err = mspWalletFactory.NewX509Wallet(driver.AuditorRole)
96+
roles.Register(driver.IssuerRole, role)
97+
role, err = roleFactory.NewX509(driver.AuditorRole)
9898
if err != nil {
99-
return nil, errors.WithMessage(err, "failed to create auditor wallet")
99+
return nil, errors.WithMessage(err, "failed to create auditor role")
100100
}
101-
wallets.Put(driver.AuditorRole, wallet)
102-
wallet, err = mspWalletFactory.NewX509Wallet(driver.CertifierRole)
101+
roles.Register(driver.AuditorRole, role)
102+
role, err = roleFactory.NewX509(driver.CertifierRole)
103103
if err != nil {
104-
return nil, errors.WithMessage(err, "failed to create certifier wallet")
104+
return nil, errors.WithMessage(err, "failed to create certifier role")
105105
}
106-
wallets.Put(driver.CertifierRole, wallet)
106+
roles.Register(driver.CertifierRole, role)
107107

108108
// Instantiate the token service
109109
walletDB, err := storageProvider.OpenWalletDB(tmsID)
110110
if err != nil {
111111
return nil, errors.Wrapf(err, "failed to get identity storage provider")
112112
}
113-
ip := identity.NewProvider(
114-
sigService,
115-
view.GetEndpointService(sp),
116-
fscIdentity,
117-
NewEnrollmentIDDeserializer(),
118-
wallets,
119-
deserializerManager,
120-
)
113+
ip := identity.NewProvider(sigService, view.GetEndpointService(sp), NewEnrollmentIDDeserializer(), deserializerManager)
121114
ws := fabtoken.NewWalletService(
122-
sigService,
123115
ip,
124116
qe,
125117
NewDeserializer(),
126-
identity.NewWalletsRegistry(ip, driver.OwnerRole, walletDB),
127-
identity.NewWalletsRegistry(ip, driver.IssuerRole, walletDB),
128-
identity.NewWalletsRegistry(ip, driver.AuditorRole, walletDB),
118+
identity.NewWalletRegistry(roles[driver.OwnerRole], walletDB),
119+
identity.NewWalletRegistry(roles[driver.IssuerRole], walletDB),
120+
identity.NewWalletRegistry(roles[driver.AuditorRole], walletDB),
129121
)
130122

131123
service := fabtoken.NewService(
@@ -169,12 +161,12 @@ func (d *Driver) NewWalletService(sp driver.ServiceProvider, networkID string, c
169161
return nil, errors.WithMessage(err, "failed to create config manager")
170162
}
171163

172-
// Prepare wallets
164+
// Prepare roles
173165
storageProvider, err := identity.GetStorageProvider(sp)
174166
if err != nil {
175167
return nil, errors.Wrapf(err, "failed to get identity storage provider")
176168
}
177-
wallets := identity.NewWallets()
169+
roles := identity.NewRoles()
178170
deserializerManager := deserializer.NewMultiplexDeserializer()
179171
tmsID := token.TMSID{
180172
Network: networkID,
@@ -186,7 +178,7 @@ func (d *Driver) NewWalletService(sp driver.ServiceProvider, networkID string, c
186178
return nil, errors.Wrapf(err, "failed to open identity db for tms [%s]", tmsID)
187179
}
188180
sigService := sig.NewService(deserializerManager, identityDB)
189-
mspWalletFactory := msp.NewWalletFactory(
181+
roleFactory := msp.NewRoleFactory(
190182
tmsID,
191183
config2.NewIdentityConfig(cs, tmsConfig), // config
192184
nil, // FSC identity
@@ -197,49 +189,41 @@ func (d *Driver) NewWalletService(sp driver.ServiceProvider, networkID string, c
197189
deserializerManager,
198190
true,
199191
)
200-
wallet, err := mspWalletFactory.NewX509WalletIgnoreRemote(driver.OwnerRole)
192+
role, err := roleFactory.NewX509IgnoreRemote(driver.OwnerRole)
201193
if err != nil {
202-
return nil, errors.WithMessage(err, "failed to create owner wallet")
194+
return nil, errors.WithMessage(err, "failed to create owner role")
203195
}
204-
wallets.Put(driver.OwnerRole, wallet)
205-
wallet, err = mspWalletFactory.NewX509Wallet(driver.IssuerRole)
196+
roles.Register(driver.OwnerRole, role)
197+
role, err = roleFactory.NewX509(driver.IssuerRole)
206198
if err != nil {
207-
return nil, errors.WithMessage(err, "failed to create issuer wallet")
199+
return nil, errors.WithMessage(err, "failed to create issuer role")
208200
}
209-
wallets.Put(driver.IssuerRole, wallet)
210-
wallet, err = mspWalletFactory.NewX509Wallet(driver.AuditorRole)
201+
roles.Register(driver.IssuerRole, role)
202+
role, err = roleFactory.NewX509(driver.AuditorRole)
211203
if err != nil {
212-
return nil, errors.WithMessage(err, "failed to create auditor wallet")
204+
return nil, errors.WithMessage(err, "failed to create auditor role")
213205
}
214-
wallets.Put(driver.AuditorRole, wallet)
215-
wallet, err = mspWalletFactory.NewX509Wallet(driver.CertifierRole)
206+
roles.Register(driver.AuditorRole, role)
207+
role, err = roleFactory.NewX509(driver.CertifierRole)
216208
if err != nil {
217-
return nil, errors.WithMessage(err, "failed to create certifier wallet")
209+
return nil, errors.WithMessage(err, "failed to create certifier role")
218210
}
219-
wallets.Put(driver.CertifierRole, wallet)
211+
roles.Register(driver.CertifierRole, role)
220212

221213
// Instantiate the token service
222214
// wallet service
223215
walletDB, err := storageProvider.OpenWalletDB(tmsID)
224216
if err != nil {
225217
return nil, errors.Wrapf(err, "failed to get identity storage provider")
226218
}
227-
ip := identity.NewProvider(
228-
sigService,
229-
nil,
230-
nil,
231-
NewEnrollmentIDDeserializer(),
232-
wallets,
233-
deserializerManager,
234-
)
219+
ip := identity.NewProvider(sigService, nil, NewEnrollmentIDDeserializer(), deserializerManager)
235220
ws := fabtoken.NewWalletService(
236-
sigService,
237221
ip,
238222
nil,
239223
NewDeserializer(),
240-
identity.NewWalletsRegistry(ip, driver.OwnerRole, walletDB),
241-
identity.NewWalletsRegistry(ip, driver.IssuerRole, walletDB),
242-
identity.NewWalletsRegistry(ip, driver.AuditorRole, walletDB),
224+
identity.NewWalletRegistry(roles[driver.OwnerRole], walletDB),
225+
identity.NewWalletRegistry(roles[driver.IssuerRole], walletDB),
226+
identity.NewWalletRegistry(roles[driver.AuditorRole], walletDB),
243227
)
244228

245229
return ws, nil

token/core/fabtoken/validator_transfer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func TransferHTLCValidate(ctx *Context) error {
108108
now := time.Now()
109109

110110
for i, in := range ctx.InputTokens {
111-
owner, err := identity.UnmarshallRawOwner(in.Owner.Raw)
111+
owner, err := identity.UnmarshalTypedIdentity(in.Owner.Raw)
112112
if err != nil {
113113
return errors.Wrap(err, "failed to unmarshal owner of input token")
114114
}
@@ -160,7 +160,7 @@ func TransferHTLCValidate(ctx *Context) error {
160160
}
161161

162162
// if it is an htlc script then the deadline must still be valid
163-
owner, err := identity.UnmarshallRawOwner(out.Output.Owner.Raw)
163+
owner, err := identity.UnmarshalTypedIdentity(out.Output.Owner.Raw)
164164
if err != nil {
165165
return err
166166
}

0 commit comments

Comments
 (0)