Skip to content
This repository was archived by the owner on Sep 27, 2023. It is now read-only.

Commit d94edab

Browse files
author
GitHub
committed
Automatic update on Mon Dec 13 01:05:32 UTC 2021
1 parent 7bcf0df commit d94edab

File tree

6 files changed

+71
-3
lines changed

6 files changed

+71
-3
lines changed

pkg/cothority/byzcoin/bcadmin/commands.go

+4
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,10 @@ var cmds = cli.Commands{
853853
EnvVar: "BC",
854854
Usage: "the ByzCoin config to use (required)",
855855
},
856+
cli.BoolFlag{
857+
Name: "roster",
858+
Usage: "the full roster of the config",
859+
},
856860
},
857861
},
858862

pkg/cothority/byzcoin/bcadmin/main.go

+12
Original file line numberDiff line numberDiff line change
@@ -1729,6 +1729,7 @@ func getInfo(c *cli.Context) error {
17291729
return err
17301730
}
17311731

1732+
log.Info("Fetching the latest config")
17321733
cl.UpdateNodes()
17331734
var bcCfg byzcoin.ChainConfig
17341735
if _, err := cl.GetInstance(byzcoin.ConfigInstanceID,
@@ -1740,6 +1741,17 @@ func getInfo(c *cli.Context) error {
17401741
"%v",
17411742
cfg.String(), bcArg, bcCfg)
17421743

1744+
if c.Bool("roster") {
1745+
group := app.Group{
1746+
Roster: &bcCfg.Roster,
1747+
}
1748+
groupToml, err := group.Toml(cothority.Suite)
1749+
if err != nil {
1750+
return xerrors.Errorf("couldn't create toml: %v", err)
1751+
}
1752+
log.Infof("Full roster is:\n%s", groupToml.String())
1753+
}
1754+
17431755
return nil
17441756
}
17451757

pkg/cothority/darc/darc_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -748,3 +748,19 @@ func TestParseIdentity(t *testing.T) {
748748
// ToLower() because common.Address uses address checksum (EIP-55)
749749
require.Equal(t, in, strings.ToLower(i.String()))
750750
}
751+
752+
// Test any identity
753+
func testIdentity(t *testing.T, sig Signer) {
754+
msg := []byte("something secret")
755+
signed, err := sig.Sign(msg)
756+
require.NoError(t, err)
757+
758+
id := sig.Identity()
759+
require.NoError(t, id.Verify(msg, signed))
760+
require.Error(t, id.Verify([]byte("wrong message"), signed))
761+
}
762+
763+
// Test the different identities available - currently only Ed25519.
764+
func TestIdentities(t *testing.T) {
765+
testIdentity(t, NewSignerEd25519(nil, nil))
766+
}

pkg/cothority/personhood/service_test.go

+12
Original file line numberDiff line numberDiff line change
@@ -180,12 +180,24 @@ func TestService_EmailRecover(t *testing.T) {
180180
require.Equal(t, uint64(2000), newUserCoin.Value)
181181
require.Equal(t, contracts.SpawnerCoin, newUserCoin.Name)
182182

183+
// Test wrong email
183184
reply, err := ts.s.EmailRecover(&EmailRecover{
184185
Email: "linus.gasser2@epfl.ch",
185186
})
186187
require.Error(t, err)
187188
require.Equal(t, EREUnknown, reply.Status)
188189

190+
// Test correct email
191+
ts.dummyEmail.Reset()
192+
reply, err = ts.s.EmailRecover(&EmailRecover{
193+
Email: "linus.gasser@epfl.ch",
194+
})
195+
// Need to wait for the update to go through the network.
196+
require.NoError(t, err)
197+
require.Equal(t, ERERecovered, reply.Status)
198+
time.Sleep(time.Second)
199+
200+
// Test correct email a 2nd time
189201
ts.dummyEmail.Reset()
190202
reply, err = ts.s.EmailRecover(&EmailRecover{
191203
Email: "linus.gasser@epfl.ch",

pkg/cothority/personhood/user/user.go

+17-3
Original file line numberDiff line numberDiff line change
@@ -288,13 +288,16 @@ func (u User) createRecovery(otherUser User,
288288
if err := newUserSigner.EvolveFrom(&otherUser.SignerDarc); err != nil {
289289
return xerrors.Errorf("couldn't evolve signer darc: %v", err)
290290
}
291-
newExpr := newUserSigner.Rules.GetSignExpr().AddOrElement(
291+
newSignExpr := newUserSigner.Rules.GetSignExpr().AddOrElement(
292292
recoveryDeviceIdentity.String())
293-
if err := newUserSigner.Rules.UpdateSign(newExpr); err != nil {
293+
if err := newUserSigner.Rules.UpdateSign(newSignExpr); err != nil {
294294
return xerrors.Errorf("couldn't update signer darc: %v", err)
295295
}
296+
297+
newEvolveExpr := newUserSigner.Rules.Get(byzcoin.ContractDarcInvokeEvolve).
298+
AddOrElement(recoveryDeviceIdentity.String())
296299
if err := newUserSigner.Rules.UpdateRule(byzcoin.ContractDarcInvokeEvolve,
297-
newExpr); err != nil {
300+
newEvolveExpr); err != nil {
298301
return xerrors.Errorf("couldn't update signer darc: %v", err)
299302
}
300303
newUserSignerBuf, err := newUserSigner.ToProto()
@@ -394,6 +397,17 @@ func (u *User) UpdateCredential() error {
394397
return nil
395398
}
396399

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+
397411
func (u User) getActiveSpawner() ActiveSpawner {
398412
return u.Spawner.Start(u.CoinID, u.Signer)
399413
}

pkg/cothority/personhood/user/user_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,18 @@ func TestUser_Recover(t *testing.T) {
146146

147147
recoverStr, err := user.Recover(user2.CredIID, "https://something.com")
148148
require.NoError(t, err)
149+
require.NoError(t, user2.UpdateSignerDarc())
149150

150151
user2recover, err := NewFromURL(ut.Client, recoverStr)
151152
require.NoError(t, err)
152153
require.Equal(t, user2.CredIID, user2recover.CredIID)
154+
require.NoError(t, user2.UpdateSignerDarc())
155+
156+
// Recover a second time
157+
recoverStr, err = user.Recover(user2.CredIID, "https://something.com")
158+
require.NoError(t, err)
159+
160+
user2recover, err = NewFromURL(ut.Client, recoverStr)
161+
require.NoError(t, err)
162+
require.Equal(t, user2.CredIID, user2recover.CredIID)
153163
}

0 commit comments

Comments
 (0)