@@ -288,13 +288,16 @@ func (u User) createRecovery(otherUser User,
288
288
if err := newUserSigner .EvolveFrom (& otherUser .SignerDarc ); err != nil {
289
289
return xerrors .Errorf ("couldn't evolve signer darc: %v" , err )
290
290
}
291
- newExpr := newUserSigner .Rules .GetSignExpr ().AddOrElement (
291
+ newSignExpr := newUserSigner .Rules .GetSignExpr ().AddOrElement (
292
292
recoveryDeviceIdentity .String ())
293
- if err := newUserSigner .Rules .UpdateSign (newExpr ); err != nil {
293
+ if err := newUserSigner .Rules .UpdateSign (newSignExpr ); err != nil {
294
294
return xerrors .Errorf ("couldn't update signer darc: %v" , err )
295
295
}
296
+
297
+ newEvolveExpr := newUserSigner .Rules .Get (byzcoin .ContractDarcInvokeEvolve ).
298
+ AddOrElement (recoveryDeviceIdentity .String ())
296
299
if err := newUserSigner .Rules .UpdateRule (byzcoin .ContractDarcInvokeEvolve ,
297
- newExpr ); err != nil {
300
+ newEvolveExpr ); err != nil {
298
301
return xerrors .Errorf ("couldn't update signer darc: %v" , err )
299
302
}
300
303
newUserSignerBuf , err := newUserSigner .ToProto ()
@@ -394,6 +397,17 @@ func (u *User) UpdateCredential() error {
394
397
return nil
395
398
}
396
399
400
+ // UpdateSignerDarc fetches the latest version of the signer darc.
401
+ func (u * User ) UpdateSignerDarc () error {
402
+ if _ , err := u .cl .GetInstance (
403
+ byzcoin .NewInstanceID (u .SignerDarc .GetBaseID ()),
404
+ byzcoin .ContractDarcID ,
405
+ & u .SignerDarc ); err != nil {
406
+ return xerrors .Errorf ("couldn't get signer darc: %v" , err )
407
+ }
408
+ return nil
409
+ }
410
+
397
411
func (u User ) getActiveSpawner () ActiveSpawner {
398
412
return u .Spawner .Start (u .CoinID , u .Signer )
399
413
}
0 commit comments