From 0e73fd23c17468c3a24bb6f45898217adfec52ce Mon Sep 17 00:00:00 2001 From: pm-duokey Date: Fri, 17 Dec 2021 03:01:38 -0800 Subject: [PATCH 01/16] new Darc ECDSA --- calypso/protocol/ocs_test.go | 2 +- darc/darc.go | 61 ++++++++++++++++++++++++++++++++++++ darc/darc_test.go | 16 +++++++--- darc/proto.go | 17 ++++++++++ 4 files changed, 90 insertions(+), 6 deletions(-) diff --git a/calypso/protocol/ocs_test.go b/calypso/protocol/ocs_test.go index aab85e8803..24a83063fe 100644 --- a/calypso/protocol/ocs_test.go +++ b/calypso/protocol/ocs_test.go @@ -252,7 +252,7 @@ func DecodeKey(suite kyber.Group, X kyber.Point, Cs []kyber.Point, XhatEnc kyber } key = append(key, keyPart...) } - return + return } // starts a new service. No function needed. diff --git a/darc/darc.go b/darc/darc.go index 3a8506a79a..9ed13e286a 100644 --- a/darc/darc.go +++ b/darc/darc.go @@ -33,6 +33,7 @@ package darc import ( "bytes" "crypto/ecdsa" + "crypto/elliptic" "crypto/sha256" "crypto/sha512" "crypto/x509" @@ -773,6 +774,8 @@ func (s Signer) Type() int { return 3 case s.EvmContract != nil: return 4 + case s.ECDSA != nil: + return 5 default: return -1 } @@ -790,6 +793,8 @@ func (s Signer) Identity() Identity { return NewIdentityProxy(s.Proxy) case 4: return NewIdentityEvmContract(s.EvmContract) + case 5: + return NewIdentityECDSA(s.ECDSA.PublicKey) default: return Identity{} } @@ -937,6 +942,8 @@ func (id Identity) Verify(msg, sig []byte) error { return id.Proxy.Verify(msg, sig) case 4: return id.EvmContract.Verify(msg, sig) + case 5: + return id.ECDSA.Verify(msg, sig) default: return errors.New("unknown identity") } @@ -964,6 +971,10 @@ func (id Identity) GetPublicBytes() []byte { return buf case 4: return id.EvmContract.Address[:] + case 5: + buf := elliptic.Marshal(id.ECDSA.PublicKey.Curve, id.ECDSA.PublicKey.X, id.ECDSA.PublicKey.Y) + //TODO: add error check here? + return buf default: return nil } @@ -1012,6 +1023,25 @@ func NewIdentityX509EC(public []byte) Identity { } } +// NewIdentityECDSA creates a new ECDSA identity struct given a public key +func NewIdentityECDSA(publicKey ecdsa.PublicKey) Identity { + return Identity{ + ECDSA: &IdentityECDSA{ + PublicKey: publicKey, + }, + } +} + +//TODO make calls to tsm available +func (ide IdentityECDSA) Verify(msg []byte, sig []byte) error { + hashMsg := sha256.Sum256(msg) + valid := ecdsa.VerifyASN1(&ide.PublicKey, hashMsg[:], sig) + if !valid { + return errors.New("Signature failed to verify") + } + return nil +} + // NewIdentityProxy creates a new OpenID Connect identity struct. func NewIdentityProxy(s *SignerProxy) Identity { return Identity{ @@ -1120,6 +1150,8 @@ func ParseIdentity(in string) (Identity, error) { return parseIDProxy(fields[1]) case "evm_contract": return parseIDEvmContract(fields[1]) + case "secp256k1": + return parseIDECDSA(fields[1]) default: return Identity{}, fmt.Errorf("unknown identity type %v", fields[0]) } @@ -1142,6 +1174,25 @@ func parseIDX509ec(in string) (Identity, error) { return Identity{X509EC: &IdentityX509EC{Public: id}}, nil } +//necessary function, needs to be refactored only supports elliptic.P256 curve +//needs to be tested Unmarshal might not work +func parseIDECDSA(in string) (Identity, error) { + id := make([]byte, hex.DecodedLen(len(in))) + _, err := hex.Decode(id, []byte(in)) + + x, y := elliptic.Unmarshal(elliptic.P256(), id) + + pubkey := ecdsa.PublicKey{ + Curve: elliptic.P256(), + X: x, + Y: y, + } + if err != nil { + return Identity{}, err + } + return Identity{ECDSA: &IdentityECDSA{PublicKey: pubkey}}, nil +} + func parseIDDarc(in string) (Identity, error) { id := make([]byte, hex.DecodedLen(len(in))) _, err := hex.Decode(id, []byte(in)) @@ -1447,6 +1498,16 @@ func (kcs SignerX509EC) Sign(msg []byte) ([]byte, error) { return nil, errors.New("not yet implemented") } +func NewSignerECDSA() Signer { + return Signer{} +} + +//TODO +func (kcs SignerECDSA) Sign(msg []byte) ([]byte, error) { + //call tsm to sign + return nil, errors.New("not yet implemented") +} + // NewSignerProxy creates a new SignerProxy. When Sign is called, the getSignature // callback will be called, so that the caller can use the appropriate mechanism // to retrieve and/or construct the signature. diff --git a/darc/darc_test.go b/darc/darc_test.go index 9f0cf289db..59a91c9f88 100644 --- a/darc/darc_test.go +++ b/darc/darc_test.go @@ -1,6 +1,7 @@ package darc import ( + "encoding/hex" "errors" "fmt" "net/url" @@ -751,11 +752,16 @@ func TestParseIdentity(t *testing.T) { // Test any identity func testIdentity(t *testing.T, sig Signer) { - msg := []byte("something secret") - signed, err := sig.Sign(msg) - require.NoError(t, err) - - id := sig.Identity() + msg := []byte(`Hello World`) + //signed, err := sig.Sign(msg) + //require.NoError(t, err) + + //Public Key: 0ab07149ce744429b7755e6a3d4c277d2f7a2a61ad93cfd18d6aa652e92069db + //Signature: 9626e46f0be4b96c65742e2a81945536fff6a23fad1a40b9cb0b6030cebaac293b6caf7cdc569e689a92db81176f380f6045cc72cd013f9cd4a1cb5bfa077d00 + signed, _ := hex.DecodeString("9626e46f0be4b96c65742e2a81945536fff6a23fad1a40b9cb0b6030cebaac293b6caf7cdc569e689a92db81176f380f6045cc72cd013f9cd4a1cb5bfa077d00") + in := "ed25519:0ab07149ce744429b7755e6a3d4c277d2f7a2a61ad93cfd18d6aa652e92069db" + id, _ := ParseIdentity(in) + //id := sig.Identity() require.NoError(t, id.Verify(msg, signed)) require.Error(t, id.Verify([]byte("wrong message"), signed)) } diff --git a/darc/proto.go b/darc/proto.go index 2367065a22..46fbb02ada 100644 --- a/darc/proto.go +++ b/darc/proto.go @@ -1,6 +1,8 @@ package darc import ( + "crypto/ecdsa" + "go.dedis.ch/cothority/v3/darc/expression" "go.dedis.ch/kyber/v3" "go.dedis.ch/onet/v3/network" @@ -71,6 +73,8 @@ type Identity struct { EvmContract *IdentityEvmContract // A claim signed by one of the keys in a DID Doc DID *IdentityDID + // Publik-key identity from an ECDSA key + ECDSA *IdentityECDSA } // IdentityEd25519 holds a Ed25519 public key (Point) @@ -78,6 +82,11 @@ type IdentityEd25519 struct { Point kyber.Point } +// IdentityECDSA holds a secp256k1 key (array of bytes) +type IdentityECDSA struct { + PublicKey ecdsa.PublicKey +} + // IdentityX509EC holds a public key from a X509EC type IdentityX509EC struct { Public []byte @@ -159,6 +168,7 @@ type Signer struct { Proxy *SignerProxy EvmContract *SignerEvmContract DID *SignerDID + ECDSA *SignerECDSA } // SignerEd25519 holds a public and private keys necessary to sign Darcs @@ -174,6 +184,13 @@ type SignerX509EC struct { secret []byte } +// SignerECDSA holds a public and private keys necessary to sign Darcs, +// but the private key will not be given out. +type SignerECDSA struct { + PublicKey ecdsa.PublicKey + PrivateKey ecdsa.PrivateKey +} + // SignerProxy holds the information necessary to verify claims // coming from external authentication systems via Authentication Proxies. type SignerProxy struct { From 596a5c730fcb3f46ab01ff938fcc161c08395067 Mon Sep 17 00:00:00 2001 From: pm-duokey Date: Mon, 20 Dec 2021 05:24:46 -0800 Subject: [PATCH 02/16] "implementation ECDSADarc" --- calypso/api_test.go | 124 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/calypso/api_test.go b/calypso/api_test.go index a57a56bd67..1b0be422b7 100644 --- a/calypso/api_test.go +++ b/calypso/api_test.go @@ -6,6 +6,7 @@ import ( "time" "go.dedis.ch/kyber/v3/sign/schnorr" + "go.dedis.ch/kyber/v3/util/key" "github.com/stretchr/testify/require" "go.dedis.ch/cothority/v3" @@ -217,3 +218,126 @@ func TestClient_Calypso(t *testing.T) { // use keyCopy to unlock the stuff in writeInstance.Data } + +// Tests the Calypso system with a simple write/read scenario. +// But it does the signing outside of the `Read` and `Write` methods for +// integration of the MPC signing by OneKey. +func TestClient_Calypso_Simple(t *testing.T) { + l := onet.NewTCPTest(cothority.Suite) + _, roster, _ := l.GenTree(3, true) + defer l.CloseAll() + + admin := darc.NewSignerEd25519(nil, nil) + adminCt := uint64(1) + user := darc.NewSignerEd25519(nil, nil) + // Initialise the genesis message and send it to the service. + // The admin has the privilege to spawn darcs + msg, err := byzcoin.DefaultGenesisMsg(byzcoin.CurrentVersion, roster, + []string{"spawn:" + ContractLongTermSecretID}, + admin.Identity()) + + msg.BlockInterval = 500 * time.Millisecond + require.NoError(t, err) + // The darc inside it should be valid. + gDarc := msg.GenesisDarc + require.Nil(t, gDarc.Verify(true)) + //Create Ledger + c, _, err := byzcoin.NewLedger(msg, false) + require.NoError(t, err) + //Create a Calypso Client (Byzcoin + Onet) + calypsoClient := NewClient(c) + + //Create the LTS sets up an aggregate public key used by the secret management committee + for _, who := range roster.List { + err := calypsoClient.Authorize(who, c.ID) + require.NoError(t, err) + } + ltsReply, err := calypsoClient.CreateLTS(roster, gDarc.GetBaseID(), []darc.Signer{admin}, []uint64{adminCt}) + adminCt++ + require.NoError(t, err) + //If no error, assign it + calypsoClient.ltsReply = ltsReply + + //Create a signer darc + userDarc := darc.NewDarc(darc.InitRules([]darc.Identity{user.Identity()}, + []darc.Identity{user.Identity()}), []byte("Provider1")) + // user can read and write. + // This can be changed to two different public keys. + err = userDarc.Rules.AddRule(darc.Action("spawn:"+ContractWriteID), + expression.InitOrExpr(user.Identity().String())) + require.NoError(t, err) + err = userDarc.Rules.AddRule(darc.Action("spawn:"+ContractReadID), + expression.InitOrExpr(user.Identity().String())) + require.NoError(t, err) + require.NotNil(t, userDarc) + _, err = calypsoClient.SpawnDarc(admin, adminCt, gDarc, *userDarc, 10) + adminCt++ + require.NoError(t, err) + + data := []byte("Some secret data - or the user's private key") + // Create a Write structure + write1, err := NewWriteData(cothority.Suite, + calypsoClient.ltsReply.InstanceID, + userDarc.GetBaseID(), calypsoClient.ltsReply.X, data) + require.NoError(t, err) + + // Create a write-instance and send it to Byzcoin - here + // the instruction and the transaction is created manually, + // so that an external signer can sign the hash of the instruction. + wrInst, err := ContractWriteSpawnInstruction(write1, userDarc) + require.NoError(t, err) + wrInst.SignerCounter = []uint64{1} + wrInst.SignerIdentities = []darc.Identity{user.Identity()} + wrTx, err := calypsoClient.bcClient.CreateTransaction(*wrInst) + require.NoError(t, err) + digest := wrTx.Instructions.Hash() + + // This signature can be replaced by an external signature. + signature, err := user.Sign(digest) + require.NoError(t, err) + wrTx.Instructions[0].Signatures = [][]byte{signature} + + // Send the transaction to ByzCoin + _, err = calypsoClient.bcClient.AddTransactionAndWait(wrTx, 10) + require.NoError(t, err) + wrID := wrTx.Instructions[0].DeriveID("") + proofWr, err := calypsoClient.WaitProof(wrID, time.Second, nil) + require.NoError(t, err) + + // Create a read-instance and send it to ByzCoin. + ephemeral := key.NewKeyPair(cothority.Suite) + readInst, err := ContractReadSpawnInstruction(wrID, ephemeral.Public) + require.NoError(t, err) + readInst.SignerCounter = []uint64{2} + readInst.SignerIdentities = []darc.Identity{user.Identity()} + readTx, err := calypsoClient.bcClient.CreateTransaction(*readInst) + require.NoError(t, err) + digest = readTx.Instructions.Hash() + + // This signature can be replaced by an external signature + signature, err = user.Sign(digest) + require.NoError(t, err) + readTx.Instructions[0].Signatures = [][]byte{signature} + readID := readTx.Instructions[0].DeriveID("") + + // Send the transaction to ByzCoin + _, err = calypsoClient.bcClient.AddTransactionAndWait(readTx, 10) + require.NoError(t, err) + proofRd, err := calypsoClient.WaitProof(readID, time.Second, + nil) + require.NoError(t, err) + + // Make sure you can actually decrypt + dk, err := calypsoClient.DecryptKey(&DecryptKey{Read: *proofRd, + Write: *proofWr}) + require.NoError(t, err) + require.True(t, dk.X.Equal(calypsoClient.ltsReply.X)) + keyCopy, err := dk.RecoverKey(ephemeral.Private) + require.NoError(t, err) + var wrCopy Write + require.NoError(t, proofWr.VerifyAndDecode(cothority.Suite, ContractWriteID, + &wrCopy)) + dataDecrypt, err := wrCopy.Decrypt(keyCopy) + require.NoError(t, err) + require.Equal(t, data, dataDecrypt) +} From 5c21329869cf345abae642679cfa87ca6a3472e2 Mon Sep 17 00:00:00 2001 From: pm-duokey Date: Mon, 20 Dec 2021 05:25:36 -0800 Subject: [PATCH 03/16] ECDSADarc --- calypso/contracts.go | 46 +++++++++++++++++++++++++++ calypso/struct.go | 75 ++++++++++++++++++++++++++++++++++++++++++++ darc/darc.go | 2 ++ darc/darc_test.go | 28 ++++++++++------- 4 files changed, 140 insertions(+), 11 deletions(-) diff --git a/calypso/contracts.go b/calypso/contracts.go index ef5ba8df2b..15af2a21b6 100644 --- a/calypso/contracts.go +++ b/calypso/contracts.go @@ -7,6 +7,7 @@ import ( "go.dedis.ch/cothority/v3" "go.dedis.ch/cothority/v3/byzcoin" "go.dedis.ch/cothority/v3/darc" + "go.dedis.ch/kyber/v3" "go.dedis.ch/onet/v3" "go.dedis.ch/onet/v3/log" "go.dedis.ch/onet/v3/network" @@ -278,3 +279,48 @@ func (c ContractWrite) VerifyInstruction(rst byzcoin.ReadOnlyStateTrie, inst byz } return inst.VerifyWithOption(rst, ctxHash, nil) } + +// ContractWriteSpawnInstruction returns the spawn instruction for a Write +// contract. +func ContractWriteSpawnInstruction(wr *Write, + d *darc.Darc) (*byzcoin.Instruction, error) { + writeBuf, err := protobuf.Encode(wr) + if err != nil { + return nil, xerrors.Errorf("couldn't encode write: %v", err) + } + return &byzcoin.Instruction{ + InstanceID: byzcoin.NewInstanceID(d.GetBaseID()), + Spawn: &byzcoin.Spawn{ + ContractID: ContractWriteID, + Args: byzcoin.Arguments{ + { + Name: "write", + Value: writeBuf, + }, + }, + }, + }, nil +} + +// ContractReadSpawnInstruction returns the spawn instruction for a Read +// contract. +func ContractReadSpawnInstruction(wrID byzcoin.InstanceID, + xc kyber.Point) (*byzcoin.Instruction, error) { + var readBuf []byte + read := &Read{ + Write: wrID, + Xc: xc, + } + readBuf, err := protobuf.Encode(read) + if err != nil { + return nil, xerrors.Errorf("encoding Read message: %v", err) + } + + return &byzcoin.Instruction{ + InstanceID: wrID, + Spawn: &byzcoin.Spawn{ + ContractID: ContractReadID, + Args: byzcoin.Arguments{{Name: "read", Value: readBuf}}, + }, + }, nil +} diff --git a/calypso/struct.go b/calypso/struct.go index 415a9c0263..3afb295a22 100644 --- a/calypso/struct.go +++ b/calypso/struct.go @@ -1,15 +1,22 @@ package calypso import ( + "crypto/aes" + "crypto/cipher" + "crypto/rand" "crypto/sha256" "fmt" + "io" + "go.dedis.ch/cothority/v3" "go.dedis.ch/cothority/v3/byzcoin" "go.dedis.ch/cothority/v3/darc" "go.dedis.ch/kyber/v3" "go.dedis.ch/kyber/v3/suites" + "go.dedis.ch/kyber/v3/util/random" "go.dedis.ch/kyber/v3/xof/keccak" "go.dedis.ch/onet/v3/network" + "golang.org/x/xerrors" ) func init() { @@ -68,6 +75,20 @@ func NewWrite(suite suites.Suite, ltsid byzcoin.InstanceID, writeDarc darc.ID, X return wr } +// NewWriteData is like NewWrite, +// but it encrypts the data with a random key and adds the data to the Write +// structure. +func NewWriteData(suite suites.Suite, ltsid byzcoin.InstanceID, + writeDarc darc.ID, X kyber.Point, data []byte) (wr *Write, err error) { + key := random.Bits(192, true, random.New()) + wr = NewWrite(suite, ltsid, writeDarc, X, key) + wr.Data, err = AeadSeal(key, data) + if err != nil { + return nil, xerrors.Errorf("couldn't seal data: %v", err) + } + return +} + // CheckProof verifies that the write-request has actually been created with // somebody having access to the secret key. func (wr *Write) CheckProof(suite suite, writeID darc.ID) error { @@ -97,6 +118,60 @@ func (wr *Write) CheckProof(suite suite, writeID darc.ID) error { "%s\n%s", e.String(), wr.E.String()) } +// Decrypt calls AeadOpen to decrypt the data with the given key. +func (wr *Write) Decrypt(key []byte) ([]byte, error) { + return AeadOpen(key, wr.Data) +} + +// This suggested length is from https://godoc.org/crypto/cipher#NewGCM example +const nonceLen = 12 + +// AeadSeal encrypts the given plaintext with the given key. +// It adds a 12-byte nonce to the ciphertext. +func AeadSeal(symKey, data []byte) ([]byte, error) { + block, err := aes.NewCipher(symKey) + if err != nil { + return nil, + xerrors.Errorf("creating aes cipher block instance: %v", err) + } + + // Never use more than 2^32 random nonces with a given key because of the risk of a repeat. + nonce := make([]byte, nonceLen) + _, err = io.ReadFull(rand.Reader, nonce) + if err != nil { + return nil, xerrors.Errorf("reading nonce: %v", err) + } + + aesgcm, err := cipher.NewGCM(block) + if err != nil { + return nil, xerrors.Errorf("creating aesgcm instance: %v", err) + } + encData := aesgcm.Seal(nil, nonce, data, nil) + encData = append(encData, nonce...) + return encData, nil +} + +// AeadOpen decrypts a given ciphertext with the given key. +func AeadOpen(key, ciphertext []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, + xerrors.Errorf("creating aes cipher block instance: %v", err) + } + + aesgcm, err := cipher.NewGCM(block) + if err != nil { + return nil, xerrors.Errorf("creating aesgcm instance: %v", err) + } + + if len(ciphertext) < 12 { + return nil, xerrors.New("ciphertext too short") + } + nonce := ciphertext[len(ciphertext)-nonceLen:] + out, err := aesgcm.Open(nil, nonce, ciphertext[0:len(ciphertext)-nonceLen], nil) + return out, cothority.ErrorOrNil(err, "decrypting ciphertext") +} + type newLtsConfig struct { byzcoin.Proof } diff --git a/darc/darc.go b/darc/darc.go index 9ed13e286a..1539b9e521 100644 --- a/darc/darc.go +++ b/darc/darc.go @@ -868,6 +868,8 @@ func (id Identity) Type() int { return 3 case id.EvmContract != nil: return 4 + case id.ECDSA != nil: + return 5 } return -1 } diff --git a/darc/darc_test.go b/darc/darc_test.go index 59a91c9f88..69b39205d8 100644 --- a/darc/darc_test.go +++ b/darc/darc_test.go @@ -1,9 +1,12 @@ package darc import ( + "crypto/ecdsa" + "crypto/elliptic" "encoding/hex" "errors" "fmt" + "math/big" "net/url" "strings" "testing" @@ -751,22 +754,25 @@ func TestParseIdentity(t *testing.T) { } // Test any identity -func testIdentity(t *testing.T, sig Signer) { +func testIdentity(t *testing.T, id Identity) { msg := []byte(`Hello World`) - //signed, err := sig.Sign(msg) - //require.NoError(t, err) - - //Public Key: 0ab07149ce744429b7755e6a3d4c277d2f7a2a61ad93cfd18d6aa652e92069db - //Signature: 9626e46f0be4b96c65742e2a81945536fff6a23fad1a40b9cb0b6030cebaac293b6caf7cdc569e689a92db81176f380f6045cc72cd013f9cd4a1cb5bfa077d00 - signed, _ := hex.DecodeString("9626e46f0be4b96c65742e2a81945536fff6a23fad1a40b9cb0b6030cebaac293b6caf7cdc569e689a92db81176f380f6045cc72cd013f9cd4a1cb5bfa077d00") - in := "ed25519:0ab07149ce744429b7755e6a3d4c277d2f7a2a61ad93cfd18d6aa652e92069db" - id, _ := ParseIdentity(in) - //id := sig.Identity() + + //Signature from code example go-tsm-sdk corresponding to ecdsa public key example + signed, _ := hex.DecodeString("304402204f0b20a44efacec7b0514683233a79552026fe80e468078f6fed6cfe3f3e8a0402201eb12db7f6fe0828cafe8b0a032a37ff377b342799cfe77cfbac40c8ec1fa9e8") + require.NoError(t, id.Verify(msg, signed)) require.Error(t, id.Verify([]byte("wrong message"), signed)) } // Test the different identities available - currently only Ed25519. func TestIdentities(t *testing.T) { - testIdentity(t, NewSignerEd25519(nil, nil)) + //Ecdsa public key example + var x, _ = new(big.Int).SetString("25613385885653880697990944418179706546134037329992108968315147853972798913688", 10) + var y, _ = new(big.Int).SetString("74946767262888349555270609195205284686604880870734462312238891495596941025713", 10) + pk := ecdsa.PublicKey{ + Curve: elliptic.P256(), + X: x, + Y: y, + } + testIdentity(t, NewIdentityECDSA(pk)) } From 180d48679d272cb9a3460064e733abed118e2b64 Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Thu, 16 Dec 2021 16:05:38 +0100 Subject: [PATCH 04/16] Added a test with outside signature --- calypso/api_test.go | 125 +++++++++++++++++++++++++++++++++++++++++++ calypso/contracts.go | 46 ++++++++++++++++ calypso/struct.go | 76 +++++++++++++++++++++++++- 3 files changed, 246 insertions(+), 1 deletion(-) diff --git a/calypso/api_test.go b/calypso/api_test.go index a57a56bd67..55ae5475f5 100644 --- a/calypso/api_test.go +++ b/calypso/api_test.go @@ -2,6 +2,7 @@ package calypso import ( "encoding/binary" + "go.dedis.ch/kyber/v3/util/key" "testing" "time" @@ -166,6 +167,7 @@ func TestClient_Calypso(t *testing.T) { _, err = calypsoClient.SpawnDarc(admin, adminCt, gDarc, *darc2, 10) adminCt++ require.NoError(t, err) + //Create a secret key key1 := []byte("secret key 1") //Create a Write instance @@ -217,3 +219,126 @@ func TestClient_Calypso(t *testing.T) { // use keyCopy to unlock the stuff in writeInstance.Data } + +// Tests the Calypso system with a simple write/read scenario. +// But it does the signing outside of the `Read` and `Write` methods for +// integration of the MPC signing by OneKey. +func TestClient_Calypso_Simple(t *testing.T) { + l := onet.NewTCPTest(cothority.Suite) + _, roster, _ := l.GenTree(3, true) + defer l.CloseAll() + + admin := darc.NewSignerEd25519(nil, nil) + adminCt := uint64(1) + user := darc.NewSignerEd25519(nil, nil) + // Initialise the genesis message and send it to the service. + // The admin has the privilege to spawn darcs + msg, err := byzcoin.DefaultGenesisMsg(byzcoin.CurrentVersion, roster, + []string{"spawn:" + ContractLongTermSecretID}, + admin.Identity()) + + msg.BlockInterval = 500 * time.Millisecond + require.NoError(t, err) + // The darc inside it should be valid. + gDarc := msg.GenesisDarc + require.Nil(t, gDarc.Verify(true)) + //Create Ledger + c, _, err := byzcoin.NewLedger(msg, false) + require.NoError(t, err) + //Create a Calypso Client (Byzcoin + Onet) + calypsoClient := NewClient(c) + + //Create the LTS + for _, who := range roster.List { + err := calypsoClient.Authorize(who, c.ID) + require.NoError(t, err) + } + ltsReply, err := calypsoClient.CreateLTS(roster, gDarc.GetBaseID(), []darc.Signer{admin}, []uint64{adminCt}) + adminCt++ + require.NoError(t, err) + //If no error, assign it + calypsoClient.ltsReply = ltsReply + + //Create a signer darc + userDarc := darc.NewDarc(darc.InitRules([]darc.Identity{user.Identity()}, + []darc.Identity{user.Identity()}), []byte("Provider1")) + // user can read and write. + // This can be changed to two different public keys. + err = userDarc.Rules.AddRule(darc.Action("spawn:"+ContractWriteID), + expression.InitOrExpr(user.Identity().String())) + require.NoError(t, err) + err = userDarc.Rules.AddRule(darc.Action("spawn:"+ContractReadID), + expression.InitOrExpr(user.Identity().String())) + require.NoError(t, err) + require.NotNil(t, userDarc) + _, err = calypsoClient.SpawnDarc(admin, adminCt, gDarc, *userDarc, 10) + adminCt++ + require.NoError(t, err) + + data := []byte("Some secret data - or the user's private key") + // Create a Write structure + write1, err := NewWriteData(cothority.Suite, + calypsoClient.ltsReply.InstanceID, + userDarc.GetBaseID(), calypsoClient.ltsReply.X, data) + require.NoError(t, err) + + // Create a write-instance and send it to Byzcoin - here + // the instruction and the transaction is created manually, + // so that an external signer can sign the hash of the instruction. + wrInst, err := ContractWriteSpawnInstruction(write1, userDarc) + require.NoError(t, err) + wrInst.SignerCounter = []uint64{1} + wrInst.SignerIdentities = []darc.Identity{user.Identity()} + wrTx, err := calypsoClient.bcClient.CreateTransaction(*wrInst) + require.NoError(t, err) + digest := wrTx.Instructions.Hash() + + // This signature can be replaced by an external signature. + signature, err := user.Sign(digest) + require.NoError(t, err) + wrTx.Instructions[0].Signatures = [][]byte{signature} + + // Send the transaction to ByzCoin + _, err = calypsoClient.bcClient.AddTransactionAndWait(wrTx, 10) + require.NoError(t, err) + wrID := wrTx.Instructions[0].DeriveID("") + proofWr, err := calypsoClient.WaitProof(wrID, time.Second, nil) + require.NoError(t, err) + + // Create a read-instance and send it to ByzCoin. + ephemeral := key.NewKeyPair(cothority.Suite) + readInst, err := ContractReadSpawnInstruction(wrID, ephemeral.Public) + require.NoError(t, err) + readInst.SignerCounter = []uint64{2} + readInst.SignerIdentities = []darc.Identity{user.Identity()} + readTx, err := calypsoClient.bcClient.CreateTransaction(*readInst) + require.NoError(t, err) + digest = readTx.Instructions.Hash() + + // This signature can be replaced by an external signature + signature, err = user.Sign(digest) + require.NoError(t, err) + readTx.Instructions[0].Signatures = [][]byte{signature} + readID := readTx.Instructions[0].DeriveID("") + + // Send the transaction to ByzCoin + _, err = calypsoClient.bcClient.AddTransactionAndWait(readTx, 10) + require.NoError(t, err) + proofRd, err := calypsoClient.WaitProof(readID, time.Second, + nil) + require.NoError(t, err) + + // Make sure you can actually decrypt + dk, err := calypsoClient.DecryptKey(&DecryptKey{Read: *proofRd, + Write: *proofWr}) + require.NoError(t, err) + require.True(t, dk.X.Equal(calypsoClient.ltsReply.X)) + keyCopy, err := dk.RecoverKey(ephemeral.Private) + require.NoError(t, err) + var wrCopy Write + require.NoError(t, proofWr.VerifyAndDecode(cothority.Suite, ContractWriteID, + &wrCopy)) + dataDecrypt, err := wrCopy.Decrypt(keyCopy) + require.NoError(t, err) + require.Equal(t, data, dataDecrypt) +} diff --git a/calypso/contracts.go b/calypso/contracts.go index ef5ba8df2b..293a18db12 100644 --- a/calypso/contracts.go +++ b/calypso/contracts.go @@ -2,6 +2,7 @@ package calypso import ( "fmt" + "go.dedis.ch/kyber/v3" "strings" "go.dedis.ch/cothority/v3" @@ -278,3 +279,48 @@ func (c ContractWrite) VerifyInstruction(rst byzcoin.ReadOnlyStateTrie, inst byz } return inst.VerifyWithOption(rst, ctxHash, nil) } + +// ContractWriteSpawnInstruction returns the spawn instruction for a Write +// contract. +func ContractWriteSpawnInstruction(wr *Write, + d *darc.Darc) (*byzcoin.Instruction, error) { + writeBuf, err := protobuf.Encode(wr) + if err != nil { + return nil, xerrors.Errorf("couldn't encode write: %v", err) + } + return &byzcoin.Instruction{ + InstanceID: byzcoin.NewInstanceID(d.GetBaseID()), + Spawn: &byzcoin.Spawn{ + ContractID: ContractWriteID, + Args: byzcoin.Arguments{ + { + Name: "write", + Value: writeBuf, + }, + }, + }, + }, nil +} + +// ContractReadSpawnInstruction returns the spawn instruction for a Read +// contract. +func ContractReadSpawnInstruction(wrID byzcoin.InstanceID, + xc kyber.Point) (*byzcoin.Instruction, error) { + var readBuf []byte + read := &Read{ + Write: wrID, + Xc: xc, + } + readBuf, err := protobuf.Encode(read) + if err != nil { + return nil, xerrors.Errorf("encoding Read message: %v", err) + } + + return &byzcoin.Instruction{ + InstanceID: wrID, + Spawn: &byzcoin.Spawn{ + ContractID: ContractReadID, + Args: byzcoin.Arguments{{Name: "read", Value: readBuf}}, + }, + }, nil +} diff --git a/calypso/struct.go b/calypso/struct.go index 415a9c0263..fb87397d08 100644 --- a/calypso/struct.go +++ b/calypso/struct.go @@ -1,15 +1,21 @@ package calypso import ( + "crypto/aes" + "crypto/cipher" + "crypto/rand" "crypto/sha256" "fmt" - + "go.dedis.ch/cothority/v3" "go.dedis.ch/cothority/v3/byzcoin" "go.dedis.ch/cothority/v3/darc" "go.dedis.ch/kyber/v3" "go.dedis.ch/kyber/v3/suites" + "go.dedis.ch/kyber/v3/util/random" "go.dedis.ch/kyber/v3/xof/keccak" "go.dedis.ch/onet/v3/network" + "golang.org/x/xerrors" + "io" ) func init() { @@ -68,6 +74,20 @@ func NewWrite(suite suites.Suite, ltsid byzcoin.InstanceID, writeDarc darc.ID, X return wr } +// NewWriteData is like NewWrite, +// but it encrypts the data with a random key and adds the data to the Write +// structure. +func NewWriteData(suite suites.Suite, ltsid byzcoin.InstanceID, + writeDarc darc.ID, X kyber.Point, data []byte) (wr *Write, err error) { + key := random.Bits(192, true, random.New()) + wr = NewWrite(suite, ltsid, writeDarc, X, key) + wr.Data, err = AeadSeal(key, data) + if err != nil { + return nil, xerrors.Errorf("couldn't seal data: %v", err) + } + return +} + // CheckProof verifies that the write-request has actually been created with // somebody having access to the secret key. func (wr *Write) CheckProof(suite suite, writeID darc.ID) error { @@ -97,6 +117,60 @@ func (wr *Write) CheckProof(suite suite, writeID darc.ID) error { "%s\n%s", e.String(), wr.E.String()) } +// Decrypt calls AeadOpen to decrypt the data with the given key. +func (wr *Write) Decrypt(key []byte) ([]byte, error) { + return AeadOpen(key, wr.Data) +} + +// This suggested length is from https://godoc.org/crypto/cipher#NewGCM example +const nonceLen = 12 + +// AeadSeal encrypts the given plaintext with the given key. +// It adds a 12-byte nonce to the ciphertext. +func AeadSeal(symKey, data []byte) ([]byte, error) { + block, err := aes.NewCipher(symKey) + if err != nil { + return nil, + xerrors.Errorf("creating aes cipher block instance: %v", err) + } + + // Never use more than 2^32 random nonces with a given key because of the risk of a repeat. + nonce := make([]byte, nonceLen) + _, err = io.ReadFull(rand.Reader, nonce) + if err != nil { + return nil, xerrors.Errorf("reading nonce: %v", err) + } + + aesgcm, err := cipher.NewGCM(block) + if err != nil { + return nil, xerrors.Errorf("creating aesgcm instance: %v", err) + } + encData := aesgcm.Seal(nil, nonce, data, nil) + encData = append(encData, nonce...) + return encData, nil +} + +// AeadOpen decrypts a given ciphertext with the given key. +func AeadOpen(key, ciphertext []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, + xerrors.Errorf("creating aes cipher block instance: %v", err) + } + + aesgcm, err := cipher.NewGCM(block) + if err != nil { + return nil, xerrors.Errorf("creating aesgcm instance: %v", err) + } + + if len(ciphertext) < 12 { + return nil, xerrors.New("ciphertext too short") + } + nonce := ciphertext[len(ciphertext)-nonceLen:] + out, err := aesgcm.Open(nil, nonce, ciphertext[0:len(ciphertext)-nonceLen], nil) + return out, cothority.ErrorOrNil(err, "decrypting ciphertext") +} + type newLtsConfig struct { byzcoin.Proof } From 3632b200e90abf857efef61b801c6c2e142b58cb Mon Sep 17 00:00:00 2001 From: pm-duokey Date: Tue, 21 Dec 2021 02:19:15 -0800 Subject: [PATCH 05/16] ECDSA signer --- darc/darc.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/darc/darc.go b/darc/darc.go index 1539b9e521..8f5e09dc61 100644 --- a/darc/darc.go +++ b/darc/darc.go @@ -1500,8 +1500,14 @@ func (kcs SignerX509EC) Sign(msg []byte) ([]byte, error) { return nil, errors.New("not yet implemented") } -func NewSignerECDSA() Signer { - return Signer{} +// new signer creates a signer only with a public key used to verify signatures +func NewSignerECDSA(public ecdsa.PublicKey) Signer { + if public.X == nil { + return Signer{} + } + return Signer{ECDSA: &SignerECDSA{ + PublicKey: public, + }} } //TODO From ec6cdb2c85d7d333a22f670e567e52bf350711da Mon Sep 17 00:00:00 2001 From: pm-duokey Date: Wed, 22 Dec 2021 00:45:56 -0800 Subject: [PATCH 06/16] removing superflue import --- calypso/api_test.go | 16 +++++++++++++++- calypso/contracts.go | 1 - 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/calypso/api_test.go b/calypso/api_test.go index 119cbb1f18..81c749ace8 100644 --- a/calypso/api_test.go +++ b/calypso/api_test.go @@ -1,7 +1,10 @@ package calypso import ( + "crypto/ecdsa" + "crypto/elliptic" "encoding/binary" + "math/big" "testing" "time" @@ -227,9 +230,18 @@ func TestClient_Calypso_Simple(t *testing.T) { _, roster, _ := l.GenTree(3, true) defer l.CloseAll() + //create an example public key + var x, _ = new(big.Int).SetString("25613385885653880697990944418179706546134037329992108968315147853972798913688", 10) + var y, _ = new(big.Int).SetString("74946767262888349555270609195205284686604880870734462312238891495596941025713", 10) + pk := ecdsa.PublicKey{ + Curve: elliptic.P256(), + X: x, + Y: y, + } + admin := darc.NewSignerEd25519(nil, nil) adminCt := uint64(1) - user := darc.NewSignerEd25519(nil, nil) + user := darc.NewSignerECDSA(pk) // Initialise the genesis message and send it to the service. // The admin has the privilege to spawn darcs msg, err := byzcoin.DefaultGenesisMsg(byzcoin.CurrentVersion, roster, @@ -293,6 +305,7 @@ func TestClient_Calypso_Simple(t *testing.T) { digest := wrTx.Instructions.Hash() // This signature can be replaced by an external signature. + //TODO add sepior signature of digest here signature, err := user.Sign(digest) require.NoError(t, err) wrTx.Instructions[0].Signatures = [][]byte{signature} @@ -315,6 +328,7 @@ func TestClient_Calypso_Simple(t *testing.T) { digest = readTx.Instructions.Hash() // This signature can be replaced by an external signature + // TODO add signature on digest from MPC nodes signature, err = user.Sign(digest) require.NoError(t, err) readTx.Instructions[0].Signatures = [][]byte{signature} diff --git a/calypso/contracts.go b/calypso/contracts.go index bec3f3ebcf..15af2a21b6 100644 --- a/calypso/contracts.go +++ b/calypso/contracts.go @@ -2,7 +2,6 @@ package calypso import ( "fmt" - "go.dedis.ch/kyber/v3" "strings" "go.dedis.ch/cothority/v3" From b63fc6fd1a75c15fae5a24cc2bcc2c5bcd7c82c0 Mon Sep 17 00:00:00 2001 From: pm-duokey Date: Wed, 22 Dec 2021 06:59:35 -0800 Subject: [PATCH 07/16] ecdsa calypso/api_test.go error --- calypso/api_test.go | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/calypso/api_test.go b/calypso/api_test.go index 81c749ace8..a63631e806 100644 --- a/calypso/api_test.go +++ b/calypso/api_test.go @@ -3,8 +3,8 @@ package calypso import ( "crypto/ecdsa" "crypto/elliptic" + "crypto/rand" "encoding/binary" - "math/big" "testing" "time" @@ -231,17 +231,13 @@ func TestClient_Calypso_Simple(t *testing.T) { defer l.CloseAll() //create an example public key - var x, _ = new(big.Int).SetString("25613385885653880697990944418179706546134037329992108968315147853972798913688", 10) - var y, _ = new(big.Int).SetString("74946767262888349555270609195205284686604880870734462312238891495596941025713", 10) - pk := ecdsa.PublicKey{ - Curve: elliptic.P256(), - X: x, - Y: y, - } + random := rand.Reader + p, err := ecdsa.GenerateKey(elliptic.P256(), random) + require.NoError(t, err) admin := darc.NewSignerEd25519(nil, nil) adminCt := uint64(1) - user := darc.NewSignerECDSA(pk) + user := darc.NewSignerECDSA(p.PublicKey) // Initialise the genesis message and send it to the service. // The admin has the privilege to spawn darcs msg, err := byzcoin.DefaultGenesisMsg(byzcoin.CurrentVersion, roster, @@ -268,7 +264,7 @@ func TestClient_Calypso_Simple(t *testing.T) { adminCt++ require.NoError(t, err) //If no error, assign it - calypsoClient.ltsReply = ltsReply + //calypsoClient.ltsReply = ltsReply //Create a signer darc userDarc := darc.NewDarc(darc.InitRules([]darc.Identity{user.Identity()}, @@ -289,8 +285,8 @@ func TestClient_Calypso_Simple(t *testing.T) { data := []byte("Some secret data - or the user's private key") // Create a Write structure write1, err := NewWriteData(cothority.Suite, - calypsoClient.ltsReply.InstanceID, - userDarc.GetBaseID(), calypsoClient.ltsReply.X, data) + ltsReply.InstanceID, + userDarc.GetBaseID(), ltsReply.X, data) require.NoError(t, err) // Create a write-instance and send it to Byzcoin - here @@ -306,7 +302,7 @@ func TestClient_Calypso_Simple(t *testing.T) { // This signature can be replaced by an external signature. //TODO add sepior signature of digest here - signature, err := user.Sign(digest) + signature, err := ecdsa.SignASN1(random, p, digest) require.NoError(t, err) wrTx.Instructions[0].Signatures = [][]byte{signature} @@ -329,7 +325,7 @@ func TestClient_Calypso_Simple(t *testing.T) { // This signature can be replaced by an external signature // TODO add signature on digest from MPC nodes - signature, err = user.Sign(digest) + signature, err = ecdsa.SignASN1(random, p, digest) require.NoError(t, err) readTx.Instructions[0].Signatures = [][]byte{signature} readID := readTx.Instructions[0].DeriveID("") @@ -345,7 +341,7 @@ func TestClient_Calypso_Simple(t *testing.T) { dk, err := calypsoClient.DecryptKey(&DecryptKey{Read: *proofRd, Write: *proofWr}) require.NoError(t, err) - require.True(t, dk.X.Equal(calypsoClient.ltsReply.X)) + require.True(t, dk.X.Equal(ltsReply.X)) keyCopy, err := dk.RecoverKey(ephemeral.Private) require.NoError(t, err) var wrCopy Write From 2d788960e93e2bd4a01d7a8e192c1394fbe2db2e Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Thu, 23 Dec 2021 11:01:38 +0100 Subject: [PATCH 08/16] Add marshalling and a test --- calypso/api_test.go | 6 +-- calypso/protocol/ocs_test.go | 2 +- darc/darc.go | 93 ++++++++++++++++++++++-------------- darc/darc_test.go | 25 ++++++++-- darc/proto.go | 14 +++--- 5 files changed, 89 insertions(+), 51 deletions(-) diff --git a/calypso/api_test.go b/calypso/api_test.go index a63631e806..3a32e76b4c 100644 --- a/calypso/api_test.go +++ b/calypso/api_test.go @@ -207,9 +207,9 @@ func TestClient_Calypso(t *testing.T) { // Make sure you can't decrypt with non-matching proofs _, err = calypsoClient.DecryptKey(&DecryptKey{Read: *prRe1, Write: *prWr2}) - require.NotNil(t, err) + require.Error(t, err) _, err = calypsoClient.DecryptKey(&DecryptKey{Read: *prRe2, Write: *prWr1}) - require.NotNil(t, err) + require.Error(t, err) // Make sure you can actually decrypt dk1, err := calypsoClient.DecryptKey(&DecryptKey{Read: *prRe1, Write: *prWr1}) @@ -237,7 +237,7 @@ func TestClient_Calypso_Simple(t *testing.T) { admin := darc.NewSignerEd25519(nil, nil) adminCt := uint64(1) - user := darc.NewSignerECDSA(p.PublicKey) + user := darc.NewSignerTSM(p.PublicKey) // Initialise the genesis message and send it to the service. // The admin has the privilege to spawn darcs msg, err := byzcoin.DefaultGenesisMsg(byzcoin.CurrentVersion, roster, diff --git a/calypso/protocol/ocs_test.go b/calypso/protocol/ocs_test.go index 24a83063fe..aab85e8803 100644 --- a/calypso/protocol/ocs_test.go +++ b/calypso/protocol/ocs_test.go @@ -252,7 +252,7 @@ func DecodeKey(suite kyber.Group, X kyber.Point, Cs []kyber.Point, XhatEnc kyber } key = append(key, keyPart...) } - return + return } // starts a new service. No function needed. diff --git a/darc/darc.go b/darc/darc.go index 8f5e09dc61..9caa51e91b 100644 --- a/darc/darc.go +++ b/darc/darc.go @@ -774,8 +774,10 @@ func (s Signer) Type() int { return 3 case s.EvmContract != nil: return 4 - case s.ECDSA != nil: + case s.DID != nil: return 5 + case s.TSM != nil: + return 6 default: return -1 } @@ -793,8 +795,8 @@ func (s Signer) Identity() Identity { return NewIdentityProxy(s.Proxy) case 4: return NewIdentityEvmContract(s.EvmContract) - case 5: - return NewIdentityECDSA(s.ECDSA.PublicKey) + case 6: + return NewIdentityTSM(s.TSM.PublicKey) default: return Identity{} } @@ -826,7 +828,7 @@ func (s Signer) GetPrivate() (kyber.Scalar, error) { switch s.Type() { case 1: return s.Ed25519.Secret, nil - case 0, 2, 3: + case 0, 2, 3, 4, 5, 6: return nil, errors.New("signer lacks a private key") default: return nil, errors.New("signer is of unknown type") @@ -850,6 +852,8 @@ func (id Identity) Equal(id2 *Identity) bool { return id.Proxy.Equal(id2.Proxy) case 4: return id.EvmContract.Equal(id2.EvmContract) + case 6: + return id.TSM.PublicKey.Equal(&id2.TSM.PublicKey) } return false } @@ -868,8 +872,10 @@ func (id Identity) Type() int { return 3 case id.EvmContract != nil: return 4 - case id.ECDSA != nil: + case id.DID != nil: return 5 + case id.TSM != nil: + return 6 } return -1 } @@ -877,19 +883,7 @@ func (id Identity) Type() int { // PrimaryIdentity returns true if the identity is a primary identity, which is // an identity that is associated with a concrete public/private key. func (id Identity) PrimaryIdentity() bool { - switch { - case id.Darc != nil: - return false - case id.Ed25519 != nil: - return true - case id.X509EC != nil: - return true - case id.Proxy != nil: - return true - case id.EvmContract != nil: - return true - } - return false + return id.Type() != 0 } // TypeString returns the string of the type of the identity. @@ -905,6 +899,10 @@ func (id Identity) TypeString() string { return "proxy" case 4: return "evm_contract" + case 5: + return "did" + case 6: + return "tsm" default: return "No identity" } @@ -925,6 +923,14 @@ func (id Identity) String() string { bevmString := hex.EncodeToString(id.EvmContract.BEvmID) addrString := id.EvmContract.Address.Hex() return fmt.Sprintf("%s:%s:%s", id.TypeString(), bevmString, addrString) + case 5: + return fmt.Sprintf("%s:%s", id.TypeString(), id.DID.DID) + case 6: + buf, err := id.TSM.MarshalBinary() + if err != nil { + panic("couldn't marshal TSM key: " + err.Error()) + } + return fmt.Sprintf("%s:%x", id.TypeString(), buf) default: return "No identity" } @@ -945,7 +951,7 @@ func (id Identity) Verify(msg, sig []byte) error { case 4: return id.EvmContract.Verify(msg, sig) case 5: - return id.ECDSA.Verify(msg, sig) + return id.TSM.Verify(msg, sig) default: return errors.New("unknown identity") } @@ -974,7 +980,7 @@ func (id Identity) GetPublicBytes() []byte { case 4: return id.EvmContract.Address[:] case 5: - buf := elliptic.Marshal(id.ECDSA.PublicKey.Curve, id.ECDSA.PublicKey.X, id.ECDSA.PublicKey.Y) + buf := elliptic.Marshal(id.TSM.PublicKey.Curve, id.TSM.PublicKey.X, id.TSM.PublicKey.Y) //TODO: add error check here? return buf default: @@ -1025,17 +1031,17 @@ func NewIdentityX509EC(public []byte) Identity { } } -// NewIdentityECDSA creates a new ECDSA identity struct given a public key -func NewIdentityECDSA(publicKey ecdsa.PublicKey) Identity { +// NewIdentityTSM creates a new TSM identity struct given a public key +func NewIdentityTSM(publicKey ecdsa.PublicKey) Identity { return Identity{ - ECDSA: &IdentityECDSA{ + TSM: &IdentityTSM{ PublicKey: publicKey, }, } } -//TODO make calls to tsm available -func (ide IdentityECDSA) Verify(msg []byte, sig []byte) error { +// Verify the signature of the identity. +func (ide IdentityTSM) Verify(msg []byte, sig []byte) error { hashMsg := sha256.Sum256(msg) valid := ecdsa.VerifyASN1(&ide.PublicKey, hashMsg[:], sig) if !valid { @@ -1044,6 +1050,21 @@ func (ide IdentityECDSA) Verify(msg []byte, sig []byte) error { return nil } +// MarshalBinary returns the compressed public key +func (ide IdentityTSM) MarshalBinary() ([]byte, error) { + return elliptic.MarshalCompressed(ide.PublicKey.Curve, ide.PublicKey.X, + ide.PublicKey.Y), nil +} + +// UnmarshalBinary copies the x and y coordinates from the compressed data +func (ide *IdentityTSM) UnmarshalBinary(data []byte) error { + x, y := elliptic.UnmarshalCompressed(elliptic.P256(), data) + ide.PublicKey.X = x + ide.PublicKey.Y = y + ide.PublicKey.Curve = elliptic.P256() + return nil +} + // NewIdentityProxy creates a new OpenID Connect identity struct. func NewIdentityProxy(s *SignerProxy) Identity { return Identity{ @@ -1152,8 +1173,8 @@ func ParseIdentity(in string) (Identity, error) { return parseIDProxy(fields[1]) case "evm_contract": return parseIDEvmContract(fields[1]) - case "secp256k1": - return parseIDECDSA(fields[1]) + case "tsm": + return parseIDTSM(fields[1]) default: return Identity{}, fmt.Errorf("unknown identity type %v", fields[0]) } @@ -1178,7 +1199,7 @@ func parseIDX509ec(in string) (Identity, error) { //necessary function, needs to be refactored only supports elliptic.P256 curve //needs to be tested Unmarshal might not work -func parseIDECDSA(in string) (Identity, error) { +func parseIDTSM(in string) (Identity, error) { id := make([]byte, hex.DecodedLen(len(in))) _, err := hex.Decode(id, []byte(in)) @@ -1192,7 +1213,7 @@ func parseIDECDSA(in string) (Identity, error) { if err != nil { return Identity{}, err } - return Identity{ECDSA: &IdentityECDSA{PublicKey: pubkey}}, nil + return Identity{TSM: &IdentityTSM{PublicKey: pubkey}}, nil } func parseIDDarc(in string) (Identity, error) { @@ -1500,19 +1521,21 @@ func (kcs SignerX509EC) Sign(msg []byte) ([]byte, error) { return nil, errors.New("not yet implemented") } -// new signer creates a signer only with a public key used to verify signatures -func NewSignerECDSA(public ecdsa.PublicKey) Signer { +// NewSignerTSM creates a signer only with a public key used to verify +// signatures +func NewSignerTSM(public ecdsa.PublicKey) Signer { if public.X == nil { return Signer{} } - return Signer{ECDSA: &SignerECDSA{ + return Signer{TSM: &SignerTSM{ PublicKey: public, }} } -//TODO -func (kcs SignerECDSA) Sign(msg []byte) ([]byte, error) { - //call tsm to sign +// Sign the message with the private key. +// As this is using the TSM, and we don't want cothority/darc to depend on +// TSM, we cannot sign here. +func (kcs SignerTSM) Sign(msg []byte) ([]byte, error) { return nil, errors.New("not yet implemented") } diff --git a/darc/darc_test.go b/darc/darc_test.go index 69b39205d8..0ef23e0632 100644 --- a/darc/darc_test.go +++ b/darc/darc_test.go @@ -757,16 +757,15 @@ func TestParseIdentity(t *testing.T) { func testIdentity(t *testing.T, id Identity) { msg := []byte(`Hello World`) - //Signature from code example go-tsm-sdk corresponding to ecdsa public key example + // Signature from code example go-tsm-sdk corresponding to tsm public + // key example signed, _ := hex.DecodeString("304402204f0b20a44efacec7b0514683233a79552026fe80e468078f6fed6cfe3f3e8a0402201eb12db7f6fe0828cafe8b0a032a37ff377b342799cfe77cfbac40c8ec1fa9e8") require.NoError(t, id.Verify(msg, signed)) require.Error(t, id.Verify([]byte("wrong message"), signed)) } -// Test the different identities available - currently only Ed25519. -func TestIdentities(t *testing.T) { - //Ecdsa public key example +func getTSMId() Identity { var x, _ = new(big.Int).SetString("25613385885653880697990944418179706546134037329992108968315147853972798913688", 10) var y, _ = new(big.Int).SetString("74946767262888349555270609195205284686604880870734462312238891495596941025713", 10) pk := ecdsa.PublicKey{ @@ -774,5 +773,21 @@ func TestIdentities(t *testing.T) { X: x, Y: y, } - testIdentity(t, NewIdentityECDSA(pk)) + return NewIdentityTSM(pk) +} + +// Test the different identities available - currently only Ed25519. +func TestIdentities(t *testing.T) { + // tsm public key example + testIdentity(t, getTSMId()) +} + +// Make sure Marshalling and Unmarshalling work +func TestTSM(t *testing.T) { + id := getTSMId() + buf, err := id.TSM.MarshalBinary() + require.NoError(t, err) + var id2 IdentityTSM + require.NoError(t, id2.UnmarshalBinary(buf)) + require.True(t, id.Equal(&Identity{TSM: &id2})) } diff --git a/darc/proto.go b/darc/proto.go index 46fbb02ada..aac0370985 100644 --- a/darc/proto.go +++ b/darc/proto.go @@ -73,8 +73,8 @@ type Identity struct { EvmContract *IdentityEvmContract // A claim signed by one of the keys in a DID Doc DID *IdentityDID - // Publik-key identity from an ECDSA key - ECDSA *IdentityECDSA + // Public-key identity from an ECDSA key + TSM *IdentityTSM } // IdentityEd25519 holds a Ed25519 public key (Point) @@ -82,8 +82,8 @@ type IdentityEd25519 struct { Point kyber.Point } -// IdentityECDSA holds a secp256k1 key (array of bytes) -type IdentityECDSA struct { +// IdentityTSM holds a secp256k1 key (array of bytes) +type IdentityTSM struct { PublicKey ecdsa.PublicKey } @@ -168,7 +168,7 @@ type Signer struct { Proxy *SignerProxy EvmContract *SignerEvmContract DID *SignerDID - ECDSA *SignerECDSA + TSM *SignerTSM } // SignerEd25519 holds a public and private keys necessary to sign Darcs @@ -184,9 +184,9 @@ type SignerX509EC struct { secret []byte } -// SignerECDSA holds a public and private keys necessary to sign Darcs, +// SignerTSM holds a public and private keys necessary to sign Darcs, // but the private key will not be given out. -type SignerECDSA struct { +type SignerTSM struct { PublicKey ecdsa.PublicKey PrivateKey ecdsa.PrivateKey } From fdfc3eb140ed404765f3015adb79d14547c5a4ae Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Thu, 23 Dec 2021 11:29:41 +0100 Subject: [PATCH 09/16] added tsm to darcs, too, but signature is failing --- byzcoin/transaction.go | 5 +++++ calypso/api_test.go | 7 ++++++- darc/darc.go | 2 ++ darc/expression/expression.go | 4 ++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/byzcoin/transaction.go b/byzcoin/transaction.go index a0c28e1d7e..1b5f9987e2 100644 --- a/byzcoin/transaction.go +++ b/byzcoin/transaction.go @@ -451,9 +451,14 @@ func (instr Instruction) VerifyWithOption(st ReadOnlyStateTrie, msg []byte, ops // check the signature // Save the identities that provide good signatures identitiesWithCorrectSignatures := make([]string, 0) + log.Print("SignerIdentities:", instr.SignerIdentities) for i := range instr.Signatures { if err := instr.SignerIdentities[i].Verify(msg, instr.Signatures[i]); err == nil { + log.Printf("OK when checking %s with %x", msg, instr.Signatures[i]) identitiesWithCorrectSignatures = append(identitiesWithCorrectSignatures, instr.SignerIdentities[i].String()) + } else { + log.Printf("Failed when checking %s with %x", msg, + instr.Signatures[i]) } } diff --git a/calypso/api_test.go b/calypso/api_test.go index 3a32e76b4c..f67ee0beb3 100644 --- a/calypso/api_test.go +++ b/calypso/api_test.go @@ -5,6 +5,7 @@ import ( "crypto/elliptic" "crypto/rand" "encoding/binary" + "go.dedis.ch/onet/v3/log" "testing" "time" @@ -233,11 +234,12 @@ func TestClient_Calypso_Simple(t *testing.T) { //create an example public key random := rand.Reader p, err := ecdsa.GenerateKey(elliptic.P256(), random) - require.NoError(t, err) + //require.NoError(t, err) admin := darc.NewSignerEd25519(nil, nil) adminCt := uint64(1) user := darc.NewSignerTSM(p.PublicKey) + //user := darc.NewSignerEd25519(nil, nil) // Initialise the genesis message and send it to the service. // The admin has the privilege to spawn darcs msg, err := byzcoin.DefaultGenesisMsg(byzcoin.CurrentVersion, roster, @@ -303,8 +305,10 @@ func TestClient_Calypso_Simple(t *testing.T) { // This signature can be replaced by an external signature. //TODO add sepior signature of digest here signature, err := ecdsa.SignASN1(random, p, digest) + //signature, err := user.Sign(digest) require.NoError(t, err) wrTx.Instructions[0].Signatures = [][]byte{signature} + log.Printf("wrTx is: %+v", wrTx) // Send the transaction to ByzCoin _, err = calypsoClient.bcClient.AddTransactionAndWait(wrTx, 10) @@ -326,6 +330,7 @@ func TestClient_Calypso_Simple(t *testing.T) { // This signature can be replaced by an external signature // TODO add signature on digest from MPC nodes signature, err = ecdsa.SignASN1(random, p, digest) + //signature, err = user.Sign(digest) require.NoError(t, err) readTx.Instructions[0].Signatures = [][]byte{signature} readID := readTx.Instructions[0].DeriveID("") diff --git a/darc/darc.go b/darc/darc.go index 9caa51e91b..9b41441b69 100644 --- a/darc/darc.go +++ b/darc/darc.go @@ -42,6 +42,7 @@ import ( "encoding/hex" "errors" "fmt" + "go.dedis.ch/onet/v3/log" "math/big" "regexp" "strconv" @@ -1158,6 +1159,7 @@ func (id IdentityEvmContract) Verify(msg, s []byte) error { // ParseIdentity returns an Identity structure that matches // the given string. func ParseIdentity(in string) (Identity, error) { + log.Print("Parsing", in) fields := strings.SplitN(in, ":", 2) if len(fields) != 2 { return Identity{}, errors.New("missing identity type") diff --git a/darc/expression/expression.go b/darc/expression/expression.go index 7dd5bff7da..cb99140b04 100644 --- a/darc/expression/expression.go +++ b/darc/expression/expression.go @@ -6,7 +6,7 @@ the syntax we use is from: https://en.wikipedia.org/wiki/Extended_Backus%E2%80%9 expr = term, [ '&', term ]* term = factor, [ '|', factor ]* factor = '(', expr, ')' | id | openid - identity = (darc|ed25519|x509ec):[0-9a-fA-F]+ + identity = (darc|ed25519|x509ec|tsm):[0-9a-fA-F]+ proxy = proxy:[0-9a-fA-F]+:[^ \n\t]* evm_identity = evm_contract:[0-9a-fA-F]+:0x[0-9a-fA-F]+ attr = attr:[0-9a-zA-Z\-\_]+:[^ \n\t]* @@ -154,7 +154,7 @@ func (e Expr) AddAndElement(id string) Expr { func identity() parsec.Parser { return func(s parsec.Scanner) (parsec.ParsecNode, parsec.Scanner) { _, s = s.SkipAny(`^[ \n\t]+`) - p := parsec.Token(`(darc|ed25519|x509ec):[0-9a-fA-F]+`, "HEX") + p := parsec.Token(`(darc|ed25519|x509ec|tsm):[0-9a-fA-F]+`, "HEX") return p(s) } } From b67548c3e30e5d70c9338cf927743ae4dc0df28f Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Thu, 23 Dec 2021 12:19:27 +0100 Subject: [PATCH 10/16] Adding a TSM signer --- byzcoin/transaction.go | 5 ----- calypso/api_test.go | 17 +++-------------- darc/darc.go | 34 ++++++++++++++++++++-------------- darc/darc_test.go | 42 ++++++++++++++++++++++++++---------------- darc/proto.go | 1 - 5 files changed, 49 insertions(+), 50 deletions(-) diff --git a/byzcoin/transaction.go b/byzcoin/transaction.go index 1b5f9987e2..a0c28e1d7e 100644 --- a/byzcoin/transaction.go +++ b/byzcoin/transaction.go @@ -451,14 +451,9 @@ func (instr Instruction) VerifyWithOption(st ReadOnlyStateTrie, msg []byte, ops // check the signature // Save the identities that provide good signatures identitiesWithCorrectSignatures := make([]string, 0) - log.Print("SignerIdentities:", instr.SignerIdentities) for i := range instr.Signatures { if err := instr.SignerIdentities[i].Verify(msg, instr.Signatures[i]); err == nil { - log.Printf("OK when checking %s with %x", msg, instr.Signatures[i]) identitiesWithCorrectSignatures = append(identitiesWithCorrectSignatures, instr.SignerIdentities[i].String()) - } else { - log.Printf("Failed when checking %s with %x", msg, - instr.Signatures[i]) } } diff --git a/calypso/api_test.go b/calypso/api_test.go index f67ee0beb3..fde7d900c0 100644 --- a/calypso/api_test.go +++ b/calypso/api_test.go @@ -2,10 +2,7 @@ package calypso import ( "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" "encoding/binary" - "go.dedis.ch/onet/v3/log" "testing" "time" @@ -231,14 +228,9 @@ func TestClient_Calypso_Simple(t *testing.T) { _, roster, _ := l.GenTree(3, true) defer l.CloseAll() - //create an example public key - random := rand.Reader - p, err := ecdsa.GenerateKey(elliptic.P256(), random) - //require.NoError(t, err) - admin := darc.NewSignerEd25519(nil, nil) adminCt := uint64(1) - user := darc.NewSignerTSM(p.PublicKey) + user := darc.NewSignerTSM(ecdsa.PrivateKey{}) //user := darc.NewSignerEd25519(nil, nil) // Initialise the genesis message and send it to the service. // The admin has the privilege to spawn darcs @@ -304,11 +296,9 @@ func TestClient_Calypso_Simple(t *testing.T) { // This signature can be replaced by an external signature. //TODO add sepior signature of digest here - signature, err := ecdsa.SignASN1(random, p, digest) - //signature, err := user.Sign(digest) + signature, err := user.Sign(digest) require.NoError(t, err) wrTx.Instructions[0].Signatures = [][]byte{signature} - log.Printf("wrTx is: %+v", wrTx) // Send the transaction to ByzCoin _, err = calypsoClient.bcClient.AddTransactionAndWait(wrTx, 10) @@ -329,8 +319,7 @@ func TestClient_Calypso_Simple(t *testing.T) { // This signature can be replaced by an external signature // TODO add signature on digest from MPC nodes - signature, err = ecdsa.SignASN1(random, p, digest) - //signature, err = user.Sign(digest) + signature, err = user.Sign(digest) require.NoError(t, err) readTx.Instructions[0].Signatures = [][]byte{signature} readID := readTx.Instructions[0].DeriveID("") diff --git a/darc/darc.go b/darc/darc.go index 9b41441b69..fc47f1e9ba 100644 --- a/darc/darc.go +++ b/darc/darc.go @@ -34,6 +34,7 @@ import ( "bytes" "crypto/ecdsa" "crypto/elliptic" + "crypto/rand" "crypto/sha256" "crypto/sha512" "crypto/x509" @@ -797,7 +798,7 @@ func (s Signer) Identity() Identity { case 4: return NewIdentityEvmContract(s.EvmContract) case 6: - return NewIdentityTSM(s.TSM.PublicKey) + return NewIdentityTSM(s.TSM.PrivateKey.PublicKey) default: return Identity{} } @@ -819,6 +820,8 @@ func (s Signer) Sign(msg []byte) ([]byte, error) { return s.Proxy.Sign(msg) case 4: return s.EvmContract.Sign(msg) + case 6: + return s.TSM.Sign(msg) default: return nil, errors.New("unknown signer type") } @@ -951,7 +954,7 @@ func (id Identity) Verify(msg, sig []byte) error { return id.Proxy.Verify(msg, sig) case 4: return id.EvmContract.Verify(msg, sig) - case 5: + case 6: return id.TSM.Verify(msg, sig) default: return errors.New("unknown identity") @@ -980,7 +983,7 @@ func (id Identity) GetPublicBytes() []byte { return buf case 4: return id.EvmContract.Address[:] - case 5: + case 6: buf := elliptic.Marshal(id.TSM.PublicKey.Curve, id.TSM.PublicKey.X, id.TSM.PublicKey.Y) //TODO: add error check here? return buf @@ -1043,8 +1046,7 @@ func NewIdentityTSM(publicKey ecdsa.PublicKey) Identity { // Verify the signature of the identity. func (ide IdentityTSM) Verify(msg []byte, sig []byte) error { - hashMsg := sha256.Sum256(msg) - valid := ecdsa.VerifyASN1(&ide.PublicKey, hashMsg[:], sig) + valid := ecdsa.VerifyASN1(&ide.PublicKey, msg, sig) if !valid { return errors.New("Signature failed to verify") } @@ -1523,22 +1525,26 @@ func (kcs SignerX509EC) Sign(msg []byte) ([]byte, error) { return nil, errors.New("not yet implemented") } -// NewSignerTSM creates a signer only with a public key used to verify -// signatures -func NewSignerTSM(public ecdsa.PublicKey) Signer { - if public.X == nil { - return Signer{} +// NewSignerTSM creates a tsm signer with a SECP256K1 key. +// If a nil key is given, then a random key is generated. +func NewSignerTSM(private ecdsa.PrivateKey) Signer { + if private.D == nil { + priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + panic("couldn't generate key: " + err.Error()) + } + private = *priv } return Signer{TSM: &SignerTSM{ - PublicKey: public, + PrivateKey: private, }} } // Sign the message with the private key. -// As this is using the TSM, and we don't want cothority/darc to depend on -// TSM, we cannot sign here. +// This is not really possible with the TSM signer, +// so this is mostly useful for testing. func (kcs SignerTSM) Sign(msg []byte) ([]byte, error) { - return nil, errors.New("not yet implemented") + return ecdsa.SignASN1(rand.Reader, &kcs.PrivateKey, msg) } // NewSignerProxy creates a new SignerProxy. When Sign is called, the getSignature diff --git a/darc/darc_test.go b/darc/darc_test.go index 0ef23e0632..c907ab9450 100644 --- a/darc/darc_test.go +++ b/darc/darc_test.go @@ -3,6 +3,7 @@ package darc import ( "crypto/ecdsa" "crypto/elliptic" + "crypto/sha256" "encoding/hex" "errors" "fmt" @@ -754,18 +755,23 @@ func TestParseIdentity(t *testing.T) { } // Test any identity -func testIdentity(t *testing.T, id Identity) { - msg := []byte(`Hello World`) - - // Signature from code example go-tsm-sdk corresponding to tsm public - // key example - signed, _ := hex.DecodeString("304402204f0b20a44efacec7b0514683233a79552026fe80e468078f6fed6cfe3f3e8a0402201eb12db7f6fe0828cafe8b0a032a37ff377b342799cfe77cfbac40c8ec1fa9e8") - +func testIdentity(t *testing.T, sig Signer) { + msg := []byte("something secret") + signed, err := sig.Sign(msg) + require.NoError(t, err) + id := sig.Identity() require.NoError(t, id.Verify(msg, signed)) require.Error(t, id.Verify([]byte("wrong message"), signed)) } -func getTSMId() Identity { +// Test the different identities available - currently only Ed25519. +func TestIdentities(t *testing.T) { + testIdentity(t, NewSignerEd25519(nil, nil)) + testIdentity(t, NewSignerTSM(ecdsa.PrivateKey{})) +} + +// Test a signature from the TSM +func TestTSMSignature(t *testing.T) { var x, _ = new(big.Int).SetString("25613385885653880697990944418179706546134037329992108968315147853972798913688", 10) var y, _ = new(big.Int).SetString("74946767262888349555270609195205284686604880870734462312238891495596941025713", 10) pk := ecdsa.PublicKey{ @@ -773,18 +779,22 @@ func getTSMId() Identity { X: x, Y: y, } - return NewIdentityTSM(pk) -} + id := NewIdentityTSM(pk) -// Test the different identities available - currently only Ed25519. -func TestIdentities(t *testing.T) { - // tsm public key example - testIdentity(t, getTSMId()) + msg := []byte(`Hello World`) + digest := sha256.Sum256(msg) + + // Signature from code example go-tsm-sdk corresponding to tsm public + // key example + signed, _ := hex.DecodeString("304402204f0b20a44efacec7b0514683233a79552026fe80e468078f6fed6cfe3f3e8a0402201eb12db7f6fe0828cafe8b0a032a37ff377b342799cfe77cfbac40c8ec1fa9e8") + + require.NoError(t, id.Verify(digest[:], signed)) + require.Error(t, id.Verify([]byte("wrong message"), signed)) } // Make sure Marshalling and Unmarshalling work -func TestTSM(t *testing.T) { - id := getTSMId() +func TestTSMMarshalling(t *testing.T) { + id := NewSignerTSM(ecdsa.PrivateKey{}).Identity() buf, err := id.TSM.MarshalBinary() require.NoError(t, err) var id2 IdentityTSM diff --git a/darc/proto.go b/darc/proto.go index aac0370985..97da248062 100644 --- a/darc/proto.go +++ b/darc/proto.go @@ -187,7 +187,6 @@ type SignerX509EC struct { // SignerTSM holds a public and private keys necessary to sign Darcs, // but the private key will not be given out. type SignerTSM struct { - PublicKey ecdsa.PublicKey PrivateKey ecdsa.PrivateKey } From e5960051f27d44f5db05a73f093f9e447092b76a Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Fri, 11 Feb 2022 08:02:17 +0100 Subject: [PATCH 11/16] Add IdentityTsm to index --- external/js/cothority/package-lock.json | 2 +- .../js/cothority/src/darc/identity-tsm.ts | 37 +++++++++++++++++++ .../js/cothority/src/darc/identity-wrapper.ts | 13 +++++++ external/js/cothority/src/darc/index.ts | 2 + .../js/cothority/src/protobuf/models.json | 2 +- external/js/cothority/tsconfig.json | 12 +++++- external/proto/darc.proto | 14 +++++++ 7 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 external/js/cothority/src/darc/identity-tsm.ts diff --git a/external/js/cothority/package-lock.json b/external/js/cothority/package-lock.json index 1bd8cadde2..3be099b643 100644 --- a/external/js/cothority/package-lock.json +++ b/external/js/cothority/package-lock.json @@ -1,6 +1,6 @@ { "name": "@dedis/cothority", - "version": "3.6.4", + "version": "3.6.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/external/js/cothority/src/darc/identity-tsm.ts b/external/js/cothority/src/darc/identity-tsm.ts new file mode 100644 index 0000000000..eff21aae33 --- /dev/null +++ b/external/js/cothority/src/darc/identity-tsm.ts @@ -0,0 +1,37 @@ +import { Message, Properties } from "protobufjs/light"; +import { EMPTY_BUFFER, registerMessage } from "../protobuf"; +import IdentityWrapper, { IIdentity } from "./identity-wrapper"; + +/** + * Identity based on a TSM + */ +export default class IdentityTsm extends Message implements IIdentity { + /** + * @see README#Message classes + */ + static register() { + registerMessage("IdentityTSM", IdentityTsm); + } + + readonly publickey: Buffer; + + constructor(props?: Properties) { + super(props); + this.publickey = Buffer.from(this.publickey || EMPTY_BUFFER); + } + + /** @inheritdoc */ + verify(msg: Buffer, signature: Buffer): boolean { + throw new Error("Not implemented"); + } + + /** @inheritdoc */ + toBytes(): Buffer { + return Buffer.from(this.toString()); + } + + /** @inheritdoc */ + toString(): string { + return `tsm:${this.publickey.toString('hex')}`; + } +} diff --git a/external/js/cothority/src/darc/identity-wrapper.ts b/external/js/cothority/src/darc/identity-wrapper.ts index 76fa324b5d..c4d5517db8 100644 --- a/external/js/cothority/src/darc/identity-wrapper.ts +++ b/external/js/cothority/src/darc/identity-wrapper.ts @@ -4,6 +4,7 @@ import { registerMessage } from "../protobuf"; import IdentityDarc from "./identity-darc"; import IdentityDid from "./identity-did"; import IdentityEd25519 from "./identity-ed25519"; +import IdentityTsm from "./identity-tsm"; /** * Protobuf representation of an identity @@ -42,6 +43,11 @@ export default class IdentityWrapper extends Message { const id = new IdentityDid({method: Buffer.from(field[1]), did: Buffer.from(field[2]) }); return new IdentityWrapper({did: id}); } + if (idStr.startsWith("tsm:")) { + const field = idStr.split(":", 2); + const tsm = new IdentityTsm({publickey: Buffer.from(field[1])}); + return new IdentityWrapper({tsm}); + } } /** @@ -54,6 +60,7 @@ export default class IdentityWrapper extends Message { readonly ed25519: IdentityEd25519; readonly darc: IdentityDarc; readonly did: IdentityDid; + readonly tsm: IdentityTsm; /** * Get the inner identity as bytes @@ -69,6 +76,9 @@ export default class IdentityWrapper extends Message { if (this.did) { return this.did.toBytes(); } + if (this.tsm) { + return this.tsm.toBytes(); + } return Buffer.from([]); } @@ -87,6 +97,9 @@ export default class IdentityWrapper extends Message { if (this.did) { return this.did.toString(); } + if (this.tsm) { + return this.tsm.toString(); + } return "empty signer"; } diff --git a/external/js/cothority/src/darc/index.ts b/external/js/cothority/src/darc/index.ts index ff29d1a061..27ee69da90 100644 --- a/external/js/cothority/src/darc/index.ts +++ b/external/js/cothority/src/darc/index.ts @@ -2,6 +2,7 @@ import Darc from "./darc"; import IdentityDarc from "./identity-darc"; import IdentityDid from "./identity-did"; import IdentityEd25519 from "./identity-ed25519"; +import IdentityTsm from './identity-tsm'; import IdentityWrapper, { IIdentity } from "./identity-wrapper"; import Rules, { Rule } from "./rules"; import Signer from "./signer"; @@ -13,6 +14,7 @@ export { IdentityDarc, IdentityDid, IdentityEd25519, + IdentityTsm, IdentityWrapper, Rule, Rules, diff --git a/external/js/cothority/src/protobuf/models.json b/external/js/cothority/src/protobuf/models.json index 8048d0f5d1..1cd3fe95be 100644 --- a/external/js/cothority/src/protobuf/models.json +++ b/external/js/cothority/src/protobuf/models.json @@ -1 +1 @@ -{"nested":{"cothority":{},"authprox":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"AuthProxProto"},"nested":{"EnrollRequest":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"participants":{"rule":"repeated","type":"bytes","id":3},"longpri":{"rule":"required","type":"PriShare","id":4},"longpubs":{"rule":"repeated","type":"bytes","id":5}}},"EnrollResponse":{"fields":{}},"SignatureRequest":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"authinfo":{"rule":"required","type":"bytes","id":3},"randpri":{"rule":"required","type":"PriShare","id":4},"randpubs":{"rule":"repeated","type":"bytes","id":5},"message":{"rule":"required","type":"bytes","id":6}}},"PriShare":{"fields":{}},"PartialSig":{"fields":{"partial":{"rule":"required","type":"PriShare","id":1},"sessionid":{"rule":"required","type":"bytes","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"SignatureResponse":{"fields":{"partialsignature":{"rule":"required","type":"PartialSig","id":1}}},"EnrollmentsRequest":{"fields":{"types":{"rule":"repeated","type":"string","id":1},"issuers":{"rule":"repeated","type":"string","id":2}}},"EnrollmentsResponse":{"fields":{"enrollments":{"rule":"repeated","type":"EnrollmentInfo","id":1,"options":{"packed":false}}}},"EnrollmentInfo":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"public":{"rule":"required","type":"bytes","id":3}}}}},"bevm":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"BEvmProto"},"nested":{"ViewCallRequest":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"bevminstanceid":{"rule":"required","type":"bytes","id":2},"accountaddress":{"rule":"required","type":"bytes","id":3},"contractaddress":{"rule":"required","type":"bytes","id":4},"calldata":{"rule":"required","type":"bytes","id":5},"minblockindex":{"rule":"required","type":"sint32","id":6}}},"ViewCallResponse":{"fields":{"result":{"rule":"required","type":"bytes","id":1}}}}},"byzcoin":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"ByzCoinProto"},"nested":{"GetAllByzCoinIDsRequest":{"fields":{}},"GetAllByzCoinIDsResponse":{"fields":{"ids":{"rule":"repeated","type":"bytes","id":1}}},"DataHeader":{"fields":{"trieroot":{"rule":"required","type":"bytes","id":1},"clienttransactionhash":{"rule":"required","type":"bytes","id":2},"statechangeshash":{"rule":"required","type":"bytes","id":3},"timestamp":{"rule":"required","type":"sint64","id":4},"version":{"type":"sint32","id":5}}},"DataBody":{"fields":{"txresults":{"rule":"repeated","type":"TxResult","id":1,"options":{"packed":false}}}},"CreateGenesisBlock":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"genesisdarc":{"rule":"required","type":"darc.Darc","id":3},"blockinterval":{"rule":"required","type":"sint64","id":4},"maxblocksize":{"type":"sint32","id":5},"darccontractids":{"rule":"repeated","type":"string","id":6}}},"CreateGenesisBlockResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"skipblock":{"type":"skipchain.SkipBlock","id":2}}},"AddTxRequest":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"skipchainid":{"rule":"required","type":"bytes","id":2},"transaction":{"rule":"required","type":"ClientTransaction","id":3},"inclusionwait":{"type":"sint32","id":4},"prooffrom":{"type":"bytes","id":5},"flags":{"type":"sint32","id":6}}},"AddTxResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"error":{"type":"string","id":2},"proof":{"type":"Proof","id":3}}},"GetProof":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"key":{"rule":"required","type":"bytes","id":2},"id":{"rule":"required","type":"bytes","id":3},"mustcontainblock":{"type":"bytes","id":4}}},"GetProofResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"proof":{"rule":"required","type":"Proof","id":2}}},"CheckAuthorization":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"byzcoinid":{"rule":"required","type":"bytes","id":2},"darcid":{"rule":"required","type":"bytes","id":3},"identities":{"rule":"repeated","type":"darc.Identity","id":4,"options":{"packed":false}}}},"CheckAuthorizationResponse":{"fields":{"actions":{"rule":"repeated","type":"string","id":1}}},"ChainConfig":{"fields":{"blockinterval":{"rule":"required","type":"sint64","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"maxblocksize":{"rule":"required","type":"sint32","id":3},"darccontractids":{"rule":"repeated","type":"string","id":4}}},"Proof":{"fields":{"inclusionproof":{"rule":"required","type":"trie.Proof","id":1},"latest":{"rule":"required","type":"skipchain.SkipBlock","id":2},"links":{"rule":"repeated","type":"skipchain.ForwardLink","id":3,"options":{"packed":false}}}},"Instruction":{"fields":{"instanceid":{"rule":"required","type":"bytes","id":1},"spawn":{"type":"Spawn","id":2},"invoke":{"type":"Invoke","id":3},"delete":{"type":"Delete","id":4},"signercounter":{"rule":"repeated","type":"uint64","id":5,"options":{"packed":true}},"signeridentities":{"rule":"repeated","type":"darc.Identity","id":6,"options":{"packed":false}},"signatures":{"rule":"repeated","type":"bytes","id":7}}},"Spawn":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"args":{"rule":"repeated","type":"Argument","id":2,"options":{"packed":false}}}},"Invoke":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"command":{"rule":"required","type":"string","id":2},"args":{"rule":"repeated","type":"Argument","id":3,"options":{"packed":false}}}},"Delete":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"args":{"rule":"repeated","type":"Argument","id":2,"options":{"packed":false}}}},"Argument":{"fields":{"name":{"rule":"required","type":"string","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"ClientTransaction":{"fields":{"instructions":{"rule":"repeated","type":"Instruction","id":1,"options":{"packed":false}}}},"TxResult":{"fields":{"clienttransaction":{"rule":"required","type":"ClientTransaction","id":1},"accepted":{"rule":"required","type":"bool","id":2}}},"StateChange":{"fields":{"stateaction":{"rule":"required","type":"sint32","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"contractid":{"rule":"required","type":"string","id":3},"value":{"rule":"required","type":"bytes","id":4},"darcid":{"rule":"required","type":"bytes","id":5},"version":{"rule":"required","type":"uint64","id":6}}},"Coin":{"fields":{"name":{"rule":"required","type":"bytes","id":1},"value":{"rule":"required","type":"uint64","id":2}}},"StreamingRequest":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"StreamingResponse":{"fields":{"block":{"type":"skipchain.SkipBlock","id":1}}},"PaginateRequest":{"fields":{"startid":{"rule":"required","type":"bytes","id":1},"pagesize":{"rule":"required","type":"uint64","id":2},"numpages":{"rule":"required","type":"uint64","id":3},"backward":{"rule":"required","type":"bool","id":4}}},"PaginateResponse":{"fields":{"blocks":{"rule":"repeated","type":"skipchain.SkipBlock","id":1,"options":{"packed":false}},"pagenumber":{"rule":"required","type":"uint64","id":2},"backward":{"rule":"required","type":"bool","id":3},"errorcode":{"rule":"required","type":"uint64","id":4},"errortext":{"rule":"repeated","type":"string","id":5}}},"DownloadState":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"nonce":{"rule":"required","type":"uint64","id":2},"length":{"rule":"required","type":"sint32","id":3}}},"DownloadStateResponse":{"fields":{"keyvalues":{"rule":"repeated","type":"DBKeyValue","id":1,"options":{"packed":false}},"nonce":{"rule":"required","type":"uint64","id":2},"total":{"type":"sint32","id":3}}},"DBKeyValue":{"fields":{"key":{"rule":"required","type":"bytes","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"StateChangeBody":{"fields":{"stateaction":{"rule":"required","type":"sint32","id":1},"contractid":{"rule":"required","type":"string","id":2},"value":{"rule":"required","type":"bytes","id":3},"version":{"rule":"required","type":"uint64","id":4},"darcid":{"rule":"required","type":"bytes","id":5}}},"GetSignerCounters":{"fields":{"signerids":{"rule":"repeated","type":"string","id":1},"skipchainid":{"rule":"required","type":"bytes","id":2}}},"GetSignerCountersResponse":{"fields":{"counters":{"rule":"repeated","type":"uint64","id":1,"options":{"packed":true}},"index":{"type":"uint64","id":2}}},"GetInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"version":{"rule":"required","type":"uint64","id":3}}},"GetLastInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2}}},"GetInstanceVersionResponse":{"fields":{"statechange":{"rule":"required","type":"StateChange","id":1},"blockindex":{"rule":"required","type":"sint32","id":2}}},"GetAllInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2}}},"GetAllInstanceVersionResponse":{"fields":{"statechanges":{"rule":"repeated","type":"GetInstanceVersionResponse","id":1,"options":{"packed":false}}}},"CheckStateChangeValidity":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"version":{"rule":"required","type":"uint64","id":3}}},"CheckStateChangeValidityResponse":{"fields":{"statechanges":{"rule":"repeated","type":"StateChange","id":1,"options":{"packed":false}},"blockid":{"rule":"required","type":"bytes","id":2}}},"ResolveInstanceID":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"darcid":{"rule":"required","type":"bytes","id":2},"name":{"rule":"required","type":"string","id":3}}},"ResolvedInstanceID":{"fields":{"instanceid":{"rule":"required","type":"bytes","id":1}}},"DebugRequest":{"fields":{"byzcoinid":{"type":"bytes","id":1}}},"DebugResponse":{"fields":{"byzcoins":{"rule":"repeated","type":"DebugResponseByzcoin","id":1,"options":{"packed":false}},"dump":{"rule":"repeated","type":"DebugResponseState","id":2,"options":{"packed":false}}}},"DebugResponseByzcoin":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"genesis":{"type":"skipchain.SkipBlock","id":2},"latest":{"type":"skipchain.SkipBlock","id":3}}},"DebugResponseState":{"fields":{"key":{"rule":"required","type":"bytes","id":1},"state":{"rule":"required","type":"StateChangeBody","id":2}}},"DebugRemoveRequest":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"signature":{"rule":"required","type":"bytes","id":2}}},"IDVersion":{"fields":{"id":{"rule":"required","type":"bytes","id":1},"version":{"rule":"required","type":"uint64","id":2}}},"GetUpdatesRequest":{"fields":{"instances":{"rule":"repeated","type":"IDVersion","id":1,"options":{"packed":false}},"flags":{"rule":"required","type":"uint64","id":2},"latestblockid":{"type":"bytes","id":3},"skipchainid":{"type":"bytes","id":4}}},"GetUpdatesReply":{"fields":{"proofs":{"rule":"repeated","type":"trie.Proof","id":1,"options":{"packed":false}},"links":{"rule":"repeated","type":"skipchain.ForwardLink","id":2,"options":{"packed":false}},"latest":{"type":"skipchain.SkipBlock","id":3}}}}},"skipchain":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"SkipchainProto"},"nested":{"StoreSkipBlock":{"fields":{"targetSkipChainID":{"rule":"required","type":"bytes","id":1},"newBlock":{"rule":"required","type":"SkipBlock","id":2},"signature":{"type":"bytes","id":3}}},"StoreSkipBlockReply":{"fields":{"previous":{"type":"SkipBlock","id":1},"latest":{"rule":"required","type":"SkipBlock","id":2}}},"GetAllSkipChainIDs":{"fields":{}},"GetAllSkipChainIDsReply":{"fields":{"skipChainIDs":{"rule":"repeated","type":"bytes","id":1}}},"GetSingleBlock":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"GetSingleBlockByIndex":{"fields":{"genesis":{"rule":"required","type":"bytes","id":1},"index":{"rule":"required","type":"sint32","id":2}}},"GetSingleBlockByIndexReply":{"fields":{"skipblock":{"rule":"required","type":"SkipBlock","id":1},"links":{"rule":"repeated","type":"ForwardLink","id":2,"options":{"packed":false}}}},"GetUpdateChain":{"fields":{"latestID":{"rule":"required","type":"bytes","id":1}}},"GetUpdateChainReply":{"fields":{"update":{"rule":"repeated","type":"SkipBlock","id":1,"options":{"packed":false}}}},"SkipBlock":{"fields":{"index":{"rule":"required","type":"sint32","id":1},"height":{"rule":"required","type":"sint32","id":2},"maxHeight":{"rule":"required","type":"sint32","id":3},"baseHeight":{"rule":"required","type":"sint32","id":4},"backlinks":{"rule":"repeated","type":"bytes","id":5},"verifiers":{"rule":"repeated","type":"bytes","id":6},"genesis":{"rule":"required","type":"bytes","id":7},"data":{"rule":"required","type":"bytes","id":8},"roster":{"rule":"required","type":"onet.Roster","id":9},"hash":{"rule":"required","type":"bytes","id":10},"forward":{"rule":"repeated","type":"ForwardLink","id":11,"options":{"packed":false}},"payload":{"type":"bytes","id":12},"signatureScheme":{"type":"uint32","id":13}}},"ForwardLink":{"fields":{"from":{"rule":"required","type":"bytes","id":1},"to":{"rule":"required","type":"bytes","id":2},"newRoster":{"type":"onet.Roster","id":3},"signature":{"rule":"required","type":"ByzcoinSig","id":4}}},"ByzcoinSig":{"fields":{"msg":{"rule":"required","type":"bytes","id":1},"sig":{"rule":"required","type":"bytes","id":2}}},"SchnorrSig":{"fields":{"challenge":{"rule":"required","type":"bytes","id":1},"response":{"rule":"required","type":"bytes","id":2}}},"Exception":{"fields":{"index":{"rule":"required","type":"sint32","id":1},"commitment":{"rule":"required","type":"bytes","id":2}}}}},"onet":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"OnetProto"},"nested":{"Roster":{"fields":{"id":{"type":"bytes","id":1},"list":{"rule":"repeated","type":"network.ServerIdentity","id":2,"options":{"packed":false}},"aggregate":{"rule":"required","type":"bytes","id":3}}},"Status":{"fields":{"field":{"keyType":"string","type":"string","id":1}}}}},"network":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"NetworkProto"},"nested":{"ServerIdentity":{"fields":{"public":{"rule":"required","type":"bytes","id":1},"serviceIdentities":{"rule":"repeated","type":"ServiceIdentity","id":2,"options":{"packed":false}},"id":{"rule":"required","type":"bytes","id":3},"address":{"rule":"required","type":"string","id":4},"description":{"rule":"required","type":"string","id":5},"url":{"type":"string","id":7}}},"ServiceIdentity":{"fields":{"name":{"rule":"required","type":"string","id":1},"suite":{"rule":"required","type":"string","id":2},"public":{"rule":"required","type":"bytes","id":3}}}}},"darc":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"DarcProto"},"nested":{"Darc":{"fields":{"version":{"rule":"required","type":"uint64","id":1},"description":{"rule":"required","type":"bytes","id":2},"baseid":{"type":"bytes","id":3},"previd":{"rule":"required","type":"bytes","id":4},"rules":{"rule":"required","type":"Rules","id":5},"signatures":{"rule":"repeated","type":"Signature","id":6,"options":{"packed":false}},"verificationdarcs":{"rule":"repeated","type":"Darc","id":7,"options":{"packed":false}}}},"Identity":{"fields":{"darc":{"type":"IdentityDarc","id":1},"ed25519":{"type":"IdentityEd25519","id":2},"x509ec":{"type":"IdentityX509EC","id":3},"proxy":{"type":"IdentityProxy","id":4},"evmcontract":{"type":"IdentityEvmContract","id":5},"did":{"type":"IdentityDID","id":6}}},"IdentityEd25519":{"fields":{"point":{"rule":"required","type":"bytes","id":1}}},"IdentityX509EC":{"fields":{"public":{"rule":"required","type":"bytes","id":1}}},"IdentityProxy":{"fields":{"data":{"rule":"required","type":"string","id":1},"public":{"rule":"required","type":"bytes","id":2}}},"IdentityDarc":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"IdentityEvmContract":{"fields":{"address":{"rule":"required","type":"bytes","id":1}}},"IdentityDID":{"fields":{"did":{"rule":"required","type":"string","id":1},"diddoc":{"type":"DIDDoc","id":2},"method":{"rule":"required","type":"string","id":3}}},"DIDDoc":{"fields":{"context":{"rule":"repeated","type":"string","id":1},"id":{"rule":"required","type":"string","id":2},"publickey":{"rule":"repeated","type":"PublicKey","id":3,"options":{"packed":false}},"service":{"rule":"repeated","type":"DIDService","id":4,"options":{"packed":false}},"authentication":{"rule":"repeated","type":"VerificationMethod","id":5,"options":{"packed":false}}}},"PublicKey":{"fields":{"id":{"rule":"required","type":"string","id":1},"type":{"rule":"required","type":"string","id":2},"controller":{"rule":"required","type":"string","id":3},"value":{"rule":"required","type":"bytes","id":4}}},"DIDService":{"fields":{"id":{"rule":"required","type":"string","id":1},"type":{"rule":"required","type":"string","id":2},"priority":{"rule":"required","type":"sint32","id":3},"recipientkeys":{"rule":"repeated","type":"string","id":4},"routingkeys":{"rule":"repeated","type":"string","id":5},"serviceendpoint":{"rule":"required","type":"string","id":6}}},"VerificationMethod":{"fields":{"publickey":{"rule":"required","type":"PublicKey","id":1}}},"Signature":{"fields":{"signature":{"rule":"required","type":"bytes","id":1},"signer":{"rule":"required","type":"Identity","id":2}}},"Signer":{"fields":{"ed25519":{"type":"SignerEd25519","id":1},"x509ec":{"type":"SignerX509EC","id":2},"proxy":{"type":"SignerProxy","id":3},"evmcontract":{"type":"SignerEvmContract","id":4},"did":{"type":"SignerDID","id":5}}},"SignerEd25519":{"fields":{"point":{"rule":"required","type":"bytes","id":1},"secret":{"rule":"required","type":"bytes","id":2}}},"SignerX509EC":{"fields":{"point":{"rule":"required","type":"bytes","id":1}}},"SignerProxy":{"fields":{"data":{"rule":"required","type":"string","id":1},"public":{"rule":"required","type":"bytes","id":2}}},"SignerEvmContract":{"fields":{"address":{"rule":"required","type":"bytes","id":1}}},"SignerDID":{"fields":{"public":{"rule":"required","type":"bytes","id":1},"secret":{"rule":"required","type":"bytes","id":2},"did":{"rule":"required","type":"string","id":3}}},"Request":{"fields":{"baseid":{"rule":"required","type":"bytes","id":1},"action":{"rule":"required","type":"string","id":2},"msg":{"rule":"required","type":"bytes","id":3},"identities":{"rule":"repeated","type":"Identity","id":4,"options":{"packed":false}},"signatures":{"rule":"repeated","type":"bytes","id":5}}},"Rules":{"fields":{"list":{"rule":"repeated","type":"Rule","id":1,"options":{"packed":false}}}},"Rule":{"fields":{"action":{"rule":"required","type":"string","id":1},"expr":{"rule":"required","type":"bytes","id":2}}}}},"trie":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"TrieProto"},"nested":{"InteriorNode":{"fields":{"left":{"rule":"required","type":"bytes","id":1},"right":{"rule":"required","type":"bytes","id":2}}},"EmptyNode":{"fields":{"prefix":{"rule":"repeated","type":"bool","id":1,"options":{"packed":true}}}},"LeafNode":{"fields":{"prefix":{"rule":"repeated","type":"bool","id":1,"options":{"packed":true}},"key":{"rule":"required","type":"bytes","id":2},"value":{"rule":"required","type":"bytes","id":3}}},"Proof":{"fields":{"interiors":{"rule":"repeated","type":"InteriorNode","id":1,"options":{"packed":false}},"leaf":{"rule":"required","type":"LeafNode","id":2},"empty":{"rule":"required","type":"EmptyNode","id":3},"nonce":{"rule":"required","type":"bytes","id":4}}}}},"calypso":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"Calypso"},"nested":{"Write":{"fields":{"data":{"rule":"required","type":"bytes","id":1},"u":{"rule":"required","type":"bytes","id":2},"ubar":{"rule":"required","type":"bytes","id":3},"e":{"rule":"required","type":"bytes","id":4},"f":{"rule":"required","type":"bytes","id":5},"c":{"rule":"required","type":"bytes","id":6},"extradata":{"type":"bytes","id":7},"ltsid":{"rule":"required","type":"bytes","id":8},"cost":{"type":"byzcoin.Coin","id":9}}},"Read":{"fields":{"write":{"rule":"required","type":"bytes","id":1},"xc":{"rule":"required","type":"bytes","id":2}}},"Authorise":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1}}},"AuthoriseReply":{"fields":{}},"Authorize":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"timestamp":{"type":"sint64","id":2},"signature":{"type":"bytes","id":3}}},"AuthorizeReply":{"fields":{}},"CreateLTS":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"CreateLTSReply":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"x":{"rule":"required","type":"bytes","id":3}}},"ReshareLTS":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"ReshareLTSReply":{"fields":{}},"UpdateValidPeers":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"UpdateValidPeersReply":{"fields":{}},"DecryptKey":{"fields":{"read":{"rule":"required","type":"byzcoin.Proof","id":1},"write":{"rule":"required","type":"byzcoin.Proof","id":2}}},"DecryptKeyReply":{"fields":{"c":{"rule":"required","type":"bytes","id":1},"xhatenc":{"rule":"required","type":"bytes","id":2},"x":{"rule":"required","type":"bytes","id":3}}},"GetLTSReply":{"fields":{"ltsid":{"rule":"required","type":"bytes","id":1}}},"LtsInstanceInfo":{"fields":{"roster":{"rule":"required","type":"onet.Roster","id":1}}}}},"eventlog":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"EventLogProto"},"nested":{"SearchRequest":{"fields":{"instance":{"rule":"required","type":"bytes","id":1},"id":{"rule":"required","type":"bytes","id":2},"topic":{"rule":"required","type":"string","id":3},"from":{"rule":"required","type":"sint64","id":4},"to":{"rule":"required","type":"sint64","id":5}}},"SearchResponse":{"fields":{"events":{"rule":"repeated","type":"Event","id":1,"options":{"packed":false}},"truncated":{"rule":"required","type":"bool","id":2}}},"Event":{"fields":{"when":{"rule":"required","type":"sint64","id":1},"topic":{"rule":"required","type":"string","id":2},"content":{"rule":"required","type":"string","id":3}}}}},"personhood":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"Personhood"},"nested":{"RoPaSci":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"ropasciid":{"rule":"required","type":"bytes","id":2},"locked":{"type":"sint64","id":3}}},"RoPaSciStruct":{"fields":{"description":{"rule":"required","type":"string","id":1},"stake":{"rule":"required","type":"byzcoin.Coin","id":2},"firstplayerhash":{"rule":"required","type":"bytes","id":3},"firstplayer":{"type":"sint32","id":4},"secondplayer":{"type":"sint32","id":5},"secondplayeraccount":{"type":"bytes","id":6},"firstplayeraccount":{"type":"bytes","id":7},"calypsowrite":{"type":"bytes","id":8},"calypsoread":{"type":"bytes","id":9}}},"CredentialStruct":{"fields":{"credentials":{"rule":"repeated","type":"Credential","id":1,"options":{"packed":false}}}},"Credential":{"fields":{"name":{"rule":"required","type":"string","id":1},"attributes":{"rule":"repeated","type":"Attribute","id":2,"options":{"packed":false}}}},"Attribute":{"fields":{"name":{"rule":"required","type":"string","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"SpawnerStruct":{"fields":{"costdarc":{"rule":"required","type":"byzcoin.Coin","id":1},"costcoin":{"rule":"required","type":"byzcoin.Coin","id":2},"costcredential":{"rule":"required","type":"byzcoin.Coin","id":3},"costparty":{"rule":"required","type":"byzcoin.Coin","id":4},"beneficiary":{"rule":"required","type":"bytes","id":5},"costropasci":{"type":"byzcoin.Coin","id":6},"costcwrite":{"type":"byzcoin.Coin","id":7},"costcread":{"type":"byzcoin.Coin","id":8},"costvalue":{"type":"byzcoin.Coin","id":9}}},"PopPartyStruct":{"fields":{"state":{"rule":"required","type":"sint32","id":1},"organizers":{"rule":"required","type":"sint32","id":2},"finalizations":{"rule":"repeated","type":"string","id":3},"description":{"rule":"required","type":"PopDesc","id":4},"attendees":{"rule":"required","type":"Attendees","id":5},"miners":{"rule":"repeated","type":"LRSTag","id":6,"options":{"packed":false}},"miningreward":{"rule":"required","type":"uint64","id":7},"previous":{"type":"bytes","id":8},"next":{"type":"bytes","id":9}}},"PopDesc":{"fields":{"name":{"rule":"required","type":"string","id":1},"purpose":{"rule":"required","type":"string","id":2},"datetime":{"rule":"required","type":"uint64","id":3},"location":{"rule":"required","type":"string","id":4}}},"FinalStatement":{"fields":{"desc":{"type":"PopDesc","id":1},"attendees":{"rule":"required","type":"Attendees","id":2}}},"Attendees":{"fields":{"keys":{"rule":"repeated","type":"bytes","id":1}}},"LRSTag":{"fields":{"tag":{"rule":"required","type":"bytes","id":1}}}}},"personhood_service":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"PersonhoodService"},"nested":{"PartyList":{"fields":{"newparty":{"type":"Party","id":1},"wipeparties":{"type":"bool","id":2},"partydelete":{"type":"PartyDelete","id":3}}},"PartyDelete":{"fields":{"partyid":{"rule":"required","type":"bytes","id":1},"identity":{"rule":"required","type":"darc.Identity","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"PartyListResponse":{"fields":{"parties":{"rule":"repeated","type":"Party","id":1,"options":{"packed":false}}}},"Party":{"fields":{"roster":{"rule":"required","type":"onet.Roster","id":1},"byzcoinid":{"rule":"required","type":"bytes","id":2},"instanceid":{"rule":"required","type":"bytes","id":3}}},"RoPaSciList":{"fields":{"newropasci":{"type":"personhood.RoPaSci","id":1},"wipe":{"type":"bool","id":2},"lock":{"type":"personhood.RoPaSci","id":3}}},"RoPaSciListResponse":{"fields":{"ropascis":{"rule":"repeated","type":"personhood.RoPaSci","id":1,"options":{"packed":false}}}},"StringReply":{"fields":{"reply":{"rule":"required","type":"string","id":1}}},"Poll":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"newpoll":{"type":"PollStruct","id":2},"list":{"type":"PollList","id":3},"answer":{"type":"PollAnswer","id":4},"delete":{"type":"PollDelete","id":5}}},"PollDelete":{"fields":{"identity":{"rule":"required","type":"darc.Identity","id":1},"pollid":{"rule":"required","type":"bytes","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"PollList":{"fields":{"partyids":{"rule":"repeated","type":"bytes","id":1}}},"PollAnswer":{"fields":{"pollid":{"rule":"required","type":"bytes","id":1},"choice":{"rule":"required","type":"sint32","id":2},"lrs":{"rule":"required","type":"bytes","id":3},"partyid":{"type":"bytes","id":4}}},"PollStruct":{"fields":{"personhood":{"rule":"required","type":"bytes","id":1},"pollid":{"type":"bytes","id":2},"title":{"rule":"required","type":"string","id":3},"description":{"rule":"required","type":"string","id":4},"choices":{"rule":"repeated","type":"string","id":5},"chosen":{"rule":"repeated","type":"PollChoice","id":6,"options":{"packed":false}}}},"PollChoice":{"fields":{"choice":{"rule":"required","type":"sint32","id":1},"lrstag":{"rule":"required","type":"bytes","id":2}}},"PollResponse":{"fields":{"polls":{"rule":"repeated","type":"PollStruct","id":1,"options":{"packed":false}}}},"Capabilities":{"fields":{}},"CapabilitiesResponse":{"fields":{"capabilities":{"rule":"repeated","type":"Capability","id":1,"options":{"packed":false}}}},"Capability":{"fields":{"endpoint":{"rule":"required","type":"string","id":1},"version":{"rule":"required","type":"bytes","id":2}}},"UserLocation":{"fields":{"publickey":{"rule":"required","type":"bytes","id":1},"credentialiid":{"type":"bytes","id":2},"credential":{"type":"personhood.CredentialStruct","id":3},"location":{"type":"string","id":4},"time":{"rule":"required","type":"sint64","id":5}}},"Meetup":{"fields":{"userlocation":{"type":"UserLocation","id":1},"wipe":{"type":"bool","id":2}}},"MeetupResponse":{"fields":{"users":{"rule":"repeated","type":"UserLocation","id":1,"options":{"packed":false}}}},"Challenge":{"fields":{"update":{"type":"ChallengeCandidate","id":1}}},"ChallengeCandidate":{"fields":{"credential":{"rule":"required","type":"bytes","id":1},"score":{"rule":"required","type":"sint32","id":2},"signup":{"rule":"required","type":"sint64","id":3}}},"ChallengeReply":{"fields":{"list":{"rule":"repeated","type":"ChallengeCandidate","id":1,"options":{"packed":false}}}},"GetAdminDarcIDs":{"fields":{}},"GetAdminDarcIDsReply":{"fields":{"admindarcids":{"rule":"repeated","type":"bytes","id":1}}},"SetAdminDarcIDs":{"fields":{"newadmindarcids":{"rule":"repeated","type":"bytes","id":1},"signature":{"rule":"required","type":"bytes","id":2}}},"SetAdminDarcIDsReply":{"fields":{}},"EmailSetup":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"deviceurl":{"rule":"required","type":"string","id":3},"emaildarcid":{"rule":"required","type":"bytes","id":4},"smtphost":{"rule":"required","type":"string","id":5},"smtpfrom":{"rule":"required","type":"string","id":6},"smtpreplyto":{"rule":"required","type":"string","id":7},"baseurl":{"rule":"required","type":"string","id":8},"signature":{"rule":"required","type":"bytes","id":9}}},"EmailSetupReply":{"fields":{}},"EmailSignup":{"fields":{"email":{"rule":"required","type":"string","id":1},"alias":{"rule":"required","type":"string","id":2}}},"EmailSignupReply":{"fields":{"status":{"rule":"required","type":"sint32","id":1}}},"EmailRecover":{"fields":{"email":{"rule":"required","type":"string","id":1}}},"EmailRecoverReply":{"fields":{"status":{"rule":"required","type":"sint32","id":1}}}}},"status":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"StatusProto"},"nested":{"Request":{"fields":{}},"Response":{"fields":{"status":{"keyType":"string","type":"onet.Status","id":1},"serveridentity":{"type":"network.ServerIdentity","id":2}}},"CheckConnectivity":{"fields":{"time":{"rule":"required","type":"sint64","id":1},"timeout":{"rule":"required","type":"sint64","id":2},"findfaulty":{"rule":"required","type":"bool","id":3},"list":{"rule":"repeated","type":"network.ServerIdentity","id":4,"options":{"packed":false}},"signature":{"rule":"required","type":"bytes","id":5}}},"CheckConnectivityReply":{"fields":{"nodes":{"rule":"repeated","type":"network.ServerIdentity","id":1,"options":{"packed":false}}}}}}}} +{"nested":{"cothority":{},"authprox":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"AuthProxProto"},"nested":{"EnrollRequest":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"participants":{"rule":"repeated","type":"bytes","id":3},"longpri":{"rule":"required","type":"PriShare","id":4},"longpubs":{"rule":"repeated","type":"bytes","id":5}}},"EnrollResponse":{"fields":{}},"SignatureRequest":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"authinfo":{"rule":"required","type":"bytes","id":3},"randpri":{"rule":"required","type":"PriShare","id":4},"randpubs":{"rule":"repeated","type":"bytes","id":5},"message":{"rule":"required","type":"bytes","id":6}}},"PriShare":{"fields":{}},"PartialSig":{"fields":{"partial":{"rule":"required","type":"PriShare","id":1},"sessionid":{"rule":"required","type":"bytes","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"SignatureResponse":{"fields":{"partialsignature":{"rule":"required","type":"PartialSig","id":1}}},"EnrollmentsRequest":{"fields":{"types":{"rule":"repeated","type":"string","id":1},"issuers":{"rule":"repeated","type":"string","id":2}}},"EnrollmentsResponse":{"fields":{"enrollments":{"rule":"repeated","type":"EnrollmentInfo","id":1,"options":{"packed":false}}}},"EnrollmentInfo":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"public":{"rule":"required","type":"bytes","id":3}}}}},"bevm":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"BEvmProto"},"nested":{"ViewCallRequest":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"bevminstanceid":{"rule":"required","type":"bytes","id":2},"accountaddress":{"rule":"required","type":"bytes","id":3},"contractaddress":{"rule":"required","type":"bytes","id":4},"calldata":{"rule":"required","type":"bytes","id":5},"minblockindex":{"rule":"required","type":"sint32","id":6}}},"ViewCallResponse":{"fields":{"result":{"rule":"required","type":"bytes","id":1}}}}},"byzcoin":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"ByzCoinProto"},"nested":{"GetAllByzCoinIDsRequest":{"fields":{}},"GetAllByzCoinIDsResponse":{"fields":{"ids":{"rule":"repeated","type":"bytes","id":1}}},"DataHeader":{"fields":{"trieroot":{"rule":"required","type":"bytes","id":1},"clienttransactionhash":{"rule":"required","type":"bytes","id":2},"statechangeshash":{"rule":"required","type":"bytes","id":3},"timestamp":{"rule":"required","type":"sint64","id":4},"version":{"type":"sint32","id":5}}},"DataBody":{"fields":{"txresults":{"rule":"repeated","type":"TxResult","id":1,"options":{"packed":false}}}},"CreateGenesisBlock":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"genesisdarc":{"rule":"required","type":"darc.Darc","id":3},"blockinterval":{"rule":"required","type":"sint64","id":4},"maxblocksize":{"type":"sint32","id":5},"darccontractids":{"rule":"repeated","type":"string","id":6}}},"CreateGenesisBlockResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"skipblock":{"type":"skipchain.SkipBlock","id":2}}},"AddTxRequest":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"skipchainid":{"rule":"required","type":"bytes","id":2},"transaction":{"rule":"required","type":"ClientTransaction","id":3},"inclusionwait":{"type":"sint32","id":4},"prooffrom":{"type":"bytes","id":5},"flags":{"type":"sint32","id":6}}},"AddTxResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"error":{"type":"string","id":2},"proof":{"type":"Proof","id":3}}},"GetProof":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"key":{"rule":"required","type":"bytes","id":2},"id":{"rule":"required","type":"bytes","id":3},"mustcontainblock":{"type":"bytes","id":4}}},"GetProofResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"proof":{"rule":"required","type":"Proof","id":2}}},"CheckAuthorization":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"byzcoinid":{"rule":"required","type":"bytes","id":2},"darcid":{"rule":"required","type":"bytes","id":3},"identities":{"rule":"repeated","type":"darc.Identity","id":4,"options":{"packed":false}}}},"CheckAuthorizationResponse":{"fields":{"actions":{"rule":"repeated","type":"string","id":1}}},"ChainConfig":{"fields":{"blockinterval":{"rule":"required","type":"sint64","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"maxblocksize":{"rule":"required","type":"sint32","id":3},"darccontractids":{"rule":"repeated","type":"string","id":4}}},"Proof":{"fields":{"inclusionproof":{"rule":"required","type":"trie.Proof","id":1},"latest":{"rule":"required","type":"skipchain.SkipBlock","id":2},"links":{"rule":"repeated","type":"skipchain.ForwardLink","id":3,"options":{"packed":false}}}},"Instruction":{"fields":{"instanceid":{"rule":"required","type":"bytes","id":1},"spawn":{"type":"Spawn","id":2},"invoke":{"type":"Invoke","id":3},"delete":{"type":"Delete","id":4},"signercounter":{"rule":"repeated","type":"uint64","id":5,"options":{"packed":true}},"signeridentities":{"rule":"repeated","type":"darc.Identity","id":6,"options":{"packed":false}},"signatures":{"rule":"repeated","type":"bytes","id":7}}},"Spawn":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"args":{"rule":"repeated","type":"Argument","id":2,"options":{"packed":false}}}},"Invoke":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"command":{"rule":"required","type":"string","id":2},"args":{"rule":"repeated","type":"Argument","id":3,"options":{"packed":false}}}},"Delete":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"args":{"rule":"repeated","type":"Argument","id":2,"options":{"packed":false}}}},"Argument":{"fields":{"name":{"rule":"required","type":"string","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"ClientTransaction":{"fields":{"instructions":{"rule":"repeated","type":"Instruction","id":1,"options":{"packed":false}}}},"TxResult":{"fields":{"clienttransaction":{"rule":"required","type":"ClientTransaction","id":1},"accepted":{"rule":"required","type":"bool","id":2}}},"StateChange":{"fields":{"stateaction":{"rule":"required","type":"sint32","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"contractid":{"rule":"required","type":"string","id":3},"value":{"rule":"required","type":"bytes","id":4},"darcid":{"rule":"required","type":"bytes","id":5},"version":{"rule":"required","type":"uint64","id":6}}},"Coin":{"fields":{"name":{"rule":"required","type":"bytes","id":1},"value":{"rule":"required","type":"uint64","id":2}}},"StreamingRequest":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"StreamingResponse":{"fields":{"block":{"type":"skipchain.SkipBlock","id":1}}},"PaginateRequest":{"fields":{"startid":{"rule":"required","type":"bytes","id":1},"pagesize":{"rule":"required","type":"uint64","id":2},"numpages":{"rule":"required","type":"uint64","id":3},"backward":{"rule":"required","type":"bool","id":4}}},"PaginateResponse":{"fields":{"blocks":{"rule":"repeated","type":"skipchain.SkipBlock","id":1,"options":{"packed":false}},"pagenumber":{"rule":"required","type":"uint64","id":2},"backward":{"rule":"required","type":"bool","id":3},"errorcode":{"rule":"required","type":"uint64","id":4},"errortext":{"rule":"repeated","type":"string","id":5}}},"DownloadState":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"nonce":{"rule":"required","type":"uint64","id":2},"length":{"rule":"required","type":"sint32","id":3}}},"DownloadStateResponse":{"fields":{"keyvalues":{"rule":"repeated","type":"DBKeyValue","id":1,"options":{"packed":false}},"nonce":{"rule":"required","type":"uint64","id":2},"total":{"type":"sint32","id":3}}},"DBKeyValue":{"fields":{"key":{"rule":"required","type":"bytes","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"StateChangeBody":{"fields":{"stateaction":{"rule":"required","type":"sint32","id":1},"contractid":{"rule":"required","type":"string","id":2},"value":{"rule":"required","type":"bytes","id":3},"version":{"rule":"required","type":"uint64","id":4},"darcid":{"rule":"required","type":"bytes","id":5}}},"GetSignerCounters":{"fields":{"signerids":{"rule":"repeated","type":"string","id":1},"skipchainid":{"rule":"required","type":"bytes","id":2}}},"GetSignerCountersResponse":{"fields":{"counters":{"rule":"repeated","type":"uint64","id":1,"options":{"packed":true}},"index":{"type":"uint64","id":2}}},"GetInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"version":{"rule":"required","type":"uint64","id":3}}},"GetLastInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2}}},"GetInstanceVersionResponse":{"fields":{"statechange":{"rule":"required","type":"StateChange","id":1},"blockindex":{"rule":"required","type":"sint32","id":2}}},"GetAllInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2}}},"GetAllInstanceVersionResponse":{"fields":{"statechanges":{"rule":"repeated","type":"GetInstanceVersionResponse","id":1,"options":{"packed":false}}}},"CheckStateChangeValidity":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"version":{"rule":"required","type":"uint64","id":3}}},"CheckStateChangeValidityResponse":{"fields":{"statechanges":{"rule":"repeated","type":"StateChange","id":1,"options":{"packed":false}},"blockid":{"rule":"required","type":"bytes","id":2}}},"ResolveInstanceID":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"darcid":{"rule":"required","type":"bytes","id":2},"name":{"rule":"required","type":"string","id":3}}},"ResolvedInstanceID":{"fields":{"instanceid":{"rule":"required","type":"bytes","id":1}}},"DebugRequest":{"fields":{"byzcoinid":{"type":"bytes","id":1}}},"DebugResponse":{"fields":{"byzcoins":{"rule":"repeated","type":"DebugResponseByzcoin","id":1,"options":{"packed":false}},"dump":{"rule":"repeated","type":"DebugResponseState","id":2,"options":{"packed":false}}}},"DebugResponseByzcoin":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"genesis":{"type":"skipchain.SkipBlock","id":2},"latest":{"type":"skipchain.SkipBlock","id":3}}},"DebugResponseState":{"fields":{"key":{"rule":"required","type":"bytes","id":1},"state":{"rule":"required","type":"StateChangeBody","id":2}}},"DebugRemoveRequest":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"signature":{"rule":"required","type":"bytes","id":2}}},"IDVersion":{"fields":{"id":{"rule":"required","type":"bytes","id":1},"version":{"rule":"required","type":"uint64","id":2}}},"GetUpdatesRequest":{"fields":{"instances":{"rule":"repeated","type":"IDVersion","id":1,"options":{"packed":false}},"flags":{"rule":"required","type":"uint64","id":2},"latestblockid":{"type":"bytes","id":3},"skipchainid":{"type":"bytes","id":4}}},"GetUpdatesReply":{"fields":{"proofs":{"rule":"repeated","type":"trie.Proof","id":1,"options":{"packed":false}},"links":{"rule":"repeated","type":"skipchain.ForwardLink","id":2,"options":{"packed":false}},"latest":{"type":"skipchain.SkipBlock","id":3}}}}},"skipchain":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"SkipchainProto"},"nested":{"StoreSkipBlock":{"fields":{"targetSkipChainID":{"rule":"required","type":"bytes","id":1},"newBlock":{"rule":"required","type":"SkipBlock","id":2},"signature":{"type":"bytes","id":3}}},"StoreSkipBlockReply":{"fields":{"previous":{"type":"SkipBlock","id":1},"latest":{"rule":"required","type":"SkipBlock","id":2}}},"GetAllSkipChainIDs":{"fields":{}},"GetAllSkipChainIDsReply":{"fields":{"skipChainIDs":{"rule":"repeated","type":"bytes","id":1}}},"GetSingleBlock":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"GetSingleBlockByIndex":{"fields":{"genesis":{"rule":"required","type":"bytes","id":1},"index":{"rule":"required","type":"sint32","id":2}}},"GetSingleBlockByIndexReply":{"fields":{"skipblock":{"rule":"required","type":"SkipBlock","id":1},"links":{"rule":"repeated","type":"ForwardLink","id":2,"options":{"packed":false}}}},"GetUpdateChain":{"fields":{"latestID":{"rule":"required","type":"bytes","id":1}}},"GetUpdateChainReply":{"fields":{"update":{"rule":"repeated","type":"SkipBlock","id":1,"options":{"packed":false}}}},"SkipBlock":{"fields":{"index":{"rule":"required","type":"sint32","id":1},"height":{"rule":"required","type":"sint32","id":2},"maxHeight":{"rule":"required","type":"sint32","id":3},"baseHeight":{"rule":"required","type":"sint32","id":4},"backlinks":{"rule":"repeated","type":"bytes","id":5},"verifiers":{"rule":"repeated","type":"bytes","id":6},"genesis":{"rule":"required","type":"bytes","id":7},"data":{"rule":"required","type":"bytes","id":8},"roster":{"rule":"required","type":"onet.Roster","id":9},"hash":{"rule":"required","type":"bytes","id":10},"forward":{"rule":"repeated","type":"ForwardLink","id":11,"options":{"packed":false}},"payload":{"type":"bytes","id":12},"signatureScheme":{"type":"uint32","id":13}}},"ForwardLink":{"fields":{"from":{"rule":"required","type":"bytes","id":1},"to":{"rule":"required","type":"bytes","id":2},"newRoster":{"type":"onet.Roster","id":3},"signature":{"rule":"required","type":"ByzcoinSig","id":4}}},"ByzcoinSig":{"fields":{"msg":{"rule":"required","type":"bytes","id":1},"sig":{"rule":"required","type":"bytes","id":2}}},"SchnorrSig":{"fields":{"challenge":{"rule":"required","type":"bytes","id":1},"response":{"rule":"required","type":"bytes","id":2}}},"Exception":{"fields":{"index":{"rule":"required","type":"sint32","id":1},"commitment":{"rule":"required","type":"bytes","id":2}}}}},"onet":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"OnetProto"},"nested":{"Roster":{"fields":{"id":{"type":"bytes","id":1},"list":{"rule":"repeated","type":"network.ServerIdentity","id":2,"options":{"packed":false}},"aggregate":{"rule":"required","type":"bytes","id":3}}},"Status":{"fields":{"field":{"keyType":"string","type":"string","id":1}}}}},"network":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"NetworkProto"},"nested":{"ServerIdentity":{"fields":{"public":{"rule":"required","type":"bytes","id":1},"serviceIdentities":{"rule":"repeated","type":"ServiceIdentity","id":2,"options":{"packed":false}},"id":{"rule":"required","type":"bytes","id":3},"address":{"rule":"required","type":"string","id":4},"description":{"rule":"required","type":"string","id":5},"url":{"type":"string","id":7}}},"ServiceIdentity":{"fields":{"name":{"rule":"required","type":"string","id":1},"suite":{"rule":"required","type":"string","id":2},"public":{"rule":"required","type":"bytes","id":3}}}}},"darc":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"DarcProto"},"nested":{"Darc":{"fields":{"version":{"rule":"required","type":"uint64","id":1},"description":{"rule":"required","type":"bytes","id":2},"baseid":{"type":"bytes","id":3},"previd":{"rule":"required","type":"bytes","id":4},"rules":{"rule":"required","type":"Rules","id":5},"signatures":{"rule":"repeated","type":"Signature","id":6,"options":{"packed":false}},"verificationdarcs":{"rule":"repeated","type":"Darc","id":7,"options":{"packed":false}}}},"Identity":{"fields":{"darc":{"type":"IdentityDarc","id":1},"ed25519":{"type":"IdentityEd25519","id":2},"x509ec":{"type":"IdentityX509EC","id":3},"proxy":{"type":"IdentityProxy","id":4},"evmcontract":{"type":"IdentityEvmContract","id":5},"did":{"type":"IdentityDID","id":6},"tsm":{"type":"IdentityTSM","id":7}}},"IdentityEd25519":{"fields":{"point":{"rule":"required","type":"bytes","id":1}}},"IdentityTSM":{"fields":{"publickey":{"rule":"required","type":"ecdsa.PublicKey","id":1}}},"IdentityX509EC":{"fields":{"public":{"rule":"required","type":"bytes","id":1}}},"IdentityProxy":{"fields":{"data":{"rule":"required","type":"string","id":1},"public":{"rule":"required","type":"bytes","id":2}}},"IdentityDarc":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"IdentityEvmContract":{"fields":{"address":{"rule":"required","type":"bytes","id":1}}},"IdentityDID":{"fields":{"did":{"rule":"required","type":"string","id":1},"diddoc":{"type":"DIDDoc","id":2},"method":{"rule":"required","type":"string","id":3}}},"DIDDoc":{"fields":{"context":{"rule":"repeated","type":"string","id":1},"id":{"rule":"required","type":"string","id":2},"publickey":{"rule":"repeated","type":"PublicKey","id":3,"options":{"packed":false}},"service":{"rule":"repeated","type":"DIDService","id":4,"options":{"packed":false}},"authentication":{"rule":"repeated","type":"VerificationMethod","id":5,"options":{"packed":false}}}},"PublicKey":{"fields":{"id":{"rule":"required","type":"string","id":1},"type":{"rule":"required","type":"string","id":2},"controller":{"rule":"required","type":"string","id":3},"value":{"rule":"required","type":"bytes","id":4}}},"DIDService":{"fields":{"id":{"rule":"required","type":"string","id":1},"type":{"rule":"required","type":"string","id":2},"priority":{"rule":"required","type":"sint32","id":3},"recipientkeys":{"rule":"repeated","type":"string","id":4},"routingkeys":{"rule":"repeated","type":"string","id":5},"serviceendpoint":{"rule":"required","type":"string","id":6}}},"VerificationMethod":{"fields":{"publickey":{"rule":"required","type":"PublicKey","id":1}}},"Signature":{"fields":{"signature":{"rule":"required","type":"bytes","id":1},"signer":{"rule":"required","type":"Identity","id":2}}},"Signer":{"fields":{"ed25519":{"type":"SignerEd25519","id":1},"x509ec":{"type":"SignerX509EC","id":2},"proxy":{"type":"SignerProxy","id":3},"evmcontract":{"type":"SignerEvmContract","id":4},"did":{"type":"SignerDID","id":5},"tsm":{"type":"SignerTSM","id":6}}},"SignerEd25519":{"fields":{"point":{"rule":"required","type":"bytes","id":1},"secret":{"rule":"required","type":"bytes","id":2}}},"SignerX509EC":{"fields":{"point":{"rule":"required","type":"bytes","id":1}}},"SignerTSM":{"fields":{"privatekey":{"rule":"required","type":"ecdsa.PrivateKey","id":1}}},"SignerProxy":{"fields":{"data":{"rule":"required","type":"string","id":1},"public":{"rule":"required","type":"bytes","id":2}}},"SignerEvmContract":{"fields":{"address":{"rule":"required","type":"bytes","id":1}}},"SignerDID":{"fields":{"public":{"rule":"required","type":"bytes","id":1},"secret":{"rule":"required","type":"bytes","id":2},"did":{"rule":"required","type":"string","id":3}}},"Request":{"fields":{"baseid":{"rule":"required","type":"bytes","id":1},"action":{"rule":"required","type":"string","id":2},"msg":{"rule":"required","type":"bytes","id":3},"identities":{"rule":"repeated","type":"Identity","id":4,"options":{"packed":false}},"signatures":{"rule":"repeated","type":"bytes","id":5}}},"Rules":{"fields":{"list":{"rule":"repeated","type":"Rule","id":1,"options":{"packed":false}}}},"Rule":{"fields":{"action":{"rule":"required","type":"string","id":1},"expr":{"rule":"required","type":"bytes","id":2}}}}},"trie":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"TrieProto"},"nested":{"InteriorNode":{"fields":{"left":{"rule":"required","type":"bytes","id":1},"right":{"rule":"required","type":"bytes","id":2}}},"EmptyNode":{"fields":{"prefix":{"rule":"repeated","type":"bool","id":1,"options":{"packed":true}}}},"LeafNode":{"fields":{"prefix":{"rule":"repeated","type":"bool","id":1,"options":{"packed":true}},"key":{"rule":"required","type":"bytes","id":2},"value":{"rule":"required","type":"bytes","id":3}}},"Proof":{"fields":{"interiors":{"rule":"repeated","type":"InteriorNode","id":1,"options":{"packed":false}},"leaf":{"rule":"required","type":"LeafNode","id":2},"empty":{"rule":"required","type":"EmptyNode","id":3},"nonce":{"rule":"required","type":"bytes","id":4}}}}},"calypso":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"Calypso"},"nested":{"Write":{"fields":{"data":{"rule":"required","type":"bytes","id":1},"u":{"rule":"required","type":"bytes","id":2},"ubar":{"rule":"required","type":"bytes","id":3},"e":{"rule":"required","type":"bytes","id":4},"f":{"rule":"required","type":"bytes","id":5},"c":{"rule":"required","type":"bytes","id":6},"extradata":{"type":"bytes","id":7},"ltsid":{"rule":"required","type":"bytes","id":8},"cost":{"type":"byzcoin.Coin","id":9}}},"Read":{"fields":{"write":{"rule":"required","type":"bytes","id":1},"xc":{"rule":"required","type":"bytes","id":2}}},"Authorise":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1}}},"AuthoriseReply":{"fields":{}},"Authorize":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"timestamp":{"type":"sint64","id":2},"signature":{"type":"bytes","id":3}}},"AuthorizeReply":{"fields":{}},"CreateLTS":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"CreateLTSReply":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"x":{"rule":"required","type":"bytes","id":3}}},"ReshareLTS":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"ReshareLTSReply":{"fields":{}},"UpdateValidPeers":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"UpdateValidPeersReply":{"fields":{}},"DecryptKey":{"fields":{"read":{"rule":"required","type":"byzcoin.Proof","id":1},"write":{"rule":"required","type":"byzcoin.Proof","id":2}}},"DecryptKeyReply":{"fields":{"c":{"rule":"required","type":"bytes","id":1},"xhatenc":{"rule":"required","type":"bytes","id":2},"x":{"rule":"required","type":"bytes","id":3}}},"GetLTSReply":{"fields":{"ltsid":{"rule":"required","type":"bytes","id":1}}},"LtsInstanceInfo":{"fields":{"roster":{"rule":"required","type":"onet.Roster","id":1}}}}},"eventlog":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"EventLogProto"},"nested":{"SearchRequest":{"fields":{"instance":{"rule":"required","type":"bytes","id":1},"id":{"rule":"required","type":"bytes","id":2},"topic":{"rule":"required","type":"string","id":3},"from":{"rule":"required","type":"sint64","id":4},"to":{"rule":"required","type":"sint64","id":5}}},"SearchResponse":{"fields":{"events":{"rule":"repeated","type":"Event","id":1,"options":{"packed":false}},"truncated":{"rule":"required","type":"bool","id":2}}},"Event":{"fields":{"when":{"rule":"required","type":"sint64","id":1},"topic":{"rule":"required","type":"string","id":2},"content":{"rule":"required","type":"string","id":3}}}}},"personhood":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"Personhood"},"nested":{"RoPaSci":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"ropasciid":{"rule":"required","type":"bytes","id":2},"locked":{"type":"sint64","id":3}}},"RoPaSciStruct":{"fields":{"description":{"rule":"required","type":"string","id":1},"stake":{"rule":"required","type":"byzcoin.Coin","id":2},"firstplayerhash":{"rule":"required","type":"bytes","id":3},"firstplayer":{"type":"sint32","id":4},"secondplayer":{"type":"sint32","id":5},"secondplayeraccount":{"type":"bytes","id":6},"firstplayeraccount":{"type":"bytes","id":7},"calypsowrite":{"type":"bytes","id":8},"calypsoread":{"type":"bytes","id":9}}},"CredentialStruct":{"fields":{"credentials":{"rule":"repeated","type":"Credential","id":1,"options":{"packed":false}}}},"Credential":{"fields":{"name":{"rule":"required","type":"string","id":1},"attributes":{"rule":"repeated","type":"Attribute","id":2,"options":{"packed":false}}}},"Attribute":{"fields":{"name":{"rule":"required","type":"string","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"SpawnerStruct":{"fields":{"costdarc":{"rule":"required","type":"byzcoin.Coin","id":1},"costcoin":{"rule":"required","type":"byzcoin.Coin","id":2},"costcredential":{"rule":"required","type":"byzcoin.Coin","id":3},"costparty":{"rule":"required","type":"byzcoin.Coin","id":4},"beneficiary":{"rule":"required","type":"bytes","id":5},"costropasci":{"type":"byzcoin.Coin","id":6},"costcwrite":{"type":"byzcoin.Coin","id":7},"costcread":{"type":"byzcoin.Coin","id":8},"costvalue":{"type":"byzcoin.Coin","id":9}}},"PopPartyStruct":{"fields":{"state":{"rule":"required","type":"sint32","id":1},"organizers":{"rule":"required","type":"sint32","id":2},"finalizations":{"rule":"repeated","type":"string","id":3},"description":{"rule":"required","type":"PopDesc","id":4},"attendees":{"rule":"required","type":"Attendees","id":5},"miners":{"rule":"repeated","type":"LRSTag","id":6,"options":{"packed":false}},"miningreward":{"rule":"required","type":"uint64","id":7},"previous":{"type":"bytes","id":8},"next":{"type":"bytes","id":9}}},"PopDesc":{"fields":{"name":{"rule":"required","type":"string","id":1},"purpose":{"rule":"required","type":"string","id":2},"datetime":{"rule":"required","type":"uint64","id":3},"location":{"rule":"required","type":"string","id":4}}},"FinalStatement":{"fields":{"desc":{"type":"PopDesc","id":1},"attendees":{"rule":"required","type":"Attendees","id":2}}},"Attendees":{"fields":{"keys":{"rule":"repeated","type":"bytes","id":1}}},"LRSTag":{"fields":{"tag":{"rule":"required","type":"bytes","id":1}}}}},"personhood_service":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"PersonhoodService"},"nested":{"PartyList":{"fields":{"newparty":{"type":"Party","id":1},"wipeparties":{"type":"bool","id":2},"partydelete":{"type":"PartyDelete","id":3}}},"PartyDelete":{"fields":{"partyid":{"rule":"required","type":"bytes","id":1},"identity":{"rule":"required","type":"darc.Identity","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"PartyListResponse":{"fields":{"parties":{"rule":"repeated","type":"Party","id":1,"options":{"packed":false}}}},"Party":{"fields":{"roster":{"rule":"required","type":"onet.Roster","id":1},"byzcoinid":{"rule":"required","type":"bytes","id":2},"instanceid":{"rule":"required","type":"bytes","id":3}}},"RoPaSciList":{"fields":{"newropasci":{"type":"personhood.RoPaSci","id":1},"wipe":{"type":"bool","id":2},"lock":{"type":"personhood.RoPaSci","id":3}}},"RoPaSciListResponse":{"fields":{"ropascis":{"rule":"repeated","type":"personhood.RoPaSci","id":1,"options":{"packed":false}}}},"StringReply":{"fields":{"reply":{"rule":"required","type":"string","id":1}}},"Poll":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"newpoll":{"type":"PollStruct","id":2},"list":{"type":"PollList","id":3},"answer":{"type":"PollAnswer","id":4},"delete":{"type":"PollDelete","id":5}}},"PollDelete":{"fields":{"identity":{"rule":"required","type":"darc.Identity","id":1},"pollid":{"rule":"required","type":"bytes","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"PollList":{"fields":{"partyids":{"rule":"repeated","type":"bytes","id":1}}},"PollAnswer":{"fields":{"pollid":{"rule":"required","type":"bytes","id":1},"choice":{"rule":"required","type":"sint32","id":2},"lrs":{"rule":"required","type":"bytes","id":3},"partyid":{"type":"bytes","id":4}}},"PollStruct":{"fields":{"personhood":{"rule":"required","type":"bytes","id":1},"pollid":{"type":"bytes","id":2},"title":{"rule":"required","type":"string","id":3},"description":{"rule":"required","type":"string","id":4},"choices":{"rule":"repeated","type":"string","id":5},"chosen":{"rule":"repeated","type":"PollChoice","id":6,"options":{"packed":false}}}},"PollChoice":{"fields":{"choice":{"rule":"required","type":"sint32","id":1},"lrstag":{"rule":"required","type":"bytes","id":2}}},"PollResponse":{"fields":{"polls":{"rule":"repeated","type":"PollStruct","id":1,"options":{"packed":false}}}},"Capabilities":{"fields":{}},"CapabilitiesResponse":{"fields":{"capabilities":{"rule":"repeated","type":"Capability","id":1,"options":{"packed":false}}}},"Capability":{"fields":{"endpoint":{"rule":"required","type":"string","id":1},"version":{"rule":"required","type":"bytes","id":2}}},"UserLocation":{"fields":{"publickey":{"rule":"required","type":"bytes","id":1},"credentialiid":{"type":"bytes","id":2},"credential":{"type":"personhood.CredentialStruct","id":3},"location":{"type":"string","id":4},"time":{"rule":"required","type":"sint64","id":5}}},"Meetup":{"fields":{"userlocation":{"type":"UserLocation","id":1},"wipe":{"type":"bool","id":2}}},"MeetupResponse":{"fields":{"users":{"rule":"repeated","type":"UserLocation","id":1,"options":{"packed":false}}}},"Challenge":{"fields":{"update":{"type":"ChallengeCandidate","id":1}}},"ChallengeCandidate":{"fields":{"credential":{"rule":"required","type":"bytes","id":1},"score":{"rule":"required","type":"sint32","id":2},"signup":{"rule":"required","type":"sint64","id":3}}},"ChallengeReply":{"fields":{"list":{"rule":"repeated","type":"ChallengeCandidate","id":1,"options":{"packed":false}}}},"GetAdminDarcIDs":{"fields":{}},"GetAdminDarcIDsReply":{"fields":{"admindarcids":{"rule":"repeated","type":"bytes","id":1}}},"SetAdminDarcIDs":{"fields":{"newadmindarcids":{"rule":"repeated","type":"bytes","id":1},"signature":{"rule":"required","type":"bytes","id":2}}},"SetAdminDarcIDsReply":{"fields":{}},"EmailSetup":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"deviceurl":{"rule":"required","type":"string","id":3},"emaildarcid":{"rule":"required","type":"bytes","id":4},"smtphost":{"rule":"required","type":"string","id":5},"smtpfrom":{"rule":"required","type":"string","id":6},"smtpreplyto":{"rule":"required","type":"string","id":7},"baseurl":{"rule":"required","type":"string","id":8},"signature":{"rule":"required","type":"bytes","id":9}}},"EmailSetupReply":{"fields":{}},"EmailSignup":{"fields":{"email":{"rule":"required","type":"string","id":1},"alias":{"rule":"required","type":"string","id":2}}},"EmailSignupReply":{"fields":{"status":{"rule":"required","type":"sint32","id":1}}},"EmailRecover":{"fields":{"email":{"rule":"required","type":"string","id":1}}},"EmailRecoverReply":{"fields":{"status":{"rule":"required","type":"sint32","id":1}}}}},"status":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"StatusProto"},"nested":{"Request":{"fields":{}},"Response":{"fields":{"status":{"keyType":"string","type":"onet.Status","id":1},"serveridentity":{"type":"network.ServerIdentity","id":2}}},"CheckConnectivity":{"fields":{"time":{"rule":"required","type":"sint64","id":1},"timeout":{"rule":"required","type":"sint64","id":2},"findfaulty":{"rule":"required","type":"bool","id":3},"list":{"rule":"repeated","type":"network.ServerIdentity","id":4,"options":{"packed":false}},"signature":{"rule":"required","type":"bytes","id":5}}},"CheckConnectivityReply":{"fields":{"nodes":{"rule":"repeated","type":"network.ServerIdentity","id":1,"options":{"packed":false}}}}}}}} \ No newline at end of file diff --git a/external/js/cothority/tsconfig.json b/external/js/cothority/tsconfig.json index cea2d5843e..9c8bbf0668 100644 --- a/external/js/cothority/tsconfig.json +++ b/external/js/cothority/tsconfig.json @@ -14,7 +14,17 @@ "typeRoots": [ "../types", "./node_modules/@types" - ] + ], + "paths": { + "@dedis/kyber": [ + "node_modules/@dedis/kyber/dist", + "node_modules/@dedis/kyber" + ], + "@dedis/kyber/*": [ + "node_modules/@dedis/kyber/dist/*", + "node_modules/@dedis/kyber/*" + ] + } }, "include": [ "src/**/*" diff --git a/external/proto/darc.proto b/external/proto/darc.proto index b07c98801d..25a9cb683e 100644 --- a/external/proto/darc.proto +++ b/external/proto/darc.proto @@ -50,6 +50,8 @@ message Identity { optional IdentityEvmContract evmcontract = 5; // A claim signed by one of the keys in a DID Doc optional IdentityDID did = 6; + // Public-key identity from an ECDSA key + optional IdentityTSM tsm = 7; } // IdentityEd25519 holds a Ed25519 public key (Point) @@ -57,6 +59,11 @@ message IdentityEd25519 { required bytes point = 1; } +// IdentityTSM holds a secp256k1 key (array of bytes) +message IdentityTSM { + required ecdsa.PublicKey publickey = 1; +} + // IdentityX509EC holds a public key from a X509EC message IdentityX509EC { required bytes public = 1; @@ -138,6 +145,7 @@ message Signer { optional SignerProxy proxy = 3; optional SignerEvmContract evmcontract = 4; optional SignerDID did = 5; + optional SignerTSM tsm = 6; } // SignerEd25519 holds a public and private keys necessary to sign Darcs @@ -152,6 +160,12 @@ message SignerX509EC { required bytes point = 1; } +// SignerTSM holds a public and private keys necessary to sign Darcs, +// but the private key will not be given out. +message SignerTSM { + required ecdsa.PrivateKey privatekey = 1; +} + // SignerProxy holds the information necessary to verify claims // coming from external authentication systems via Authentication Proxies. message SignerProxy { From 5091eaed74b2a956afcccaf6717067405d456943 Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Thu, 17 Feb 2022 09:31:13 +0100 Subject: [PATCH 12/16] Linting --- external/js/cothority/src/darc/identity-tsm.ts | 2 +- external/js/cothority/src/darc/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/external/js/cothority/src/darc/identity-tsm.ts b/external/js/cothority/src/darc/identity-tsm.ts index eff21aae33..c2b640c18c 100644 --- a/external/js/cothority/src/darc/identity-tsm.ts +++ b/external/js/cothority/src/darc/identity-tsm.ts @@ -32,6 +32,6 @@ export default class IdentityTsm extends Message implements IIdenti /** @inheritdoc */ toString(): string { - return `tsm:${this.publickey.toString('hex')}`; + return `tsm:${this.publickey.toString("hex")}`; } } diff --git a/external/js/cothority/src/darc/index.ts b/external/js/cothority/src/darc/index.ts index 27ee69da90..a57a604cff 100644 --- a/external/js/cothority/src/darc/index.ts +++ b/external/js/cothority/src/darc/index.ts @@ -2,7 +2,7 @@ import Darc from "./darc"; import IdentityDarc from "./identity-darc"; import IdentityDid from "./identity-did"; import IdentityEd25519 from "./identity-ed25519"; -import IdentityTsm from './identity-tsm'; +import IdentityTsm from "./identity-tsm"; import IdentityWrapper, { IIdentity } from "./identity-wrapper"; import Rules, { Rule } from "./rules"; import Signer from "./signer"; From 42c060ef3793d14c6e59f7a891301acf869e1ce5 Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Thu, 24 Feb 2022 14:53:33 +0100 Subject: [PATCH 13/16] Updating proto files --- darc/darc.go | 82 +- darc/proto.go | 11 +- .../epfl/dedis/lib/proto/AuthProxProto.java | 76 +- .../ch/epfl/dedis/lib/proto/BEvmProto.java | 4 +- .../ch/epfl/dedis/lib/proto/ByzCoinProto.java | 430 ++--- .../java/ch/epfl/dedis/lib/proto/Calypso.java | 46 +- .../ch/epfl/dedis/lib/proto/DarcProto.java | 1510 +++++++++++++---- .../epfl/dedis/lib/proto/EventLogProto.java | 38 +- .../ch/epfl/dedis/lib/proto/NetworkProto.java | 48 +- .../ch/epfl/dedis/lib/proto/OnetProto.java | 22 +- .../ch/epfl/dedis/lib/proto/Personhood.java | 126 +- .../dedis/lib/proto/PersonhoodService.java | 272 +-- .../epfl/dedis/lib/proto/SkipchainProto.java | 84 +- .../ch/epfl/dedis/lib/proto/StatusProto.java | 42 +- .../ch/epfl/dedis/lib/proto/TrieProto.java | 26 +- .../js/cothority/src/darc/identity-wrapper.ts | 2 +- .../js/cothority/src/protobuf/models.json | 2 +- external/proto/darc.proto | 9 +- 18 files changed, 1829 insertions(+), 1001 deletions(-) diff --git a/darc/darc.go b/darc/darc.go index fc47f1e9ba..2b53038b34 100644 --- a/darc/darc.go +++ b/darc/darc.go @@ -43,7 +43,6 @@ import ( "encoding/hex" "errors" "fmt" - "go.dedis.ch/onet/v3/log" "math/big" "regexp" "strconv" @@ -778,7 +777,7 @@ func (s Signer) Type() int { return 4 case s.DID != nil: return 5 - case s.TSM != nil: + case s.tsm != nil: return 6 default: return -1 @@ -798,7 +797,7 @@ func (s Signer) Identity() Identity { case 4: return NewIdentityEvmContract(s.EvmContract) case 6: - return NewIdentityTSM(s.TSM.PrivateKey.PublicKey) + return NewIdentityTSM(s.tsm.PrivateKey.PublicKey) default: return Identity{} } @@ -821,7 +820,7 @@ func (s Signer) Sign(msg []byte) ([]byte, error) { case 4: return s.EvmContract.Sign(msg) case 6: - return s.TSM.Sign(msg) + return s.tsm.Sign(msg) default: return nil, errors.New("unknown signer type") } @@ -857,7 +856,7 @@ func (id Identity) Equal(id2 *Identity) bool { case 4: return id.EvmContract.Equal(id2.EvmContract) case 6: - return id.TSM.PublicKey.Equal(&id2.TSM.PublicKey) + return bytes.Equal(id.TSM.PublicKey, id2.TSM.PublicKey) } return false } @@ -930,10 +929,7 @@ func (id Identity) String() string { case 5: return fmt.Sprintf("%s:%s", id.TypeString(), id.DID.DID) case 6: - buf, err := id.TSM.MarshalBinary() - if err != nil { - panic("couldn't marshal TSM key: " + err.Error()) - } + buf, _ := id.TSM.MarshalBinary() return fmt.Sprintf("%s:%x", id.TypeString(), buf) default: return "No identity" @@ -984,9 +980,7 @@ func (id Identity) GetPublicBytes() []byte { case 4: return id.EvmContract.Address[:] case 6: - buf := elliptic.Marshal(id.TSM.PublicKey.Curve, id.TSM.PublicKey.X, id.TSM.PublicKey.Y) - //TODO: add error check here? - return buf + return id.TSM.PublicKey default: return nil } @@ -1036,17 +1030,34 @@ func NewIdentityX509EC(public []byte) Identity { } // NewIdentityTSM creates a new TSM identity struct given a public key -func NewIdentityTSM(publicKey ecdsa.PublicKey) Identity { +func NewIdentityTSM(ecKey ecdsa.PublicKey) Identity { return Identity{ TSM: &IdentityTSM{ - PublicKey: publicKey, + PublicKey: elliptic.MarshalCompressed(ecKey.Curve, ecKey.X, + ecKey.Y), + ecKey: &ecKey, }, } } +// GetPublic returns the public key of the Identity. +// As it is stored in binary format, it might have to be converted. +func (ide *IdentityTSM) GetPublic() ecdsa.PublicKey { + if ide.ecKey == nil { + ecKey := ecdsa.PublicKey{} + x, y := elliptic.UnmarshalCompressed(elliptic.P256(), ide.PublicKey) + ecKey.X = x + ecKey.Y = y + ecKey.Curve = elliptic.P256() + ide.ecKey = &ecKey + } + return *ide.ecKey +} + // Verify the signature of the identity. -func (ide IdentityTSM) Verify(msg []byte, sig []byte) error { - valid := ecdsa.VerifyASN1(&ide.PublicKey, msg, sig) +func (ide *IdentityTSM) Verify(msg []byte, sig []byte) error { + ecKey := ide.GetPublic() + valid := ecdsa.VerifyASN1(&ecKey, msg, sig) if !valid { return errors.New("Signature failed to verify") } @@ -1055,16 +1066,12 @@ func (ide IdentityTSM) Verify(msg []byte, sig []byte) error { // MarshalBinary returns the compressed public key func (ide IdentityTSM) MarshalBinary() ([]byte, error) { - return elliptic.MarshalCompressed(ide.PublicKey.Curve, ide.PublicKey.X, - ide.PublicKey.Y), nil + return ide.PublicKey, nil } -// UnmarshalBinary copies the x and y coordinates from the compressed data +// UnmarshalBinary stores the compressed public key func (ide *IdentityTSM) UnmarshalBinary(data []byte) error { - x, y := elliptic.UnmarshalCompressed(elliptic.P256(), data) - ide.PublicKey.X = x - ide.PublicKey.Y = y - ide.PublicKey.Curve = elliptic.P256() + ide.PublicKey = data return nil } @@ -1161,7 +1168,6 @@ func (id IdentityEvmContract) Verify(msg, s []byte) error { // ParseIdentity returns an Identity structure that matches // the given string. func ParseIdentity(in string) (Identity, error) { - log.Print("Parsing", in) fields := strings.SplitN(in, ":", 2) if len(fields) != 2 { return Identity{}, errors.New("missing identity type") @@ -1201,23 +1207,14 @@ func parseIDX509ec(in string) (Identity, error) { return Identity{X509EC: &IdentityX509EC{Public: id}}, nil } -//necessary function, needs to be refactored only supports elliptic.P256 curve -//needs to be tested Unmarshal might not work func parseIDTSM(in string) (Identity, error) { - id := make([]byte, hex.DecodedLen(len(in))) - _, err := hex.Decode(id, []byte(in)) - - x, y := elliptic.Unmarshal(elliptic.P256(), id) - - pubkey := ecdsa.PublicKey{ - Curve: elliptic.P256(), - X: x, - Y: y, - } + idTSM := IdentityTSM{} + _, err := hex.Decode(idTSM.PublicKey, []byte(in)) if err != nil { return Identity{}, err } - return Identity{TSM: &IdentityTSM{PublicKey: pubkey}}, nil + + return Identity{TSM: &idTSM}, nil } func parseIDDarc(in string) (Identity, error) { @@ -1525,8 +1522,17 @@ func (kcs SignerX509EC) Sign(msg []byte) ([]byte, error) { return nil, errors.New("not yet implemented") } +// SignerTSM holds the private key necessary to sign Darcs. +// As this is only used in testing, it is not in proto.go and thus +// not exported. +type SignerTSM struct { + PrivateKey ecdsa.PrivateKey +} + // NewSignerTSM creates a tsm signer with a SECP256K1 key. // If a nil key is given, then a random key is generated. +// This is mostly used for testing, as the real TSM is a hardware device +// and not supported in tests. func NewSignerTSM(private ecdsa.PrivateKey) Signer { if private.D == nil { priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) @@ -1535,7 +1541,7 @@ func NewSignerTSM(private ecdsa.PrivateKey) Signer { } private = *priv } - return Signer{TSM: &SignerTSM{ + return Signer{tsm: &SignerTSM{ PrivateKey: private, }} } diff --git a/darc/proto.go b/darc/proto.go index 97da248062..db193764af 100644 --- a/darc/proto.go +++ b/darc/proto.go @@ -84,7 +84,8 @@ type IdentityEd25519 struct { // IdentityTSM holds a secp256k1 key (array of bytes) type IdentityTSM struct { - PublicKey ecdsa.PublicKey + PublicKey []byte + ecKey *ecdsa.PublicKey } // IdentityX509EC holds a public key from a X509EC @@ -168,7 +169,7 @@ type Signer struct { Proxy *SignerProxy EvmContract *SignerEvmContract DID *SignerDID - TSM *SignerTSM + tsm *SignerTSM } // SignerEd25519 holds a public and private keys necessary to sign Darcs @@ -184,12 +185,6 @@ type SignerX509EC struct { secret []byte } -// SignerTSM holds a public and private keys necessary to sign Darcs, -// but the private key will not be given out. -type SignerTSM struct { - PrivateKey ecdsa.PrivateKey -} - // SignerProxy holds the information necessary to verify claims // coming from external authentication systems via Authentication Proxies. type SignerProxy struct { diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/AuthProxProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/AuthProxProto.java index 3946cee7ca..915beb7089 100644 --- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/AuthProxProto.java +++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/AuthProxProto.java @@ -256,7 +256,7 @@ public java.lang.String getType() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -274,7 +274,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -304,7 +304,7 @@ public java.lang.String getIssuer() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -322,7 +322,7 @@ public java.lang.String getIssuer() { getIssuerBytes() { java.lang.Object ref = issuer_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); issuer_ = b; @@ -917,7 +917,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -1001,7 +1001,7 @@ public java.lang.String getIssuer() { getIssuerBytes() { java.lang.Object ref = issuer_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); issuer_ = b; @@ -1243,7 +1243,7 @@ public ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder getLongpriOrBuild * required .authprox.PriShare longpri = 4; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.AuthProxProto.PriShare, ch.epfl.dedis.lib.proto.AuthProxProto.PriShare.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder> + ch.epfl.dedis.lib.proto.AuthProxProto.PriShare, ch.epfl.dedis.lib.proto.AuthProxProto.PriShare.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder> getLongpriFieldBuilder() { if (longpriBuilder_ == null) { longpriBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -2068,7 +2068,7 @@ public java.lang.String getType() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -2086,7 +2086,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -2116,7 +2116,7 @@ public java.lang.String getIssuer() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -2134,7 +2134,7 @@ public java.lang.String getIssuer() { getIssuerBytes() { java.lang.Object ref = issuer_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); issuer_ = b; @@ -2771,7 +2771,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -2855,7 +2855,7 @@ public java.lang.String getIssuer() { getIssuerBytes() { java.lang.Object ref = issuer_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); issuer_ = b; @@ -3054,7 +3054,7 @@ public ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder getRandpriOrBuild * required .authprox.PriShare randpri = 4; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.AuthProxProto.PriShare, ch.epfl.dedis.lib.proto.AuthProxProto.PriShare.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder> + ch.epfl.dedis.lib.proto.AuthProxProto.PriShare, ch.epfl.dedis.lib.proto.AuthProxProto.PriShare.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder> getRandpriFieldBuilder() { if (randpriBuilder_ == null) { randpriBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -4394,7 +4394,7 @@ public ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder getPartialOrBuild * required .authprox.PriShare partial = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.AuthProxProto.PriShare, ch.epfl.dedis.lib.proto.AuthProxProto.PriShare.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder> + ch.epfl.dedis.lib.proto.AuthProxProto.PriShare, ch.epfl.dedis.lib.proto.AuthProxProto.PriShare.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.PriShareOrBuilder> getPartialFieldBuilder() { if (partialBuilder_ == null) { partialBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -5132,7 +5132,7 @@ public ch.epfl.dedis.lib.proto.AuthProxProto.PartialSigOrBuilder getPartialsigna * required .authprox.PartialSig partialsignature = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.AuthProxProto.PartialSig, ch.epfl.dedis.lib.proto.AuthProxProto.PartialSig.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.PartialSigOrBuilder> + ch.epfl.dedis.lib.proto.AuthProxProto.PartialSig, ch.epfl.dedis.lib.proto.AuthProxProto.PartialSig.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.PartialSigOrBuilder> getPartialsignatureFieldBuilder() { if (partialsignatureBuilder_ == null) { partialsignatureBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -6071,7 +6071,7 @@ public interface EnrollmentsResponseOrBuilder extends /** * repeated .authprox.EnrollmentInfo enrollments = 1; */ - java.util.List + java.util.List getEnrollmentsList(); /** * repeated .authprox.EnrollmentInfo enrollments = 1; @@ -6084,7 +6084,7 @@ public interface EnrollmentsResponseOrBuilder extends /** * repeated .authprox.EnrollmentInfo enrollments = 1; */ - java.util.List + java.util.List getEnrollmentsOrBuilderList(); /** * repeated .authprox.EnrollmentInfo enrollments = 1; @@ -6200,7 +6200,7 @@ public java.util.List getE * repeated .authprox.EnrollmentInfo enrollments = 1; */ @java.lang.Override - public java.util.List + public java.util.List getEnrollmentsOrBuilderList() { return enrollments_; } @@ -6541,7 +6541,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentsRespon enrollmentsBuilder_ = null; enrollments_ = other.enrollments_; bitField0_ = (bitField0_ & ~0x00000001); - enrollmentsBuilder_ = + enrollmentsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEnrollmentsFieldBuilder() : null; } else { @@ -6779,7 +6779,7 @@ public ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfoOrBuilder getEnrollme /** * repeated .authprox.EnrollmentInfo enrollments = 1; */ - public java.util.List + public java.util.List getEnrollmentsOrBuilderList() { if (enrollmentsBuilder_ != null) { return enrollmentsBuilder_.getMessageOrBuilderList(); @@ -6805,12 +6805,12 @@ public ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfo.Builder addEnrollmen /** * repeated .authprox.EnrollmentInfo enrollments = 1; */ - public java.util.List + public java.util.List getEnrollmentsBuilderList() { return getEnrollmentsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfo, ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfo.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfoOrBuilder> + ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfo, ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfo.Builder, ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfoOrBuilder> getEnrollmentsFieldBuilder() { if (enrollmentsBuilder_ == null) { enrollmentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -7048,7 +7048,7 @@ public java.lang.String getType() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -7066,7 +7066,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -7096,7 +7096,7 @@ public java.lang.String getIssuer() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -7114,7 +7114,7 @@ public java.lang.String getIssuer() { getIssuerBytes() { java.lang.Object ref = issuer_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); issuer_ = b; @@ -7568,7 +7568,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -7652,7 +7652,7 @@ public java.lang.String getIssuer() { getIssuerBytes() { java.lang.Object ref = issuer_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); issuer_ = b; @@ -7798,47 +7798,47 @@ public ch.epfl.dedis.lib.proto.AuthProxProto.EnrollmentInfo getDefaultInstanceFo private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_EnrollRequest_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_EnrollRequest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_EnrollResponse_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_EnrollResponse_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_SignatureRequest_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_SignatureRequest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_PriShare_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_PriShare_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_PartialSig_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_PartialSig_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_SignatureResponse_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_SignatureResponse_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_EnrollmentsRequest_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_EnrollmentsRequest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_EnrollmentsResponse_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_EnrollmentsResponse_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_authprox_EnrollmentInfo_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_authprox_EnrollmentInfo_fieldAccessorTable; diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/BEvmProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/BEvmProto.java index ec8c797c24..4dba037062 100644 --- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/BEvmProto.java +++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/BEvmProto.java @@ -1648,12 +1648,12 @@ public ch.epfl.dedis.lib.proto.BEvmProto.ViewCallResponse getDefaultInstanceForT private static final com.google.protobuf.Descriptors.Descriptor internal_static_bevm_ViewCallRequest_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_bevm_ViewCallRequest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_bevm_ViewCallResponse_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_bevm_ViewCallResponse_fieldAccessorTable; diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/ByzCoinProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/ByzCoinProto.java index 2881c2d99f..85372731b2 100644 --- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/ByzCoinProto.java +++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/ByzCoinProto.java @@ -2196,7 +2196,7 @@ public interface DataBodyOrBuilder extends /** * repeated .byzcoin.TxResult txresults = 1; */ - java.util.List + java.util.List getTxresultsList(); /** * repeated .byzcoin.TxResult txresults = 1; @@ -2209,7 +2209,7 @@ public interface DataBodyOrBuilder extends /** * repeated .byzcoin.TxResult txresults = 1; */ - java.util.List + java.util.List getTxresultsOrBuilderList(); /** * repeated .byzcoin.TxResult txresults = 1; @@ -2326,7 +2326,7 @@ public java.util.List getTxresult * repeated .byzcoin.TxResult txresults = 1; */ @java.lang.Override - public java.util.List + public java.util.List getTxresultsOrBuilderList() { return txresults_; } @@ -2668,7 +2668,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.DataBody other) { txresultsBuilder_ = null; txresults_ = other.txresults_; bitField0_ = (bitField0_ & ~0x00000001); - txresultsBuilder_ = + txresultsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTxresultsFieldBuilder() : null; } else { @@ -2906,7 +2906,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.TxResultOrBuilder getTxresultsOrBuil /** * repeated .byzcoin.TxResult txresults = 1; */ - public java.util.List + public java.util.List getTxresultsOrBuilderList() { if (txresultsBuilder_ != null) { return txresultsBuilder_.getMessageOrBuilderList(); @@ -2932,12 +2932,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.TxResult.Builder addTxresultsBuilder /** * repeated .byzcoin.TxResult txresults = 1; */ - public java.util.List + public java.util.List getTxresultsBuilderList() { return getTxresultsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.TxResult, ch.epfl.dedis.lib.proto.ByzCoinProto.TxResult.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.TxResultOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.TxResult, ch.epfl.dedis.lib.proto.ByzCoinProto.TxResult.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.TxResultOrBuilder> getTxresultsFieldBuilder() { if (txresultsBuilder_ == null) { txresultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -4247,7 +4247,7 @@ public ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder getRosterOrBuilder() { * required .onet.Roster roster = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder> + ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder> getRosterFieldBuilder() { if (rosterBuilder_ == null) { rosterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -4403,7 +4403,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.DarcOrBuilder getGenesisdarcOrBuilder() * required .darc.Darc genesisdarc = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.Darc, ch.epfl.dedis.lib.proto.DarcProto.Darc.Builder, ch.epfl.dedis.lib.proto.DarcProto.DarcOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.Darc, ch.epfl.dedis.lib.proto.DarcProto.Darc.Builder, ch.epfl.dedis.lib.proto.DarcProto.DarcOrBuilder> getGenesisdarcFieldBuilder() { if (genesisdarcBuilder_ == null) { genesisdarcBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -5540,7 +5540,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getSkipblockOrB * optional .skipchain.SkipBlock skipblock = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> + ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> getSkipblockFieldBuilder() { if (skipblockBuilder_ == null) { skipblockBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -6783,7 +6783,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransactionOrBuilder getTransa * required .byzcoin.ClientTransaction transaction = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction, ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransactionOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction, ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransactionOrBuilder> getTransactionFieldBuilder() { if (transactionBuilder_ == null) { transactionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -7278,7 +7278,7 @@ public java.lang.String getError() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -7300,7 +7300,7 @@ public java.lang.String getError() { getErrorBytes() { java.lang.Object ref = error_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); error_ = b; @@ -7845,7 +7845,7 @@ public java.lang.String getError() { getErrorBytes() { java.lang.Object ref = error_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); error_ = b; @@ -8050,7 +8050,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder getProofOrBuilder() { * optional .byzcoin.Proof proof = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> getProofFieldBuilder() { if (proofBuilder_ == null) { proofBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -9924,7 +9924,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder getProofOrBuilder() { * required .byzcoin.Proof proof = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> getProofFieldBuilder() { if (proofBuilder_ == null) { proofBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -10057,7 +10057,7 @@ public interface CheckAuthorizationOrBuilder extends * * repeated .darc.Identity identities = 4; */ - java.util.List + java.util.List getIdentitiesList(); /** *
@@ -10082,7 +10082,7 @@ public interface CheckAuthorizationOrBuilder extends
      *
      * repeated .darc.Identity identities = 4;
      */
-    java.util.List
+    java.util.List 
         getIdentitiesOrBuilderList();
     /**
      * 
@@ -10310,7 +10310,7 @@ public java.util.List getIdentitiesL
      * repeated .darc.Identity identities = 4;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getIdentitiesOrBuilderList() {
       return identities_;
     }
@@ -10753,7 +10753,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.CheckAuthorization
               identitiesBuilder_ = null;
               identities_ = other.identities_;
               bitField0_ = (bitField0_ & ~0x00000008);
-              identitiesBuilder_ =
+              identitiesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getIdentitiesFieldBuilder() : null;
             } else {
@@ -11231,7 +11231,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder getIdentitiesOrBuilde
        *
        * repeated .darc.Identity identities = 4;
        */
-      public java.util.List
+      public java.util.List 
            getIdentitiesOrBuilderList() {
         if (identitiesBuilder_ != null) {
           return identitiesBuilder_.getMessageOrBuilderList();
@@ -11269,12 +11269,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder addIdentitiesBuilder(
        *
        * repeated .darc.Identity identities = 4;
        */
-      public java.util.List
+      public java.util.List 
            getIdentitiesBuilderList() {
         return getIdentitiesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder>
+          ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder> 
           getIdentitiesFieldBuilder() {
         if (identitiesBuilder_ == null) {
           identitiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -12861,7 +12861,7 @@ public ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder getRosterOrBuilder() {
        * required .onet.Roster roster = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder>
+          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder> 
           getRosterFieldBuilder() {
         if (rosterBuilder_ == null) {
           rosterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -13141,7 +13141,7 @@ public interface ProofOrBuilder extends
      *
      * repeated .skipchain.ForwardLink links = 3;
      */
-    java.util.List
+    java.util.List 
         getLinksList();
     /**
      * 
@@ -13172,7 +13172,7 @@ public interface ProofOrBuilder extends
      *
      * repeated .skipchain.ForwardLink links = 3;
      */
-    java.util.List
+    java.util.List 
         getLinksOrBuilderList();
     /**
      * 
@@ -13416,7 +13416,7 @@ public java.util.List getLin
      * repeated .skipchain.ForwardLink links = 3;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getLinksOrBuilderList() {
       return links_;
     }
@@ -13868,7 +13868,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.Proof other) {
               linksBuilder_ = null;
               links_ = other.links_;
               bitField0_ = (bitField0_ & ~0x00000004);
-              linksBuilder_ =
+              linksBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getLinksFieldBuilder() : null;
             } else {
@@ -14066,7 +14066,7 @@ public ch.epfl.dedis.lib.proto.TrieProto.ProofOrBuilder getInclusionproofOrBuild
        * required .trie.Proof inclusionproof = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.TrieProto.Proof, ch.epfl.dedis.lib.proto.TrieProto.Proof.Builder, ch.epfl.dedis.lib.proto.TrieProto.ProofOrBuilder>
+          ch.epfl.dedis.lib.proto.TrieProto.Proof, ch.epfl.dedis.lib.proto.TrieProto.Proof.Builder, ch.epfl.dedis.lib.proto.TrieProto.ProofOrBuilder> 
           getInclusionproofFieldBuilder() {
         if (inclusionproofBuilder_ == null) {
           inclusionproofBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -14222,7 +14222,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getLatestOrBuil
        * required .skipchain.SkipBlock latest = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getLatestFieldBuilder() {
         if (latestBuilder_ == null) {
           latestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -14520,7 +14520,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder getLinksOrBui
        *
        * repeated .skipchain.ForwardLink links = 3;
        */
-      public java.util.List
+      public java.util.List 
            getLinksOrBuilderList() {
         if (linksBuilder_ != null) {
           return linksBuilder_.getMessageOrBuilderList();
@@ -14564,12 +14564,12 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder addLinksBuilde
        *
        * repeated .skipchain.ForwardLink links = 3;
        */
-      public java.util.List
+      public java.util.List 
            getLinksBuilderList() {
         return getLinksFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder> 
           getLinksFieldBuilder() {
         if (linksBuilder_ == null) {
           linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -14786,7 +14786,7 @@ public interface InstructionOrBuilder extends
      *
      * repeated .darc.Identity signeridentities = 6;
      */
-    java.util.List
+    java.util.List 
         getSigneridentitiesList();
     /**
      * 
@@ -14811,7 +14811,7 @@ public interface InstructionOrBuilder extends
      *
      * repeated .darc.Identity signeridentities = 6;
      */
-    java.util.List
+    java.util.List 
         getSigneridentitiesOrBuilderList();
     /**
      * 
@@ -15246,7 +15246,7 @@ public java.util.List getSignerident
      * repeated .darc.Identity signeridentities = 6;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getSigneridentitiesOrBuilderList() {
       return signeridentities_;
     }
@@ -15862,7 +15862,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.Instruction other)
               signeridentitiesBuilder_ = null;
               signeridentities_ = other.signeridentities_;
               bitField0_ = (bitField0_ & ~0x00000020);
-              signeridentitiesBuilder_ =
+              signeridentitiesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getSigneridentitiesFieldBuilder() : null;
             } else {
@@ -16138,7 +16138,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.SpawnOrBuilder getSpawnOrBuilder() {
        * optional .byzcoin.Spawn spawn = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Spawn, ch.epfl.dedis.lib.proto.ByzCoinProto.Spawn.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.SpawnOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Spawn, ch.epfl.dedis.lib.proto.ByzCoinProto.Spawn.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.SpawnOrBuilder> 
           getSpawnFieldBuilder() {
         if (spawnBuilder_ == null) {
           spawnBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -16294,7 +16294,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.InvokeOrBuilder getInvokeOrBuilder()
        * optional .byzcoin.Invoke invoke = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Invoke, ch.epfl.dedis.lib.proto.ByzCoinProto.Invoke.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.InvokeOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Invoke, ch.epfl.dedis.lib.proto.ByzCoinProto.Invoke.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.InvokeOrBuilder> 
           getInvokeFieldBuilder() {
         if (invokeBuilder_ == null) {
           invokeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -16450,7 +16450,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.DeleteOrBuilder getDeleteOrBuilder()
        * optional .byzcoin.Delete delete = 4;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Delete, ch.epfl.dedis.lib.proto.ByzCoinProto.Delete.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.DeleteOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Delete, ch.epfl.dedis.lib.proto.ByzCoinProto.Delete.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.DeleteOrBuilder> 
           getDeleteFieldBuilder() {
         if (deleteBuilder_ == null) {
           deleteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -16846,7 +16846,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder getSigneridentitiesOr
        *
        * repeated .darc.Identity signeridentities = 6;
        */
-      public java.util.List
+      public java.util.List 
            getSigneridentitiesOrBuilderList() {
         if (signeridentitiesBuilder_ != null) {
           return signeridentitiesBuilder_.getMessageOrBuilderList();
@@ -16884,12 +16884,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder addSigneridentitiesBui
        *
        * repeated .darc.Identity signeridentities = 6;
        */
-      public java.util.List
+      public java.util.List 
            getSigneridentitiesBuilderList() {
         return getSigneridentitiesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder>
+          ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder> 
           getSigneridentitiesFieldBuilder() {
         if (signeridentitiesBuilder_ == null) {
           signeridentitiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -17115,7 +17115,7 @@ public interface SpawnOrBuilder extends
      *
      * repeated .byzcoin.Argument args = 2;
      */
-    java.util.List
+    java.util.List 
         getArgsList();
     /**
      * 
@@ -17140,7 +17140,7 @@ public interface SpawnOrBuilder extends
      *
      * repeated .byzcoin.Argument args = 2;
      */
-    java.util.List
+    java.util.List 
         getArgsOrBuilderList();
     /**
      * 
@@ -17283,7 +17283,7 @@ public java.lang.String getContractid() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -17305,7 +17305,7 @@ public java.lang.String getContractid() {
         getContractidBytes() {
       java.lang.Object ref = contractid_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         contractid_ = b;
@@ -17336,7 +17336,7 @@ public java.util.List getArgsList
      * repeated .byzcoin.Argument args = 2;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getArgsOrBuilderList() {
       return args_;
     }
@@ -17721,7 +17721,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.Spawn other) {
               argsBuilder_ = null;
               args_ = other.args_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              argsBuilder_ =
+              argsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getArgsFieldBuilder() : null;
             } else {
@@ -17813,7 +17813,7 @@ public java.lang.String getContractid() {
           getContractidBytes() {
         java.lang.Object ref = contractid_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           contractid_ = b;
@@ -18130,7 +18130,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder getArgsOrBuilder(
        *
        * repeated .byzcoin.Argument args = 2;
        */
-      public java.util.List
+      public java.util.List 
            getArgsOrBuilderList() {
         if (argsBuilder_ != null) {
           return argsBuilder_.getMessageOrBuilderList();
@@ -18168,12 +18168,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder addArgsBuilder(
        *
        * repeated .byzcoin.Argument args = 2;
        */
-      public java.util.List
+      public java.util.List 
            getArgsBuilderList() {
         return getArgsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Argument, ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Argument, ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder> 
           getArgsFieldBuilder() {
         if (argsBuilder_ == null) {
           argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -18308,7 +18308,7 @@ public interface InvokeOrBuilder extends
      *
      * repeated .byzcoin.Argument args = 3;
      */
-    java.util.List
+    java.util.List 
         getArgsList();
     /**
      * 
@@ -18333,7 +18333,7 @@ public interface InvokeOrBuilder extends
      *
      * repeated .byzcoin.Argument args = 3;
      */
-    java.util.List
+    java.util.List 
         getArgsOrBuilderList();
     /**
      * 
@@ -18484,7 +18484,7 @@ public java.lang.String getContractid() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -18506,7 +18506,7 @@ public java.lang.String getContractid() {
         getContractidBytes() {
       java.lang.Object ref = contractid_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         contractid_ = b;
@@ -18544,7 +18544,7 @@ public java.lang.String getCommand() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -18566,7 +18566,7 @@ public java.lang.String getCommand() {
         getCommandBytes() {
       java.lang.Object ref = command_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         command_ = b;
@@ -18597,7 +18597,7 @@ public java.util.List getArgsList
      * repeated .byzcoin.Argument args = 3;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getArgsOrBuilderList() {
       return args_;
     }
@@ -19013,7 +19013,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.Invoke other) {
               argsBuilder_ = null;
               args_ = other.args_;
               bitField0_ = (bitField0_ & ~0x00000004);
-              argsBuilder_ =
+              argsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getArgsFieldBuilder() : null;
             } else {
@@ -19108,7 +19108,7 @@ public java.lang.String getContractid() {
           getContractidBytes() {
         java.lang.Object ref = contractid_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           contractid_ = b;
@@ -19216,7 +19216,7 @@ public java.lang.String getCommand() {
           getCommandBytes() {
         java.lang.Object ref = command_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           command_ = b;
@@ -19533,7 +19533,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder getArgsOrBuilder(
        *
        * repeated .byzcoin.Argument args = 3;
        */
-      public java.util.List
+      public java.util.List 
            getArgsOrBuilderList() {
         if (argsBuilder_ != null) {
           return argsBuilder_.getMessageOrBuilderList();
@@ -19571,12 +19571,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder addArgsBuilder(
        *
        * repeated .byzcoin.Argument args = 3;
        */
-      public java.util.List
+      public java.util.List 
            getArgsBuilderList() {
         return getArgsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Argument, ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Argument, ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder> 
           getArgsFieldBuilder() {
         if (argsBuilder_ == null) {
           argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -19682,7 +19682,7 @@ public interface DeleteOrBuilder extends
      *
      * repeated .byzcoin.Argument args = 2;
      */
-    java.util.List
+    java.util.List 
         getArgsList();
     /**
      * 
@@ -19707,7 +19707,7 @@ public interface DeleteOrBuilder extends
      *
      * repeated .byzcoin.Argument args = 2;
      */
-    java.util.List
+    java.util.List 
         getArgsOrBuilderList();
     /**
      * 
@@ -19851,7 +19851,7 @@ public java.lang.String getContractid() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -19873,7 +19873,7 @@ public java.lang.String getContractid() {
         getContractidBytes() {
       java.lang.Object ref = contractid_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         contractid_ = b;
@@ -19904,7 +19904,7 @@ public java.util.List getArgsList
      * repeated .byzcoin.Argument args = 2;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getArgsOrBuilderList() {
       return args_;
     }
@@ -20290,7 +20290,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.Delete other) {
               argsBuilder_ = null;
               args_ = other.args_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              argsBuilder_ =
+              argsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getArgsFieldBuilder() : null;
             } else {
@@ -20382,7 +20382,7 @@ public java.lang.String getContractid() {
           getContractidBytes() {
         java.lang.Object ref = contractid_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           contractid_ = b;
@@ -20699,7 +20699,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder getArgsOrBuilder(
        *
        * repeated .byzcoin.Argument args = 2;
        */
-      public java.util.List
+      public java.util.List 
            getArgsOrBuilderList() {
         if (argsBuilder_ != null) {
           return argsBuilder_.getMessageOrBuilderList();
@@ -20737,12 +20737,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder addArgsBuilder(
        *
        * repeated .byzcoin.Argument args = 2;
        */
-      public java.util.List
+      public java.util.List 
            getArgsBuilderList() {
         return getArgsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Argument, ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Argument, ch.epfl.dedis.lib.proto.ByzCoinProto.Argument.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ArgumentOrBuilder> 
           getArgsFieldBuilder() {
         if (argsBuilder_ == null) {
           argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -20984,7 +20984,7 @@ public java.lang.String getName() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -21006,7 +21006,7 @@ public java.lang.String getName() {
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         name_ = b;
@@ -21447,7 +21447,7 @@ public java.lang.String getName() {
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           name_ = b;
@@ -21626,7 +21626,7 @@ public interface ClientTransactionOrBuilder extends
     /**
      * repeated .byzcoin.Instruction instructions = 1;
      */
-    java.util.List
+    java.util.List 
         getInstructionsList();
     /**
      * repeated .byzcoin.Instruction instructions = 1;
@@ -21639,7 +21639,7 @@ public interface ClientTransactionOrBuilder extends
     /**
      * repeated .byzcoin.Instruction instructions = 1;
      */
-    java.util.List
+    java.util.List 
         getInstructionsOrBuilderList();
     /**
      * repeated .byzcoin.Instruction instructions = 1;
@@ -21759,7 +21759,7 @@ public java.util.List getInstr
      * repeated .byzcoin.Instruction instructions = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getInstructionsOrBuilderList() {
       return instructions_;
     }
@@ -22104,7 +22104,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction
               instructionsBuilder_ = null;
               instructions_ = other.instructions_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              instructionsBuilder_ =
+              instructionsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getInstructionsFieldBuilder() : null;
             } else {
@@ -22342,7 +22342,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.InstructionOrBuilder getInstructions
       /**
        * repeated .byzcoin.Instruction instructions = 1;
        */
-      public java.util.List
+      public java.util.List 
            getInstructionsOrBuilderList() {
         if (instructionsBuilder_ != null) {
           return instructionsBuilder_.getMessageOrBuilderList();
@@ -22368,12 +22368,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.Instruction.Builder addInstructionsB
       /**
        * repeated .byzcoin.Instruction instructions = 1;
        */
-      public java.util.List
+      public java.util.List 
            getInstructionsBuilderList() {
         return getInstructionsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Instruction, ch.epfl.dedis.lib.proto.ByzCoinProto.Instruction.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.InstructionOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Instruction, ch.epfl.dedis.lib.proto.ByzCoinProto.Instruction.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.InstructionOrBuilder> 
           getInstructionsFieldBuilder() {
         if (instructionsBuilder_ == null) {
           instructionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -23096,7 +23096,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransactionOrBuilder getClient
        * required .byzcoin.ClientTransaction clienttransaction = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction, ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransactionOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction, ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransaction.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ClientTransactionOrBuilder> 
           getClienttransactionFieldBuilder() {
         if (clienttransactionBuilder_ == null) {
           clienttransactionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -23528,7 +23528,7 @@ public java.lang.String getContractid() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -23550,7 +23550,7 @@ public java.lang.String getContractid() {
         getContractidBytes() {
       java.lang.Object ref = contractid_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         contractid_ = b;
@@ -24287,7 +24287,7 @@ public java.lang.String getContractid() {
           getContractidBytes() {
         java.lang.Object ref = contractid_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           contractid_ = b;
@@ -26417,7 +26417,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getBlockOrBuild
        * optional .skipchain.SkipBlock block = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getBlockFieldBuilder() {
         if (blockBuilder_ == null) {
           blockBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -27510,7 +27510,7 @@ public interface PaginateResponseOrBuilder extends
      *
      * repeated .skipchain.SkipBlock blocks = 1;
      */
-    java.util.List
+    java.util.List 
         getBlocksList();
     /**
      * 
@@ -27535,7 +27535,7 @@ public interface PaginateResponseOrBuilder extends
      *
      * repeated .skipchain.SkipBlock blocks = 1;
      */
-    java.util.List
+    java.util.List 
         getBlocksOrBuilderList();
     /**
      * 
@@ -27794,7 +27794,7 @@ public java.util.List getBlock
      * repeated .skipchain.SkipBlock blocks = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getBlocksOrBuilderList() {
       return blocks_;
     }
@@ -28390,7 +28390,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.PaginateResponse o
               blocksBuilder_ = null;
               blocks_ = other.blocks_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              blocksBuilder_ =
+              blocksBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getBlocksFieldBuilder() : null;
             } else {
@@ -28716,7 +28716,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getBlocksOrBuil
        *
        * repeated .skipchain.SkipBlock blocks = 1;
        */
-      public java.util.List
+      public java.util.List 
            getBlocksOrBuilderList() {
         if (blocksBuilder_ != null) {
           return blocksBuilder_.getMessageOrBuilderList();
@@ -28754,12 +28754,12 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder addBlocksBuilder
        *
        * repeated .skipchain.SkipBlock blocks = 1;
        */
-      public java.util.List
+      public java.util.List 
            getBlocksBuilderList() {
         return getBlocksFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getBlocksFieldBuilder() {
         if (blocksBuilder_ == null) {
           blocksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -30052,7 +30052,7 @@ public interface DownloadStateResponseOrBuilder extends
      *
      * repeated .byzcoin.DBKeyValue keyvalues = 1;
      */
-    java.util.List
+    java.util.List 
         getKeyvaluesList();
     /**
      * 
@@ -30080,7 +30080,7 @@ public interface DownloadStateResponseOrBuilder extends
      *
      * repeated .byzcoin.DBKeyValue keyvalues = 1;
      */
-    java.util.List
+    java.util.List 
         getKeyvaluesOrBuilderList();
     /**
      * 
@@ -30265,7 +30265,7 @@ public java.util.List getKeyval
      * repeated .byzcoin.DBKeyValue keyvalues = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getKeyvaluesOrBuilderList() {
       return keyvalues_;
     }
@@ -30731,7 +30731,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.DownloadStateRespo
               keyvaluesBuilder_ = null;
               keyvalues_ = other.keyvalues_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              keyvaluesBuilder_ =
+              keyvaluesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getKeyvaluesFieldBuilder() : null;
             } else {
@@ -31053,7 +31053,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.DBKeyValueOrBuilder getKeyvaluesOrBu
        *
        * repeated .byzcoin.DBKeyValue keyvalues = 1;
        */
-      public java.util.List
+      public java.util.List 
            getKeyvaluesOrBuilderList() {
         if (keyvaluesBuilder_ != null) {
           return keyvaluesBuilder_.getMessageOrBuilderList();
@@ -31094,12 +31094,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.DBKeyValue.Builder addKeyvaluesBuild
        *
        * repeated .byzcoin.DBKeyValue keyvalues = 1;
        */
-      public java.util.List
+      public java.util.List 
            getKeyvaluesBuilderList() {
         return getKeyvaluesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.DBKeyValue, ch.epfl.dedis.lib.proto.ByzCoinProto.DBKeyValue.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.DBKeyValueOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.DBKeyValue, ch.epfl.dedis.lib.proto.ByzCoinProto.DBKeyValue.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.DBKeyValueOrBuilder> 
           getKeyvaluesFieldBuilder() {
         if (keyvaluesBuilder_ == null) {
           keyvaluesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -32152,7 +32152,7 @@ public java.lang.String getContractid() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -32170,7 +32170,7 @@ public java.lang.String getContractid() {
         getContractidBytes() {
       java.lang.Object ref = contractid_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         contractid_ = b;
@@ -32766,7 +32766,7 @@ public java.lang.String getContractid() {
           getContractidBytes() {
         java.lang.Object ref = contractid_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           contractid_ = b;
@@ -36604,7 +36604,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeOrBuilder getStatechangeO
        * required .byzcoin.StateChange statechange = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeOrBuilder> 
           getStatechangeFieldBuilder() {
         if (statechangeBuilder_ == null) {
           statechangeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -37369,7 +37369,7 @@ public interface GetAllInstanceVersionResponseOrBuilder extends
     /**
      * repeated .byzcoin.GetInstanceVersionResponse statechanges = 1;
      */
-    java.util.List
+    java.util.List 
         getStatechangesList();
     /**
      * repeated .byzcoin.GetInstanceVersionResponse statechanges = 1;
@@ -37382,7 +37382,7 @@ public interface GetAllInstanceVersionResponseOrBuilder extends
     /**
      * repeated .byzcoin.GetInstanceVersionResponse statechanges = 1;
      */
-    java.util.List
+    java.util.List 
         getStatechangesOrBuilderList();
     /**
      * repeated .byzcoin.GetInstanceVersionResponse statechanges = 1;
@@ -37499,7 +37499,7 @@ public java.util.Listrepeated .byzcoin.GetInstanceVersionResponse statechanges = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getStatechangesOrBuilderList() {
       return statechanges_;
     }
@@ -37841,7 +37841,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.GetAllInstanceVers
               statechangesBuilder_ = null;
               statechanges_ = other.statechanges_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              statechangesBuilder_ =
+              statechangesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getStatechangesFieldBuilder() : null;
             } else {
@@ -38079,7 +38079,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.GetInstanceVersionResponseOrBuilder
       /**
        * repeated .byzcoin.GetInstanceVersionResponse statechanges = 1;
        */
-      public java.util.List
+      public java.util.List 
            getStatechangesOrBuilderList() {
         if (statechangesBuilder_ != null) {
           return statechangesBuilder_.getMessageOrBuilderList();
@@ -38105,12 +38105,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.GetInstanceVersionResponse.Builder a
       /**
        * repeated .byzcoin.GetInstanceVersionResponse statechanges = 1;
        */
-      public java.util.List
+      public java.util.List 
            getStatechangesBuilderList() {
         return getStatechangesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.GetInstanceVersionResponse, ch.epfl.dedis.lib.proto.ByzCoinProto.GetInstanceVersionResponse.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.GetInstanceVersionResponseOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.GetInstanceVersionResponse, ch.epfl.dedis.lib.proto.ByzCoinProto.GetInstanceVersionResponse.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.GetInstanceVersionResponseOrBuilder> 
           getStatechangesFieldBuilder() {
         if (statechangesBuilder_ == null) {
           statechangesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -38946,7 +38946,7 @@ public interface CheckStateChangeValidityResponseOrBuilder extends
     /**
      * repeated .byzcoin.StateChange statechanges = 1;
      */
-    java.util.List
+    java.util.List 
         getStatechangesList();
     /**
      * repeated .byzcoin.StateChange statechanges = 1;
@@ -38959,7 +38959,7 @@ public interface CheckStateChangeValidityResponseOrBuilder extends
     /**
      * repeated .byzcoin.StateChange statechanges = 1;
      */
-    java.util.List
+    java.util.List 
         getStatechangesOrBuilderList();
     /**
      * repeated .byzcoin.StateChange statechanges = 1;
@@ -39095,7 +39095,7 @@ public java.util.List getState
      * repeated .byzcoin.StateChange statechanges = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getStatechangesOrBuilderList() {
       return statechanges_;
     }
@@ -39485,7 +39485,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.CheckStateChangeVa
               statechangesBuilder_ = null;
               statechanges_ = other.statechanges_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              statechangesBuilder_ =
+              statechangesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getStatechangesFieldBuilder() : null;
             } else {
@@ -39729,7 +39729,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeOrBuilder getStatechanges
       /**
        * repeated .byzcoin.StateChange statechanges = 1;
        */
-      public java.util.List
+      public java.util.List 
            getStatechangesOrBuilderList() {
         if (statechangesBuilder_ != null) {
           return statechangesBuilder_.getMessageOrBuilderList();
@@ -39755,12 +39755,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange.Builder addStatechangesB
       /**
        * repeated .byzcoin.StateChange statechanges = 1;
        */
-      public java.util.List
+      public java.util.List 
            getStatechangesBuilderList() {
         return getStatechangesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChange.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeOrBuilder> 
           getStatechangesFieldBuilder() {
         if (statechangesBuilder_ == null) {
           statechangesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -40072,7 +40072,7 @@ public java.lang.String getName() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -40090,7 +40090,7 @@ public java.lang.String getName() {
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         name_ = b;
@@ -40609,7 +40609,7 @@ public java.lang.String getName() {
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           name_ = b;
@@ -41797,7 +41797,7 @@ public interface DebugResponseOrBuilder extends
     /**
      * repeated .byzcoin.DebugResponseByzcoin byzcoins = 1;
      */
-    java.util.List
+    java.util.List 
         getByzcoinsList();
     /**
      * repeated .byzcoin.DebugResponseByzcoin byzcoins = 1;
@@ -41810,7 +41810,7 @@ public interface DebugResponseOrBuilder extends
     /**
      * repeated .byzcoin.DebugResponseByzcoin byzcoins = 1;
      */
-    java.util.List
+    java.util.List 
         getByzcoinsOrBuilderList();
     /**
      * repeated .byzcoin.DebugResponseByzcoin byzcoins = 1;
@@ -41821,7 +41821,7 @@ ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoinOrBuilder getByzcoinsOr
     /**
      * repeated .byzcoin.DebugResponseState dump = 2;
      */
-    java.util.List
+    java.util.List 
         getDumpList();
     /**
      * repeated .byzcoin.DebugResponseState dump = 2;
@@ -41834,7 +41834,7 @@ ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoinOrBuilder getByzcoinsOr
     /**
      * repeated .byzcoin.DebugResponseState dump = 2;
      */
-    java.util.List
+    java.util.List 
         getDumpOrBuilderList();
     /**
      * repeated .byzcoin.DebugResponseState dump = 2;
@@ -41965,7 +41965,7 @@ public java.util.List
      * repeated .byzcoin.DebugResponseByzcoin byzcoins = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getByzcoinsOrBuilderList() {
       return byzcoins_;
     }
@@ -42005,7 +42005,7 @@ public java.util.List g
      * repeated .byzcoin.DebugResponseState dump = 2;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getDumpOrBuilderList() {
       return dump_;
     }
@@ -42383,7 +42383,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponse othe
               byzcoinsBuilder_ = null;
               byzcoins_ = other.byzcoins_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              byzcoinsBuilder_ =
+              byzcoinsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getByzcoinsFieldBuilder() : null;
             } else {
@@ -42409,7 +42409,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponse othe
               dumpBuilder_ = null;
               dump_ = other.dump_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              dumpBuilder_ =
+              dumpBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getDumpFieldBuilder() : null;
             } else {
@@ -42652,7 +42652,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoinOrBuilder getByz
       /**
        * repeated .byzcoin.DebugResponseByzcoin byzcoins = 1;
        */
-      public java.util.List
+      public java.util.List 
            getByzcoinsOrBuilderList() {
         if (byzcoinsBuilder_ != null) {
           return byzcoinsBuilder_.getMessageOrBuilderList();
@@ -42678,12 +42678,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoin.Builder addByzc
       /**
        * repeated .byzcoin.DebugResponseByzcoin byzcoins = 1;
        */
-      public java.util.List
+      public java.util.List 
            getByzcoinsBuilderList() {
         return getByzcoinsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoin, ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoinOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoin, ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseByzcoinOrBuilder> 
           getByzcoinsFieldBuilder() {
         if (byzcoinsBuilder_ == null) {
           byzcoinsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -42892,7 +42892,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseStateOrBuilder getDumpO
       /**
        * repeated .byzcoin.DebugResponseState dump = 2;
        */
-      public java.util.List
+      public java.util.List 
            getDumpOrBuilderList() {
         if (dumpBuilder_ != null) {
           return dumpBuilder_.getMessageOrBuilderList();
@@ -42918,12 +42918,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseState.Builder addDumpBu
       /**
        * repeated .byzcoin.DebugResponseState dump = 2;
        */
-      public java.util.List
+      public java.util.List 
            getDumpBuilderList() {
         return getDumpFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseState, ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseState.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseStateOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseState, ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseState.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.DebugResponseStateOrBuilder> 
           getDumpFieldBuilder() {
         if (dumpBuilder_ == null) {
           dumpBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -43786,7 +43786,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getGenesisOrBui
        * optional .skipchain.SkipBlock genesis = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getGenesisFieldBuilder() {
         if (genesisBuilder_ == null) {
           genesisBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -43906,7 +43906,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getLatestOrBuil
        * optional .skipchain.SkipBlock latest = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getLatestFieldBuilder() {
         if (latestBuilder_ == null) {
           latestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -44670,7 +44670,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeBodyOrBuilder getStateOrB
        * required .byzcoin.StateChangeBody state = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeBody, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeBody.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeBodyOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeBody, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeBody.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.StateChangeBodyOrBuilder> 
           getStateFieldBuilder() {
         if (stateBuilder_ == null) {
           stateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -46045,7 +46045,7 @@ public interface GetUpdatesRequestOrBuilder extends
     /**
      * repeated .byzcoin.IDVersion instances = 1;
      */
-    java.util.List
+    java.util.List 
         getInstancesList();
     /**
      * repeated .byzcoin.IDVersion instances = 1;
@@ -46058,7 +46058,7 @@ public interface GetUpdatesRequestOrBuilder extends
     /**
      * repeated .byzcoin.IDVersion instances = 1;
      */
-    java.util.List
+    java.util.List 
         getInstancesOrBuilderList();
     /**
      * repeated .byzcoin.IDVersion instances = 1;
@@ -46230,7 +46230,7 @@ public java.util.List getInstanc
      * repeated .byzcoin.IDVersion instances = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getInstancesOrBuilderList() {
       return instances_;
     }
@@ -46706,7 +46706,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.GetUpdatesRequest
               instancesBuilder_ = null;
               instances_ = other.instances_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              instancesBuilder_ =
+              instancesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getInstancesFieldBuilder() : null;
             } else {
@@ -46956,7 +46956,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.IDVersionOrBuilder getInstancesOrBui
       /**
        * repeated .byzcoin.IDVersion instances = 1;
        */
-      public java.util.List
+      public java.util.List 
            getInstancesOrBuilderList() {
         if (instancesBuilder_ != null) {
           return instancesBuilder_.getMessageOrBuilderList();
@@ -46982,12 +46982,12 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.IDVersion.Builder addInstancesBuilde
       /**
        * repeated .byzcoin.IDVersion instances = 1;
        */
-      public java.util.List
+      public java.util.List 
            getInstancesBuilderList() {
         return getInstancesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.IDVersion, ch.epfl.dedis.lib.proto.ByzCoinProto.IDVersion.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.IDVersionOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.IDVersion, ch.epfl.dedis.lib.proto.ByzCoinProto.IDVersion.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.IDVersionOrBuilder> 
           getInstancesFieldBuilder() {
         if (instancesBuilder_ == null) {
           instancesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -47183,7 +47183,7 @@ public interface GetUpdatesReplyOrBuilder extends
     /**
      * repeated .trie.Proof proofs = 1;
      */
-    java.util.List
+    java.util.List 
         getProofsList();
     /**
      * repeated .trie.Proof proofs = 1;
@@ -47196,7 +47196,7 @@ public interface GetUpdatesReplyOrBuilder extends
     /**
      * repeated .trie.Proof proofs = 1;
      */
-    java.util.List
+    java.util.List 
         getProofsOrBuilderList();
     /**
      * repeated .trie.Proof proofs = 1;
@@ -47207,7 +47207,7 @@ ch.epfl.dedis.lib.proto.TrieProto.ProofOrBuilder getProofsOrBuilder(
     /**
      * repeated .skipchain.ForwardLink links = 2;
      */
-    java.util.List
+    java.util.List 
         getLinksList();
     /**
      * repeated .skipchain.ForwardLink links = 2;
@@ -47220,7 +47220,7 @@ ch.epfl.dedis.lib.proto.TrieProto.ProofOrBuilder getProofsOrBuilder(
     /**
      * repeated .skipchain.ForwardLink links = 2;
      */
-    java.util.List
+    java.util.List 
         getLinksOrBuilderList();
     /**
      * repeated .skipchain.ForwardLink links = 2;
@@ -47379,7 +47379,7 @@ public java.util.List getProofsList() {
      * repeated .trie.Proof proofs = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getProofsOrBuilderList() {
       return proofs_;
     }
@@ -47419,7 +47419,7 @@ public java.util.List getLin
      * repeated .skipchain.ForwardLink links = 2;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getLinksOrBuilderList() {
       return links_;
     }
@@ -47861,7 +47861,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.GetUpdatesReply ot
               proofsBuilder_ = null;
               proofs_ = other.proofs_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              proofsBuilder_ =
+              proofsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getProofsFieldBuilder() : null;
             } else {
@@ -47887,7 +47887,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.ByzCoinProto.GetUpdatesReply ot
               linksBuilder_ = null;
               links_ = other.links_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              linksBuilder_ =
+              linksBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getLinksFieldBuilder() : null;
             } else {
@@ -48138,7 +48138,7 @@ public ch.epfl.dedis.lib.proto.TrieProto.ProofOrBuilder getProofsOrBuilder(
       /**
        * repeated .trie.Proof proofs = 1;
        */
-      public java.util.List
+      public java.util.List 
            getProofsOrBuilderList() {
         if (proofsBuilder_ != null) {
           return proofsBuilder_.getMessageOrBuilderList();
@@ -48164,12 +48164,12 @@ public ch.epfl.dedis.lib.proto.TrieProto.Proof.Builder addProofsBuilder(
       /**
        * repeated .trie.Proof proofs = 1;
        */
-      public java.util.List
+      public java.util.List 
            getProofsBuilderList() {
         return getProofsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.TrieProto.Proof, ch.epfl.dedis.lib.proto.TrieProto.Proof.Builder, ch.epfl.dedis.lib.proto.TrieProto.ProofOrBuilder>
+          ch.epfl.dedis.lib.proto.TrieProto.Proof, ch.epfl.dedis.lib.proto.TrieProto.Proof.Builder, ch.epfl.dedis.lib.proto.TrieProto.ProofOrBuilder> 
           getProofsFieldBuilder() {
         if (proofsBuilder_ == null) {
           proofsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -48378,7 +48378,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder getLinksOrBui
       /**
        * repeated .skipchain.ForwardLink links = 2;
        */
-      public java.util.List
+      public java.util.List 
            getLinksOrBuilderList() {
         if (linksBuilder_ != null) {
           return linksBuilder_.getMessageOrBuilderList();
@@ -48404,12 +48404,12 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder addLinksBuilde
       /**
        * repeated .skipchain.ForwardLink links = 2;
        */
-      public java.util.List
+      public java.util.List 
            getLinksBuilderList() {
         return getLinksFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder> 
           getLinksFieldBuilder() {
         if (linksBuilder_ == null) {
           linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -48530,7 +48530,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getLatestOrBuil
        * optional .skipchain.SkipBlock latest = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getLatestFieldBuilder() {
         if (latestBuilder_ == null) {
           latestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -48597,252 +48597,252 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.GetUpdatesReply getDefaultInstanceFo
 
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetAllByzCoinIDsRequest_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetAllByzCoinIDsRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetAllByzCoinIDsResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetAllByzCoinIDsResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DataHeader_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DataHeader_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DataBody_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DataBody_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_CreateGenesisBlock_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_CreateGenesisBlock_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_CreateGenesisBlockResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_CreateGenesisBlockResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_AddTxRequest_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_AddTxRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_AddTxResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_AddTxResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetProof_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetProof_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetProofResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetProofResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_CheckAuthorization_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_CheckAuthorization_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_CheckAuthorizationResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_CheckAuthorizationResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_ChainConfig_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_ChainConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_Proof_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_Proof_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_Instruction_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_Instruction_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_Spawn_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_Spawn_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_Invoke_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_Invoke_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_Delete_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_Delete_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_Argument_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_Argument_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_ClientTransaction_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_ClientTransaction_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_TxResult_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_TxResult_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_StateChange_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_StateChange_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_Coin_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_Coin_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_StreamingRequest_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_StreamingRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_StreamingResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_StreamingResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_PaginateRequest_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_PaginateRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_PaginateResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_PaginateResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DownloadState_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DownloadState_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DownloadStateResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DownloadStateResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DBKeyValue_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DBKeyValue_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_StateChangeBody_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_StateChangeBody_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetSignerCounters_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetSignerCounters_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetSignerCountersResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetSignerCountersResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetInstanceVersion_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetInstanceVersion_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetLastInstanceVersion_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetLastInstanceVersion_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetInstanceVersionResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetInstanceVersionResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetAllInstanceVersion_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetAllInstanceVersion_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetAllInstanceVersionResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetAllInstanceVersionResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_CheckStateChangeValidity_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_CheckStateChangeValidity_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_CheckStateChangeValidityResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_CheckStateChangeValidityResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_ResolveInstanceID_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_ResolveInstanceID_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_ResolvedInstanceID_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_ResolvedInstanceID_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DebugRequest_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DebugRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DebugResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DebugResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DebugResponseByzcoin_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DebugResponseByzcoin_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DebugResponseState_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DebugResponseState_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_DebugRemoveRequest_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_DebugRemoveRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_IDVersion_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_IDVersion_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetUpdatesRequest_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetUpdatesRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_byzcoin_GetUpdatesReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_byzcoin_GetUpdatesReply_fieldAccessorTable;
 
diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/Calypso.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/Calypso.java
index 15293ba6c4..a9ba323bca 100644
--- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/Calypso.java
+++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/Calypso.java
@@ -1839,7 +1839,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostOrBuilder() {
        * optional .byzcoin.Coin cost = 9;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> 
           getCostFieldBuilder() {
         if (costBuilder_ == null) {
           costBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -5298,7 +5298,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder getProofOrBuilder() {
        * required .byzcoin.Proof proof = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> 
           getProofFieldBuilder() {
         if (proofBuilder_ == null) {
           proofBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -6752,7 +6752,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder getProofOrBuilder() {
        * required .byzcoin.Proof proof = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> 
           getProofFieldBuilder() {
         if (proofBuilder_ == null) {
           proofBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -7834,7 +7834,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder getProofOrBuilder() {
        * required .byzcoin.Proof proof = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> 
           getProofFieldBuilder() {
         if (proofBuilder_ == null) {
           proofBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -9102,7 +9102,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder getReadOrBuilder() {
        * required .byzcoin.Proof read = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> 
           getReadFieldBuilder() {
         if (readBuilder_ == null) {
           readBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -9258,7 +9258,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder getWriteOrBuilder() {
        * required .byzcoin.Proof write = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder>
+          ch.epfl.dedis.lib.proto.ByzCoinProto.Proof, ch.epfl.dedis.lib.proto.ByzCoinProto.Proof.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.ProofOrBuilder> 
           getWriteFieldBuilder() {
         if (writeBuilder_ == null) {
           writeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -11346,7 +11346,7 @@ public ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder getRosterOrBuilder() {
        * required .onet.Roster roster = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder>
+          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder> 
           getRosterFieldBuilder() {
         if (rosterBuilder_ == null) {
           rosterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -11413,82 +11413,82 @@ public ch.epfl.dedis.lib.proto.Calypso.LtsInstanceInfo getDefaultInstanceForType
 
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_Write_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_Write_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_Read_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_Read_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_Authorise_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_Authorise_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_AuthoriseReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_AuthoriseReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_Authorize_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_Authorize_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_AuthorizeReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_AuthorizeReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_CreateLTS_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_CreateLTS_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_CreateLTSReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_CreateLTSReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_ReshareLTS_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_ReshareLTS_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_ReshareLTSReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_ReshareLTSReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_UpdateValidPeers_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_UpdateValidPeers_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_UpdateValidPeersReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_UpdateValidPeersReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_DecryptKey_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_DecryptKey_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_DecryptKeyReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_DecryptKeyReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_GetLTSReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_GetLTSReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_calypso_LtsInstanceInfo_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_calypso_LtsInstanceInfo_fieldAccessorTable;
 
diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/DarcProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/DarcProto.java
index a5382a32d8..688d26ff53 100644
--- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/DarcProto.java
+++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/DarcProto.java
@@ -138,7 +138,7 @@ public interface DarcOrBuilder extends
      *
      * repeated .darc.Signature signatures = 6;
      */
-    java.util.List
+    java.util.List 
         getSignaturesList();
     /**
      * 
@@ -169,7 +169,7 @@ public interface DarcOrBuilder extends
      *
      * repeated .darc.Signature signatures = 6;
      */
-    java.util.List
+    java.util.List 
         getSignaturesOrBuilderList();
     /**
      * 
@@ -192,7 +192,7 @@ ch.epfl.dedis.lib.proto.DarcProto.SignatureOrBuilder getSignaturesOrBuilder(
      *
      * repeated .darc.Darc verificationdarcs = 7;
      */
-    java.util.List
+    java.util.List 
         getVerificationdarcsList();
     /**
      * 
@@ -223,7 +223,7 @@ ch.epfl.dedis.lib.proto.DarcProto.SignatureOrBuilder getSignaturesOrBuilder(
      *
      * repeated .darc.Darc verificationdarcs = 7;
      */
-    java.util.List
+    java.util.List 
         getVerificationdarcsOrBuilderList();
     /**
      * 
@@ -563,7 +563,7 @@ public java.util.List getSignatures
      * repeated .darc.Signature signatures = 6;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getSignaturesOrBuilderList() {
       return signatures_;
     }
@@ -633,7 +633,7 @@ public java.util.List getVerificationdar
      * repeated .darc.Darc verificationdarcs = 7;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getVerificationdarcsOrBuilderList() {
       return verificationdarcs_;
     }
@@ -1186,7 +1186,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.Darc other) {
               signaturesBuilder_ = null;
               signatures_ = other.signatures_;
               bitField0_ = (bitField0_ & ~0x00000020);
-              signaturesBuilder_ =
+              signaturesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getSignaturesFieldBuilder() : null;
             } else {
@@ -1212,7 +1212,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.Darc other) {
               verificationdarcsBuilder_ = null;
               verificationdarcs_ = other.verificationdarcs_;
               bitField0_ = (bitField0_ & ~0x00000040);
-              verificationdarcsBuilder_ =
+              verificationdarcsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getVerificationdarcsFieldBuilder() : null;
             } else {
@@ -1663,7 +1663,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.RulesOrBuilder getRulesOrBuilder() {
        * required .darc.Rules rules = 5;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.DarcProto.Rules, ch.epfl.dedis.lib.proto.DarcProto.Rules.Builder, ch.epfl.dedis.lib.proto.DarcProto.RulesOrBuilder>
+          ch.epfl.dedis.lib.proto.DarcProto.Rules, ch.epfl.dedis.lib.proto.DarcProto.Rules.Builder, ch.epfl.dedis.lib.proto.DarcProto.RulesOrBuilder> 
           getRulesFieldBuilder() {
         if (rulesBuilder_ == null) {
           rulesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -1961,7 +1961,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.SignatureOrBuilder getSignaturesOrBuild
        *
        * repeated .darc.Signature signatures = 6;
        */
-      public java.util.List
+      public java.util.List 
            getSignaturesOrBuilderList() {
         if (signaturesBuilder_ != null) {
           return signaturesBuilder_.getMessageOrBuilderList();
@@ -2005,12 +2005,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.Signature.Builder addSignaturesBuilder(
        *
        * repeated .darc.Signature signatures = 6;
        */
-      public java.util.List
+      public java.util.List 
            getSignaturesBuilderList() {
         return getSignaturesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.DarcProto.Signature, ch.epfl.dedis.lib.proto.DarcProto.Signature.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignatureOrBuilder>
+          ch.epfl.dedis.lib.proto.DarcProto.Signature, ch.epfl.dedis.lib.proto.DarcProto.Signature.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignatureOrBuilder> 
           getSignaturesFieldBuilder() {
         if (signaturesBuilder_ == null) {
           signaturesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -2309,7 +2309,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.DarcOrBuilder getVerificationdarcsOrBui
        *
        * repeated .darc.Darc verificationdarcs = 7;
        */
-      public java.util.List
+      public java.util.List 
            getVerificationdarcsOrBuilderList() {
         if (verificationdarcsBuilder_ != null) {
           return verificationdarcsBuilder_.getMessageOrBuilderList();
@@ -2353,12 +2353,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.Darc.Builder addVerificationdarcsBuilde
        *
        * repeated .darc.Darc verificationdarcs = 7;
        */
-      public java.util.List
+      public java.util.List 
            getVerificationdarcsBuilderList() {
         return getVerificationdarcsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.DarcProto.Darc, ch.epfl.dedis.lib.proto.DarcProto.Darc.Builder, ch.epfl.dedis.lib.proto.DarcProto.DarcOrBuilder>
+          ch.epfl.dedis.lib.proto.DarcProto.Darc, ch.epfl.dedis.lib.proto.DarcProto.Darc.Builder, ch.epfl.dedis.lib.proto.DarcProto.DarcOrBuilder> 
           getVerificationdarcsFieldBuilder() {
         if (verificationdarcsBuilder_ == null) {
           verificationdarcsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -2589,6 +2589,33 @@ public interface IdentityOrBuilder extends
      * optional .darc.IdentityDID did = 6;
      */
     ch.epfl.dedis.lib.proto.DarcProto.IdentityDIDOrBuilder getDidOrBuilder();
+
+    /**
+     * 
+     * Public-key identity from an ECDSA key
+     * 
+ * + * optional .darc.IdentityTSM tsm = 7; + * @return Whether the tsm field is set. + */ + boolean hasTsm(); + /** + *
+     * Public-key identity from an ECDSA key
+     * 
+ * + * optional .darc.IdentityTSM tsm = 7; + * @return The tsm. + */ + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM getTsm(); + /** + *
+     * Public-key identity from an ECDSA key
+     * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSMOrBuilder getTsmOrBuilder(); } /** *
@@ -2719,6 +2746,19 @@ private Identity(
               bitField0_ |= 0x00000020;
               break;
             }
+            case 58: {
+              ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) != 0)) {
+                subBuilder = tsm_.toBuilder();
+              }
+              tsm_ = input.readMessage(ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tsm_);
+                tsm_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -2980,6 +3020,44 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityDIDOrBuilder getDidOrBuilder()
       return did_ == null ? ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.getDefaultInstance() : did_;
     }
 
+    public static final int TSM_FIELD_NUMBER = 7;
+    private ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM tsm_;
+    /**
+     * 
+     * Public-key identity from an ECDSA key
+     * 
+ * + * optional .darc.IdentityTSM tsm = 7; + * @return Whether the tsm field is set. + */ + @java.lang.Override + public boolean hasTsm() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + *
+     * Public-key identity from an ECDSA key
+     * 
+ * + * optional .darc.IdentityTSM tsm = 7; + * @return The tsm. + */ + @java.lang.Override + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM getTsm() { + return tsm_ == null ? ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.getDefaultInstance() : tsm_; + } + /** + *
+     * Public-key identity from an ECDSA key
+     * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + @java.lang.Override + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSMOrBuilder getTsmOrBuilder() { + return tsm_ == null ? ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.getDefaultInstance() : tsm_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -3023,6 +3101,12 @@ public final boolean isInitialized() { return false; } } + if (hasTsm()) { + if (!getTsm().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } memoizedIsInitialized = 1; return true; } @@ -3048,6 +3132,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (((bitField0_ & 0x00000020) != 0)) { output.writeMessage(6, getDid()); } + if (((bitField0_ & 0x00000040) != 0)) { + output.writeMessage(7, getTsm()); + } unknownFields.writeTo(output); } @@ -3081,6 +3168,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, getDid()); } + if (((bitField0_ & 0x00000040) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, getTsm()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -3126,6 +3217,11 @@ public boolean equals(final java.lang.Object obj) { if (!getDid() .equals(other.getDid())) return false; } + if (hasTsm() != other.hasTsm()) return false; + if (hasTsm()) { + if (!getTsm() + .equals(other.getTsm())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -3161,6 +3257,10 @@ public int hashCode() { hash = (37 * hash) + DID_FIELD_NUMBER; hash = (53 * hash) + getDid().hashCode(); } + if (hasTsm()) { + hash = (37 * hash) + TSM_FIELD_NUMBER; + hash = (53 * hash) + getTsm().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -3300,6 +3400,7 @@ private void maybeForceBuilderInitialization() { getProxyFieldBuilder(); getEvmcontractFieldBuilder(); getDidFieldBuilder(); + getTsmFieldBuilder(); } } @java.lang.Override @@ -3341,6 +3442,12 @@ public Builder clear() { didBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000020); + if (tsmBuilder_ == null) { + tsm_ = null; + } else { + tsmBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -3417,6 +3524,14 @@ public ch.epfl.dedis.lib.proto.DarcProto.Identity buildPartial() { } to_bitField0_ |= 0x00000020; } + if (((from_bitField0_ & 0x00000040) != 0)) { + if (tsmBuilder_ == null) { + result.tsm_ = tsm_; + } else { + result.tsm_ = tsmBuilder_.build(); + } + to_bitField0_ |= 0x00000040; + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -3484,6 +3599,9 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.Identity other) { if (other.hasDid()) { mergeDid(other.getDid()); } + if (other.hasTsm()) { + mergeTsm(other.getTsm()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -3521,6 +3639,11 @@ public final boolean isInitialized() { return false; } } + if (hasTsm()) { + if (!getTsm().isInitialized()) { + return false; + } + } return true; } @@ -3687,7 +3810,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityDarcOrBuilder getDarcOrBuilder( * optional .darc.IdentityDarc darc = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.IdentityDarc, ch.epfl.dedis.lib.proto.DarcProto.IdentityDarc.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityDarcOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.IdentityDarc, ch.epfl.dedis.lib.proto.DarcProto.IdentityDarc.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityDarcOrBuilder> getDarcFieldBuilder() { if (darcBuilder_ == null) { darcBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -3843,7 +3966,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519OrBuilder getEd25519OrBu * optional .darc.IdentityEd25519 ed25519 = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519, ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519OrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519, ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519OrBuilder> getEd25519FieldBuilder() { if (ed25519Builder_ == null) { ed25519Builder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -3999,7 +4122,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityX509ECOrBuilder getX509EcOrBuil * optional .darc.IdentityX509EC x509ec = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.IdentityX509EC, ch.epfl.dedis.lib.proto.DarcProto.IdentityX509EC.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityX509ECOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.IdentityX509EC, ch.epfl.dedis.lib.proto.DarcProto.IdentityX509EC.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityX509ECOrBuilder> getX509EcFieldBuilder() { if (x509EcBuilder_ == null) { x509EcBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -4155,7 +4278,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityProxyOrBuilder getProxyOrBuilde * optional .darc.IdentityProxy proxy = 4; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.IdentityProxy, ch.epfl.dedis.lib.proto.DarcProto.IdentityProxy.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityProxyOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.IdentityProxy, ch.epfl.dedis.lib.proto.DarcProto.IdentityProxy.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityProxyOrBuilder> getProxyFieldBuilder() { if (proxyBuilder_ == null) { proxyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -4311,7 +4434,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityEvmContractOrBuilder getEvmcont * optional .darc.IdentityEvmContract evmcontract = 5; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.IdentityEvmContract, ch.epfl.dedis.lib.proto.DarcProto.IdentityEvmContract.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityEvmContractOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.IdentityEvmContract, ch.epfl.dedis.lib.proto.DarcProto.IdentityEvmContract.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityEvmContractOrBuilder> getEvmcontractFieldBuilder() { if (evmcontractBuilder_ == null) { evmcontractBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -4439,45 +4562,743 @@ public Builder clearDid() { * * optional .darc.IdentityDID did = 6; */ - public ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.Builder getDidBuilder() { - bitField0_ |= 0x00000020; - onChanged(); - return getDidFieldBuilder().getBuilder(); + public ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.Builder getDidBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return getDidFieldBuilder().getBuilder(); + } + /** + *
+       * A claim signed by one of the keys in a DID Doc
+       * 
+ * + * optional .darc.IdentityDID did = 6; + */ + public ch.epfl.dedis.lib.proto.DarcProto.IdentityDIDOrBuilder getDidOrBuilder() { + if (didBuilder_ != null) { + return didBuilder_.getMessageOrBuilder(); + } else { + return did_ == null ? + ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.getDefaultInstance() : did_; + } + } + /** + *
+       * A claim signed by one of the keys in a DID Doc
+       * 
+ * + * optional .darc.IdentityDID did = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + ch.epfl.dedis.lib.proto.DarcProto.IdentityDID, ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityDIDOrBuilder> + getDidFieldBuilder() { + if (didBuilder_ == null) { + didBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + ch.epfl.dedis.lib.proto.DarcProto.IdentityDID, ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityDIDOrBuilder>( + getDid(), + getParentForChildren(), + isClean()); + did_ = null; + } + return didBuilder_; + } + + private ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM tsm_; + private com.google.protobuf.SingleFieldBuilderV3< + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM, ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityTSMOrBuilder> tsmBuilder_; + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + * @return Whether the tsm field is set. + */ + public boolean hasTsm() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + * @return The tsm. + */ + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM getTsm() { + if (tsmBuilder_ == null) { + return tsm_ == null ? ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.getDefaultInstance() : tsm_; + } else { + return tsmBuilder_.getMessage(); + } + } + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + public Builder setTsm(ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM value) { + if (tsmBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + tsm_ = value; + onChanged(); + } else { + tsmBuilder_.setMessage(value); + } + bitField0_ |= 0x00000040; + return this; + } + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + public Builder setTsm( + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.Builder builderForValue) { + if (tsmBuilder_ == null) { + tsm_ = builderForValue.build(); + onChanged(); + } else { + tsmBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000040; + return this; + } + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + public Builder mergeTsm(ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM value) { + if (tsmBuilder_ == null) { + if (((bitField0_ & 0x00000040) != 0) && + tsm_ != null && + tsm_ != ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.getDefaultInstance()) { + tsm_ = + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.newBuilder(tsm_).mergeFrom(value).buildPartial(); + } else { + tsm_ = value; + } + onChanged(); + } else { + tsmBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000040; + return this; + } + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + public Builder clearTsm() { + if (tsmBuilder_ == null) { + tsm_ = null; + onChanged(); + } else { + tsmBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000040); + return this; + } + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.Builder getTsmBuilder() { + bitField0_ |= 0x00000040; + onChanged(); + return getTsmFieldBuilder().getBuilder(); + } + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSMOrBuilder getTsmOrBuilder() { + if (tsmBuilder_ != null) { + return tsmBuilder_.getMessageOrBuilder(); + } else { + return tsm_ == null ? + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.getDefaultInstance() : tsm_; + } + } + /** + *
+       * Public-key identity from an ECDSA key
+       * 
+ * + * optional .darc.IdentityTSM tsm = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM, ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityTSMOrBuilder> + getTsmFieldBuilder() { + if (tsmBuilder_ == null) { + tsmBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM, ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityTSMOrBuilder>( + getTsm(), + getParentForChildren(), + isClean()); + tsm_ = null; + } + return tsmBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:darc.Identity) + } + + // @@protoc_insertion_point(class_scope:darc.Identity) + private static final ch.epfl.dedis.lib.proto.DarcProto.Identity DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new ch.epfl.dedis.lib.proto.DarcProto.Identity(); + } + + public static ch.epfl.dedis.lib.proto.DarcProto.Identity getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Identity parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Identity(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public ch.epfl.dedis.lib.proto.DarcProto.Identity getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface IdentityEd25519OrBuilder extends + // @@protoc_insertion_point(interface_extends:darc.IdentityEd25519) + com.google.protobuf.MessageOrBuilder { + + /** + * required bytes point = 1; + * @return Whether the point field is set. + */ + boolean hasPoint(); + /** + * required bytes point = 1; + * @return The point. + */ + com.google.protobuf.ByteString getPoint(); + } + /** + *
+   * IdentityEd25519 holds a Ed25519 public key (Point)
+   * 
+ * + * Protobuf type {@code darc.IdentityEd25519} + */ + public static final class IdentityEd25519 extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:darc.IdentityEd25519) + IdentityEd25519OrBuilder { + private static final long serialVersionUID = 0L; + // Use IdentityEd25519.newBuilder() to construct. + private IdentityEd25519(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private IdentityEd25519() { + point_ = com.google.protobuf.ByteString.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new IdentityEd25519(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private IdentityEd25519( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + bitField0_ |= 0x00000001; + point_ = input.readBytes(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_fieldAccessorTable + .ensureFieldAccessorsInitialized( + ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.class, ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.Builder.class); + } + + private int bitField0_; + public static final int POINT_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString point_; + /** + * required bytes point = 1; + * @return Whether the point field is set. + */ + @java.lang.Override + public boolean hasPoint() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * required bytes point = 1; + * @return The point. + */ + @java.lang.Override + public com.google.protobuf.ByteString getPoint() { + return point_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasPoint()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeBytes(1, point_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, point_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519)) { + return super.equals(obj); + } + ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 other = (ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519) obj; + + if (hasPoint() != other.hasPoint()) return false; + if (hasPoint()) { + if (!getPoint() + .equals(other.getPoint())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasPoint()) { + hash = (37 * hash) + POINT_FIELD_NUMBER; + hash = (53 * hash) + getPoint().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * IdentityEd25519 holds a Ed25519 public key (Point)
+     * 
+ * + * Protobuf type {@code darc.IdentityEd25519} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:darc.IdentityEd25519) + ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519OrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_fieldAccessorTable + .ensureFieldAccessorsInitialized( + ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.class, ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.Builder.class); + } + + // Construct using ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + point_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_descriptor; + } + + @java.lang.Override + public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 getDefaultInstanceForType() { + return ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.getDefaultInstance(); + } + + @java.lang.Override + public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 build() { + ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 buildPartial() { + ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 result = new ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + to_bitField0_ |= 0x00000001; + } + result.point_ = point_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519) { + return mergeFrom((ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 other) { + if (other == ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.getDefaultInstance()) return this; + if (other.hasPoint()) { + setPoint(other.getPoint()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + if (!hasPoint()) { + return false; + } + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private com.google.protobuf.ByteString point_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes point = 1; + * @return Whether the point field is set. + */ + @java.lang.Override + public boolean hasPoint() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * required bytes point = 1; + * @return The point. + */ + @java.lang.Override + public com.google.protobuf.ByteString getPoint() { + return point_; } /** - *
-       * A claim signed by one of the keys in a DID Doc
-       * 
- * - * optional .darc.IdentityDID did = 6; + * required bytes point = 1; + * @param value The point to set. + * @return This builder for chaining. */ - public ch.epfl.dedis.lib.proto.DarcProto.IdentityDIDOrBuilder getDidOrBuilder() { - if (didBuilder_ != null) { - return didBuilder_.getMessageOrBuilder(); - } else { - return did_ == null ? - ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.getDefaultInstance() : did_; - } + public Builder setPoint(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + point_ = value; + onChanged(); + return this; } /** - *
-       * A claim signed by one of the keys in a DID Doc
-       * 
- * - * optional .darc.IdentityDID did = 6; + * required bytes point = 1; + * @return This builder for chaining. */ - private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.IdentityDID, ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityDIDOrBuilder> - getDidFieldBuilder() { - if (didBuilder_ == null) { - didBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.IdentityDID, ch.epfl.dedis.lib.proto.DarcProto.IdentityDID.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityDIDOrBuilder>( - getDid(), - getParentForChildren(), - isClean()); - did_ = null; - } - return didBuilder_; + public Builder clearPoint() { + bitField0_ = (bitField0_ & ~0x00000001); + point_ = getDefaultInstance().getPoint(); + onChanged(); + return this; } @java.lang.Override public final Builder setUnknownFields( @@ -4492,86 +5313,86 @@ public final Builder mergeUnknownFields( } - // @@protoc_insertion_point(builder_scope:darc.Identity) + // @@protoc_insertion_point(builder_scope:darc.IdentityEd25519) } - // @@protoc_insertion_point(class_scope:darc.Identity) - private static final ch.epfl.dedis.lib.proto.DarcProto.Identity DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:darc.IdentityEd25519) + private static final ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new ch.epfl.dedis.lib.proto.DarcProto.Identity(); + DEFAULT_INSTANCE = new ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519(); } - public static ch.epfl.dedis.lib.proto.DarcProto.Identity getDefaultInstance() { + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 getDefaultInstance() { return DEFAULT_INSTANCE; } - @java.lang.Deprecated public static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public Identity parsePartialFrom( + public IdentityEd25519 parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Identity(input, extensionRegistry); + return new IdentityEd25519(input, extensionRegistry); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public ch.epfl.dedis.lib.proto.DarcProto.Identity getDefaultInstanceForType() { + public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface IdentityEd25519OrBuilder extends - // @@protoc_insertion_point(interface_extends:darc.IdentityEd25519) + public interface IdentityTSMOrBuilder extends + // @@protoc_insertion_point(interface_extends:darc.IdentityTSM) com.google.protobuf.MessageOrBuilder { /** - * required bytes point = 1; - * @return Whether the point field is set. + * required bytes publickey = 1; + * @return Whether the publickey field is set. */ - boolean hasPoint(); + boolean hasPublickey(); /** - * required bytes point = 1; - * @return The point. + * required bytes publickey = 1; + * @return The publickey. */ - com.google.protobuf.ByteString getPoint(); + com.google.protobuf.ByteString getPublickey(); } /** *
-   * IdentityEd25519 holds a Ed25519 public key (Point)
+   * IdentityTSM holds a secp256k1 key (array of bytes)
    * 
* - * Protobuf type {@code darc.IdentityEd25519} + * Protobuf type {@code darc.IdentityTSM} */ - public static final class IdentityEd25519 extends + public static final class IdentityTSM extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:darc.IdentityEd25519) - IdentityEd25519OrBuilder { + // @@protoc_insertion_point(message_implements:darc.IdentityTSM) + IdentityTSMOrBuilder { private static final long serialVersionUID = 0L; - // Use IdentityEd25519.newBuilder() to construct. - private IdentityEd25519(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use IdentityTSM.newBuilder() to construct. + private IdentityTSM(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private IdentityEd25519() { - point_ = com.google.protobuf.ByteString.EMPTY; + private IdentityTSM() { + publickey_ = com.google.protobuf.ByteString.EMPTY; } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance( UnusedPrivateParameter unused) { - return new IdentityEd25519(); + return new IdentityTSM(); } @java.lang.Override @@ -4579,7 +5400,7 @@ protected java.lang.Object newInstance( getUnknownFields() { return this.unknownFields; } - private IdentityEd25519( + private IdentityTSM( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { @@ -4600,7 +5421,7 @@ private IdentityEd25519( break; case 10: { bitField0_ |= 0x00000001; - point_ = input.readBytes(); + publickey_ = input.readBytes(); break; } default: { @@ -4624,35 +5445,35 @@ private IdentityEd25519( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_descriptor; + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityTSM_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_fieldAccessorTable + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityTSM_fieldAccessorTable .ensureFieldAccessorsInitialized( - ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.class, ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.Builder.class); + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.class, ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.Builder.class); } private int bitField0_; - public static final int POINT_FIELD_NUMBER = 1; - private com.google.protobuf.ByteString point_; + public static final int PUBLICKEY_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString publickey_; /** - * required bytes point = 1; - * @return Whether the point field is set. + * required bytes publickey = 1; + * @return Whether the publickey field is set. */ @java.lang.Override - public boolean hasPoint() { + public boolean hasPublickey() { return ((bitField0_ & 0x00000001) != 0); } /** - * required bytes point = 1; - * @return The point. + * required bytes publickey = 1; + * @return The publickey. */ @java.lang.Override - public com.google.protobuf.ByteString getPoint() { - return point_; + public com.google.protobuf.ByteString getPublickey() { + return publickey_; } private byte memoizedIsInitialized = -1; @@ -4662,7 +5483,7 @@ public final boolean isInitialized() { if (isInitialized == 1) return true; if (isInitialized == 0) return false; - if (!hasPoint()) { + if (!hasPublickey()) { memoizedIsInitialized = 0; return false; } @@ -4674,7 +5495,7 @@ public final boolean isInitialized() { public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (((bitField0_ & 0x00000001) != 0)) { - output.writeBytes(1, point_); + output.writeBytes(1, publickey_); } unknownFields.writeTo(output); } @@ -4687,7 +5508,7 @@ public int getSerializedSize() { size = 0; if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, point_); + .computeBytesSize(1, publickey_); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -4699,15 +5520,15 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519)) { + if (!(obj instanceof ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM)) { return super.equals(obj); } - ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 other = (ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519) obj; + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM other = (ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM) obj; - if (hasPoint() != other.hasPoint()) return false; - if (hasPoint()) { - if (!getPoint() - .equals(other.getPoint())) return false; + if (hasPublickey() != other.hasPublickey()) return false; + if (hasPublickey()) { + if (!getPublickey() + .equals(other.getPublickey())) return false; } if (!unknownFields.equals(other.unknownFields)) return false; return true; @@ -4720,78 +5541,78 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasPoint()) { - hash = (37 * hash) + POINT_FIELD_NUMBER; - hash = (53 * hash) + getPoint().hashCode(); + if (hasPublickey()) { + hash = (37 * hash) + PUBLICKEY_FIELD_NUMBER; + hash = (53 * hash) + getPublickey().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom(byte[] data) + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom(java.io.InputStream input) + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseDelimitedFrom(java.io.InputStream input) + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseDelimitedFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4804,7 +5625,7 @@ public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parseFrom( public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 prototype) { + public static Builder newBuilder(ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -4821,29 +5642,29 @@ protected Builder newBuilderForType( } /** *
-     * IdentityEd25519 holds a Ed25519 public key (Point)
+     * IdentityTSM holds a secp256k1 key (array of bytes)
      * 
* - * Protobuf type {@code darc.IdentityEd25519} + * Protobuf type {@code darc.IdentityTSM} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:darc.IdentityEd25519) - ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519OrBuilder { + // @@protoc_insertion_point(builder_implements:darc.IdentityTSM) + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSMOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_descriptor; + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityTSM_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_fieldAccessorTable + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityTSM_fieldAccessorTable .ensureFieldAccessorsInitialized( - ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.class, ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.Builder.class); + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.class, ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.Builder.class); } - // Construct using ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.newBuilder() + // Construct using ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -4861,7 +5682,7 @@ private void maybeForceBuilderInitialization() { @java.lang.Override public Builder clear() { super.clear(); - point_ = com.google.protobuf.ByteString.EMPTY; + publickey_ = com.google.protobuf.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -4869,17 +5690,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityEd25519_descriptor; + return ch.epfl.dedis.lib.proto.DarcProto.internal_static_darc_IdentityTSM_descriptor; } @java.lang.Override - public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 getDefaultInstanceForType() { - return ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.getDefaultInstance(); + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM getDefaultInstanceForType() { + return ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.getDefaultInstance(); } @java.lang.Override - public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 build() { - ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 result = buildPartial(); + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM build() { + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -4887,14 +5708,14 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 build() { } @java.lang.Override - public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 buildPartial() { - ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 result = new ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519(this); + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM buildPartial() { + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM result = new ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { to_bitField0_ |= 0x00000001; } - result.point_ = point_; + result.publickey_ = publickey_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -4934,18 +5755,18 @@ public Builder addRepeatedField( } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519) { - return mergeFrom((ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519)other); + if (other instanceof ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM) { + return mergeFrom((ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 other) { - if (other == ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519.getDefaultInstance()) return this; - if (other.hasPoint()) { - setPoint(other.getPoint()); + public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM other) { + if (other == ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM.getDefaultInstance()) return this; + if (other.hasPublickey()) { + setPublickey(other.getPublickey()); } this.mergeUnknownFields(other.unknownFields); onChanged(); @@ -4954,7 +5775,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 other @java.lang.Override public final boolean isInitialized() { - if (!hasPoint()) { + if (!hasPublickey()) { return false; } return true; @@ -4965,11 +5786,11 @@ public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 parsedMessage = null; + ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519) e.getUnfinishedMessage(); + parsedMessage = (ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { @@ -4980,44 +5801,44 @@ public Builder mergeFrom( } private int bitField0_; - private com.google.protobuf.ByteString point_ = com.google.protobuf.ByteString.EMPTY; + private com.google.protobuf.ByteString publickey_ = com.google.protobuf.ByteString.EMPTY; /** - * required bytes point = 1; - * @return Whether the point field is set. + * required bytes publickey = 1; + * @return Whether the publickey field is set. */ @java.lang.Override - public boolean hasPoint() { + public boolean hasPublickey() { return ((bitField0_ & 0x00000001) != 0); } /** - * required bytes point = 1; - * @return The point. + * required bytes publickey = 1; + * @return The publickey. */ @java.lang.Override - public com.google.protobuf.ByteString getPoint() { - return point_; + public com.google.protobuf.ByteString getPublickey() { + return publickey_; } /** - * required bytes point = 1; - * @param value The point to set. + * required bytes publickey = 1; + * @param value The publickey to set. * @return This builder for chaining. */ - public Builder setPoint(com.google.protobuf.ByteString value) { + public Builder setPublickey(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } bitField0_ |= 0x00000001; - point_ = value; + publickey_ = value; onChanged(); return this; } /** - * required bytes point = 1; + * required bytes publickey = 1; * @return This builder for chaining. */ - public Builder clearPoint() { + public Builder clearPublickey() { bitField0_ = (bitField0_ & ~0x00000001); - point_ = getDefaultInstance().getPoint(); + publickey_ = getDefaultInstance().getPublickey(); onChanged(); return this; } @@ -5034,41 +5855,41 @@ public final Builder mergeUnknownFields( } - // @@protoc_insertion_point(builder_scope:darc.IdentityEd25519) + // @@protoc_insertion_point(builder_scope:darc.IdentityTSM) } - // @@protoc_insertion_point(class_scope:darc.IdentityEd25519) - private static final ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:darc.IdentityTSM) + private static final ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519(); + DEFAULT_INSTANCE = new ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM(); } - public static ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 getDefaultInstance() { + public static ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM getDefaultInstance() { return DEFAULT_INSTANCE; } - @java.lang.Deprecated public static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public IdentityEd25519 parsePartialFrom( + public IdentityTSM parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new IdentityEd25519(input, extensionRegistry); + return new IdentityTSM(input, extensionRegistry); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public ch.epfl.dedis.lib.proto.DarcProto.IdentityEd25519 getDefaultInstanceForType() { + public ch.epfl.dedis.lib.proto.DarcProto.IdentityTSM getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -5765,7 +6586,7 @@ public java.lang.String getData() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -5783,7 +6604,7 @@ public java.lang.String getData() { getDataBytes() { java.lang.Object ref = data_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); data_ = b; @@ -6205,7 +7026,7 @@ public java.lang.String getData() { getDataBytes() { java.lang.Object ref = data_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); data_ = b; @@ -7683,7 +8504,7 @@ public java.lang.String getDid() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -7701,7 +8522,7 @@ public java.lang.String getDid() { getDidBytes() { java.lang.Object ref = did_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); did_ = b; @@ -7757,7 +8578,7 @@ public java.lang.String getMethod() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -7775,7 +8596,7 @@ public java.lang.String getMethod() { getMethodBytes() { java.lang.Object ref = method_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); method_ = b; @@ -8224,7 +9045,7 @@ public java.lang.String getDid() { getDidBytes() { java.lang.Object ref = did_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); did_ = b; @@ -8381,7 +9202,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.DIDDocOrBuilder getDiddocOrBuilder() { * optional .darc.DIDDoc diddoc = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.DIDDoc, ch.epfl.dedis.lib.proto.DarcProto.DIDDoc.Builder, ch.epfl.dedis.lib.proto.DarcProto.DIDDocOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.DIDDoc, ch.epfl.dedis.lib.proto.DarcProto.DIDDoc.Builder, ch.epfl.dedis.lib.proto.DarcProto.DIDDocOrBuilder> getDiddocFieldBuilder() { if (diddocBuilder_ == null) { diddocBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -8428,7 +9249,7 @@ public java.lang.String getMethod() { getMethodBytes() { java.lang.Object ref = method_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); method_ = b; @@ -8579,7 +9400,7 @@ public interface DIDDocOrBuilder extends /** * repeated .darc.PublicKey publickey = 3; */ - java.util.List + java.util.List getPublickeyList(); /** * repeated .darc.PublicKey publickey = 3; @@ -8592,7 +9413,7 @@ public interface DIDDocOrBuilder extends /** * repeated .darc.PublicKey publickey = 3; */ - java.util.List + java.util.List getPublickeyOrBuilderList(); /** * repeated .darc.PublicKey publickey = 3; @@ -8603,7 +9424,7 @@ ch.epfl.dedis.lib.proto.DarcProto.PublicKeyOrBuilder getPublickeyOrBuilder( /** * repeated .darc.DIDService service = 4; */ - java.util.List + java.util.List getServiceList(); /** * repeated .darc.DIDService service = 4; @@ -8616,7 +9437,7 @@ ch.epfl.dedis.lib.proto.DarcProto.PublicKeyOrBuilder getPublickeyOrBuilder( /** * repeated .darc.DIDService service = 4; */ - java.util.List + java.util.List getServiceOrBuilderList(); /** * repeated .darc.DIDService service = 4; @@ -8627,7 +9448,7 @@ ch.epfl.dedis.lib.proto.DarcProto.DIDServiceOrBuilder getServiceOrBuilder( /** * repeated .darc.VerificationMethod authentication = 5; */ - java.util.List + java.util.List getAuthenticationList(); /** * repeated .darc.VerificationMethod authentication = 5; @@ -8640,7 +9461,7 @@ ch.epfl.dedis.lib.proto.DarcProto.DIDServiceOrBuilder getServiceOrBuilder( /** * repeated .darc.VerificationMethod authentication = 5; */ - java.util.List + java.util.List getAuthenticationOrBuilderList(); /** * repeated .darc.VerificationMethod authentication = 5; @@ -8845,7 +9666,7 @@ public java.lang.String getId() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -8863,7 +9684,7 @@ public java.lang.String getId() { getIdBytes() { java.lang.Object ref = id_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); id_ = b; @@ -8886,7 +9707,7 @@ public java.util.List getPublickeyL * repeated .darc.PublicKey publickey = 3; */ @java.lang.Override - public java.util.List + public java.util.List getPublickeyOrBuilderList() { return publickey_; } @@ -8926,7 +9747,7 @@ public java.util.List getServiceLi * repeated .darc.DIDService service = 4; */ @java.lang.Override - public java.util.List + public java.util.List getServiceOrBuilderList() { return service_; } @@ -8966,7 +9787,7 @@ public java.util.List getA * repeated .darc.VerificationMethod authentication = 5; */ @java.lang.Override - public java.util.List + public java.util.List getAuthenticationOrBuilderList() { return authentication_; } @@ -9443,7 +10264,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.DIDDoc other) { publickeyBuilder_ = null; publickey_ = other.publickey_; bitField0_ = (bitField0_ & ~0x00000004); - publickeyBuilder_ = + publickeyBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getPublickeyFieldBuilder() : null; } else { @@ -9469,7 +10290,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.DIDDoc other) { serviceBuilder_ = null; service_ = other.service_; bitField0_ = (bitField0_ & ~0x00000008); - serviceBuilder_ = + serviceBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceFieldBuilder() : null; } else { @@ -9495,7 +10316,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.DIDDoc other) { authenticationBuilder_ = null; authentication_ = other.authentication_; bitField0_ = (bitField0_ & ~0x00000010); - authenticationBuilder_ = + authenticationBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getAuthenticationFieldBuilder() : null; } else { @@ -9694,7 +10515,7 @@ public java.lang.String getId() { getIdBytes() { java.lang.Object ref = id_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); id_ = b; @@ -9939,7 +10760,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.PublicKeyOrBuilder getPublickeyOrBuilde /** * repeated .darc.PublicKey publickey = 3; */ - public java.util.List + public java.util.List getPublickeyOrBuilderList() { if (publickeyBuilder_ != null) { return publickeyBuilder_.getMessageOrBuilderList(); @@ -9965,12 +10786,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.PublicKey.Builder addPublickeyBuilder( /** * repeated .darc.PublicKey publickey = 3; */ - public java.util.List + public java.util.List getPublickeyBuilderList() { return getPublickeyFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.PublicKey, ch.epfl.dedis.lib.proto.DarcProto.PublicKey.Builder, ch.epfl.dedis.lib.proto.DarcProto.PublicKeyOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.PublicKey, ch.epfl.dedis.lib.proto.DarcProto.PublicKey.Builder, ch.epfl.dedis.lib.proto.DarcProto.PublicKeyOrBuilder> getPublickeyFieldBuilder() { if (publickeyBuilder_ == null) { publickeyBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -10179,7 +11000,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.DIDServiceOrBuilder getServiceOrBuilder /** * repeated .darc.DIDService service = 4; */ - public java.util.List + public java.util.List getServiceOrBuilderList() { if (serviceBuilder_ != null) { return serviceBuilder_.getMessageOrBuilderList(); @@ -10205,12 +11026,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.DIDService.Builder addServiceBuilder( /** * repeated .darc.DIDService service = 4; */ - public java.util.List + public java.util.List getServiceBuilderList() { return getServiceFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.DIDService, ch.epfl.dedis.lib.proto.DarcProto.DIDService.Builder, ch.epfl.dedis.lib.proto.DarcProto.DIDServiceOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.DIDService, ch.epfl.dedis.lib.proto.DarcProto.DIDService.Builder, ch.epfl.dedis.lib.proto.DarcProto.DIDServiceOrBuilder> getServiceFieldBuilder() { if (serviceBuilder_ == null) { serviceBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -10419,7 +11240,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.VerificationMethodOrBuilder getAuthenti /** * repeated .darc.VerificationMethod authentication = 5; */ - public java.util.List + public java.util.List getAuthenticationOrBuilderList() { if (authenticationBuilder_ != null) { return authenticationBuilder_.getMessageOrBuilderList(); @@ -10445,12 +11266,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.VerificationMethod.Builder addAuthentic /** * repeated .darc.VerificationMethod authentication = 5; */ - public java.util.List + public java.util.List getAuthenticationBuilderList() { return getAuthenticationFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.VerificationMethod, ch.epfl.dedis.lib.proto.DarcProto.VerificationMethod.Builder, ch.epfl.dedis.lib.proto.DarcProto.VerificationMethodOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.VerificationMethod, ch.epfl.dedis.lib.proto.DarcProto.VerificationMethod.Builder, ch.epfl.dedis.lib.proto.DarcProto.VerificationMethodOrBuilder> getAuthenticationFieldBuilder() { if (authenticationBuilder_ == null) { authenticationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -10712,7 +11533,7 @@ public java.lang.String getId() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -10730,7 +11551,7 @@ public java.lang.String getId() { getIdBytes() { java.lang.Object ref = id_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); id_ = b; @@ -10760,7 +11581,7 @@ public java.lang.String getType() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -10778,7 +11599,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -10808,7 +11629,7 @@ public java.lang.String getController() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -10826,7 +11647,7 @@ public java.lang.String getController() { getControllerBytes() { java.lang.Object ref = controller_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); controller_ = b; @@ -11313,7 +12134,7 @@ public java.lang.String getId() { getIdBytes() { java.lang.Object ref = id_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); id_ = b; @@ -11397,7 +12218,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -11481,7 +12302,7 @@ public java.lang.String getController() { getControllerBytes() { java.lang.Object ref = controller_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); controller_ = b; @@ -11896,7 +12717,7 @@ public java.lang.String getId() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -11914,7 +12735,7 @@ public java.lang.String getId() { getIdBytes() { java.lang.Object ref = id_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); id_ = b; @@ -11944,7 +12765,7 @@ public java.lang.String getType() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -11962,7 +12783,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -12081,7 +12902,7 @@ public java.lang.String getServiceendpoint() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -12099,7 +12920,7 @@ public java.lang.String getServiceendpoint() { getServiceendpointBytes() { java.lang.Object ref = serviceendpoint_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); serviceendpoint_ = b; @@ -12635,7 +13456,7 @@ public java.lang.String getId() { getIdBytes() { java.lang.Object ref = id_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); id_ = b; @@ -12719,7 +13540,7 @@ public java.lang.String getType() { getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); type_ = b; @@ -13060,7 +13881,7 @@ public java.lang.String getServiceendpoint() { getServiceendpointBytes() { java.lang.Object ref = serviceendpoint_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); serviceendpoint_ = b; @@ -13751,7 +14572,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.PublicKeyOrBuilder getPublickeyOrBuilde * required .darc.PublicKey publickey = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.PublicKey, ch.epfl.dedis.lib.proto.DarcProto.PublicKey.Builder, ch.epfl.dedis.lib.proto.DarcProto.PublicKeyOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.PublicKey, ch.epfl.dedis.lib.proto.DarcProto.PublicKey.Builder, ch.epfl.dedis.lib.proto.DarcProto.PublicKeyOrBuilder> getPublickeyFieldBuilder() { if (publickeyBuilder_ == null) { publickeyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -14609,7 +15430,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder getSignerOrBuilder() * required .darc.Identity signer = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder> getSignerFieldBuilder() { if (signerBuilder_ == null) { signerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -15656,7 +16477,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.SignerEd25519OrBuilder getEd25519OrBuil * optional .darc.SignerEd25519 ed25519 = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.SignerEd25519, ch.epfl.dedis.lib.proto.DarcProto.SignerEd25519.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerEd25519OrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.SignerEd25519, ch.epfl.dedis.lib.proto.DarcProto.SignerEd25519.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerEd25519OrBuilder> getEd25519FieldBuilder() { if (ed25519Builder_ == null) { ed25519Builder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -15776,7 +16597,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.SignerX509ECOrBuilder getX509EcOrBuilde * optional .darc.SignerX509EC x509ec = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.SignerX509EC, ch.epfl.dedis.lib.proto.DarcProto.SignerX509EC.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerX509ECOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.SignerX509EC, ch.epfl.dedis.lib.proto.DarcProto.SignerX509EC.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerX509ECOrBuilder> getX509EcFieldBuilder() { if (x509EcBuilder_ == null) { x509EcBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -15896,7 +16717,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.SignerProxyOrBuilder getProxyOrBuilder( * optional .darc.SignerProxy proxy = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.SignerProxy, ch.epfl.dedis.lib.proto.DarcProto.SignerProxy.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerProxyOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.SignerProxy, ch.epfl.dedis.lib.proto.DarcProto.SignerProxy.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerProxyOrBuilder> getProxyFieldBuilder() { if (proxyBuilder_ == null) { proxyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -16016,7 +16837,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.SignerEvmContractOrBuilder getEvmcontra * optional .darc.SignerEvmContract evmcontract = 4; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.SignerEvmContract, ch.epfl.dedis.lib.proto.DarcProto.SignerEvmContract.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerEvmContractOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.SignerEvmContract, ch.epfl.dedis.lib.proto.DarcProto.SignerEvmContract.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerEvmContractOrBuilder> getEvmcontractFieldBuilder() { if (evmcontractBuilder_ == null) { evmcontractBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -16136,7 +16957,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.SignerDIDOrBuilder getDidOrBuilder() { * optional .darc.SignerDID did = 5; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.SignerDID, ch.epfl.dedis.lib.proto.DarcProto.SignerDID.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerDIDOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.SignerDID, ch.epfl.dedis.lib.proto.DarcProto.SignerDID.Builder, ch.epfl.dedis.lib.proto.DarcProto.SignerDIDOrBuilder> getDidFieldBuilder() { if (didBuilder_ == null) { didBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -17546,7 +18367,7 @@ public java.lang.String getData() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -17564,7 +18385,7 @@ public java.lang.String getData() { getDataBytes() { java.lang.Object ref = data_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); data_ = b; @@ -17986,7 +18807,7 @@ public java.lang.String getData() { getDataBytes() { java.lang.Object ref = data_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); data_ = b; @@ -18908,7 +19729,7 @@ public java.lang.String getDid() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -18926,7 +19747,7 @@ public java.lang.String getDid() { getDidBytes() { java.lang.Object ref = did_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); did_ = b; @@ -19445,7 +20266,7 @@ public java.lang.String getDid() { getDidBytes() { java.lang.Object ref = did_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); did_ = b; @@ -19593,7 +20414,7 @@ public interface RequestOrBuilder extends /** * repeated .darc.Identity identities = 4; */ - java.util.List + java.util.List getIdentitiesList(); /** * repeated .darc.Identity identities = 4; @@ -19606,7 +20427,7 @@ public interface RequestOrBuilder extends /** * repeated .darc.Identity identities = 4; */ - java.util.List + java.util.List getIdentitiesOrBuilderList(); /** * repeated .darc.Identity identities = 4; @@ -19797,7 +20618,7 @@ public java.lang.String getAction() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -19815,7 +20636,7 @@ public java.lang.String getAction() { getActionBytes() { java.lang.Object ref = action_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); action_ = b; @@ -19857,7 +20678,7 @@ public java.util.List getIdentitiesL * repeated .darc.Identity identities = 4; */ @java.lang.Override - public java.util.List + public java.util.List getIdentitiesOrBuilderList() { return identities_; } @@ -20340,7 +21161,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.Request other) { identitiesBuilder_ = null; identities_ = other.identities_; bitField0_ = (bitField0_ & ~0x00000008); - identitiesBuilder_ = + identitiesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getIdentitiesFieldBuilder() : null; } else { @@ -20478,7 +21299,7 @@ public java.lang.String getAction() { getActionBytes() { java.lang.Object ref = action_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); action_ = b; @@ -20765,7 +21586,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder getIdentitiesOrBuilde /** * repeated .darc.Identity identities = 4; */ - public java.util.List + public java.util.List getIdentitiesOrBuilderList() { if (identitiesBuilder_ != null) { return identitiesBuilder_.getMessageOrBuilderList(); @@ -20791,12 +21612,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder addIdentitiesBuilder( /** * repeated .darc.Identity identities = 4; */ - public java.util.List + public java.util.List getIdentitiesBuilderList() { return getIdentitiesFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder> getIdentitiesFieldBuilder() { if (identitiesBuilder_ == null) { identitiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -20954,7 +21775,7 @@ public interface RulesOrBuilder extends /** * repeated .darc.Rule list = 1; */ - java.util.List + java.util.List getListList(); /** * repeated .darc.Rule list = 1; @@ -20967,7 +21788,7 @@ public interface RulesOrBuilder extends /** * repeated .darc.Rule list = 1; */ - java.util.List + java.util.List getListOrBuilderList(); /** * repeated .darc.Rule list = 1; @@ -21083,7 +21904,7 @@ public java.util.List getListList() { * repeated .darc.Rule list = 1; */ @java.lang.Override - public java.util.List + public java.util.List getListOrBuilderList() { return list_; } @@ -21424,7 +22245,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.DarcProto.Rules other) { listBuilder_ = null; list_ = other.list_; bitField0_ = (bitField0_ & ~0x00000001); - listBuilder_ = + listBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getListFieldBuilder() : null; } else { @@ -21662,7 +22483,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.RuleOrBuilder getListOrBuilder( /** * repeated .darc.Rule list = 1; */ - public java.util.List + public java.util.List getListOrBuilderList() { if (listBuilder_ != null) { return listBuilder_.getMessageOrBuilderList(); @@ -21688,12 +22509,12 @@ public ch.epfl.dedis.lib.proto.DarcProto.Rule.Builder addListBuilder( /** * repeated .darc.Rule list = 1; */ - public java.util.List + public java.util.List getListBuilderList() { return getListFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.DarcProto.Rule, ch.epfl.dedis.lib.proto.DarcProto.Rule.Builder, ch.epfl.dedis.lib.proto.DarcProto.RuleOrBuilder> + ch.epfl.dedis.lib.proto.DarcProto.Rule, ch.epfl.dedis.lib.proto.DarcProto.Rule.Builder, ch.epfl.dedis.lib.proto.DarcProto.RuleOrBuilder> getListFieldBuilder() { if (listBuilder_ == null) { listBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -21907,7 +22728,7 @@ public java.lang.String getAction() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -21925,7 +22746,7 @@ public java.lang.String getAction() { getActionBytes() { java.lang.Object ref = action_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); action_ = b; @@ -22346,7 +23167,7 @@ public java.lang.String getAction() { getActionBytes() { java.lang.Object ref = action_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); action_ = b; @@ -22492,112 +23313,117 @@ public ch.epfl.dedis.lib.proto.DarcProto.Rule getDefaultInstanceForType() { private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_Darc_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_Darc_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_Identity_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_Identity_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_IdentityEd25519_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_IdentityEd25519_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_darc_IdentityTSM_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_darc_IdentityTSM_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_IdentityX509EC_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_IdentityX509EC_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_IdentityProxy_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_IdentityProxy_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_IdentityDarc_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_IdentityDarc_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_IdentityEvmContract_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_IdentityEvmContract_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_IdentityDID_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_IdentityDID_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_DIDDoc_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_DIDDoc_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_PublicKey_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_PublicKey_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_DIDService_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_DIDService_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_VerificationMethod_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_VerificationMethod_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_Signature_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_Signature_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_Signer_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_Signer_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_SignerEd25519_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_SignerEd25519_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_SignerX509EC_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_SignerX509EC_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_SignerProxy_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_SignerProxy_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_SignerEvmContract_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_SignerEvmContract_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_SignerDID_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_SignerDID_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_Request_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_Request_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_Rules_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_Rules_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_darc_Rule_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_darc_Rule_fieldAccessorTable; @@ -22614,47 +23440,49 @@ public ch.epfl.dedis.lib.proto.DarcProto.Rule getDefaultInstanceForType() { "\014\022\016\n\006previd\030\004 \002(\014\022\032\n\005rules\030\005 \002(\0132\013.darc." + "Rules\022#\n\nsignatures\030\006 \003(\0132\017.darc.Signatu" + "re\022%\n\021verificationdarcs\030\007 \003(\0132\n.darc.Dar" + - "c\"\356\001\n\010Identity\022 \n\004darc\030\001 \001(\0132\022.darc.Iden" + + "c\"\216\002\n\010Identity\022 \n\004darc\030\001 \001(\0132\022.darc.Iden" + "tityDarc\022&\n\007ed25519\030\002 \001(\0132\025.darc.Identit" + "yEd25519\022$\n\006x509ec\030\003 \001(\0132\024.darc.Identity" + "X509EC\022\"\n\005proxy\030\004 \001(\0132\023.darc.IdentityPro" + "xy\022.\n\013evmcontract\030\005 \001(\0132\031.darc.IdentityE" + "vmContract\022\036\n\003did\030\006 \001(\0132\021.darc.IdentityD" + - "ID\" \n\017IdentityEd25519\022\r\n\005point\030\001 \002(\014\" \n\016" + - "IdentityX509EC\022\016\n\006public\030\001 \002(\014\"-\n\rIdenti" + - "tyProxy\022\014\n\004data\030\001 \002(\t\022\016\n\006public\030\002 \002(\014\"\032\n" + - "\014IdentityDarc\022\n\n\002id\030\001 \002(\014\"&\n\023IdentityEvm" + - "Contract\022\017\n\007address\030\001 \002(\014\"H\n\013IdentityDID" + - "\022\013\n\003did\030\001 \002(\t\022\034\n\006diddoc\030\002 \001(\0132\014.darc.DID" + - "Doc\022\016\n\006method\030\003 \002(\t\"\236\001\n\006DIDDoc\022\017\n\007contex" + - "t\030\001 \003(\t\022\n\n\002id\030\002 \002(\t\022\"\n\tpublickey\030\003 \003(\0132\017" + - ".darc.PublicKey\022!\n\007service\030\004 \003(\0132\020.darc." + - "DIDService\0220\n\016authentication\030\005 \003(\0132\030.dar" + - "c.VerificationMethod\"H\n\tPublicKey\022\n\n\002id\030" + - "\001 \002(\t\022\014\n\004type\030\002 \002(\t\022\022\n\ncontroller\030\003 \002(\t\022" + - "\r\n\005value\030\004 \002(\014\"}\n\nDIDService\022\n\n\002id\030\001 \002(\t" + - "\022\014\n\004type\030\002 \002(\t\022\020\n\010priority\030\003 \002(\021\022\025\n\rreci" + - "pientkeys\030\004 \003(\t\022\023\n\013routingkeys\030\005 \003(\t\022\027\n\017" + - "serviceendpoint\030\006 \002(\t\"8\n\022VerificationMet" + - "hod\022\"\n\tpublickey\030\001 \002(\0132\017.darc.PublicKey\"" + - ">\n\tSignature\022\021\n\tsignature\030\001 \002(\014\022\036\n\006signe" + - "r\030\002 \002(\0132\016.darc.Identity\"\300\001\n\006Signer\022$\n\007ed" + - "25519\030\001 \001(\0132\023.darc.SignerEd25519\022\"\n\006x509" + - "ec\030\002 \001(\0132\022.darc.SignerX509EC\022 \n\005proxy\030\003 " + - "\001(\0132\021.darc.SignerProxy\022,\n\013evmcontract\030\004 " + - "\001(\0132\027.darc.SignerEvmContract\022\034\n\003did\030\005 \001(" + - "\0132\017.darc.SignerDID\".\n\rSignerEd25519\022\r\n\005p" + - "oint\030\001 \002(\014\022\016\n\006secret\030\002 \002(\014\"\035\n\014SignerX509" + - "EC\022\r\n\005point\030\001 \002(\014\"+\n\013SignerProxy\022\014\n\004data" + - "\030\001 \002(\t\022\016\n\006public\030\002 \002(\014\"$\n\021SignerEvmContr" + - "act\022\017\n\007address\030\001 \002(\014\"8\n\tSignerDID\022\016\n\006pub" + - "lic\030\001 \002(\014\022\016\n\006secret\030\002 \002(\014\022\013\n\003did\030\003 \002(\t\"n" + - "\n\007Request\022\016\n\006baseid\030\001 \002(\014\022\016\n\006action\030\002 \002(" + - "\t\022\013\n\003msg\030\003 \002(\014\022\"\n\nidentities\030\004 \003(\0132\016.dar" + - "c.Identity\022\022\n\nsignatures\030\005 \003(\014\"!\n\005Rules\022" + - "\030\n\004list\030\001 \003(\0132\n.darc.Rule\"$\n\004Rule\022\016\n\006act" + - "ion\030\001 \002(\t\022\014\n\004expr\030\002 \002(\014B$\n\027ch.epfl.dedis" + - ".lib.protoB\tDarcProto" + "ID\022\036\n\003tsm\030\007 \001(\0132\021.darc.IdentityTSM\" \n\017Id" + + "entityEd25519\022\r\n\005point\030\001 \002(\014\" \n\013Identity" + + "TSM\022\021\n\tpublickey\030\001 \002(\014\" \n\016IdentityX509EC" + + "\022\016\n\006public\030\001 \002(\014\"-\n\rIdentityProxy\022\014\n\004dat" + + "a\030\001 \002(\t\022\016\n\006public\030\002 \002(\014\"\032\n\014IdentityDarc\022" + + "\n\n\002id\030\001 \002(\014\"&\n\023IdentityEvmContract\022\017\n\007ad" + + "dress\030\001 \002(\014\"H\n\013IdentityDID\022\013\n\003did\030\001 \002(\t\022" + + "\034\n\006diddoc\030\002 \001(\0132\014.darc.DIDDoc\022\016\n\006method\030" + + "\003 \002(\t\"\236\001\n\006DIDDoc\022\017\n\007context\030\001 \003(\t\022\n\n\002id\030" + + "\002 \002(\t\022\"\n\tpublickey\030\003 \003(\0132\017.darc.PublicKe" + + "y\022!\n\007service\030\004 \003(\0132\020.darc.DIDService\0220\n\016" + + "authentication\030\005 \003(\0132\030.darc.Verification" + + "Method\"H\n\tPublicKey\022\n\n\002id\030\001 \002(\t\022\014\n\004type\030" + + "\002 \002(\t\022\022\n\ncontroller\030\003 \002(\t\022\r\n\005value\030\004 \002(\014" + + "\"}\n\nDIDService\022\n\n\002id\030\001 \002(\t\022\014\n\004type\030\002 \002(\t" + + "\022\020\n\010priority\030\003 \002(\021\022\025\n\rrecipientkeys\030\004 \003(" + + "\t\022\023\n\013routingkeys\030\005 \003(\t\022\027\n\017serviceendpoin" + + "t\030\006 \002(\t\"8\n\022VerificationMethod\022\"\n\tpublick" + + "ey\030\001 \002(\0132\017.darc.PublicKey\">\n\tSignature\022\021" + + "\n\tsignature\030\001 \002(\014\022\036\n\006signer\030\002 \002(\0132\016.darc" + + ".Identity\"\300\001\n\006Signer\022$\n\007ed25519\030\001 \001(\0132\023." + + "darc.SignerEd25519\022\"\n\006x509ec\030\002 \001(\0132\022.dar" + + "c.SignerX509EC\022 \n\005proxy\030\003 \001(\0132\021.darc.Sig" + + "nerProxy\022,\n\013evmcontract\030\004 \001(\0132\027.darc.Sig" + + "nerEvmContract\022\034\n\003did\030\005 \001(\0132\017.darc.Signe" + + "rDID\".\n\rSignerEd25519\022\r\n\005point\030\001 \002(\014\022\016\n\006" + + "secret\030\002 \002(\014\"\035\n\014SignerX509EC\022\r\n\005point\030\001 " + + "\002(\014\"+\n\013SignerProxy\022\014\n\004data\030\001 \002(\t\022\016\n\006publ" + + "ic\030\002 \002(\014\"$\n\021SignerEvmContract\022\017\n\007address" + + "\030\001 \002(\014\"8\n\tSignerDID\022\016\n\006public\030\001 \002(\014\022\016\n\006s" + + "ecret\030\002 \002(\014\022\013\n\003did\030\003 \002(\t\"n\n\007Request\022\016\n\006b" + + "aseid\030\001 \002(\014\022\016\n\006action\030\002 \002(\t\022\013\n\003msg\030\003 \002(\014" + + "\022\"\n\nidentities\030\004 \003(\0132\016.darc.Identity\022\022\n\n" + + "signatures\030\005 \003(\014\"!\n\005Rules\022\030\n\004list\030\001 \003(\0132" + + "\n.darc.Rule\"$\n\004Rule\022\016\n\006action\030\001 \002(\t\022\014\n\004e" + + "xpr\030\002 \002(\014B$\n\027ch.epfl.dedis.lib.protoB\tDa" + + "rcProto" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -22671,123 +23499,129 @@ public ch.epfl.dedis.lib.proto.DarcProto.Rule getDefaultInstanceForType() { internal_static_darc_Identity_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_Identity_descriptor, - new java.lang.String[] { "Darc", "Ed25519", "X509Ec", "Proxy", "Evmcontract", "Did", }); + new java.lang.String[] { "Darc", "Ed25519", "X509Ec", "Proxy", "Evmcontract", "Did", "Tsm", }); internal_static_darc_IdentityEd25519_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_darc_IdentityEd25519_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_IdentityEd25519_descriptor, new java.lang.String[] { "Point", }); - internal_static_darc_IdentityX509EC_descriptor = + internal_static_darc_IdentityTSM_descriptor = getDescriptor().getMessageTypes().get(3); + internal_static_darc_IdentityTSM_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_darc_IdentityTSM_descriptor, + new java.lang.String[] { "Publickey", }); + internal_static_darc_IdentityX509EC_descriptor = + getDescriptor().getMessageTypes().get(4); internal_static_darc_IdentityX509EC_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_IdentityX509EC_descriptor, new java.lang.String[] { "Public", }); internal_static_darc_IdentityProxy_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(5); internal_static_darc_IdentityProxy_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_IdentityProxy_descriptor, new java.lang.String[] { "Data", "Public", }); internal_static_darc_IdentityDarc_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(6); internal_static_darc_IdentityDarc_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_IdentityDarc_descriptor, new java.lang.String[] { "Id", }); internal_static_darc_IdentityEvmContract_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(7); internal_static_darc_IdentityEvmContract_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_IdentityEvmContract_descriptor, new java.lang.String[] { "Address", }); internal_static_darc_IdentityDID_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_darc_IdentityDID_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_IdentityDID_descriptor, new java.lang.String[] { "Did", "Diddoc", "Method", }); internal_static_darc_DIDDoc_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_darc_DIDDoc_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_DIDDoc_descriptor, new java.lang.String[] { "Context", "Id", "Publickey", "Service", "Authentication", }); internal_static_darc_PublicKey_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_darc_PublicKey_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_PublicKey_descriptor, new java.lang.String[] { "Id", "Type", "Controller", "Value", }); internal_static_darc_DIDService_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(11); internal_static_darc_DIDService_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_DIDService_descriptor, new java.lang.String[] { "Id", "Type", "Priority", "Recipientkeys", "Routingkeys", "Serviceendpoint", }); internal_static_darc_VerificationMethod_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(12); internal_static_darc_VerificationMethod_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_VerificationMethod_descriptor, new java.lang.String[] { "Publickey", }); internal_static_darc_Signature_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(13); internal_static_darc_Signature_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_Signature_descriptor, new java.lang.String[] { "Signature", "Signer", }); internal_static_darc_Signer_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(14); internal_static_darc_Signer_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_Signer_descriptor, new java.lang.String[] { "Ed25519", "X509Ec", "Proxy", "Evmcontract", "Did", }); internal_static_darc_SignerEd25519_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(15); internal_static_darc_SignerEd25519_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_SignerEd25519_descriptor, new java.lang.String[] { "Point", "Secret", }); internal_static_darc_SignerX509EC_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(16); internal_static_darc_SignerX509EC_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_SignerX509EC_descriptor, new java.lang.String[] { "Point", }); internal_static_darc_SignerProxy_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(17); internal_static_darc_SignerProxy_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_SignerProxy_descriptor, new java.lang.String[] { "Data", "Public", }); internal_static_darc_SignerEvmContract_descriptor = - getDescriptor().getMessageTypes().get(17); + getDescriptor().getMessageTypes().get(18); internal_static_darc_SignerEvmContract_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_SignerEvmContract_descriptor, new java.lang.String[] { "Address", }); internal_static_darc_SignerDID_descriptor = - getDescriptor().getMessageTypes().get(18); + getDescriptor().getMessageTypes().get(19); internal_static_darc_SignerDID_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_SignerDID_descriptor, new java.lang.String[] { "Public", "Secret", "Did", }); internal_static_darc_Request_descriptor = - getDescriptor().getMessageTypes().get(19); + getDescriptor().getMessageTypes().get(20); internal_static_darc_Request_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_Request_descriptor, new java.lang.String[] { "Baseid", "Action", "Msg", "Identities", "Signatures", }); internal_static_darc_Rules_descriptor = - getDescriptor().getMessageTypes().get(20); + getDescriptor().getMessageTypes().get(21); internal_static_darc_Rules_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_Rules_descriptor, new java.lang.String[] { "List", }); internal_static_darc_Rule_descriptor = - getDescriptor().getMessageTypes().get(21); + getDescriptor().getMessageTypes().get(22); internal_static_darc_Rule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_darc_Rule_descriptor, diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/EventLogProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/EventLogProto.java index 07200b6b20..568d66041d 100644 --- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/EventLogProto.java +++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/EventLogProto.java @@ -288,7 +288,7 @@ public java.lang.String getTopic() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -310,7 +310,7 @@ public java.lang.String getTopic() { getTopicBytes() { java.lang.Object ref = topic_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); topic_ = b; @@ -963,7 +963,7 @@ public java.lang.String getTopic() { getTopicBytes() { java.lang.Object ref = topic_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); topic_ = b; @@ -1194,7 +1194,7 @@ public interface SearchResponseOrBuilder extends /** * repeated .eventlog.Event events = 1; */ - java.util.List + java.util.List getEventsList(); /** * repeated .eventlog.Event events = 1; @@ -1207,7 +1207,7 @@ public interface SearchResponseOrBuilder extends /** * repeated .eventlog.Event events = 1; */ - java.util.List + java.util.List getEventsOrBuilderList(); /** * repeated .eventlog.Event events = 1; @@ -1352,7 +1352,7 @@ public java.util.List getEventsList * repeated .eventlog.Event events = 1; */ @java.lang.Override - public java.util.List + public java.util.List getEventsOrBuilderList() { return events_; } @@ -1753,7 +1753,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.EventLogProto.SearchResponse ot eventsBuilder_ = null; events_ = other.events_; bitField0_ = (bitField0_ & ~0x00000001); - eventsBuilder_ = + eventsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEventsFieldBuilder() : null; } else { @@ -1997,7 +1997,7 @@ public ch.epfl.dedis.lib.proto.EventLogProto.EventOrBuilder getEventsOrBuilder( /** * repeated .eventlog.Event events = 1; */ - public java.util.List + public java.util.List getEventsOrBuilderList() { if (eventsBuilder_ != null) { return eventsBuilder_.getMessageOrBuilderList(); @@ -2023,12 +2023,12 @@ public ch.epfl.dedis.lib.proto.EventLogProto.Event.Builder addEventsBuilder( /** * repeated .eventlog.Event events = 1; */ - public java.util.List + public java.util.List getEventsBuilderList() { return getEventsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.EventLogProto.Event, ch.epfl.dedis.lib.proto.EventLogProto.Event.Builder, ch.epfl.dedis.lib.proto.EventLogProto.EventOrBuilder> + ch.epfl.dedis.lib.proto.EventLogProto.Event, ch.epfl.dedis.lib.proto.EventLogProto.Event.Builder, ch.epfl.dedis.lib.proto.EventLogProto.EventOrBuilder> getEventsFieldBuilder() { if (eventsBuilder_ == null) { eventsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -2348,7 +2348,7 @@ public java.lang.String getTopic() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -2366,7 +2366,7 @@ public java.lang.String getTopic() { getTopicBytes() { java.lang.Object ref = topic_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); topic_ = b; @@ -2396,7 +2396,7 @@ public java.lang.String getContent() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -2414,7 +2414,7 @@ public java.lang.String getContent() { getContentBytes() { java.lang.Object ref = content_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); content_ = b; @@ -2890,7 +2890,7 @@ public java.lang.String getTopic() { getTopicBytes() { java.lang.Object ref = topic_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); topic_ = b; @@ -2974,7 +2974,7 @@ public java.lang.String getContent() { getContentBytes() { java.lang.Object ref = content_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); content_ = b; @@ -3078,17 +3078,17 @@ public ch.epfl.dedis.lib.proto.EventLogProto.Event getDefaultInstanceForType() { private static final com.google.protobuf.Descriptors.Descriptor internal_static_eventlog_SearchRequest_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_eventlog_SearchRequest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_eventlog_SearchResponse_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_eventlog_SearchResponse_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_eventlog_Event_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_eventlog_Event_fieldAccessorTable; diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/NetworkProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/NetworkProto.java index 8442fce431..c4eceef224 100644 --- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/NetworkProto.java +++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/NetworkProto.java @@ -32,7 +32,7 @@ public interface ServerIdentityOrBuilder extends /** * repeated .network.ServiceIdentity serviceIdentities = 2; */ - java.util.List + java.util.List getServiceIdentitiesList(); /** * repeated .network.ServiceIdentity serviceIdentities = 2; @@ -45,7 +45,7 @@ public interface ServerIdentityOrBuilder extends /** * repeated .network.ServiceIdentity serviceIdentities = 2; */ - java.util.List + java.util.List getServiceIdentitiesOrBuilderList(); /** * repeated .network.ServiceIdentity serviceIdentities = 2; @@ -287,7 +287,7 @@ public java.util.List getS * repeated .network.ServiceIdentity serviceIdentities = 2; */ @java.lang.Override - public java.util.List + public java.util.List getServiceIdentitiesOrBuilderList() { return serviceIdentities_; } @@ -353,7 +353,7 @@ public java.lang.String getAddress() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -371,7 +371,7 @@ public java.lang.String getAddress() { getAddressBytes() { java.lang.Object ref = address_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); address_ = b; @@ -401,7 +401,7 @@ public java.lang.String getDescription() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -419,7 +419,7 @@ public java.lang.String getDescription() { getDescriptionBytes() { java.lang.Object ref = description_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); description_ = b; @@ -459,7 +459,7 @@ public java.lang.String getUrl() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -482,7 +482,7 @@ public java.lang.String getUrl() { getUrlBytes() { java.lang.Object ref = url_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); url_ = b; @@ -930,7 +930,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity oth serviceIdentitiesBuilder_ = null; serviceIdentities_ = other.serviceIdentities_; bitField0_ = (bitField0_ & ~0x00000002); - serviceIdentitiesBuilder_ = + serviceIdentitiesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdentitiesFieldBuilder() : null; } else { @@ -1240,7 +1240,7 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentityOrBuilder getServiceI /** * repeated .network.ServiceIdentity serviceIdentities = 2; */ - public java.util.List + public java.util.List getServiceIdentitiesOrBuilderList() { if (serviceIdentitiesBuilder_ != null) { return serviceIdentitiesBuilder_.getMessageOrBuilderList(); @@ -1266,12 +1266,12 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentity.Builder addServiceId /** * repeated .network.ServiceIdentity serviceIdentities = 2; */ - public java.util.List + public java.util.List getServiceIdentitiesBuilderList() { return getServiceIdentitiesFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentityOrBuilder> + ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentityOrBuilder> getServiceIdentitiesFieldBuilder() { if (serviceIdentitiesBuilder_ == null) { serviceIdentitiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -1361,7 +1361,7 @@ public java.lang.String getAddress() { getAddressBytes() { java.lang.Object ref = address_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); address_ = b; @@ -1445,7 +1445,7 @@ public java.lang.String getDescription() { getDescriptionBytes() { java.lang.Object ref = description_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); description_ = b; @@ -1544,7 +1544,7 @@ public java.lang.String getUrl() { getUrlBytes() { java.lang.Object ref = url_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); url_ = b; @@ -1829,7 +1829,7 @@ public java.lang.String getName() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -1847,7 +1847,7 @@ public java.lang.String getName() { getNameBytes() { java.lang.Object ref = name_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); name_ = b; @@ -1877,7 +1877,7 @@ public java.lang.String getSuite() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -1895,7 +1895,7 @@ public java.lang.String getSuite() { getSuiteBytes() { java.lang.Object ref = suite_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); suite_ = b; @@ -2345,7 +2345,7 @@ public java.lang.String getName() { getNameBytes() { java.lang.Object ref = name_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); name_ = b; @@ -2429,7 +2429,7 @@ public java.lang.String getSuite() { getSuiteBytes() { java.lang.Object ref = suite_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); suite_ = b; @@ -2575,12 +2575,12 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServiceIdentity getDefaultInstanceFo private static final com.google.protobuf.Descriptors.Descriptor internal_static_network_ServerIdentity_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_network_ServerIdentity_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_network_ServiceIdentity_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_network_ServiceIdentity_fieldAccessorTable; diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/OnetProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/OnetProto.java index 246bce0fcc..704b1a1898 100644 --- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/OnetProto.java +++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/OnetProto.java @@ -32,7 +32,7 @@ public interface RosterOrBuilder extends /** * repeated .network.ServerIdentity list = 2; */ - java.util.List + java.util.List getListList(); /** * repeated .network.ServerIdentity list = 2; @@ -45,7 +45,7 @@ public interface RosterOrBuilder extends /** * repeated .network.ServerIdentity list = 2; */ - java.util.List + java.util.List getListOrBuilderList(); /** * repeated .network.ServerIdentity list = 2; @@ -200,7 +200,7 @@ public java.util.List getLi * repeated .network.ServerIdentity list = 2; */ @java.lang.Override - public java.util.List + public java.util.List getListOrBuilderList() { return list_; } @@ -609,7 +609,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.OnetProto.Roster other) { listBuilder_ = null; list_ = other.list_; bitField0_ = (bitField0_ & ~0x00000002); - listBuilder_ = + listBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getListFieldBuilder() : null; } else { @@ -895,7 +895,7 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder getListOrBui /** * repeated .network.ServerIdentity list = 2; */ - public java.util.List + public java.util.List getListOrBuilderList() { if (listBuilder_ != null) { return listBuilder_.getMessageOrBuilderList(); @@ -921,12 +921,12 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder addListBuilde /** * repeated .network.ServerIdentity list = 2; */ - public java.util.List + public java.util.List getListBuilderList() { return getListFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder> + ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder> getListFieldBuilder() { if (listBuilder_ == null) { listBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -1181,7 +1181,7 @@ private static final class FieldDefaultEntryHolder { java.lang.String, java.lang.String> defaultEntry = com.google.protobuf.MapEntry .newDefaultInstance( - ch.epfl.dedis.lib.proto.OnetProto.internal_static_onet_Status_FieldEntry_descriptor, + ch.epfl.dedis.lib.proto.OnetProto.internal_static_onet_Status_FieldEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.STRING, @@ -1774,17 +1774,17 @@ public ch.epfl.dedis.lib.proto.OnetProto.Status getDefaultInstanceForType() { private static final com.google.protobuf.Descriptors.Descriptor internal_static_onet_Roster_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_onet_Roster_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_onet_Status_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_onet_Status_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_onet_Status_FieldEntry_descriptor; - private static final + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_onet_Status_FieldEntry_fieldAccessorTable; diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/Personhood.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/Personhood.java index 2bc79becd2..b44c435dc6 100644 --- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/Personhood.java +++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/Personhood.java @@ -1042,7 +1042,7 @@ public java.lang.String getDescription() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -1060,7 +1060,7 @@ public java.lang.String getDescription() { getDescriptionBytes() { java.lang.Object ref = description_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); description_ = b; @@ -1819,7 +1819,7 @@ public java.lang.String getDescription() { getDescriptionBytes() { java.lang.Object ref = description_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); description_ = b; @@ -1976,7 +1976,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getStakeOrBuilder() { * required .byzcoin.Coin stake = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getStakeFieldBuilder() { if (stakeBuilder_ == null) { stakeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -2336,7 +2336,7 @@ public interface CredentialStructOrBuilder extends /** * repeated .personhood.Credential credentials = 1; */ - java.util.List + java.util.List getCredentialsList(); /** * repeated .personhood.Credential credentials = 1; @@ -2349,7 +2349,7 @@ public interface CredentialStructOrBuilder extends /** * repeated .personhood.Credential credentials = 1; */ - java.util.List + java.util.List getCredentialsOrBuilderList(); /** * repeated .personhood.Credential credentials = 1; @@ -2465,7 +2465,7 @@ public java.util.List getCredenti * repeated .personhood.Credential credentials = 1; */ @java.lang.Override - public java.util.List + public java.util.List getCredentialsOrBuilderList() { return credentials_; } @@ -2806,7 +2806,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.Personhood.CredentialStruct oth credentialsBuilder_ = null; credentials_ = other.credentials_; bitField0_ = (bitField0_ & ~0x00000001); - credentialsBuilder_ = + credentialsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getCredentialsFieldBuilder() : null; } else { @@ -3044,7 +3044,7 @@ public ch.epfl.dedis.lib.proto.Personhood.CredentialOrBuilder getCredentialsOrBu /** * repeated .personhood.Credential credentials = 1; */ - public java.util.List + public java.util.List getCredentialsOrBuilderList() { if (credentialsBuilder_ != null) { return credentialsBuilder_.getMessageOrBuilderList(); @@ -3070,12 +3070,12 @@ public ch.epfl.dedis.lib.proto.Personhood.Credential.Builder addCredentialsBuild /** * repeated .personhood.Credential credentials = 1; */ - public java.util.List + public java.util.List getCredentialsBuilderList() { return getCredentialsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.Personhood.Credential, ch.epfl.dedis.lib.proto.Personhood.Credential.Builder, ch.epfl.dedis.lib.proto.Personhood.CredentialOrBuilder> + ch.epfl.dedis.lib.proto.Personhood.Credential, ch.epfl.dedis.lib.proto.Personhood.Credential.Builder, ch.epfl.dedis.lib.proto.Personhood.CredentialOrBuilder> getCredentialsFieldBuilder() { if (credentialsBuilder_ == null) { credentialsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -3165,7 +3165,7 @@ public interface CredentialOrBuilder extends /** * repeated .personhood.Attribute attributes = 2; */ - java.util.List + java.util.List getAttributesList(); /** * repeated .personhood.Attribute attributes = 2; @@ -3178,7 +3178,7 @@ public interface CredentialOrBuilder extends /** * repeated .personhood.Attribute attributes = 2; */ - java.util.List + java.util.List getAttributesOrBuilderList(); /** * repeated .personhood.Attribute attributes = 2; @@ -3309,7 +3309,7 @@ public java.lang.String getName() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -3327,7 +3327,7 @@ public java.lang.String getName() { getNameBytes() { java.lang.Object ref = name_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); name_ = b; @@ -3350,7 +3350,7 @@ public java.util.List getAttribute * repeated .personhood.Attribute attributes = 2; */ @java.lang.Override - public java.util.List + public java.util.List getAttributesOrBuilderList() { return attributes_; } @@ -3723,7 +3723,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.Personhood.Credential other) { attributesBuilder_ = null; attributes_ = other.attributes_; bitField0_ = (bitField0_ & ~0x00000002); - attributesBuilder_ = + attributesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getAttributesFieldBuilder() : null; } else { @@ -3803,7 +3803,7 @@ public java.lang.String getName() { getNameBytes() { java.lang.Object ref = name_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); name_ = b; @@ -4048,7 +4048,7 @@ public ch.epfl.dedis.lib.proto.Personhood.AttributeOrBuilder getAttributesOrBuil /** * repeated .personhood.Attribute attributes = 2; */ - public java.util.List + public java.util.List getAttributesOrBuilderList() { if (attributesBuilder_ != null) { return attributesBuilder_.getMessageOrBuilderList(); @@ -4074,12 +4074,12 @@ public ch.epfl.dedis.lib.proto.Personhood.Attribute.Builder addAttributesBuilder /** * repeated .personhood.Attribute attributes = 2; */ - public java.util.List + public java.util.List getAttributesBuilderList() { return getAttributesFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - ch.epfl.dedis.lib.proto.Personhood.Attribute, ch.epfl.dedis.lib.proto.Personhood.Attribute.Builder, ch.epfl.dedis.lib.proto.Personhood.AttributeOrBuilder> + ch.epfl.dedis.lib.proto.Personhood.Attribute, ch.epfl.dedis.lib.proto.Personhood.Attribute.Builder, ch.epfl.dedis.lib.proto.Personhood.AttributeOrBuilder> getAttributesFieldBuilder() { if (attributesBuilder_ == null) { attributesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -4293,7 +4293,7 @@ public java.lang.String getName() { if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { - com.google.protobuf.ByteString bs = + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { @@ -4311,7 +4311,7 @@ public java.lang.String getName() { getNameBytes() { java.lang.Object ref = name_; if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); name_ = b; @@ -4732,7 +4732,7 @@ public java.lang.String getName() { getNameBytes() { java.lang.Object ref = name_; if (ref instanceof String) { - com.google.protobuf.ByteString b = + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); name_ = b; @@ -6237,7 +6237,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostdarcOrBuilder() * required .byzcoin.Coin costdarc = 1; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getCostdarcFieldBuilder() { if (costdarcBuilder_ == null) { costdarcBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -6357,7 +6357,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostcoinOrBuilder() * required .byzcoin.Coin costcoin = 2; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getCostcoinFieldBuilder() { if (costcoinBuilder_ == null) { costcoinBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -6477,7 +6477,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostcredentialOrBui * required .byzcoin.Coin costcredential = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getCostcredentialFieldBuilder() { if (costcredentialBuilder_ == null) { costcredentialBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -6597,7 +6597,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostpartyOrBuilder( * required .byzcoin.Coin costparty = 4; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getCostpartyFieldBuilder() { if (costpartyBuilder_ == null) { costpartyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -6759,7 +6759,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostropasciOrBuilde * optional .byzcoin.Coin costropasci = 6; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getCostropasciFieldBuilder() { if (costropasciBuilder_ == null) { costropasciBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -6879,7 +6879,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostcwriteOrBuilder * optional .byzcoin.Coin costcwrite = 7; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getCostcwriteFieldBuilder() { if (costcwriteBuilder_ == null) { costcwriteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -6999,7 +6999,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostcreadOrBuilder( * optional .byzcoin.Coin costcread = 8; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getCostcreadFieldBuilder() { if (costcreadBuilder_ == null) { costcreadBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -7119,7 +7119,7 @@ public ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder getCostvalueOrBuilder( * optional .byzcoin.Coin costvalue = 9; */ private com.google.protobuf.SingleFieldBuilderV3< - ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> + ch.epfl.dedis.lib.proto.ByzCoinProto.Coin, ch.epfl.dedis.lib.proto.ByzCoinProto.Coin.Builder, ch.epfl.dedis.lib.proto.ByzCoinProto.CoinOrBuilder> getCostvalueFieldBuilder() { if (costvalueBuilder_ == null) { costvalueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< @@ -7342,7 +7342,7 @@ public interface PopPartyStructOrBuilder extends * * repeated .personhood.LRSTag miners = 6; */ - java.util.List + java.util.List getMinersList(); /** *
@@ -7370,7 +7370,7 @@ public interface PopPartyStructOrBuilder extends
      *
      * repeated .personhood.LRSTag miners = 6;
      */
-    java.util.List
+    java.util.List 
         getMinersOrBuilderList();
     /**
      * 
@@ -7823,7 +7823,7 @@ public java.util.List getMinersList()
      * repeated .personhood.LRSTag miners = 6;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getMinersOrBuilderList() {
       return miners_;
     }
@@ -8509,7 +8509,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.Personhood.PopPartyStruct other
               minersBuilder_ = null;
               miners_ = other.miners_;
               bitField0_ = (bitField0_ & ~0x00000020);
-              minersBuilder_ =
+              minersBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getMinersFieldBuilder() : null;
             } else {
@@ -9007,7 +9007,7 @@ public ch.epfl.dedis.lib.proto.Personhood.PopDescOrBuilder getDescriptionOrBuild
        * required .personhood.PopDesc description = 4;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.PopDesc, ch.epfl.dedis.lib.proto.Personhood.PopDesc.Builder, ch.epfl.dedis.lib.proto.Personhood.PopDescOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.PopDesc, ch.epfl.dedis.lib.proto.Personhood.PopDesc.Builder, ch.epfl.dedis.lib.proto.Personhood.PopDescOrBuilder> 
           getDescriptionFieldBuilder() {
         if (descriptionBuilder_ == null) {
           descriptionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -9163,7 +9163,7 @@ public ch.epfl.dedis.lib.proto.Personhood.AttendeesOrBuilder getAttendeesOrBuild
        * required .personhood.Attendees attendees = 5;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.Attendees, ch.epfl.dedis.lib.proto.Personhood.Attendees.Builder, ch.epfl.dedis.lib.proto.Personhood.AttendeesOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.Attendees, ch.epfl.dedis.lib.proto.Personhood.Attendees.Builder, ch.epfl.dedis.lib.proto.Personhood.AttendeesOrBuilder> 
           getAttendeesFieldBuilder() {
         if (attendeesBuilder_ == null) {
           attendeesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -9446,7 +9446,7 @@ public ch.epfl.dedis.lib.proto.Personhood.LRSTagOrBuilder getMinersOrBuilder(
        *
        * repeated .personhood.LRSTag miners = 6;
        */
-      public java.util.List
+      public java.util.List 
            getMinersOrBuilderList() {
         if (minersBuilder_ != null) {
           return minersBuilder_.getMessageOrBuilderList();
@@ -9487,12 +9487,12 @@ public ch.epfl.dedis.lib.proto.Personhood.LRSTag.Builder addMinersBuilder(
        *
        * repeated .personhood.LRSTag miners = 6;
        */
-      public java.util.List
+      public java.util.List 
            getMinersBuilderList() {
         return getMinersFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.LRSTag, ch.epfl.dedis.lib.proto.Personhood.LRSTag.Builder, ch.epfl.dedis.lib.proto.Personhood.LRSTagOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.LRSTag, ch.epfl.dedis.lib.proto.Personhood.LRSTag.Builder, ch.epfl.dedis.lib.proto.Personhood.LRSTagOrBuilder> 
           getMinersFieldBuilder() {
         if (minersBuilder_ == null) {
           minersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -9984,7 +9984,7 @@ public java.lang.String getName() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -10006,7 +10006,7 @@ public java.lang.String getName() {
         getNameBytes() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         name_ = b;
@@ -10044,7 +10044,7 @@ public java.lang.String getPurpose() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -10066,7 +10066,7 @@ public java.lang.String getPurpose() {
         getPurposeBytes() {
       java.lang.Object ref = purpose_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         purpose_ = b;
@@ -10131,7 +10131,7 @@ public java.lang.String getLocation() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -10153,7 +10153,7 @@ public java.lang.String getLocation() {
         getLocationBytes() {
       java.lang.Object ref = location_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         location_ = b;
@@ -10634,7 +10634,7 @@ public java.lang.String getName() {
           getNameBytes() {
         java.lang.Object ref = name_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           name_ = b;
@@ -10742,7 +10742,7 @@ public java.lang.String getPurpose() {
           getPurposeBytes() {
         java.lang.Object ref = purpose_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           purpose_ = b;
@@ -10905,7 +10905,7 @@ public java.lang.String getLocation() {
           getLocationBytes() {
         java.lang.Object ref = location_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           location_ = b;
@@ -11786,7 +11786,7 @@ public ch.epfl.dedis.lib.proto.Personhood.PopDescOrBuilder getDescOrBuilder() {
        * optional .personhood.PopDesc desc = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.PopDesc, ch.epfl.dedis.lib.proto.Personhood.PopDesc.Builder, ch.epfl.dedis.lib.proto.Personhood.PopDescOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.PopDesc, ch.epfl.dedis.lib.proto.Personhood.PopDesc.Builder, ch.epfl.dedis.lib.proto.Personhood.PopDescOrBuilder> 
           getDescFieldBuilder() {
         if (descBuilder_ == null) {
           descBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -11942,7 +11942,7 @@ public ch.epfl.dedis.lib.proto.Personhood.AttendeesOrBuilder getAttendeesOrBuild
        * required .personhood.Attendees attendees = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.Attendees, ch.epfl.dedis.lib.proto.Personhood.Attendees.Builder, ch.epfl.dedis.lib.proto.Personhood.AttendeesOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.Attendees, ch.epfl.dedis.lib.proto.Personhood.Attendees.Builder, ch.epfl.dedis.lib.proto.Personhood.AttendeesOrBuilder> 
           getAttendeesFieldBuilder() {
         if (attendeesBuilder_ == null) {
           attendeesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -13156,57 +13156,57 @@ public ch.epfl.dedis.lib.proto.Personhood.LRSTag getDefaultInstanceForType() {
 
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_RoPaSci_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_RoPaSci_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_RoPaSciStruct_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_RoPaSciStruct_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_CredentialStruct_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_CredentialStruct_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_Credential_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_Credential_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_Attribute_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_Attribute_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_SpawnerStruct_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_SpawnerStruct_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_PopPartyStruct_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_PopPartyStruct_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_PopDesc_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_PopDesc_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_FinalStatement_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_FinalStatement_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_Attendees_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_Attendees_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_LRSTag_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_LRSTag_fieldAccessorTable;
 
diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/PersonhoodService.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/PersonhoodService.java
index 964f6352ed..d694357ab7 100644
--- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/PersonhoodService.java
+++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/PersonhoodService.java
@@ -762,7 +762,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PartyOrBuilder getNewpartyOrBui
        * optional .personhood_service.Party newparty = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.Party, ch.epfl.dedis.lib.proto.PersonhoodService.Party.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PartyOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.Party, ch.epfl.dedis.lib.proto.PersonhoodService.Party.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PartyOrBuilder> 
           getNewpartyFieldBuilder() {
         if (newpartyBuilder_ == null) {
           newpartyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -921,7 +921,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PartyDeleteOrBuilder getPartyde
        * optional .personhood_service.PartyDelete partydelete = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.PartyDelete, ch.epfl.dedis.lib.proto.PersonhoodService.PartyDelete.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PartyDeleteOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.PartyDelete, ch.epfl.dedis.lib.proto.PersonhoodService.PartyDelete.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PartyDeleteOrBuilder> 
           getPartydeleteFieldBuilder() {
         if (partydeleteBuilder_ == null) {
           partydeleteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -1753,7 +1753,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder getIdentityOrBuilder(
        * required .darc.Identity identity = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder>
+          ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder> 
           getIdentityFieldBuilder() {
         if (identityBuilder_ == null) {
           identityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -1867,7 +1867,7 @@ public interface PartyListResponseOrBuilder extends
     /**
      * repeated .personhood_service.Party parties = 1;
      */
-    java.util.List
+    java.util.List 
         getPartiesList();
     /**
      * repeated .personhood_service.Party parties = 1;
@@ -1880,7 +1880,7 @@ public interface PartyListResponseOrBuilder extends
     /**
      * repeated .personhood_service.Party parties = 1;
      */
-    java.util.List
+    java.util.List 
         getPartiesOrBuilderList();
     /**
      * repeated .personhood_service.Party parties = 1;
@@ -1997,7 +1997,7 @@ public java.util.List getPartie
      * repeated .personhood_service.Party parties = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getPartiesOrBuilderList() {
       return parties_;
     }
@@ -2339,7 +2339,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.PersonhoodService.PartyListResp
               partiesBuilder_ = null;
               parties_ = other.parties_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              partiesBuilder_ =
+              partiesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getPartiesFieldBuilder() : null;
             } else {
@@ -2577,7 +2577,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PartyOrBuilder getPartiesOrBuil
       /**
        * repeated .personhood_service.Party parties = 1;
        */
-      public java.util.List
+      public java.util.List 
            getPartiesOrBuilderList() {
         if (partiesBuilder_ != null) {
           return partiesBuilder_.getMessageOrBuilderList();
@@ -2603,12 +2603,12 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.Party.Builder addPartiesBuilder
       /**
        * repeated .personhood_service.Party parties = 1;
        */
-      public java.util.List
+      public java.util.List 
            getPartiesBuilderList() {
         return getPartiesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.Party, ch.epfl.dedis.lib.proto.PersonhoodService.Party.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PartyOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.Party, ch.epfl.dedis.lib.proto.PersonhoodService.Party.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PartyOrBuilder> 
           getPartiesFieldBuilder() {
         if (partiesBuilder_ == null) {
           partiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -3491,7 +3491,7 @@ public ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder getRosterOrBuilder() {
        * required .onet.Roster roster = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder>
+          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder> 
           getRosterFieldBuilder() {
         if (rosterBuilder_ == null) {
           rosterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -4456,7 +4456,7 @@ public ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder getNewropasciOrBuilde
        * optional .personhood.RoPaSci newropasci = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.RoPaSci, ch.epfl.dedis.lib.proto.Personhood.RoPaSci.Builder, ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.RoPaSci, ch.epfl.dedis.lib.proto.Personhood.RoPaSci.Builder, ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder> 
           getNewropasciFieldBuilder() {
         if (newropasciBuilder_ == null) {
           newropasciBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -4669,7 +4669,7 @@ public ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder getLockOrBuilder() {
        * optional .personhood.RoPaSci lock = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.RoPaSci, ch.epfl.dedis.lib.proto.Personhood.RoPaSci.Builder, ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.RoPaSci, ch.epfl.dedis.lib.proto.Personhood.RoPaSci.Builder, ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder> 
           getLockFieldBuilder() {
         if (lockBuilder_ == null) {
           lockBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -4741,7 +4741,7 @@ public interface RoPaSciListResponseOrBuilder extends
     /**
      * repeated .personhood.RoPaSci ropascis = 1;
      */
-    java.util.List
+    java.util.List 
         getRopascisList();
     /**
      * repeated .personhood.RoPaSci ropascis = 1;
@@ -4754,7 +4754,7 @@ public interface RoPaSciListResponseOrBuilder extends
     /**
      * repeated .personhood.RoPaSci ropascis = 1;
      */
-    java.util.List
+    java.util.List 
         getRopascisOrBuilderList();
     /**
      * repeated .personhood.RoPaSci ropascis = 1;
@@ -4871,7 +4871,7 @@ public java.util.List getRopascisLis
      * repeated .personhood.RoPaSci ropascis = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getRopascisOrBuilderList() {
       return ropascis_;
     }
@@ -5213,7 +5213,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.PersonhoodService.RoPaSciListRe
               ropascisBuilder_ = null;
               ropascis_ = other.ropascis_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              ropascisBuilder_ =
+              ropascisBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getRopascisFieldBuilder() : null;
             } else {
@@ -5451,7 +5451,7 @@ public ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder getRopascisOrBuilder(
       /**
        * repeated .personhood.RoPaSci ropascis = 1;
        */
-      public java.util.List
+      public java.util.List 
            getRopascisOrBuilderList() {
         if (ropascisBuilder_ != null) {
           return ropascisBuilder_.getMessageOrBuilderList();
@@ -5477,12 +5477,12 @@ public ch.epfl.dedis.lib.proto.Personhood.RoPaSci.Builder addRopascisBuilder(
       /**
        * repeated .personhood.RoPaSci ropascis = 1;
        */
-      public java.util.List
+      public java.util.List 
            getRopascisBuilderList() {
         return getRopascisFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.RoPaSci, ch.epfl.dedis.lib.proto.Personhood.RoPaSci.Builder, ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.RoPaSci, ch.epfl.dedis.lib.proto.Personhood.RoPaSci.Builder, ch.epfl.dedis.lib.proto.Personhood.RoPaSciOrBuilder> 
           getRopascisFieldBuilder() {
         if (ropascisBuilder_ == null) {
           ropascisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -5680,7 +5680,7 @@ public java.lang.String getReply() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -5698,7 +5698,7 @@ public java.lang.String getReply() {
         getReplyBytes() {
       java.lang.Object ref = reply_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         reply_ = b;
@@ -6069,7 +6069,7 @@ public java.lang.String getReply() {
           getReplyBytes() {
         java.lang.Object ref = reply_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           reply_ = b;
@@ -7153,7 +7153,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PollStructOrBuilder getNewpollO
        * optional .personhood_service.PollStruct newpoll = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct, ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollStructOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct, ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollStructOrBuilder> 
           getNewpollFieldBuilder() {
         if (newpollBuilder_ == null) {
           newpollBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -7273,7 +7273,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PollListOrBuilder getListOrBuil
        * optional .personhood_service.PollList list = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.PollList, ch.epfl.dedis.lib.proto.PersonhoodService.PollList.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollListOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.PollList, ch.epfl.dedis.lib.proto.PersonhoodService.PollList.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollListOrBuilder> 
           getListFieldBuilder() {
         if (listBuilder_ == null) {
           listBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -7393,7 +7393,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PollAnswerOrBuilder getAnswerOr
        * optional .personhood_service.PollAnswer answer = 4;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.PollAnswer, ch.epfl.dedis.lib.proto.PersonhoodService.PollAnswer.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollAnswerOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.PollAnswer, ch.epfl.dedis.lib.proto.PersonhoodService.PollAnswer.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollAnswerOrBuilder> 
           getAnswerFieldBuilder() {
         if (answerBuilder_ == null) {
           answerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -7513,7 +7513,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PollDeleteOrBuilder getDeleteOr
        * optional .personhood_service.PollDelete delete = 5;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.PollDelete, ch.epfl.dedis.lib.proto.PersonhoodService.PollDelete.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollDeleteOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.PollDelete, ch.epfl.dedis.lib.proto.PersonhoodService.PollDelete.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollDeleteOrBuilder> 
           getDeleteFieldBuilder() {
         if (deleteBuilder_ == null) {
           deleteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -8307,7 +8307,7 @@ public ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder getIdentityOrBuilder(
        * required .darc.Identity identity = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder>
+          ch.epfl.dedis.lib.proto.DarcProto.Identity, ch.epfl.dedis.lib.proto.DarcProto.Identity.Builder, ch.epfl.dedis.lib.proto.DarcProto.IdentityOrBuilder> 
           getIdentityFieldBuilder() {
         if (identityBuilder_ == null) {
           identityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -10018,7 +10018,7 @@ public interface PollStructOrBuilder extends
     /**
      * repeated .personhood_service.PollChoice chosen = 6;
      */
-    java.util.List
+    java.util.List 
         getChosenList();
     /**
      * repeated .personhood_service.PollChoice chosen = 6;
@@ -10031,7 +10031,7 @@ public interface PollStructOrBuilder extends
     /**
      * repeated .personhood_service.PollChoice chosen = 6;
      */
-    java.util.List
+    java.util.List 
         getChosenOrBuilderList();
     /**
      * repeated .personhood_service.PollChoice chosen = 6;
@@ -10232,7 +10232,7 @@ public java.lang.String getTitle() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -10250,7 +10250,7 @@ public java.lang.String getTitle() {
         getTitleBytes() {
       java.lang.Object ref = title_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         title_ = b;
@@ -10280,7 +10280,7 @@ public java.lang.String getDescription() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -10298,7 +10298,7 @@ public java.lang.String getDescription() {
         getDescriptionBytes() {
       java.lang.Object ref = description_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         description_ = b;
@@ -10356,7 +10356,7 @@ public java.util.List getC
      * repeated .personhood_service.PollChoice chosen = 6;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getChosenOrBuilderList() {
       return chosen_;
     }
@@ -10847,7 +10847,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct ot
               chosenBuilder_ = null;
               chosen_ = other.chosen_;
               bitField0_ = (bitField0_ & ~0x00000020);
-              chosenBuilder_ =
+              chosenBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getChosenFieldBuilder() : null;
             } else {
@@ -11017,7 +11017,7 @@ public java.lang.String getTitle() {
           getTitleBytes() {
         java.lang.Object ref = title_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           title_ = b;
@@ -11101,7 +11101,7 @@ public java.lang.String getDescription() {
           getDescriptionBytes() {
         java.lang.Object ref = description_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           description_ = b;
@@ -11455,7 +11455,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PollChoiceOrBuilder getChosenOr
       /**
        * repeated .personhood_service.PollChoice chosen = 6;
        */
-      public java.util.List
+      public java.util.List 
            getChosenOrBuilderList() {
         if (chosenBuilder_ != null) {
           return chosenBuilder_.getMessageOrBuilderList();
@@ -11481,12 +11481,12 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PollChoice.Builder addChosenBui
       /**
        * repeated .personhood_service.PollChoice chosen = 6;
        */
-      public java.util.List
+      public java.util.List 
            getChosenBuilderList() {
         return getChosenFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.PollChoice, ch.epfl.dedis.lib.proto.PersonhoodService.PollChoice.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollChoiceOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.PollChoice, ch.epfl.dedis.lib.proto.PersonhoodService.PollChoice.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollChoiceOrBuilder> 
           getChosenFieldBuilder() {
         if (chosenBuilder_ == null) {
           chosenBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -12207,7 +12207,7 @@ public interface PollResponseOrBuilder extends
     /**
      * repeated .personhood_service.PollStruct polls = 1;
      */
-    java.util.List
+    java.util.List 
         getPollsList();
     /**
      * repeated .personhood_service.PollStruct polls = 1;
@@ -12220,7 +12220,7 @@ public interface PollResponseOrBuilder extends
     /**
      * repeated .personhood_service.PollStruct polls = 1;
      */
-    java.util.List
+    java.util.List 
         getPollsOrBuilderList();
     /**
      * repeated .personhood_service.PollStruct polls = 1;
@@ -12338,7 +12338,7 @@ public java.util.List getP
      * repeated .personhood_service.PollStruct polls = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getPollsOrBuilderList() {
       return polls_;
     }
@@ -12681,7 +12681,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.PersonhoodService.PollResponse
               pollsBuilder_ = null;
               polls_ = other.polls_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              pollsBuilder_ =
+              pollsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getPollsFieldBuilder() : null;
             } else {
@@ -12919,7 +12919,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PollStructOrBuilder getPollsOrB
       /**
        * repeated .personhood_service.PollStruct polls = 1;
        */
-      public java.util.List
+      public java.util.List 
            getPollsOrBuilderList() {
         if (pollsBuilder_ != null) {
           return pollsBuilder_.getMessageOrBuilderList();
@@ -12945,12 +12945,12 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct.Builder addPollsBuil
       /**
        * repeated .personhood_service.PollStruct polls = 1;
        */
-      public java.util.List
+      public java.util.List 
            getPollsBuilderList() {
         return getPollsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct, ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollStructOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct, ch.epfl.dedis.lib.proto.PersonhoodService.PollStruct.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.PollStructOrBuilder> 
           getPollsFieldBuilder() {
         if (pollsBuilder_ == null) {
           pollsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -13449,7 +13449,7 @@ public interface CapabilitiesResponseOrBuilder extends
     /**
      * repeated .personhood_service.Capability capabilities = 1;
      */
-    java.util.List
+    java.util.List 
         getCapabilitiesList();
     /**
      * repeated .personhood_service.Capability capabilities = 1;
@@ -13462,7 +13462,7 @@ public interface CapabilitiesResponseOrBuilder extends
     /**
      * repeated .personhood_service.Capability capabilities = 1;
      */
-    java.util.List
+    java.util.List 
         getCapabilitiesOrBuilderList();
     /**
      * repeated .personhood_service.Capability capabilities = 1;
@@ -13585,7 +13585,7 @@ public java.util.List getC
      * repeated .personhood_service.Capability capabilities = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getCapabilitiesOrBuilderList() {
       return capabilities_;
     }
@@ -13933,7 +13933,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.PersonhoodService.CapabilitiesR
               capabilitiesBuilder_ = null;
               capabilities_ = other.capabilities_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              capabilitiesBuilder_ =
+              capabilitiesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getCapabilitiesFieldBuilder() : null;
             } else {
@@ -14171,7 +14171,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.CapabilityOrBuilder getCapabili
       /**
        * repeated .personhood_service.Capability capabilities = 1;
        */
-      public java.util.List
+      public java.util.List 
            getCapabilitiesOrBuilderList() {
         if (capabilitiesBuilder_ != null) {
           return capabilitiesBuilder_.getMessageOrBuilderList();
@@ -14197,12 +14197,12 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.Capability.Builder addCapabilit
       /**
        * repeated .personhood_service.Capability capabilities = 1;
        */
-      public java.util.List
+      public java.util.List 
            getCapabilitiesBuilderList() {
         return getCapabilitiesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.Capability, ch.epfl.dedis.lib.proto.PersonhoodService.Capability.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.CapabilityOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.Capability, ch.epfl.dedis.lib.proto.PersonhoodService.Capability.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.CapabilityOrBuilder> 
           getCapabilitiesFieldBuilder() {
         if (capabilitiesBuilder_ == null) {
           capabilitiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -14416,7 +14416,7 @@ public java.lang.String getEndpoint() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -14434,7 +14434,7 @@ public java.lang.String getEndpoint() {
         getEndpointBytes() {
       java.lang.Object ref = endpoint_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         endpoint_ = b;
@@ -14855,7 +14855,7 @@ public java.lang.String getEndpoint() {
           getEndpointBytes() {
         java.lang.Object ref = endpoint_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           endpoint_ = b;
@@ -15272,7 +15272,7 @@ public java.lang.String getLocation() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -15290,7 +15290,7 @@ public java.lang.String getLocation() {
         getLocationBytes() {
       java.lang.Object ref = location_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         location_ = b;
@@ -15964,7 +15964,7 @@ public ch.epfl.dedis.lib.proto.Personhood.CredentialStructOrBuilder getCredentia
        * optional .personhood.CredentialStruct credential = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.Personhood.CredentialStruct, ch.epfl.dedis.lib.proto.Personhood.CredentialStruct.Builder, ch.epfl.dedis.lib.proto.Personhood.CredentialStructOrBuilder>
+          ch.epfl.dedis.lib.proto.Personhood.CredentialStruct, ch.epfl.dedis.lib.proto.Personhood.CredentialStruct.Builder, ch.epfl.dedis.lib.proto.Personhood.CredentialStructOrBuilder> 
           getCredentialFieldBuilder() {
         if (credentialBuilder_ == null) {
           credentialBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -16011,7 +16011,7 @@ public java.lang.String getLocation() {
           getLocationBytes() {
         java.lang.Object ref = location_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           location_ = b;
@@ -16799,7 +16799,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.UserLocationOrBuilder getUserlo
        * optional .personhood_service.UserLocation userlocation = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation, ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.UserLocationOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation, ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.UserLocationOrBuilder> 
           getUserlocationFieldBuilder() {
         if (userlocationBuilder_ == null) {
           userlocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -16910,7 +16910,7 @@ public interface MeetupResponseOrBuilder extends
     /**
      * repeated .personhood_service.UserLocation users = 1;
      */
-    java.util.List
+    java.util.List 
         getUsersList();
     /**
      * repeated .personhood_service.UserLocation users = 1;
@@ -16923,7 +16923,7 @@ public interface MeetupResponseOrBuilder extends
     /**
      * repeated .personhood_service.UserLocation users = 1;
      */
-    java.util.List
+    java.util.List 
         getUsersOrBuilderList();
     /**
      * repeated .personhood_service.UserLocation users = 1;
@@ -17039,7 +17039,7 @@ public java.util.List ge
      * repeated .personhood_service.UserLocation users = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getUsersOrBuilderList() {
       return users_;
     }
@@ -17380,7 +17380,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.PersonhoodService.MeetupRespons
               usersBuilder_ = null;
               users_ = other.users_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              usersBuilder_ =
+              usersBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUsersFieldBuilder() : null;
             } else {
@@ -17618,7 +17618,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.UserLocationOrBuilder getUsersO
       /**
        * repeated .personhood_service.UserLocation users = 1;
        */
-      public java.util.List
+      public java.util.List 
            getUsersOrBuilderList() {
         if (usersBuilder_ != null) {
           return usersBuilder_.getMessageOrBuilderList();
@@ -17644,12 +17644,12 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation.Builder addUsersBu
       /**
        * repeated .personhood_service.UserLocation users = 1;
        */
-      public java.util.List
+      public java.util.List 
            getUsersBuilderList() {
         return getUsersFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation, ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.UserLocationOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation, ch.epfl.dedis.lib.proto.PersonhoodService.UserLocation.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.UserLocationOrBuilder> 
           getUsersFieldBuilder() {
         if (usersBuilder_ == null) {
           usersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -18301,7 +18301,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidateOrBuilder get
        * optional .personhood_service.ChallengeCandidate update = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate, ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidateOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate, ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidateOrBuilder> 
           getUpdateFieldBuilder() {
         if (updateBuilder_ == null) {
           updateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -19130,7 +19130,7 @@ public interface ChallengeReplyOrBuilder extends
     /**
      * repeated .personhood_service.ChallengeCandidate list = 1;
      */
-    java.util.List
+    java.util.List 
         getListList();
     /**
      * repeated .personhood_service.ChallengeCandidate list = 1;
@@ -19143,7 +19143,7 @@ public interface ChallengeReplyOrBuilder extends
     /**
      * repeated .personhood_service.ChallengeCandidate list = 1;
      */
-    java.util.List
+    java.util.List 
         getListOrBuilderList();
     /**
      * repeated .personhood_service.ChallengeCandidate list = 1;
@@ -19260,7 +19260,7 @@ public java.util.Listrepeated .personhood_service.ChallengeCandidate list = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getListOrBuilderList() {
       return list_;
     }
@@ -19602,7 +19602,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeRepl
               listBuilder_ = null;
               list_ = other.list_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              listBuilder_ =
+              listBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getListFieldBuilder() : null;
             } else {
@@ -19840,7 +19840,7 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidateOrBuilder get
       /**
        * repeated .personhood_service.ChallengeCandidate list = 1;
        */
-      public java.util.List
+      public java.util.List 
            getListOrBuilderList() {
         if (listBuilder_ != null) {
           return listBuilder_.getMessageOrBuilderList();
@@ -19866,12 +19866,12 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate.Builder addL
       /**
        * repeated .personhood_service.ChallengeCandidate list = 1;
        */
-      public java.util.List
+      public java.util.List 
            getListBuilderList() {
         return getListFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate, ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidateOrBuilder>
+          ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate, ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidate.Builder, ch.epfl.dedis.lib.proto.PersonhoodService.ChallengeCandidateOrBuilder> 
           getListFieldBuilder() {
         if (listBuilder_ == null) {
           listBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -22601,7 +22601,7 @@ public java.lang.String getDeviceurl() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -22623,7 +22623,7 @@ public java.lang.String getDeviceurl() {
         getDeviceurlBytes() {
       java.lang.Object ref = deviceurl_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         deviceurl_ = b;
@@ -22690,7 +22690,7 @@ public java.lang.String getSmtphost() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -22713,7 +22713,7 @@ public java.lang.String getSmtphost() {
         getSmtphostBytes() {
       java.lang.Object ref = smtphost_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         smtphost_ = b;
@@ -22751,7 +22751,7 @@ public java.lang.String getSmtpfrom() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -22773,7 +22773,7 @@ public java.lang.String getSmtpfrom() {
         getSmtpfromBytes() {
       java.lang.Object ref = smtpfrom_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         smtpfrom_ = b;
@@ -22811,7 +22811,7 @@ public java.lang.String getSmtpreplyto() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -22833,7 +22833,7 @@ public java.lang.String getSmtpreplyto() {
         getSmtpreplytoBytes() {
       java.lang.Object ref = smtpreplyto_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         smtpreplyto_ = b;
@@ -22873,7 +22873,7 @@ public java.lang.String getBaseurl() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -22896,7 +22896,7 @@ public java.lang.String getBaseurl() {
         getBaseurlBytes() {
       java.lang.Object ref = baseurl_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         baseurl_ = b;
@@ -23736,7 +23736,7 @@ public ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder getRosterOrBuilder() {
        * required .onet.Roster roster = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder>
+          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder> 
           getRosterFieldBuilder() {
         if (rosterBuilder_ == null) {
           rosterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -23795,7 +23795,7 @@ public java.lang.String getDeviceurl() {
           getDeviceurlBytes() {
         java.lang.Object ref = deviceurl_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           deviceurl_ = b;
@@ -23964,7 +23964,7 @@ public java.lang.String getSmtphost() {
           getSmtphostBytes() {
         java.lang.Object ref = smtphost_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           smtphost_ = b;
@@ -24075,7 +24075,7 @@ public java.lang.String getSmtpfrom() {
           getSmtpfromBytes() {
         java.lang.Object ref = smtpfrom_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           smtpfrom_ = b;
@@ -24183,7 +24183,7 @@ public java.lang.String getSmtpreplyto() {
           getSmtpreplytoBytes() {
         java.lang.Object ref = smtpreplyto_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           smtpreplyto_ = b;
@@ -24294,7 +24294,7 @@ public java.lang.String getBaseurl() {
           getBaseurlBytes() {
         java.lang.Object ref = baseurl_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           baseurl_ = b;
@@ -25062,7 +25062,7 @@ public java.lang.String getEmail() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -25080,7 +25080,7 @@ public java.lang.String getEmail() {
         getEmailBytes() {
       java.lang.Object ref = email_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         email_ = b;
@@ -25118,7 +25118,7 @@ public java.lang.String getAlias() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -25140,7 +25140,7 @@ public java.lang.String getAlias() {
         getAliasBytes() {
       java.lang.Object ref = alias_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         alias_ = b;
@@ -25543,7 +25543,7 @@ public java.lang.String getEmail() {
           getEmailBytes() {
         java.lang.Object ref = email_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           email_ = b;
@@ -25639,7 +25639,7 @@ public java.lang.String getAlias() {
           getAliasBytes() {
         java.lang.Object ref = alias_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           alias_ = b;
@@ -26422,7 +26422,7 @@ public java.lang.String getEmail() {
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
-        com.google.protobuf.ByteString bs =
+        com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
@@ -26440,7 +26440,7 @@ public java.lang.String getEmail() {
         getEmailBytes() {
       java.lang.Object ref = email_;
       if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b =
+        com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
         email_ = b;
@@ -26810,7 +26810,7 @@ public java.lang.String getEmail() {
           getEmailBytes() {
         java.lang.Object ref = email_;
         if (ref instanceof String) {
-          com.google.protobuf.ByteString b =
+          com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
           email_ = b;
@@ -27452,167 +27452,167 @@ public ch.epfl.dedis.lib.proto.PersonhoodService.EmailRecoverReply getDefaultIns
 
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PartyList_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PartyList_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PartyDelete_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PartyDelete_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PartyListResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PartyListResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_Party_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_Party_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_RoPaSciList_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_RoPaSciList_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_RoPaSciListResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_RoPaSciListResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_StringReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_StringReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_Poll_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_Poll_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PollDelete_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PollDelete_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PollList_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PollList_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PollAnswer_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PollAnswer_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PollStruct_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PollStruct_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PollChoice_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PollChoice_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_PollResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_PollResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_Capabilities_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_Capabilities_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_CapabilitiesResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_CapabilitiesResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_Capability_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_Capability_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_UserLocation_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_UserLocation_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_Meetup_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_Meetup_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_MeetupResponse_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_MeetupResponse_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_Challenge_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_Challenge_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_ChallengeCandidate_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_ChallengeCandidate_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_ChallengeReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_ChallengeReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_GetAdminDarcIDs_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_GetAdminDarcIDs_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_GetAdminDarcIDsReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_GetAdminDarcIDsReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_SetAdminDarcIDs_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_SetAdminDarcIDs_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_SetAdminDarcIDsReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_SetAdminDarcIDsReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_EmailSetup_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_EmailSetup_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_EmailSetupReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_EmailSetupReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_EmailSignup_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_EmailSignup_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_EmailSignupReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_EmailSignupReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_EmailRecover_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_EmailRecover_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_personhood_service_EmailRecoverReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_personhood_service_EmailRecoverReply_fieldAccessorTable;
 
diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/SkipchainProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/SkipchainProto.java
index fee79bf00c..1e3e4c0f88 100644
--- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/SkipchainProto.java
+++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/SkipchainProto.java
@@ -780,7 +780,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getNewBlockOrBu
        * required .skipchain.SkipBlock newBlock = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getNewBlockFieldBuilder() {
         if (newBlockBuilder_ == null) {
           newBlockBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -1577,7 +1577,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getPreviousOrBu
        * optional .skipchain.SkipBlock previous = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getPreviousFieldBuilder() {
         if (previousBuilder_ == null) {
           previousBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -1697,7 +1697,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getLatestOrBuil
        * required .skipchain.SkipBlock latest = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getLatestFieldBuilder() {
         if (latestBuilder_ == null) {
           latestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -4009,7 +4009,7 @@ public interface GetSingleBlockByIndexReplyOrBuilder extends
     /**
      * repeated .skipchain.ForwardLink links = 2;
      */
-    java.util.List
+    java.util.List 
         getLinksList();
     /**
      * repeated .skipchain.ForwardLink links = 2;
@@ -4022,7 +4022,7 @@ public interface GetSingleBlockByIndexReplyOrBuilder extends
     /**
      * repeated .skipchain.ForwardLink links = 2;
      */
-    java.util.List
+    java.util.List 
         getLinksOrBuilderList();
     /**
      * repeated .skipchain.ForwardLink links = 2;
@@ -4179,7 +4179,7 @@ public java.util.List getLin
      * repeated .skipchain.ForwardLink links = 2;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getLinksOrBuilderList() {
       return links_;
     }
@@ -4565,7 +4565,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.SkipchainProto.GetSingleBlockBy
               linksBuilder_ = null;
               links_ = other.links_;
               bitField0_ = (bitField0_ & ~0x00000002);
-              linksBuilder_ =
+              linksBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getLinksFieldBuilder() : null;
             } else {
@@ -4721,7 +4721,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getSkipblockOrB
        * required .skipchain.SkipBlock skipblock = 1;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getSkipblockFieldBuilder() {
         if (skipblockBuilder_ == null) {
           skipblockBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -4929,7 +4929,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder getLinksOrBui
       /**
        * repeated .skipchain.ForwardLink links = 2;
        */
-      public java.util.List
+      public java.util.List 
            getLinksOrBuilderList() {
         if (linksBuilder_ != null) {
           return linksBuilder_.getMessageOrBuilderList();
@@ -4955,12 +4955,12 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder addLinksBuilde
       /**
        * repeated .skipchain.ForwardLink links = 2;
        */
-      public java.util.List
+      public java.util.List 
            getLinksBuilderList() {
         return getLinksFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder> 
           getLinksFieldBuilder() {
         if (linksBuilder_ == null) {
           linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -5616,7 +5616,7 @@ public interface GetUpdateChainReplyOrBuilder extends
      *
      * repeated .skipchain.SkipBlock update = 1;
      */
-    java.util.List
+    java.util.List 
         getUpdateList();
     /**
      * 
@@ -5644,7 +5644,7 @@ public interface GetUpdateChainReplyOrBuilder extends
      *
      * repeated .skipchain.SkipBlock update = 1;
      */
-    java.util.List
+    java.util.List 
         getUpdateOrBuilderList();
     /**
      * 
@@ -5776,7 +5776,7 @@ public java.util.List getUpdat
      * repeated .skipchain.SkipBlock update = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getUpdateOrBuilderList() {
       return update_;
     }
@@ -6133,7 +6133,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.SkipchainProto.GetUpdateChainRe
               updateBuilder_ = null;
               update_ = other.update_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              updateBuilder_ =
+              updateBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getUpdateFieldBuilder() : null;
             } else {
@@ -6446,7 +6446,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder getUpdateOrBuil
        *
        * repeated .skipchain.SkipBlock update = 1;
        */
-      public java.util.List
+      public java.util.List 
            getUpdateOrBuilderList() {
         if (updateBuilder_ != null) {
           return updateBuilder_.getMessageOrBuilderList();
@@ -6487,12 +6487,12 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder addUpdateBuilder
        *
        * repeated .skipchain.SkipBlock update = 1;
        */
-      public java.util.List
+      public java.util.List 
            getUpdateBuilderList() {
         return getUpdateFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlockOrBuilder> 
           getUpdateFieldBuilder() {
         if (updateBuilder_ == null) {
           updateBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -6691,7 +6691,7 @@ public interface SkipBlockOrBuilder extends
     /**
      * repeated .skipchain.ForwardLink forward = 11;
      */
-    java.util.List
+    java.util.List 
         getForwardList();
     /**
      * repeated .skipchain.ForwardLink forward = 11;
@@ -6704,7 +6704,7 @@ public interface SkipBlockOrBuilder extends
     /**
      * repeated .skipchain.ForwardLink forward = 11;
      */
-    java.util.List
+    java.util.List 
         getForwardOrBuilderList();
     /**
      * repeated .skipchain.ForwardLink forward = 11;
@@ -7138,7 +7138,7 @@ public java.util.List getFor
      * repeated .skipchain.ForwardLink forward = 11;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getForwardOrBuilderList() {
       return forward_;
     }
@@ -7874,7 +7874,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.SkipchainProto.SkipBlock other)
               forwardBuilder_ = null;
               forward_ = other.forward_;
               bitField0_ = (bitField0_ & ~0x00000400);
-              forwardBuilder_ =
+              forwardBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getForwardFieldBuilder() : null;
             } else {
@@ -8467,7 +8467,7 @@ public ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder getRosterOrBuilder() {
        * required .onet.Roster roster = 9;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder>
+          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder> 
           getRosterFieldBuilder() {
         if (rosterBuilder_ == null) {
           rosterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -8717,7 +8717,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder getForwardOrB
       /**
        * repeated .skipchain.ForwardLink forward = 11;
        */
-      public java.util.List
+      public java.util.List 
            getForwardOrBuilderList() {
         if (forwardBuilder_ != null) {
           return forwardBuilder_.getMessageOrBuilderList();
@@ -8743,12 +8743,12 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder addForwardBuil
       /**
        * repeated .skipchain.ForwardLink forward = 11;
        */
-      public java.util.List
+      public java.util.List 
            getForwardBuilderList() {
         return getForwardFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLink.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ForwardLinkOrBuilder> 
           getForwardFieldBuilder() {
         if (forwardBuilder_ == null) {
           forwardBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -9795,7 +9795,7 @@ public ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder getNewRosterOrBuilder()
        * optional .onet.Roster newRoster = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder>
+          ch.epfl.dedis.lib.proto.OnetProto.Roster, ch.epfl.dedis.lib.proto.OnetProto.Roster.Builder, ch.epfl.dedis.lib.proto.OnetProto.RosterOrBuilder> 
           getNewRosterFieldBuilder() {
         if (newRosterBuilder_ == null) {
           newRosterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -9915,7 +9915,7 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.ByzcoinSigOrBuilder getSignatureOr
        * required .skipchain.ByzcoinSig signature = 4;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.SkipchainProto.ByzcoinSig, ch.epfl.dedis.lib.proto.SkipchainProto.ByzcoinSig.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ByzcoinSigOrBuilder>
+          ch.epfl.dedis.lib.proto.SkipchainProto.ByzcoinSig, ch.epfl.dedis.lib.proto.SkipchainProto.ByzcoinSig.Builder, ch.epfl.dedis.lib.proto.SkipchainProto.ByzcoinSigOrBuilder> 
           getSignatureFieldBuilder() {
         if (signatureBuilder_ == null) {
           signatureBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -11910,72 +11910,72 @@ public ch.epfl.dedis.lib.proto.SkipchainProto.Exception getDefaultInstanceForTyp
 
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_StoreSkipBlock_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_StoreSkipBlock_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_StoreSkipBlockReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_StoreSkipBlockReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_GetAllSkipChainIDs_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_GetAllSkipChainIDs_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_GetAllSkipChainIDsReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_GetAllSkipChainIDsReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_GetSingleBlock_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_GetSingleBlock_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_GetSingleBlockByIndex_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_GetSingleBlockByIndex_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_GetSingleBlockByIndexReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_GetSingleBlockByIndexReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_GetUpdateChain_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_GetUpdateChain_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_GetUpdateChainReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_GetUpdateChainReply_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_SkipBlock_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_SkipBlock_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_ForwardLink_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_ForwardLink_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_ByzcoinSig_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_ByzcoinSig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_SchnorrSig_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_SchnorrSig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_skipchain_Exception_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_skipchain_Exception_fieldAccessorTable;
 
diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/StatusProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/StatusProto.java
index 62c5dcd2e6..96880b18da 100644
--- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/StatusProto.java
+++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/StatusProto.java
@@ -620,7 +620,7 @@ private static final class StatusDefaultEntryHolder {
           java.lang.String, ch.epfl.dedis.lib.proto.OnetProto.Status> defaultEntry =
               com.google.protobuf.MapEntry
               .newDefaultInstance(
-                  ch.epfl.dedis.lib.proto.StatusProto.internal_static_status_Response_StatusEntry_descriptor,
+                  ch.epfl.dedis.lib.proto.StatusProto.internal_static_status_Response_StatusEntry_descriptor, 
                   com.google.protobuf.WireFormat.FieldType.STRING,
                   "",
                   com.google.protobuf.WireFormat.FieldType.MESSAGE,
@@ -1343,7 +1343,7 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder getServeride
        * optional .network.ServerIdentity serveridentity = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder>
+          ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder> 
           getServeridentityFieldBuilder() {
         if (serveridentityBuilder_ == null) {
           serveridentityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -1448,7 +1448,7 @@ public interface CheckConnectivityOrBuilder extends
     /**
      * repeated .network.ServerIdentity list = 4;
      */
-    java.util.List
+    java.util.List 
         getListList();
     /**
      * repeated .network.ServerIdentity list = 4;
@@ -1461,7 +1461,7 @@ public interface CheckConnectivityOrBuilder extends
     /**
      * repeated .network.ServerIdentity list = 4;
      */
-    java.util.List
+    java.util.List 
         getListOrBuilderList();
     /**
      * repeated .network.ServerIdentity list = 4;
@@ -1674,7 +1674,7 @@ public java.util.List getLi
      * repeated .network.ServerIdentity list = 4;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getListOrBuilderList() {
       return list_;
     }
@@ -2159,7 +2159,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.StatusProto.CheckConnectivity o
               listBuilder_ = null;
               list_ = other.list_;
               bitField0_ = (bitField0_ & ~0x00000008);
-              listBuilder_ =
+              listBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getListFieldBuilder() : null;
             } else {
@@ -2529,7 +2529,7 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder getListOrBui
       /**
        * repeated .network.ServerIdentity list = 4;
        */
-      public java.util.List
+      public java.util.List 
            getListOrBuilderList() {
         if (listBuilder_ != null) {
           return listBuilder_.getMessageOrBuilderList();
@@ -2555,12 +2555,12 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder addListBuilde
       /**
        * repeated .network.ServerIdentity list = 4;
        */
-      public java.util.List
+      public java.util.List 
            getListBuilderList() {
         return getListFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder>
+          ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder> 
           getListFieldBuilder() {
         if (listBuilder_ == null) {
           listBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -2675,7 +2675,7 @@ public interface CheckConnectivityReplyOrBuilder extends
     /**
      * repeated .network.ServerIdentity nodes = 1;
      */
-    java.util.List
+    java.util.List 
         getNodesList();
     /**
      * repeated .network.ServerIdentity nodes = 1;
@@ -2688,7 +2688,7 @@ public interface CheckConnectivityReplyOrBuilder extends
     /**
      * repeated .network.ServerIdentity nodes = 1;
      */
-    java.util.List
+    java.util.List 
         getNodesOrBuilderList();
     /**
      * repeated .network.ServerIdentity nodes = 1;
@@ -2805,7 +2805,7 @@ public java.util.List getNo
      * repeated .network.ServerIdentity nodes = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getNodesOrBuilderList() {
       return nodes_;
     }
@@ -3147,7 +3147,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.StatusProto.CheckConnectivityRe
               nodesBuilder_ = null;
               nodes_ = other.nodes_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              nodesBuilder_ =
+              nodesBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getNodesFieldBuilder() : null;
             } else {
@@ -3385,7 +3385,7 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder getNodesOrBu
       /**
        * repeated .network.ServerIdentity nodes = 1;
        */
-      public java.util.List
+      public java.util.List 
            getNodesOrBuilderList() {
         if (nodesBuilder_ != null) {
           return nodesBuilder_.getMessageOrBuilderList();
@@ -3411,12 +3411,12 @@ public ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder addNodesBuild
       /**
        * repeated .network.ServerIdentity nodes = 1;
        */
-      public java.util.List
+      public java.util.List 
            getNodesBuilderList() {
         return getNodesFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder>
+          ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentity.Builder, ch.epfl.dedis.lib.proto.NetworkProto.ServerIdentityOrBuilder> 
           getNodesFieldBuilder() {
         if (nodesBuilder_ == null) {
           nodesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -3484,27 +3484,27 @@ public ch.epfl.dedis.lib.proto.StatusProto.CheckConnectivityReply getDefaultInst
 
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_status_Request_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_status_Request_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_status_Response_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_status_Response_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_status_Response_StatusEntry_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_status_Response_StatusEntry_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_status_CheckConnectivity_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_status_CheckConnectivity_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_status_CheckConnectivityReply_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_status_CheckConnectivityReply_fieldAccessorTable;
 
diff --git a/external/java/src/main/java/ch/epfl/dedis/lib/proto/TrieProto.java b/external/java/src/main/java/ch/epfl/dedis/lib/proto/TrieProto.java
index 8b1a64b0c9..69b6d28cca 100644
--- a/external/java/src/main/java/ch/epfl/dedis/lib/proto/TrieProto.java
+++ b/external/java/src/main/java/ch/epfl/dedis/lib/proto/TrieProto.java
@@ -2112,7 +2112,7 @@ public interface ProofOrBuilder extends
     /**
      * repeated .trie.InteriorNode interiors = 1;
      */
-    java.util.List
+    java.util.List 
         getInteriorsList();
     /**
      * repeated .trie.InteriorNode interiors = 1;
@@ -2125,7 +2125,7 @@ public interface ProofOrBuilder extends
     /**
      * repeated .trie.InteriorNode interiors = 1;
      */
-    java.util.List
+    java.util.List 
         getInteriorsOrBuilderList();
     /**
      * repeated .trie.InteriorNode interiors = 1;
@@ -2315,7 +2315,7 @@ public java.util.List getInterio
      * repeated .trie.InteriorNode interiors = 1;
      */
     @java.lang.Override
-    public java.util.List
+    public java.util.List 
         getInteriorsOrBuilderList() {
       return interiors_;
     }
@@ -2829,7 +2829,7 @@ public Builder mergeFrom(ch.epfl.dedis.lib.proto.TrieProto.Proof other) {
               interiorsBuilder_ = null;
               interiors_ = other.interiors_;
               bitField0_ = (bitField0_ & ~0x00000001);
-              interiorsBuilder_ =
+              interiorsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getInteriorsFieldBuilder() : null;
             } else {
@@ -3088,7 +3088,7 @@ public ch.epfl.dedis.lib.proto.TrieProto.InteriorNodeOrBuilder getInteriorsOrBui
       /**
        * repeated .trie.InteriorNode interiors = 1;
        */
-      public java.util.List
+      public java.util.List 
            getInteriorsOrBuilderList() {
         if (interiorsBuilder_ != null) {
           return interiorsBuilder_.getMessageOrBuilderList();
@@ -3114,12 +3114,12 @@ public ch.epfl.dedis.lib.proto.TrieProto.InteriorNode.Builder addInteriorsBuilde
       /**
        * repeated .trie.InteriorNode interiors = 1;
        */
-      public java.util.List
+      public java.util.List 
            getInteriorsBuilderList() {
         return getInteriorsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.TrieProto.InteriorNode, ch.epfl.dedis.lib.proto.TrieProto.InteriorNode.Builder, ch.epfl.dedis.lib.proto.TrieProto.InteriorNodeOrBuilder>
+          ch.epfl.dedis.lib.proto.TrieProto.InteriorNode, ch.epfl.dedis.lib.proto.TrieProto.InteriorNode.Builder, ch.epfl.dedis.lib.proto.TrieProto.InteriorNodeOrBuilder> 
           getInteriorsFieldBuilder() {
         if (interiorsBuilder_ == null) {
           interiorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
@@ -3240,7 +3240,7 @@ public ch.epfl.dedis.lib.proto.TrieProto.LeafNodeOrBuilder getLeafOrBuilder() {
        * required .trie.LeafNode leaf = 2;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.TrieProto.LeafNode, ch.epfl.dedis.lib.proto.TrieProto.LeafNode.Builder, ch.epfl.dedis.lib.proto.TrieProto.LeafNodeOrBuilder>
+          ch.epfl.dedis.lib.proto.TrieProto.LeafNode, ch.epfl.dedis.lib.proto.TrieProto.LeafNode.Builder, ch.epfl.dedis.lib.proto.TrieProto.LeafNodeOrBuilder> 
           getLeafFieldBuilder() {
         if (leafBuilder_ == null) {
           leafBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -3360,7 +3360,7 @@ public ch.epfl.dedis.lib.proto.TrieProto.EmptyNodeOrBuilder getEmptyOrBuilder()
        * required .trie.EmptyNode empty = 3;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          ch.epfl.dedis.lib.proto.TrieProto.EmptyNode, ch.epfl.dedis.lib.proto.TrieProto.EmptyNode.Builder, ch.epfl.dedis.lib.proto.TrieProto.EmptyNodeOrBuilder>
+          ch.epfl.dedis.lib.proto.TrieProto.EmptyNode, ch.epfl.dedis.lib.proto.TrieProto.EmptyNode.Builder, ch.epfl.dedis.lib.proto.TrieProto.EmptyNodeOrBuilder> 
           getEmptyFieldBuilder() {
         if (emptyBuilder_ == null) {
           emptyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
@@ -3469,22 +3469,22 @@ public ch.epfl.dedis.lib.proto.TrieProto.Proof getDefaultInstanceForType() {
 
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_trie_InteriorNode_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_trie_InteriorNode_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_trie_EmptyNode_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_trie_EmptyNode_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_trie_LeafNode_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_trie_LeafNode_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_trie_Proof_descriptor;
-  private static final
+  private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_trie_Proof_fieldAccessorTable;
 
diff --git a/external/js/cothority/src/darc/identity-wrapper.ts b/external/js/cothority/src/darc/identity-wrapper.ts
index c4d5517db8..9729f0148e 100644
--- a/external/js/cothority/src/darc/identity-wrapper.ts
+++ b/external/js/cothority/src/darc/identity-wrapper.ts
@@ -45,7 +45,7 @@ export default class IdentityWrapper extends Message {
         }
         if (idStr.startsWith("tsm:")) {
             const field = idStr.split(":", 2);
-            const tsm = new IdentityTsm({publickey: Buffer.from(field[1])});
+            const tsm = new IdentityTsm({publickey: Buffer.from(field[1], "hex")});
             return new IdentityWrapper({tsm});
         }
     }
diff --git a/external/js/cothority/src/protobuf/models.json b/external/js/cothority/src/protobuf/models.json
index 1cd3fe95be..00cdcf0746 100644
--- a/external/js/cothority/src/protobuf/models.json
+++ b/external/js/cothority/src/protobuf/models.json
@@ -1 +1 @@
-{"nested":{"cothority":{},"authprox":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"AuthProxProto"},"nested":{"EnrollRequest":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"participants":{"rule":"repeated","type":"bytes","id":3},"longpri":{"rule":"required","type":"PriShare","id":4},"longpubs":{"rule":"repeated","type":"bytes","id":5}}},"EnrollResponse":{"fields":{}},"SignatureRequest":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"authinfo":{"rule":"required","type":"bytes","id":3},"randpri":{"rule":"required","type":"PriShare","id":4},"randpubs":{"rule":"repeated","type":"bytes","id":5},"message":{"rule":"required","type":"bytes","id":6}}},"PriShare":{"fields":{}},"PartialSig":{"fields":{"partial":{"rule":"required","type":"PriShare","id":1},"sessionid":{"rule":"required","type":"bytes","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"SignatureResponse":{"fields":{"partialsignature":{"rule":"required","type":"PartialSig","id":1}}},"EnrollmentsRequest":{"fields":{"types":{"rule":"repeated","type":"string","id":1},"issuers":{"rule":"repeated","type":"string","id":2}}},"EnrollmentsResponse":{"fields":{"enrollments":{"rule":"repeated","type":"EnrollmentInfo","id":1,"options":{"packed":false}}}},"EnrollmentInfo":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"public":{"rule":"required","type":"bytes","id":3}}}}},"bevm":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"BEvmProto"},"nested":{"ViewCallRequest":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"bevminstanceid":{"rule":"required","type":"bytes","id":2},"accountaddress":{"rule":"required","type":"bytes","id":3},"contractaddress":{"rule":"required","type":"bytes","id":4},"calldata":{"rule":"required","type":"bytes","id":5},"minblockindex":{"rule":"required","type":"sint32","id":6}}},"ViewCallResponse":{"fields":{"result":{"rule":"required","type":"bytes","id":1}}}}},"byzcoin":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"ByzCoinProto"},"nested":{"GetAllByzCoinIDsRequest":{"fields":{}},"GetAllByzCoinIDsResponse":{"fields":{"ids":{"rule":"repeated","type":"bytes","id":1}}},"DataHeader":{"fields":{"trieroot":{"rule":"required","type":"bytes","id":1},"clienttransactionhash":{"rule":"required","type":"bytes","id":2},"statechangeshash":{"rule":"required","type":"bytes","id":3},"timestamp":{"rule":"required","type":"sint64","id":4},"version":{"type":"sint32","id":5}}},"DataBody":{"fields":{"txresults":{"rule":"repeated","type":"TxResult","id":1,"options":{"packed":false}}}},"CreateGenesisBlock":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"genesisdarc":{"rule":"required","type":"darc.Darc","id":3},"blockinterval":{"rule":"required","type":"sint64","id":4},"maxblocksize":{"type":"sint32","id":5},"darccontractids":{"rule":"repeated","type":"string","id":6}}},"CreateGenesisBlockResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"skipblock":{"type":"skipchain.SkipBlock","id":2}}},"AddTxRequest":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"skipchainid":{"rule":"required","type":"bytes","id":2},"transaction":{"rule":"required","type":"ClientTransaction","id":3},"inclusionwait":{"type":"sint32","id":4},"prooffrom":{"type":"bytes","id":5},"flags":{"type":"sint32","id":6}}},"AddTxResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"error":{"type":"string","id":2},"proof":{"type":"Proof","id":3}}},"GetProof":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"key":{"rule":"required","type":"bytes","id":2},"id":{"rule":"required","type":"bytes","id":3},"mustcontainblock":{"type":"bytes","id":4}}},"GetProofResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"proof":{"rule":"required","type":"Proof","id":2}}},"CheckAuthorization":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"byzcoinid":{"rule":"required","type":"bytes","id":2},"darcid":{"rule":"required","type":"bytes","id":3},"identities":{"rule":"repeated","type":"darc.Identity","id":4,"options":{"packed":false}}}},"CheckAuthorizationResponse":{"fields":{"actions":{"rule":"repeated","type":"string","id":1}}},"ChainConfig":{"fields":{"blockinterval":{"rule":"required","type":"sint64","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"maxblocksize":{"rule":"required","type":"sint32","id":3},"darccontractids":{"rule":"repeated","type":"string","id":4}}},"Proof":{"fields":{"inclusionproof":{"rule":"required","type":"trie.Proof","id":1},"latest":{"rule":"required","type":"skipchain.SkipBlock","id":2},"links":{"rule":"repeated","type":"skipchain.ForwardLink","id":3,"options":{"packed":false}}}},"Instruction":{"fields":{"instanceid":{"rule":"required","type":"bytes","id":1},"spawn":{"type":"Spawn","id":2},"invoke":{"type":"Invoke","id":3},"delete":{"type":"Delete","id":4},"signercounter":{"rule":"repeated","type":"uint64","id":5,"options":{"packed":true}},"signeridentities":{"rule":"repeated","type":"darc.Identity","id":6,"options":{"packed":false}},"signatures":{"rule":"repeated","type":"bytes","id":7}}},"Spawn":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"args":{"rule":"repeated","type":"Argument","id":2,"options":{"packed":false}}}},"Invoke":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"command":{"rule":"required","type":"string","id":2},"args":{"rule":"repeated","type":"Argument","id":3,"options":{"packed":false}}}},"Delete":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"args":{"rule":"repeated","type":"Argument","id":2,"options":{"packed":false}}}},"Argument":{"fields":{"name":{"rule":"required","type":"string","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"ClientTransaction":{"fields":{"instructions":{"rule":"repeated","type":"Instruction","id":1,"options":{"packed":false}}}},"TxResult":{"fields":{"clienttransaction":{"rule":"required","type":"ClientTransaction","id":1},"accepted":{"rule":"required","type":"bool","id":2}}},"StateChange":{"fields":{"stateaction":{"rule":"required","type":"sint32","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"contractid":{"rule":"required","type":"string","id":3},"value":{"rule":"required","type":"bytes","id":4},"darcid":{"rule":"required","type":"bytes","id":5},"version":{"rule":"required","type":"uint64","id":6}}},"Coin":{"fields":{"name":{"rule":"required","type":"bytes","id":1},"value":{"rule":"required","type":"uint64","id":2}}},"StreamingRequest":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"StreamingResponse":{"fields":{"block":{"type":"skipchain.SkipBlock","id":1}}},"PaginateRequest":{"fields":{"startid":{"rule":"required","type":"bytes","id":1},"pagesize":{"rule":"required","type":"uint64","id":2},"numpages":{"rule":"required","type":"uint64","id":3},"backward":{"rule":"required","type":"bool","id":4}}},"PaginateResponse":{"fields":{"blocks":{"rule":"repeated","type":"skipchain.SkipBlock","id":1,"options":{"packed":false}},"pagenumber":{"rule":"required","type":"uint64","id":2},"backward":{"rule":"required","type":"bool","id":3},"errorcode":{"rule":"required","type":"uint64","id":4},"errortext":{"rule":"repeated","type":"string","id":5}}},"DownloadState":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"nonce":{"rule":"required","type":"uint64","id":2},"length":{"rule":"required","type":"sint32","id":3}}},"DownloadStateResponse":{"fields":{"keyvalues":{"rule":"repeated","type":"DBKeyValue","id":1,"options":{"packed":false}},"nonce":{"rule":"required","type":"uint64","id":2},"total":{"type":"sint32","id":3}}},"DBKeyValue":{"fields":{"key":{"rule":"required","type":"bytes","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"StateChangeBody":{"fields":{"stateaction":{"rule":"required","type":"sint32","id":1},"contractid":{"rule":"required","type":"string","id":2},"value":{"rule":"required","type":"bytes","id":3},"version":{"rule":"required","type":"uint64","id":4},"darcid":{"rule":"required","type":"bytes","id":5}}},"GetSignerCounters":{"fields":{"signerids":{"rule":"repeated","type":"string","id":1},"skipchainid":{"rule":"required","type":"bytes","id":2}}},"GetSignerCountersResponse":{"fields":{"counters":{"rule":"repeated","type":"uint64","id":1,"options":{"packed":true}},"index":{"type":"uint64","id":2}}},"GetInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"version":{"rule":"required","type":"uint64","id":3}}},"GetLastInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2}}},"GetInstanceVersionResponse":{"fields":{"statechange":{"rule":"required","type":"StateChange","id":1},"blockindex":{"rule":"required","type":"sint32","id":2}}},"GetAllInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2}}},"GetAllInstanceVersionResponse":{"fields":{"statechanges":{"rule":"repeated","type":"GetInstanceVersionResponse","id":1,"options":{"packed":false}}}},"CheckStateChangeValidity":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"version":{"rule":"required","type":"uint64","id":3}}},"CheckStateChangeValidityResponse":{"fields":{"statechanges":{"rule":"repeated","type":"StateChange","id":1,"options":{"packed":false}},"blockid":{"rule":"required","type":"bytes","id":2}}},"ResolveInstanceID":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"darcid":{"rule":"required","type":"bytes","id":2},"name":{"rule":"required","type":"string","id":3}}},"ResolvedInstanceID":{"fields":{"instanceid":{"rule":"required","type":"bytes","id":1}}},"DebugRequest":{"fields":{"byzcoinid":{"type":"bytes","id":1}}},"DebugResponse":{"fields":{"byzcoins":{"rule":"repeated","type":"DebugResponseByzcoin","id":1,"options":{"packed":false}},"dump":{"rule":"repeated","type":"DebugResponseState","id":2,"options":{"packed":false}}}},"DebugResponseByzcoin":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"genesis":{"type":"skipchain.SkipBlock","id":2},"latest":{"type":"skipchain.SkipBlock","id":3}}},"DebugResponseState":{"fields":{"key":{"rule":"required","type":"bytes","id":1},"state":{"rule":"required","type":"StateChangeBody","id":2}}},"DebugRemoveRequest":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"signature":{"rule":"required","type":"bytes","id":2}}},"IDVersion":{"fields":{"id":{"rule":"required","type":"bytes","id":1},"version":{"rule":"required","type":"uint64","id":2}}},"GetUpdatesRequest":{"fields":{"instances":{"rule":"repeated","type":"IDVersion","id":1,"options":{"packed":false}},"flags":{"rule":"required","type":"uint64","id":2},"latestblockid":{"type":"bytes","id":3},"skipchainid":{"type":"bytes","id":4}}},"GetUpdatesReply":{"fields":{"proofs":{"rule":"repeated","type":"trie.Proof","id":1,"options":{"packed":false}},"links":{"rule":"repeated","type":"skipchain.ForwardLink","id":2,"options":{"packed":false}},"latest":{"type":"skipchain.SkipBlock","id":3}}}}},"skipchain":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"SkipchainProto"},"nested":{"StoreSkipBlock":{"fields":{"targetSkipChainID":{"rule":"required","type":"bytes","id":1},"newBlock":{"rule":"required","type":"SkipBlock","id":2},"signature":{"type":"bytes","id":3}}},"StoreSkipBlockReply":{"fields":{"previous":{"type":"SkipBlock","id":1},"latest":{"rule":"required","type":"SkipBlock","id":2}}},"GetAllSkipChainIDs":{"fields":{}},"GetAllSkipChainIDsReply":{"fields":{"skipChainIDs":{"rule":"repeated","type":"bytes","id":1}}},"GetSingleBlock":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"GetSingleBlockByIndex":{"fields":{"genesis":{"rule":"required","type":"bytes","id":1},"index":{"rule":"required","type":"sint32","id":2}}},"GetSingleBlockByIndexReply":{"fields":{"skipblock":{"rule":"required","type":"SkipBlock","id":1},"links":{"rule":"repeated","type":"ForwardLink","id":2,"options":{"packed":false}}}},"GetUpdateChain":{"fields":{"latestID":{"rule":"required","type":"bytes","id":1}}},"GetUpdateChainReply":{"fields":{"update":{"rule":"repeated","type":"SkipBlock","id":1,"options":{"packed":false}}}},"SkipBlock":{"fields":{"index":{"rule":"required","type":"sint32","id":1},"height":{"rule":"required","type":"sint32","id":2},"maxHeight":{"rule":"required","type":"sint32","id":3},"baseHeight":{"rule":"required","type":"sint32","id":4},"backlinks":{"rule":"repeated","type":"bytes","id":5},"verifiers":{"rule":"repeated","type":"bytes","id":6},"genesis":{"rule":"required","type":"bytes","id":7},"data":{"rule":"required","type":"bytes","id":8},"roster":{"rule":"required","type":"onet.Roster","id":9},"hash":{"rule":"required","type":"bytes","id":10},"forward":{"rule":"repeated","type":"ForwardLink","id":11,"options":{"packed":false}},"payload":{"type":"bytes","id":12},"signatureScheme":{"type":"uint32","id":13}}},"ForwardLink":{"fields":{"from":{"rule":"required","type":"bytes","id":1},"to":{"rule":"required","type":"bytes","id":2},"newRoster":{"type":"onet.Roster","id":3},"signature":{"rule":"required","type":"ByzcoinSig","id":4}}},"ByzcoinSig":{"fields":{"msg":{"rule":"required","type":"bytes","id":1},"sig":{"rule":"required","type":"bytes","id":2}}},"SchnorrSig":{"fields":{"challenge":{"rule":"required","type":"bytes","id":1},"response":{"rule":"required","type":"bytes","id":2}}},"Exception":{"fields":{"index":{"rule":"required","type":"sint32","id":1},"commitment":{"rule":"required","type":"bytes","id":2}}}}},"onet":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"OnetProto"},"nested":{"Roster":{"fields":{"id":{"type":"bytes","id":1},"list":{"rule":"repeated","type":"network.ServerIdentity","id":2,"options":{"packed":false}},"aggregate":{"rule":"required","type":"bytes","id":3}}},"Status":{"fields":{"field":{"keyType":"string","type":"string","id":1}}}}},"network":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"NetworkProto"},"nested":{"ServerIdentity":{"fields":{"public":{"rule":"required","type":"bytes","id":1},"serviceIdentities":{"rule":"repeated","type":"ServiceIdentity","id":2,"options":{"packed":false}},"id":{"rule":"required","type":"bytes","id":3},"address":{"rule":"required","type":"string","id":4},"description":{"rule":"required","type":"string","id":5},"url":{"type":"string","id":7}}},"ServiceIdentity":{"fields":{"name":{"rule":"required","type":"string","id":1},"suite":{"rule":"required","type":"string","id":2},"public":{"rule":"required","type":"bytes","id":3}}}}},"darc":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"DarcProto"},"nested":{"Darc":{"fields":{"version":{"rule":"required","type":"uint64","id":1},"description":{"rule":"required","type":"bytes","id":2},"baseid":{"type":"bytes","id":3},"previd":{"rule":"required","type":"bytes","id":4},"rules":{"rule":"required","type":"Rules","id":5},"signatures":{"rule":"repeated","type":"Signature","id":6,"options":{"packed":false}},"verificationdarcs":{"rule":"repeated","type":"Darc","id":7,"options":{"packed":false}}}},"Identity":{"fields":{"darc":{"type":"IdentityDarc","id":1},"ed25519":{"type":"IdentityEd25519","id":2},"x509ec":{"type":"IdentityX509EC","id":3},"proxy":{"type":"IdentityProxy","id":4},"evmcontract":{"type":"IdentityEvmContract","id":5},"did":{"type":"IdentityDID","id":6},"tsm":{"type":"IdentityTSM","id":7}}},"IdentityEd25519":{"fields":{"point":{"rule":"required","type":"bytes","id":1}}},"IdentityTSM":{"fields":{"publickey":{"rule":"required","type":"ecdsa.PublicKey","id":1}}},"IdentityX509EC":{"fields":{"public":{"rule":"required","type":"bytes","id":1}}},"IdentityProxy":{"fields":{"data":{"rule":"required","type":"string","id":1},"public":{"rule":"required","type":"bytes","id":2}}},"IdentityDarc":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"IdentityEvmContract":{"fields":{"address":{"rule":"required","type":"bytes","id":1}}},"IdentityDID":{"fields":{"did":{"rule":"required","type":"string","id":1},"diddoc":{"type":"DIDDoc","id":2},"method":{"rule":"required","type":"string","id":3}}},"DIDDoc":{"fields":{"context":{"rule":"repeated","type":"string","id":1},"id":{"rule":"required","type":"string","id":2},"publickey":{"rule":"repeated","type":"PublicKey","id":3,"options":{"packed":false}},"service":{"rule":"repeated","type":"DIDService","id":4,"options":{"packed":false}},"authentication":{"rule":"repeated","type":"VerificationMethod","id":5,"options":{"packed":false}}}},"PublicKey":{"fields":{"id":{"rule":"required","type":"string","id":1},"type":{"rule":"required","type":"string","id":2},"controller":{"rule":"required","type":"string","id":3},"value":{"rule":"required","type":"bytes","id":4}}},"DIDService":{"fields":{"id":{"rule":"required","type":"string","id":1},"type":{"rule":"required","type":"string","id":2},"priority":{"rule":"required","type":"sint32","id":3},"recipientkeys":{"rule":"repeated","type":"string","id":4},"routingkeys":{"rule":"repeated","type":"string","id":5},"serviceendpoint":{"rule":"required","type":"string","id":6}}},"VerificationMethod":{"fields":{"publickey":{"rule":"required","type":"PublicKey","id":1}}},"Signature":{"fields":{"signature":{"rule":"required","type":"bytes","id":1},"signer":{"rule":"required","type":"Identity","id":2}}},"Signer":{"fields":{"ed25519":{"type":"SignerEd25519","id":1},"x509ec":{"type":"SignerX509EC","id":2},"proxy":{"type":"SignerProxy","id":3},"evmcontract":{"type":"SignerEvmContract","id":4},"did":{"type":"SignerDID","id":5},"tsm":{"type":"SignerTSM","id":6}}},"SignerEd25519":{"fields":{"point":{"rule":"required","type":"bytes","id":1},"secret":{"rule":"required","type":"bytes","id":2}}},"SignerX509EC":{"fields":{"point":{"rule":"required","type":"bytes","id":1}}},"SignerTSM":{"fields":{"privatekey":{"rule":"required","type":"ecdsa.PrivateKey","id":1}}},"SignerProxy":{"fields":{"data":{"rule":"required","type":"string","id":1},"public":{"rule":"required","type":"bytes","id":2}}},"SignerEvmContract":{"fields":{"address":{"rule":"required","type":"bytes","id":1}}},"SignerDID":{"fields":{"public":{"rule":"required","type":"bytes","id":1},"secret":{"rule":"required","type":"bytes","id":2},"did":{"rule":"required","type":"string","id":3}}},"Request":{"fields":{"baseid":{"rule":"required","type":"bytes","id":1},"action":{"rule":"required","type":"string","id":2},"msg":{"rule":"required","type":"bytes","id":3},"identities":{"rule":"repeated","type":"Identity","id":4,"options":{"packed":false}},"signatures":{"rule":"repeated","type":"bytes","id":5}}},"Rules":{"fields":{"list":{"rule":"repeated","type":"Rule","id":1,"options":{"packed":false}}}},"Rule":{"fields":{"action":{"rule":"required","type":"string","id":1},"expr":{"rule":"required","type":"bytes","id":2}}}}},"trie":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"TrieProto"},"nested":{"InteriorNode":{"fields":{"left":{"rule":"required","type":"bytes","id":1},"right":{"rule":"required","type":"bytes","id":2}}},"EmptyNode":{"fields":{"prefix":{"rule":"repeated","type":"bool","id":1,"options":{"packed":true}}}},"LeafNode":{"fields":{"prefix":{"rule":"repeated","type":"bool","id":1,"options":{"packed":true}},"key":{"rule":"required","type":"bytes","id":2},"value":{"rule":"required","type":"bytes","id":3}}},"Proof":{"fields":{"interiors":{"rule":"repeated","type":"InteriorNode","id":1,"options":{"packed":false}},"leaf":{"rule":"required","type":"LeafNode","id":2},"empty":{"rule":"required","type":"EmptyNode","id":3},"nonce":{"rule":"required","type":"bytes","id":4}}}}},"calypso":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"Calypso"},"nested":{"Write":{"fields":{"data":{"rule":"required","type":"bytes","id":1},"u":{"rule":"required","type":"bytes","id":2},"ubar":{"rule":"required","type":"bytes","id":3},"e":{"rule":"required","type":"bytes","id":4},"f":{"rule":"required","type":"bytes","id":5},"c":{"rule":"required","type":"bytes","id":6},"extradata":{"type":"bytes","id":7},"ltsid":{"rule":"required","type":"bytes","id":8},"cost":{"type":"byzcoin.Coin","id":9}}},"Read":{"fields":{"write":{"rule":"required","type":"bytes","id":1},"xc":{"rule":"required","type":"bytes","id":2}}},"Authorise":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1}}},"AuthoriseReply":{"fields":{}},"Authorize":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"timestamp":{"type":"sint64","id":2},"signature":{"type":"bytes","id":3}}},"AuthorizeReply":{"fields":{}},"CreateLTS":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"CreateLTSReply":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"x":{"rule":"required","type":"bytes","id":3}}},"ReshareLTS":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"ReshareLTSReply":{"fields":{}},"UpdateValidPeers":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"UpdateValidPeersReply":{"fields":{}},"DecryptKey":{"fields":{"read":{"rule":"required","type":"byzcoin.Proof","id":1},"write":{"rule":"required","type":"byzcoin.Proof","id":2}}},"DecryptKeyReply":{"fields":{"c":{"rule":"required","type":"bytes","id":1},"xhatenc":{"rule":"required","type":"bytes","id":2},"x":{"rule":"required","type":"bytes","id":3}}},"GetLTSReply":{"fields":{"ltsid":{"rule":"required","type":"bytes","id":1}}},"LtsInstanceInfo":{"fields":{"roster":{"rule":"required","type":"onet.Roster","id":1}}}}},"eventlog":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"EventLogProto"},"nested":{"SearchRequest":{"fields":{"instance":{"rule":"required","type":"bytes","id":1},"id":{"rule":"required","type":"bytes","id":2},"topic":{"rule":"required","type":"string","id":3},"from":{"rule":"required","type":"sint64","id":4},"to":{"rule":"required","type":"sint64","id":5}}},"SearchResponse":{"fields":{"events":{"rule":"repeated","type":"Event","id":1,"options":{"packed":false}},"truncated":{"rule":"required","type":"bool","id":2}}},"Event":{"fields":{"when":{"rule":"required","type":"sint64","id":1},"topic":{"rule":"required","type":"string","id":2},"content":{"rule":"required","type":"string","id":3}}}}},"personhood":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"Personhood"},"nested":{"RoPaSci":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"ropasciid":{"rule":"required","type":"bytes","id":2},"locked":{"type":"sint64","id":3}}},"RoPaSciStruct":{"fields":{"description":{"rule":"required","type":"string","id":1},"stake":{"rule":"required","type":"byzcoin.Coin","id":2},"firstplayerhash":{"rule":"required","type":"bytes","id":3},"firstplayer":{"type":"sint32","id":4},"secondplayer":{"type":"sint32","id":5},"secondplayeraccount":{"type":"bytes","id":6},"firstplayeraccount":{"type":"bytes","id":7},"calypsowrite":{"type":"bytes","id":8},"calypsoread":{"type":"bytes","id":9}}},"CredentialStruct":{"fields":{"credentials":{"rule":"repeated","type":"Credential","id":1,"options":{"packed":false}}}},"Credential":{"fields":{"name":{"rule":"required","type":"string","id":1},"attributes":{"rule":"repeated","type":"Attribute","id":2,"options":{"packed":false}}}},"Attribute":{"fields":{"name":{"rule":"required","type":"string","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"SpawnerStruct":{"fields":{"costdarc":{"rule":"required","type":"byzcoin.Coin","id":1},"costcoin":{"rule":"required","type":"byzcoin.Coin","id":2},"costcredential":{"rule":"required","type":"byzcoin.Coin","id":3},"costparty":{"rule":"required","type":"byzcoin.Coin","id":4},"beneficiary":{"rule":"required","type":"bytes","id":5},"costropasci":{"type":"byzcoin.Coin","id":6},"costcwrite":{"type":"byzcoin.Coin","id":7},"costcread":{"type":"byzcoin.Coin","id":8},"costvalue":{"type":"byzcoin.Coin","id":9}}},"PopPartyStruct":{"fields":{"state":{"rule":"required","type":"sint32","id":1},"organizers":{"rule":"required","type":"sint32","id":2},"finalizations":{"rule":"repeated","type":"string","id":3},"description":{"rule":"required","type":"PopDesc","id":4},"attendees":{"rule":"required","type":"Attendees","id":5},"miners":{"rule":"repeated","type":"LRSTag","id":6,"options":{"packed":false}},"miningreward":{"rule":"required","type":"uint64","id":7},"previous":{"type":"bytes","id":8},"next":{"type":"bytes","id":9}}},"PopDesc":{"fields":{"name":{"rule":"required","type":"string","id":1},"purpose":{"rule":"required","type":"string","id":2},"datetime":{"rule":"required","type":"uint64","id":3},"location":{"rule":"required","type":"string","id":4}}},"FinalStatement":{"fields":{"desc":{"type":"PopDesc","id":1},"attendees":{"rule":"required","type":"Attendees","id":2}}},"Attendees":{"fields":{"keys":{"rule":"repeated","type":"bytes","id":1}}},"LRSTag":{"fields":{"tag":{"rule":"required","type":"bytes","id":1}}}}},"personhood_service":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"PersonhoodService"},"nested":{"PartyList":{"fields":{"newparty":{"type":"Party","id":1},"wipeparties":{"type":"bool","id":2},"partydelete":{"type":"PartyDelete","id":3}}},"PartyDelete":{"fields":{"partyid":{"rule":"required","type":"bytes","id":1},"identity":{"rule":"required","type":"darc.Identity","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"PartyListResponse":{"fields":{"parties":{"rule":"repeated","type":"Party","id":1,"options":{"packed":false}}}},"Party":{"fields":{"roster":{"rule":"required","type":"onet.Roster","id":1},"byzcoinid":{"rule":"required","type":"bytes","id":2},"instanceid":{"rule":"required","type":"bytes","id":3}}},"RoPaSciList":{"fields":{"newropasci":{"type":"personhood.RoPaSci","id":1},"wipe":{"type":"bool","id":2},"lock":{"type":"personhood.RoPaSci","id":3}}},"RoPaSciListResponse":{"fields":{"ropascis":{"rule":"repeated","type":"personhood.RoPaSci","id":1,"options":{"packed":false}}}},"StringReply":{"fields":{"reply":{"rule":"required","type":"string","id":1}}},"Poll":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"newpoll":{"type":"PollStruct","id":2},"list":{"type":"PollList","id":3},"answer":{"type":"PollAnswer","id":4},"delete":{"type":"PollDelete","id":5}}},"PollDelete":{"fields":{"identity":{"rule":"required","type":"darc.Identity","id":1},"pollid":{"rule":"required","type":"bytes","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"PollList":{"fields":{"partyids":{"rule":"repeated","type":"bytes","id":1}}},"PollAnswer":{"fields":{"pollid":{"rule":"required","type":"bytes","id":1},"choice":{"rule":"required","type":"sint32","id":2},"lrs":{"rule":"required","type":"bytes","id":3},"partyid":{"type":"bytes","id":4}}},"PollStruct":{"fields":{"personhood":{"rule":"required","type":"bytes","id":1},"pollid":{"type":"bytes","id":2},"title":{"rule":"required","type":"string","id":3},"description":{"rule":"required","type":"string","id":4},"choices":{"rule":"repeated","type":"string","id":5},"chosen":{"rule":"repeated","type":"PollChoice","id":6,"options":{"packed":false}}}},"PollChoice":{"fields":{"choice":{"rule":"required","type":"sint32","id":1},"lrstag":{"rule":"required","type":"bytes","id":2}}},"PollResponse":{"fields":{"polls":{"rule":"repeated","type":"PollStruct","id":1,"options":{"packed":false}}}},"Capabilities":{"fields":{}},"CapabilitiesResponse":{"fields":{"capabilities":{"rule":"repeated","type":"Capability","id":1,"options":{"packed":false}}}},"Capability":{"fields":{"endpoint":{"rule":"required","type":"string","id":1},"version":{"rule":"required","type":"bytes","id":2}}},"UserLocation":{"fields":{"publickey":{"rule":"required","type":"bytes","id":1},"credentialiid":{"type":"bytes","id":2},"credential":{"type":"personhood.CredentialStruct","id":3},"location":{"type":"string","id":4},"time":{"rule":"required","type":"sint64","id":5}}},"Meetup":{"fields":{"userlocation":{"type":"UserLocation","id":1},"wipe":{"type":"bool","id":2}}},"MeetupResponse":{"fields":{"users":{"rule":"repeated","type":"UserLocation","id":1,"options":{"packed":false}}}},"Challenge":{"fields":{"update":{"type":"ChallengeCandidate","id":1}}},"ChallengeCandidate":{"fields":{"credential":{"rule":"required","type":"bytes","id":1},"score":{"rule":"required","type":"sint32","id":2},"signup":{"rule":"required","type":"sint64","id":3}}},"ChallengeReply":{"fields":{"list":{"rule":"repeated","type":"ChallengeCandidate","id":1,"options":{"packed":false}}}},"GetAdminDarcIDs":{"fields":{}},"GetAdminDarcIDsReply":{"fields":{"admindarcids":{"rule":"repeated","type":"bytes","id":1}}},"SetAdminDarcIDs":{"fields":{"newadmindarcids":{"rule":"repeated","type":"bytes","id":1},"signature":{"rule":"required","type":"bytes","id":2}}},"SetAdminDarcIDsReply":{"fields":{}},"EmailSetup":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"deviceurl":{"rule":"required","type":"string","id":3},"emaildarcid":{"rule":"required","type":"bytes","id":4},"smtphost":{"rule":"required","type":"string","id":5},"smtpfrom":{"rule":"required","type":"string","id":6},"smtpreplyto":{"rule":"required","type":"string","id":7},"baseurl":{"rule":"required","type":"string","id":8},"signature":{"rule":"required","type":"bytes","id":9}}},"EmailSetupReply":{"fields":{}},"EmailSignup":{"fields":{"email":{"rule":"required","type":"string","id":1},"alias":{"rule":"required","type":"string","id":2}}},"EmailSignupReply":{"fields":{"status":{"rule":"required","type":"sint32","id":1}}},"EmailRecover":{"fields":{"email":{"rule":"required","type":"string","id":1}}},"EmailRecoverReply":{"fields":{"status":{"rule":"required","type":"sint32","id":1}}}}},"status":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"StatusProto"},"nested":{"Request":{"fields":{}},"Response":{"fields":{"status":{"keyType":"string","type":"onet.Status","id":1},"serveridentity":{"type":"network.ServerIdentity","id":2}}},"CheckConnectivity":{"fields":{"time":{"rule":"required","type":"sint64","id":1},"timeout":{"rule":"required","type":"sint64","id":2},"findfaulty":{"rule":"required","type":"bool","id":3},"list":{"rule":"repeated","type":"network.ServerIdentity","id":4,"options":{"packed":false}},"signature":{"rule":"required","type":"bytes","id":5}}},"CheckConnectivityReply":{"fields":{"nodes":{"rule":"repeated","type":"network.ServerIdentity","id":1,"options":{"packed":false}}}}}}}}
\ No newline at end of file
+{"nested":{"cothority":{},"authprox":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"AuthProxProto"},"nested":{"EnrollRequest":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"participants":{"rule":"repeated","type":"bytes","id":3},"longpri":{"rule":"required","type":"PriShare","id":4},"longpubs":{"rule":"repeated","type":"bytes","id":5}}},"EnrollResponse":{"fields":{}},"SignatureRequest":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"authinfo":{"rule":"required","type":"bytes","id":3},"randpri":{"rule":"required","type":"PriShare","id":4},"randpubs":{"rule":"repeated","type":"bytes","id":5},"message":{"rule":"required","type":"bytes","id":6}}},"PriShare":{"fields":{}},"PartialSig":{"fields":{"partial":{"rule":"required","type":"PriShare","id":1},"sessionid":{"rule":"required","type":"bytes","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"SignatureResponse":{"fields":{"partialsignature":{"rule":"required","type":"PartialSig","id":1}}},"EnrollmentsRequest":{"fields":{"types":{"rule":"repeated","type":"string","id":1},"issuers":{"rule":"repeated","type":"string","id":2}}},"EnrollmentsResponse":{"fields":{"enrollments":{"rule":"repeated","type":"EnrollmentInfo","id":1,"options":{"packed":false}}}},"EnrollmentInfo":{"fields":{"type":{"rule":"required","type":"string","id":1},"issuer":{"rule":"required","type":"string","id":2},"public":{"rule":"required","type":"bytes","id":3}}}}},"bevm":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"BEvmProto"},"nested":{"ViewCallRequest":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"bevminstanceid":{"rule":"required","type":"bytes","id":2},"accountaddress":{"rule":"required","type":"bytes","id":3},"contractaddress":{"rule":"required","type":"bytes","id":4},"calldata":{"rule":"required","type":"bytes","id":5},"minblockindex":{"rule":"required","type":"sint32","id":6}}},"ViewCallResponse":{"fields":{"result":{"rule":"required","type":"bytes","id":1}}}}},"byzcoin":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"ByzCoinProto"},"nested":{"GetAllByzCoinIDsRequest":{"fields":{}},"GetAllByzCoinIDsResponse":{"fields":{"ids":{"rule":"repeated","type":"bytes","id":1}}},"DataHeader":{"fields":{"trieroot":{"rule":"required","type":"bytes","id":1},"clienttransactionhash":{"rule":"required","type":"bytes","id":2},"statechangeshash":{"rule":"required","type":"bytes","id":3},"timestamp":{"rule":"required","type":"sint64","id":4},"version":{"type":"sint32","id":5}}},"DataBody":{"fields":{"txresults":{"rule":"repeated","type":"TxResult","id":1,"options":{"packed":false}}}},"CreateGenesisBlock":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"genesisdarc":{"rule":"required","type":"darc.Darc","id":3},"blockinterval":{"rule":"required","type":"sint64","id":4},"maxblocksize":{"type":"sint32","id":5},"darccontractids":{"rule":"repeated","type":"string","id":6}}},"CreateGenesisBlockResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"skipblock":{"type":"skipchain.SkipBlock","id":2}}},"AddTxRequest":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"skipchainid":{"rule":"required","type":"bytes","id":2},"transaction":{"rule":"required","type":"ClientTransaction","id":3},"inclusionwait":{"type":"sint32","id":4},"prooffrom":{"type":"bytes","id":5},"flags":{"type":"sint32","id":6}}},"AddTxResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"error":{"type":"string","id":2},"proof":{"type":"Proof","id":3}}},"GetProof":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"key":{"rule":"required","type":"bytes","id":2},"id":{"rule":"required","type":"bytes","id":3},"mustcontainblock":{"type":"bytes","id":4}}},"GetProofResponse":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"proof":{"rule":"required","type":"Proof","id":2}}},"CheckAuthorization":{"fields":{"version":{"rule":"required","type":"sint32","id":1},"byzcoinid":{"rule":"required","type":"bytes","id":2},"darcid":{"rule":"required","type":"bytes","id":3},"identities":{"rule":"repeated","type":"darc.Identity","id":4,"options":{"packed":false}}}},"CheckAuthorizationResponse":{"fields":{"actions":{"rule":"repeated","type":"string","id":1}}},"ChainConfig":{"fields":{"blockinterval":{"rule":"required","type":"sint64","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"maxblocksize":{"rule":"required","type":"sint32","id":3},"darccontractids":{"rule":"repeated","type":"string","id":4}}},"Proof":{"fields":{"inclusionproof":{"rule":"required","type":"trie.Proof","id":1},"latest":{"rule":"required","type":"skipchain.SkipBlock","id":2},"links":{"rule":"repeated","type":"skipchain.ForwardLink","id":3,"options":{"packed":false}}}},"Instruction":{"fields":{"instanceid":{"rule":"required","type":"bytes","id":1},"spawn":{"type":"Spawn","id":2},"invoke":{"type":"Invoke","id":3},"delete":{"type":"Delete","id":4},"signercounter":{"rule":"repeated","type":"uint64","id":5,"options":{"packed":true}},"signeridentities":{"rule":"repeated","type":"darc.Identity","id":6,"options":{"packed":false}},"signatures":{"rule":"repeated","type":"bytes","id":7}}},"Spawn":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"args":{"rule":"repeated","type":"Argument","id":2,"options":{"packed":false}}}},"Invoke":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"command":{"rule":"required","type":"string","id":2},"args":{"rule":"repeated","type":"Argument","id":3,"options":{"packed":false}}}},"Delete":{"fields":{"contractid":{"rule":"required","type":"string","id":1},"args":{"rule":"repeated","type":"Argument","id":2,"options":{"packed":false}}}},"Argument":{"fields":{"name":{"rule":"required","type":"string","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"ClientTransaction":{"fields":{"instructions":{"rule":"repeated","type":"Instruction","id":1,"options":{"packed":false}}}},"TxResult":{"fields":{"clienttransaction":{"rule":"required","type":"ClientTransaction","id":1},"accepted":{"rule":"required","type":"bool","id":2}}},"StateChange":{"fields":{"stateaction":{"rule":"required","type":"sint32","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"contractid":{"rule":"required","type":"string","id":3},"value":{"rule":"required","type":"bytes","id":4},"darcid":{"rule":"required","type":"bytes","id":5},"version":{"rule":"required","type":"uint64","id":6}}},"Coin":{"fields":{"name":{"rule":"required","type":"bytes","id":1},"value":{"rule":"required","type":"uint64","id":2}}},"StreamingRequest":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"StreamingResponse":{"fields":{"block":{"type":"skipchain.SkipBlock","id":1}}},"PaginateRequest":{"fields":{"startid":{"rule":"required","type":"bytes","id":1},"pagesize":{"rule":"required","type":"uint64","id":2},"numpages":{"rule":"required","type":"uint64","id":3},"backward":{"rule":"required","type":"bool","id":4}}},"PaginateResponse":{"fields":{"blocks":{"rule":"repeated","type":"skipchain.SkipBlock","id":1,"options":{"packed":false}},"pagenumber":{"rule":"required","type":"uint64","id":2},"backward":{"rule":"required","type":"bool","id":3},"errorcode":{"rule":"required","type":"uint64","id":4},"errortext":{"rule":"repeated","type":"string","id":5}}},"DownloadState":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"nonce":{"rule":"required","type":"uint64","id":2},"length":{"rule":"required","type":"sint32","id":3}}},"DownloadStateResponse":{"fields":{"keyvalues":{"rule":"repeated","type":"DBKeyValue","id":1,"options":{"packed":false}},"nonce":{"rule":"required","type":"uint64","id":2},"total":{"type":"sint32","id":3}}},"DBKeyValue":{"fields":{"key":{"rule":"required","type":"bytes","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"StateChangeBody":{"fields":{"stateaction":{"rule":"required","type":"sint32","id":1},"contractid":{"rule":"required","type":"string","id":2},"value":{"rule":"required","type":"bytes","id":3},"version":{"rule":"required","type":"uint64","id":4},"darcid":{"rule":"required","type":"bytes","id":5}}},"GetSignerCounters":{"fields":{"signerids":{"rule":"repeated","type":"string","id":1},"skipchainid":{"rule":"required","type":"bytes","id":2}}},"GetSignerCountersResponse":{"fields":{"counters":{"rule":"repeated","type":"uint64","id":1,"options":{"packed":true}},"index":{"type":"uint64","id":2}}},"GetInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"version":{"rule":"required","type":"uint64","id":3}}},"GetLastInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2}}},"GetInstanceVersionResponse":{"fields":{"statechange":{"rule":"required","type":"StateChange","id":1},"blockindex":{"rule":"required","type":"sint32","id":2}}},"GetAllInstanceVersion":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2}}},"GetAllInstanceVersionResponse":{"fields":{"statechanges":{"rule":"repeated","type":"GetInstanceVersionResponse","id":1,"options":{"packed":false}}}},"CheckStateChangeValidity":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"version":{"rule":"required","type":"uint64","id":3}}},"CheckStateChangeValidityResponse":{"fields":{"statechanges":{"rule":"repeated","type":"StateChange","id":1,"options":{"packed":false}},"blockid":{"rule":"required","type":"bytes","id":2}}},"ResolveInstanceID":{"fields":{"skipchainid":{"rule":"required","type":"bytes","id":1},"darcid":{"rule":"required","type":"bytes","id":2},"name":{"rule":"required","type":"string","id":3}}},"ResolvedInstanceID":{"fields":{"instanceid":{"rule":"required","type":"bytes","id":1}}},"DebugRequest":{"fields":{"byzcoinid":{"type":"bytes","id":1}}},"DebugResponse":{"fields":{"byzcoins":{"rule":"repeated","type":"DebugResponseByzcoin","id":1,"options":{"packed":false}},"dump":{"rule":"repeated","type":"DebugResponseState","id":2,"options":{"packed":false}}}},"DebugResponseByzcoin":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"genesis":{"type":"skipchain.SkipBlock","id":2},"latest":{"type":"skipchain.SkipBlock","id":3}}},"DebugResponseState":{"fields":{"key":{"rule":"required","type":"bytes","id":1},"state":{"rule":"required","type":"StateChangeBody","id":2}}},"DebugRemoveRequest":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"signature":{"rule":"required","type":"bytes","id":2}}},"IDVersion":{"fields":{"id":{"rule":"required","type":"bytes","id":1},"version":{"rule":"required","type":"uint64","id":2}}},"GetUpdatesRequest":{"fields":{"instances":{"rule":"repeated","type":"IDVersion","id":1,"options":{"packed":false}},"flags":{"rule":"required","type":"uint64","id":2},"latestblockid":{"type":"bytes","id":3},"skipchainid":{"type":"bytes","id":4}}},"GetUpdatesReply":{"fields":{"proofs":{"rule":"repeated","type":"trie.Proof","id":1,"options":{"packed":false}},"links":{"rule":"repeated","type":"skipchain.ForwardLink","id":2,"options":{"packed":false}},"latest":{"type":"skipchain.SkipBlock","id":3}}}}},"skipchain":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"SkipchainProto"},"nested":{"StoreSkipBlock":{"fields":{"targetSkipChainID":{"rule":"required","type":"bytes","id":1},"newBlock":{"rule":"required","type":"SkipBlock","id":2},"signature":{"type":"bytes","id":3}}},"StoreSkipBlockReply":{"fields":{"previous":{"type":"SkipBlock","id":1},"latest":{"rule":"required","type":"SkipBlock","id":2}}},"GetAllSkipChainIDs":{"fields":{}},"GetAllSkipChainIDsReply":{"fields":{"skipChainIDs":{"rule":"repeated","type":"bytes","id":1}}},"GetSingleBlock":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"GetSingleBlockByIndex":{"fields":{"genesis":{"rule":"required","type":"bytes","id":1},"index":{"rule":"required","type":"sint32","id":2}}},"GetSingleBlockByIndexReply":{"fields":{"skipblock":{"rule":"required","type":"SkipBlock","id":1},"links":{"rule":"repeated","type":"ForwardLink","id":2,"options":{"packed":false}}}},"GetUpdateChain":{"fields":{"latestID":{"rule":"required","type":"bytes","id":1}}},"GetUpdateChainReply":{"fields":{"update":{"rule":"repeated","type":"SkipBlock","id":1,"options":{"packed":false}}}},"SkipBlock":{"fields":{"index":{"rule":"required","type":"sint32","id":1},"height":{"rule":"required","type":"sint32","id":2},"maxHeight":{"rule":"required","type":"sint32","id":3},"baseHeight":{"rule":"required","type":"sint32","id":4},"backlinks":{"rule":"repeated","type":"bytes","id":5},"verifiers":{"rule":"repeated","type":"bytes","id":6},"genesis":{"rule":"required","type":"bytes","id":7},"data":{"rule":"required","type":"bytes","id":8},"roster":{"rule":"required","type":"onet.Roster","id":9},"hash":{"rule":"required","type":"bytes","id":10},"forward":{"rule":"repeated","type":"ForwardLink","id":11,"options":{"packed":false}},"payload":{"type":"bytes","id":12},"signatureScheme":{"type":"uint32","id":13}}},"ForwardLink":{"fields":{"from":{"rule":"required","type":"bytes","id":1},"to":{"rule":"required","type":"bytes","id":2},"newRoster":{"type":"onet.Roster","id":3},"signature":{"rule":"required","type":"ByzcoinSig","id":4}}},"ByzcoinSig":{"fields":{"msg":{"rule":"required","type":"bytes","id":1},"sig":{"rule":"required","type":"bytes","id":2}}},"SchnorrSig":{"fields":{"challenge":{"rule":"required","type":"bytes","id":1},"response":{"rule":"required","type":"bytes","id":2}}},"Exception":{"fields":{"index":{"rule":"required","type":"sint32","id":1},"commitment":{"rule":"required","type":"bytes","id":2}}}}},"onet":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"OnetProto"},"nested":{"Roster":{"fields":{"id":{"type":"bytes","id":1},"list":{"rule":"repeated","type":"network.ServerIdentity","id":2,"options":{"packed":false}},"aggregate":{"rule":"required","type":"bytes","id":3}}},"Status":{"fields":{"field":{"keyType":"string","type":"string","id":1}}}}},"network":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"NetworkProto"},"nested":{"ServerIdentity":{"fields":{"public":{"rule":"required","type":"bytes","id":1},"serviceIdentities":{"rule":"repeated","type":"ServiceIdentity","id":2,"options":{"packed":false}},"id":{"rule":"required","type":"bytes","id":3},"address":{"rule":"required","type":"string","id":4},"description":{"rule":"required","type":"string","id":5},"url":{"type":"string","id":7}}},"ServiceIdentity":{"fields":{"name":{"rule":"required","type":"string","id":1},"suite":{"rule":"required","type":"string","id":2},"public":{"rule":"required","type":"bytes","id":3}}}}},"darc":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"DarcProto"},"nested":{"Darc":{"fields":{"version":{"rule":"required","type":"uint64","id":1},"description":{"rule":"required","type":"bytes","id":2},"baseid":{"type":"bytes","id":3},"previd":{"rule":"required","type":"bytes","id":4},"rules":{"rule":"required","type":"Rules","id":5},"signatures":{"rule":"repeated","type":"Signature","id":6,"options":{"packed":false}},"verificationdarcs":{"rule":"repeated","type":"Darc","id":7,"options":{"packed":false}}}},"Identity":{"fields":{"darc":{"type":"IdentityDarc","id":1},"ed25519":{"type":"IdentityEd25519","id":2},"x509ec":{"type":"IdentityX509EC","id":3},"proxy":{"type":"IdentityProxy","id":4},"evmcontract":{"type":"IdentityEvmContract","id":5},"did":{"type":"IdentityDID","id":6},"tsm":{"type":"IdentityTSM","id":7}}},"IdentityEd25519":{"fields":{"point":{"rule":"required","type":"bytes","id":1}}},"IdentityTSM":{"fields":{"publickey":{"rule":"required","type":"bytes","id":1}}},"IdentityX509EC":{"fields":{"public":{"rule":"required","type":"bytes","id":1}}},"IdentityProxy":{"fields":{"data":{"rule":"required","type":"string","id":1},"public":{"rule":"required","type":"bytes","id":2}}},"IdentityDarc":{"fields":{"id":{"rule":"required","type":"bytes","id":1}}},"IdentityEvmContract":{"fields":{"address":{"rule":"required","type":"bytes","id":1}}},"IdentityDID":{"fields":{"did":{"rule":"required","type":"string","id":1},"diddoc":{"type":"DIDDoc","id":2},"method":{"rule":"required","type":"string","id":3}}},"DIDDoc":{"fields":{"context":{"rule":"repeated","type":"string","id":1},"id":{"rule":"required","type":"string","id":2},"publickey":{"rule":"repeated","type":"PublicKey","id":3,"options":{"packed":false}},"service":{"rule":"repeated","type":"DIDService","id":4,"options":{"packed":false}},"authentication":{"rule":"repeated","type":"VerificationMethod","id":5,"options":{"packed":false}}}},"PublicKey":{"fields":{"id":{"rule":"required","type":"string","id":1},"type":{"rule":"required","type":"string","id":2},"controller":{"rule":"required","type":"string","id":3},"value":{"rule":"required","type":"bytes","id":4}}},"DIDService":{"fields":{"id":{"rule":"required","type":"string","id":1},"type":{"rule":"required","type":"string","id":2},"priority":{"rule":"required","type":"sint32","id":3},"recipientkeys":{"rule":"repeated","type":"string","id":4},"routingkeys":{"rule":"repeated","type":"string","id":5},"serviceendpoint":{"rule":"required","type":"string","id":6}}},"VerificationMethod":{"fields":{"publickey":{"rule":"required","type":"PublicKey","id":1}}},"Signature":{"fields":{"signature":{"rule":"required","type":"bytes","id":1},"signer":{"rule":"required","type":"Identity","id":2}}},"Signer":{"fields":{"ed25519":{"type":"SignerEd25519","id":1},"x509ec":{"type":"SignerX509EC","id":2},"proxy":{"type":"SignerProxy","id":3},"evmcontract":{"type":"SignerEvmContract","id":4},"did":{"type":"SignerDID","id":5}}},"SignerEd25519":{"fields":{"point":{"rule":"required","type":"bytes","id":1},"secret":{"rule":"required","type":"bytes","id":2}}},"SignerX509EC":{"fields":{"point":{"rule":"required","type":"bytes","id":1}}},"SignerProxy":{"fields":{"data":{"rule":"required","type":"string","id":1},"public":{"rule":"required","type":"bytes","id":2}}},"SignerEvmContract":{"fields":{"address":{"rule":"required","type":"bytes","id":1}}},"SignerDID":{"fields":{"public":{"rule":"required","type":"bytes","id":1},"secret":{"rule":"required","type":"bytes","id":2},"did":{"rule":"required","type":"string","id":3}}},"Request":{"fields":{"baseid":{"rule":"required","type":"bytes","id":1},"action":{"rule":"required","type":"string","id":2},"msg":{"rule":"required","type":"bytes","id":3},"identities":{"rule":"repeated","type":"Identity","id":4,"options":{"packed":false}},"signatures":{"rule":"repeated","type":"bytes","id":5}}},"Rules":{"fields":{"list":{"rule":"repeated","type":"Rule","id":1,"options":{"packed":false}}}},"Rule":{"fields":{"action":{"rule":"required","type":"string","id":1},"expr":{"rule":"required","type":"bytes","id":2}}}}},"trie":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"TrieProto"},"nested":{"InteriorNode":{"fields":{"left":{"rule":"required","type":"bytes","id":1},"right":{"rule":"required","type":"bytes","id":2}}},"EmptyNode":{"fields":{"prefix":{"rule":"repeated","type":"bool","id":1,"options":{"packed":true}}}},"LeafNode":{"fields":{"prefix":{"rule":"repeated","type":"bool","id":1,"options":{"packed":true}},"key":{"rule":"required","type":"bytes","id":2},"value":{"rule":"required","type":"bytes","id":3}}},"Proof":{"fields":{"interiors":{"rule":"repeated","type":"InteriorNode","id":1,"options":{"packed":false}},"leaf":{"rule":"required","type":"LeafNode","id":2},"empty":{"rule":"required","type":"EmptyNode","id":3},"nonce":{"rule":"required","type":"bytes","id":4}}}}},"calypso":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"Calypso"},"nested":{"Write":{"fields":{"data":{"rule":"required","type":"bytes","id":1},"u":{"rule":"required","type":"bytes","id":2},"ubar":{"rule":"required","type":"bytes","id":3},"e":{"rule":"required","type":"bytes","id":4},"f":{"rule":"required","type":"bytes","id":5},"c":{"rule":"required","type":"bytes","id":6},"extradata":{"type":"bytes","id":7},"ltsid":{"rule":"required","type":"bytes","id":8},"cost":{"type":"byzcoin.Coin","id":9}}},"Read":{"fields":{"write":{"rule":"required","type":"bytes","id":1},"xc":{"rule":"required","type":"bytes","id":2}}},"Authorise":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1}}},"AuthoriseReply":{"fields":{}},"Authorize":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"timestamp":{"type":"sint64","id":2},"signature":{"type":"bytes","id":3}}},"AuthorizeReply":{"fields":{}},"CreateLTS":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"CreateLTSReply":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"instanceid":{"rule":"required","type":"bytes","id":2},"x":{"rule":"required","type":"bytes","id":3}}},"ReshareLTS":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"ReshareLTSReply":{"fields":{}},"UpdateValidPeers":{"fields":{"proof":{"rule":"required","type":"byzcoin.Proof","id":1}}},"UpdateValidPeersReply":{"fields":{}},"DecryptKey":{"fields":{"read":{"rule":"required","type":"byzcoin.Proof","id":1},"write":{"rule":"required","type":"byzcoin.Proof","id":2}}},"DecryptKeyReply":{"fields":{"c":{"rule":"required","type":"bytes","id":1},"xhatenc":{"rule":"required","type":"bytes","id":2},"x":{"rule":"required","type":"bytes","id":3}}},"GetLTSReply":{"fields":{"ltsid":{"rule":"required","type":"bytes","id":1}}},"LtsInstanceInfo":{"fields":{"roster":{"rule":"required","type":"onet.Roster","id":1}}}}},"eventlog":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"EventLogProto"},"nested":{"SearchRequest":{"fields":{"instance":{"rule":"required","type":"bytes","id":1},"id":{"rule":"required","type":"bytes","id":2},"topic":{"rule":"required","type":"string","id":3},"from":{"rule":"required","type":"sint64","id":4},"to":{"rule":"required","type":"sint64","id":5}}},"SearchResponse":{"fields":{"events":{"rule":"repeated","type":"Event","id":1,"options":{"packed":false}},"truncated":{"rule":"required","type":"bool","id":2}}},"Event":{"fields":{"when":{"rule":"required","type":"sint64","id":1},"topic":{"rule":"required","type":"string","id":2},"content":{"rule":"required","type":"string","id":3}}}}},"personhood":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"Personhood"},"nested":{"RoPaSci":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"ropasciid":{"rule":"required","type":"bytes","id":2},"locked":{"type":"sint64","id":3}}},"RoPaSciStruct":{"fields":{"description":{"rule":"required","type":"string","id":1},"stake":{"rule":"required","type":"byzcoin.Coin","id":2},"firstplayerhash":{"rule":"required","type":"bytes","id":3},"firstplayer":{"type":"sint32","id":4},"secondplayer":{"type":"sint32","id":5},"secondplayeraccount":{"type":"bytes","id":6},"firstplayeraccount":{"type":"bytes","id":7},"calypsowrite":{"type":"bytes","id":8},"calypsoread":{"type":"bytes","id":9}}},"CredentialStruct":{"fields":{"credentials":{"rule":"repeated","type":"Credential","id":1,"options":{"packed":false}}}},"Credential":{"fields":{"name":{"rule":"required","type":"string","id":1},"attributes":{"rule":"repeated","type":"Attribute","id":2,"options":{"packed":false}}}},"Attribute":{"fields":{"name":{"rule":"required","type":"string","id":1},"value":{"rule":"required","type":"bytes","id":2}}},"SpawnerStruct":{"fields":{"costdarc":{"rule":"required","type":"byzcoin.Coin","id":1},"costcoin":{"rule":"required","type":"byzcoin.Coin","id":2},"costcredential":{"rule":"required","type":"byzcoin.Coin","id":3},"costparty":{"rule":"required","type":"byzcoin.Coin","id":4},"beneficiary":{"rule":"required","type":"bytes","id":5},"costropasci":{"type":"byzcoin.Coin","id":6},"costcwrite":{"type":"byzcoin.Coin","id":7},"costcread":{"type":"byzcoin.Coin","id":8},"costvalue":{"type":"byzcoin.Coin","id":9}}},"PopPartyStruct":{"fields":{"state":{"rule":"required","type":"sint32","id":1},"organizers":{"rule":"required","type":"sint32","id":2},"finalizations":{"rule":"repeated","type":"string","id":3},"description":{"rule":"required","type":"PopDesc","id":4},"attendees":{"rule":"required","type":"Attendees","id":5},"miners":{"rule":"repeated","type":"LRSTag","id":6,"options":{"packed":false}},"miningreward":{"rule":"required","type":"uint64","id":7},"previous":{"type":"bytes","id":8},"next":{"type":"bytes","id":9}}},"PopDesc":{"fields":{"name":{"rule":"required","type":"string","id":1},"purpose":{"rule":"required","type":"string","id":2},"datetime":{"rule":"required","type":"uint64","id":3},"location":{"rule":"required","type":"string","id":4}}},"FinalStatement":{"fields":{"desc":{"type":"PopDesc","id":1},"attendees":{"rule":"required","type":"Attendees","id":2}}},"Attendees":{"fields":{"keys":{"rule":"repeated","type":"bytes","id":1}}},"LRSTag":{"fields":{"tag":{"rule":"required","type":"bytes","id":1}}}}},"personhood_service":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"PersonhoodService"},"nested":{"PartyList":{"fields":{"newparty":{"type":"Party","id":1},"wipeparties":{"type":"bool","id":2},"partydelete":{"type":"PartyDelete","id":3}}},"PartyDelete":{"fields":{"partyid":{"rule":"required","type":"bytes","id":1},"identity":{"rule":"required","type":"darc.Identity","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"PartyListResponse":{"fields":{"parties":{"rule":"repeated","type":"Party","id":1,"options":{"packed":false}}}},"Party":{"fields":{"roster":{"rule":"required","type":"onet.Roster","id":1},"byzcoinid":{"rule":"required","type":"bytes","id":2},"instanceid":{"rule":"required","type":"bytes","id":3}}},"RoPaSciList":{"fields":{"newropasci":{"type":"personhood.RoPaSci","id":1},"wipe":{"type":"bool","id":2},"lock":{"type":"personhood.RoPaSci","id":3}}},"RoPaSciListResponse":{"fields":{"ropascis":{"rule":"repeated","type":"personhood.RoPaSci","id":1,"options":{"packed":false}}}},"StringReply":{"fields":{"reply":{"rule":"required","type":"string","id":1}}},"Poll":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"newpoll":{"type":"PollStruct","id":2},"list":{"type":"PollList","id":3},"answer":{"type":"PollAnswer","id":4},"delete":{"type":"PollDelete","id":5}}},"PollDelete":{"fields":{"identity":{"rule":"required","type":"darc.Identity","id":1},"pollid":{"rule":"required","type":"bytes","id":2},"signature":{"rule":"required","type":"bytes","id":3}}},"PollList":{"fields":{"partyids":{"rule":"repeated","type":"bytes","id":1}}},"PollAnswer":{"fields":{"pollid":{"rule":"required","type":"bytes","id":1},"choice":{"rule":"required","type":"sint32","id":2},"lrs":{"rule":"required","type":"bytes","id":3},"partyid":{"type":"bytes","id":4}}},"PollStruct":{"fields":{"personhood":{"rule":"required","type":"bytes","id":1},"pollid":{"type":"bytes","id":2},"title":{"rule":"required","type":"string","id":3},"description":{"rule":"required","type":"string","id":4},"choices":{"rule":"repeated","type":"string","id":5},"chosen":{"rule":"repeated","type":"PollChoice","id":6,"options":{"packed":false}}}},"PollChoice":{"fields":{"choice":{"rule":"required","type":"sint32","id":1},"lrstag":{"rule":"required","type":"bytes","id":2}}},"PollResponse":{"fields":{"polls":{"rule":"repeated","type":"PollStruct","id":1,"options":{"packed":false}}}},"Capabilities":{"fields":{}},"CapabilitiesResponse":{"fields":{"capabilities":{"rule":"repeated","type":"Capability","id":1,"options":{"packed":false}}}},"Capability":{"fields":{"endpoint":{"rule":"required","type":"string","id":1},"version":{"rule":"required","type":"bytes","id":2}}},"UserLocation":{"fields":{"publickey":{"rule":"required","type":"bytes","id":1},"credentialiid":{"type":"bytes","id":2},"credential":{"type":"personhood.CredentialStruct","id":3},"location":{"type":"string","id":4},"time":{"rule":"required","type":"sint64","id":5}}},"Meetup":{"fields":{"userlocation":{"type":"UserLocation","id":1},"wipe":{"type":"bool","id":2}}},"MeetupResponse":{"fields":{"users":{"rule":"repeated","type":"UserLocation","id":1,"options":{"packed":false}}}},"Challenge":{"fields":{"update":{"type":"ChallengeCandidate","id":1}}},"ChallengeCandidate":{"fields":{"credential":{"rule":"required","type":"bytes","id":1},"score":{"rule":"required","type":"sint32","id":2},"signup":{"rule":"required","type":"sint64","id":3}}},"ChallengeReply":{"fields":{"list":{"rule":"repeated","type":"ChallengeCandidate","id":1,"options":{"packed":false}}}},"GetAdminDarcIDs":{"fields":{}},"GetAdminDarcIDsReply":{"fields":{"admindarcids":{"rule":"repeated","type":"bytes","id":1}}},"SetAdminDarcIDs":{"fields":{"newadmindarcids":{"rule":"repeated","type":"bytes","id":1},"signature":{"rule":"required","type":"bytes","id":2}}},"SetAdminDarcIDsReply":{"fields":{}},"EmailSetup":{"fields":{"byzcoinid":{"rule":"required","type":"bytes","id":1},"roster":{"rule":"required","type":"onet.Roster","id":2},"deviceurl":{"rule":"required","type":"string","id":3},"emaildarcid":{"rule":"required","type":"bytes","id":4},"smtphost":{"rule":"required","type":"string","id":5},"smtpfrom":{"rule":"required","type":"string","id":6},"smtpreplyto":{"rule":"required","type":"string","id":7},"baseurl":{"rule":"required","type":"string","id":8},"signature":{"rule":"required","type":"bytes","id":9}}},"EmailSetupReply":{"fields":{}},"EmailSignup":{"fields":{"email":{"rule":"required","type":"string","id":1},"alias":{"rule":"required","type":"string","id":2}}},"EmailSignupReply":{"fields":{"status":{"rule":"required","type":"sint32","id":1}}},"EmailRecover":{"fields":{"email":{"rule":"required","type":"string","id":1}}},"EmailRecoverReply":{"fields":{"status":{"rule":"required","type":"sint32","id":1}}}}},"status":{"options":{"java_package":"ch.epfl.dedis.lib.proto","java_outer_classname":"StatusProto"},"nested":{"Request":{"fields":{}},"Response":{"fields":{"status":{"keyType":"string","type":"onet.Status","id":1},"serveridentity":{"type":"network.ServerIdentity","id":2}}},"CheckConnectivity":{"fields":{"time":{"rule":"required","type":"sint64","id":1},"timeout":{"rule":"required","type":"sint64","id":2},"findfaulty":{"rule":"required","type":"bool","id":3},"list":{"rule":"repeated","type":"network.ServerIdentity","id":4,"options":{"packed":false}},"signature":{"rule":"required","type":"bytes","id":5}}},"CheckConnectivityReply":{"fields":{"nodes":{"rule":"repeated","type":"network.ServerIdentity","id":1,"options":{"packed":false}}}}}}}}
\ No newline at end of file
diff --git a/external/proto/darc.proto b/external/proto/darc.proto
index 25a9cb683e..149fd2b093 100644
--- a/external/proto/darc.proto
+++ b/external/proto/darc.proto
@@ -61,7 +61,7 @@ message IdentityEd25519 {
 
 // IdentityTSM holds a secp256k1 key (array of bytes)
 message IdentityTSM {
-  required ecdsa.PublicKey publickey = 1;
+  required bytes publickey = 1;
 }
 
 // IdentityX509EC holds a public key from a X509EC
@@ -145,7 +145,6 @@ message Signer {
   optional SignerProxy proxy = 3;
   optional SignerEvmContract evmcontract = 4;
   optional SignerDID did = 5;
-  optional SignerTSM tsm = 6;
 }
 
 // SignerEd25519 holds a public and private keys necessary to sign Darcs
@@ -160,12 +159,6 @@ message SignerX509EC {
   required bytes point = 1;
 }
 
-// SignerTSM holds a public and private keys necessary to sign Darcs,
-// but the private key will not be given out.
-message SignerTSM {
-  required ecdsa.PrivateKey privatekey = 1;
-}
-
 // SignerProxy holds the information necessary to verify claims
 // coming from external authentication systems via Authentication Proxies.
 message SignerProxy {

From 0107aa894d66bdecb726792bea39dfdad5acb00a Mon Sep 17 00:00:00 2001
From: Linus Gasser 
Date: Fri, 25 Feb 2022 14:25:27 +0100
Subject: [PATCH 14/16] Marshal and Unmarshal the IdentityTSM with protobuf

---
 byzcoin/bctest.go                             | 32 ++++++++++++++
 byzcoin/service.go                            |  3 +-
 byzcoin/service_test.go                       | 25 +++++++++++
 calypso/api_test.go                           |  3 +-
 darc/darc.go                                  | 22 +++-------
 darc/darc_test.go                             |  9 ++--
 external/docker/public.toml                   | 43 -------------------
 .../spec/byzcoin/darc-instance.spec.ts        | 22 ++++++++--
 .../js/cothority/src/darc/identity-wrapper.ts |  2 +-
 .../js/cothority/src/network/websocket.ts     |  2 +-
 10 files changed, 90 insertions(+), 73 deletions(-)

diff --git a/byzcoin/bctest.go b/byzcoin/bctest.go
index 3647184e1c..7f2a7b9f49 100644
--- a/byzcoin/bctest.go
+++ b/byzcoin/bctest.go
@@ -244,6 +244,38 @@ func (b *BCTest) TransferCoin(args *TxArgs, coinSrc, coinDst InstanceID,
 	})
 }
 
+// SpawnDarc spawns a new darc on byzcoin.
+func (b *BCTest) SpawnDarc(args *TxArgs, d *darc.Darc) {
+	buf, err := d.ToProto()
+	require.NoError(b.T, err)
+	b.SendInst(args, Instruction{
+		InstanceID: NewInstanceID(b.GenesisDarc.GetBaseID()),
+		Spawn: &Spawn{
+			ContractID: "darc",
+			Args: Arguments{
+				{Name: "darc", Value: buf},
+			},
+		},
+	})
+}
+
+// EvolveDarc invokes 'evolve' on the given darc. The darc must have a
+// 'version' greater than the already existing darc.
+func (b *BCTest) EvolveDarc(args *TxArgs, d *darc.Darc) {
+	buf, err := d.ToProto()
+	require.NoError(b.T, err)
+	b.SendInst(args, Instruction{
+		InstanceID: NewInstanceID(b.GenesisDarc.GetBaseID()),
+		Invoke: &Invoke{
+			ContractID: "darc",
+			Command:    "evolve",
+			Args: Arguments{
+				{Name: "darc", Value: buf},
+			},
+		},
+	})
+}
+
 // DummyContractName is the name of the dummy contract.
 const DummyContractName = "dummy"
 
diff --git a/byzcoin/service.go b/byzcoin/service.go
index bd4fa5d533..f8bbe210ea 100644
--- a/byzcoin/service.go
+++ b/byzcoin/service.go
@@ -598,7 +598,8 @@ func (s *Service) GetProof(req *GetProof) (*GetProofResponse, error) {
 // fulfill a given rule of a given darc. Because all darcs are now used in
 // an online fashion, we need to offer this check.
 func (s *Service) CheckAuthorization(req *CheckAuthorization) (resp *CheckAuthorizationResponse, err error) {
-	log.Lvlf2("%s getting authorizations of darc %x", s.ServerIdentity(), req.DarcID)
+	log.Lvlf2("%s getting authorizations of darc %x for identities %v",
+		s.ServerIdentity(), req.DarcID, req.Identities)
 
 	resp = &CheckAuthorizationResponse{}
 	st, err := s.GetReadOnlyStateTrie(req.ByzCoinID)
diff --git a/byzcoin/service_test.go b/byzcoin/service_test.go
index fe258decd9..865f7cfe50 100644
--- a/byzcoin/service_test.go
+++ b/byzcoin/service_test.go
@@ -1478,6 +1478,31 @@ func TestService_DarcDelegation(t *testing.T) {
 	require.True(t, pr.Proof.InclusionProof.Match(darc3.GetBaseID()))
 }
 
+func TestService_CheckAuthorization_TSM(t *testing.T) {
+	b := newBCTRun(t, nil)
+	defer b.CloseAll()
+
+	// Add a new rule to the genesis darc and check if it is
+	// authorized.
+	signerTSM := darc.NewSignerTSM(nil)
+	ids := []darc.Identity{signerTSM.Identity()}
+	tsmDarcRules := darc.InitRules(ids, ids)
+	tsmDarc := darc.NewDarc(tsmDarcRules, []byte("tsmDarc"))
+	b.SpawnDarc(nil, tsmDarc)
+
+	newDarc := b.GenesisDarc.Copy()
+	require.NoError(t, newDarc.EvolveFrom(b.GenesisDarc))
+	require.NoError(t, newDarc.Rules.AddRule("spawn:test",
+		expression.Expr(darc.NewIdentityDarc(tsmDarc.GetBaseID()).String())))
+	b.EvolveDarc(nil, newDarc)
+
+	log.Lvl1("TSM:", signerTSM.Identity())
+	actions, err := b.Client.CheckAuthorization(b.GenesisDarc.GetBaseID(),
+		signerTSM.Identity())
+	require.NoError(t, err)
+	require.Contains(t, actions, darc.Action("spawn:test"))
+}
+
 func TestService_CheckAuthorization(t *testing.T) {
 	b := newBCTRun(t, nil)
 	defer b.CloseAll()
diff --git a/calypso/api_test.go b/calypso/api_test.go
index fde7d900c0..96efb7cea9 100644
--- a/calypso/api_test.go
+++ b/calypso/api_test.go
@@ -1,7 +1,6 @@
 package calypso
 
 import (
-	"crypto/ecdsa"
 	"encoding/binary"
 	"testing"
 	"time"
@@ -230,7 +229,7 @@ func TestClient_Calypso_Simple(t *testing.T) {
 
 	admin := darc.NewSignerEd25519(nil, nil)
 	adminCt := uint64(1)
-	user := darc.NewSignerTSM(ecdsa.PrivateKey{})
+	user := darc.NewSignerTSM(nil)
 	//user := darc.NewSignerEd25519(nil, nil)
 	// Initialise the genesis message and send it to the service.
 	// The admin has the privilege to spawn darcs
diff --git a/darc/darc.go b/darc/darc.go
index 2b53038b34..32a1c437a2 100644
--- a/darc/darc.go
+++ b/darc/darc.go
@@ -929,8 +929,7 @@ func (id Identity) String() string {
 	case 5:
 		return fmt.Sprintf("%s:%s", id.TypeString(), id.DID.DID)
 	case 6:
-		buf, _ := id.TSM.MarshalBinary()
-		return fmt.Sprintf("%s:%x", id.TypeString(), buf)
+		return fmt.Sprintf("%s:%x", id.TypeString(), id.TSM.PublicKey)
 	default:
 		return "No identity"
 	}
@@ -1064,17 +1063,6 @@ func (ide *IdentityTSM) Verify(msg []byte, sig []byte) error {
 	return nil
 }
 
-// MarshalBinary returns the compressed public key
-func (ide IdentityTSM) MarshalBinary() ([]byte, error) {
-	return ide.PublicKey, nil
-}
-
-// UnmarshalBinary stores the compressed public key
-func (ide *IdentityTSM) UnmarshalBinary(data []byte) error {
-	ide.PublicKey = data
-	return nil
-}
-
 // NewIdentityProxy creates a new OpenID Connect identity struct.
 func NewIdentityProxy(s *SignerProxy) Identity {
 	return Identity{
@@ -1533,16 +1521,16 @@ type SignerTSM struct {
 // If a nil key is given, then a random key is generated.
 // This is mostly used for testing, as the real TSM is a hardware device
 // and not supported in tests.
-func NewSignerTSM(private ecdsa.PrivateKey) Signer {
-	if private.D == nil {
+func NewSignerTSM(private *ecdsa.PrivateKey) Signer {
+	if private == nil {
 		priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
 		if err != nil {
 			panic("couldn't generate key: " + err.Error())
 		}
-		private = *priv
+		private = priv
 	}
 	return Signer{tsm: &SignerTSM{
-		PrivateKey: private,
+		PrivateKey: *private,
 	}}
 }
 
diff --git a/darc/darc_test.go b/darc/darc_test.go
index c907ab9450..c31cc41fac 100644
--- a/darc/darc_test.go
+++ b/darc/darc_test.go
@@ -7,6 +7,7 @@ import (
 	"encoding/hex"
 	"errors"
 	"fmt"
+	"go.dedis.ch/protobuf"
 	"math/big"
 	"net/url"
 	"strings"
@@ -767,7 +768,7 @@ func testIdentity(t *testing.T, sig Signer) {
 // Test the different identities available - currently only Ed25519.
 func TestIdentities(t *testing.T) {
 	testIdentity(t, NewSignerEd25519(nil, nil))
-	testIdentity(t, NewSignerTSM(ecdsa.PrivateKey{}))
+	testIdentity(t, NewSignerTSM(nil))
 }
 
 // Test a signature from the TSM
@@ -794,10 +795,10 @@ func TestTSMSignature(t *testing.T) {
 
 // Make sure Marshalling and Unmarshalling work
 func TestTSMMarshalling(t *testing.T) {
-	id := NewSignerTSM(ecdsa.PrivateKey{}).Identity()
-	buf, err := id.TSM.MarshalBinary()
+	id := NewSignerTSM(nil).Identity()
+	buf, err := protobuf.Encode(&id)
 	require.NoError(t, err)
 	var id2 IdentityTSM
-	require.NoError(t, id2.UnmarshalBinary(buf))
+	require.NoError(t, protobuf.Decode(buf, &id2))
 	require.True(t, id.Equal(&Identity{TSM: &id2}))
 }
diff --git a/external/docker/public.toml b/external/docker/public.toml
index 78c1334d94..ab8f8f0a08 100644
--- a/external/docker/public.toml
+++ b/external/docker/public.toml
@@ -1,4 +1,3 @@
-
 [[servers]]
   Address = "tls://127.0.0.1:7770"
   Suite = "Ed25519"
@@ -11,7 +10,6 @@
     [servers.Services.Skipchain]
       Public = "55eb6fdb543561dbb806e8357e013e17988ba60e210552d05b178c831c0caaa4241bf16bc3f8bafebf3b81bca839bd1696a45dfc3990f992ac165e132474894003bf57c3761eed667cb2af0f7056daec53619a833a26b446fe0c8762b63ed0f145a8b49f3a92704c21715aef5f3e1b2e5769a069123965df3f20b4310cb73fc0"
       Suite = "bn256.adapter"
-
 [[servers]]
   Address = "tls://127.0.0.1:7772"
   Suite = "Ed25519"
@@ -24,7 +22,6 @@
     [servers.Services.Skipchain]
       Public = "7f5806b881643c9284bcd3d46c566140e5ec611e6ecf68fff41cfac32010029971b512d9336a2444af8da377dbbd8a3c83055f42fe596649c4cc3790f166534c8618fb9c272717e71f97f451038d925beddc08bffb8a801f7c2475690f504ff03d93cd44589d2174f687b6dbe64351a304e06f5fbe7f0a6a1cf22a9e75a77af9"
       Suite = "bn256.adapter"
-
 [[servers]]
   Address = "tls://127.0.0.1:7774"
   Suite = "Ed25519"
@@ -37,7 +34,6 @@
     [servers.Services.Skipchain]
       Public = "14d41177db39ecf40f9c485a2159502e8c425d580b235e04903d2ef044e1a8644f5c45ca76429890a58cdad044bd627c0e92b60db57fbb05fc356e6ceece3a287c07dd39b1497399ce40989ea62ac6c312356f2db0d41a1126eee37f589480f0460736a1285f9d04db9b0b26db9eaad3581825de83d5de1d12f4ec89b98d2bf6"
       Suite = "bn256.adapter"
-
 [[servers]]
   Address = "tls://127.0.0.1:7776"
   Suite = "Ed25519"
@@ -50,42 +46,3 @@
     [servers.Services.Skipchain]
       Public = "64a6929594ef04aa41e0d22a61f1ef9d846184f2eda17664c70eee83140401010f4efb305957d76a6d57391b27363752119844a2dd6cebfa30f41767ad752e7c8988c8217b65091df21cfe8fe21f2ec223ad108859ec9f38e780de436758b532648acf48b9f8527c0377d8bea6c9516445e44014a9fdb6ade29ad38e3550aa40"
       Suite = "bn256.adapter"
-
-[[servers]]
-  Address = "tls://127.0.0.1:7778"
-  Suite = "Ed25519"
-  Public = "a659a7bfdfc9ed69bcfef3e66b4f42a91fd4d92096235a3b572d6040e293e537"
-  Description = "Conode_5"
-  [servers.Services]
-    [servers.Services.ByzCoin]
-      Public = "4c8e6d327b4c3066152c335dddb6d09f60cc8df4db56bf5508d46c3bba480ebc75d43cdbab414f5e4387ed58c6046b02b14c343f241783166d95ce05474949b52ecd3515457962b9a2680dd6fb7379ceba49329fba830495d46912e6e1cd652c64b11345345429e9dd137aaec7d40e23e99cacc932cc670f3c7617916f64cb5e"
-      Suite = "bn256.adapter"
-    [servers.Services.Skipchain]
-      Public = "2062eca6e207504e3f217bb52c33100f237939a418fdef45bb4559bbd19b2222180852cacd3c5580266a0f6cfeca7eebdcf0d8e76dad2d6fc4307a0ae38db82f6839f9482bc56b62ae4bdf2e58b4cf35be610d1b241db56753d45a6d3c33e592805496119c58c1e636d1ef4c44d2b6d0d9fa4d8f42cc835d2b06c3a65743c6c1"
-      Suite = "bn256.adapter"
-
-[[servers]]
-  Address = "tls://127.0.0.1:7780"
-  Suite = "Ed25519"
-  Public = "2f6da59af68e8fd7a1fd85688e96f69679e7d4fe1343108d46fb5c27e0e40e09"
-  Description = "Conode_6"
-  [servers.Services]
-    [servers.Services.ByzCoin]
-      Public = "819e513dd916d410c5a1c2af6f5da96aaac407bd0bce80273b076fa61bc0536532d95f38b3dad95f28138ba38c5a137f4a23a7025b8d4c48ce46db670f29f98b403ca9cc5b9f601b316303b7f852b7389f6fa4dd0acc91a5d851f6d8f7e0f7465fe53ffc12ab67e97e873a5eda50690b281ccef8d227a2610bb5b593ac13f4b3"
-      Suite = "bn256.adapter"
-    [servers.Services.Skipchain]
-      Public = "6de807377e41787db8f77e082c5cde56864938aa4966077ed8758ca1711154f76cb043ddf8a05e42a35e950f91133fe5fe8752e3f3c799efdbf8b4d976fd58552050449644a2eb3c34852c7a8adf1154328a8308ce526595356ab01855d772a26f811d1765c13b6512031425b8154da51cba595f4e810a3089ce1cd25da221db"
-      Suite = "bn256.adapter"
-
-[[servers]]
-  Address = "tls://127.0.0.1:7782"
-  Suite = "Ed25519"
-  Public = "cf2d787082547b96bc125bd6173e4ecedb88d40d7be66bec6a72cfcd75003446"
-  Description = "Conode_7"
-  [servers.Services]
-    [servers.Services.ByzCoin]
-      Public = "5a0e3b4194474b64613b944da1556dc9492ac6e96d572ce9b5f68beb9211fdc1813c5adcfa7de69f71918624ce6e98d59b161b207e3847aa41fa0689211f89cf04fca496d559f4378b1188c9e7237e814c8573ce3e598ac9d9b0b896a58fe86c0dfa5817604475dfc7dd7b95c6f88abe3463d684445f681044dcd1f6e85cc99e"
-      Suite = "bn256.adapter"
-    [servers.Services.Skipchain]
-      Public = "0f5935956f844132fa68c33a72baaf752fa429d7235c4b3d23a7d8e4d1aaafe03c52b4b28845821082ba2e907b18b6a0eaebf0a14d4678b0af907e143a0fccdb311f97fdd44a6f88e20ffdc358a78d7d0c2883b81673219a8d542f663c90727263a53342713693516f2d2746c47041779ed0ffa539a8a9f29163c255021024fc"
-      Suite = "bn256.adapter"
diff --git a/external/js/cothority/spec/byzcoin/darc-instance.spec.ts b/external/js/cothority/spec/byzcoin/darc-instance.spec.ts
index 42f45975a2..43ade6fc8b 100644
--- a/external/js/cothority/spec/byzcoin/darc-instance.spec.ts
+++ b/external/js/cothority/spec/byzcoin/darc-instance.spec.ts
@@ -1,10 +1,8 @@
 import ByzCoinRPC from "../../src/byzcoin/byzcoin-rpc";
 import DarcInstance from "../../src/byzcoin/contracts/darc-instance";
-import Darc from "../../src/darc/darc";
-import IdentityDarc from "../../src/darc/identity-darc";
-import { Rule } from "../../src/darc/rules";
-import SignerEd25519 from "../../src/darc/signer-ed25519";
 import { BLOCK_INTERVAL, ROSTER, SIGNER, startConodes } from "../support/conondes";
+import {IdentityWrapper, IdentityTsm, Darc, IdentityDarc, Rule, SignerEd25519} from "../../src/darc";
+import {randomBytes} from "crypto";
 
 describe("DarcInstance Tests", () => {
     const roster = ROSTER.slice(0, 4);
@@ -28,4 +26,20 @@ describe("DarcInstance Tests", () => {
         expect(di1.ruleMatch(Darc.ruleSign, [sig])).toBeTruthy();
         expect(di1.ruleMatch(Darc.ruleSign, [new IdentityDarc({id: d2.getBaseID()})])).toBeTruthy();
     });
+
+    it("should find tsm authorization", async() => {
+        const darc = ByzCoinRPC.makeGenesisDarc([SIGNER], roster);
+
+        const rpc = await ByzCoinRPC.newByzCoinRPC(roster, darc, BLOCK_INTERVAL);
+        rpc.setParallel(1);
+        const di = await DarcInstance.fromByzcoin(rpc, darc.getBaseID());
+
+        const id = new IdentityTsm({publickey: randomBytes(32)});
+        const newDarc = darc.evolve();
+        newDarc.addIdentity("spawn:test", id, Rule.OR);
+        await di.evolveDarcAndWait(newDarc, [SIGNER], 10);
+
+        const rules = await rpc.checkAuthorization(rpc.genesisID, darc.getBaseID(), IdentityWrapper.fromIdentity(id));
+        expect(rules).toEqual(["spawn:test"]);
+    })
 });
diff --git a/external/js/cothority/src/darc/identity-wrapper.ts b/external/js/cothority/src/darc/identity-wrapper.ts
index 9729f0148e..5100c34164 100644
--- a/external/js/cothority/src/darc/identity-wrapper.ts
+++ b/external/js/cothority/src/darc/identity-wrapper.ts
@@ -14,7 +14,7 @@ export default class IdentityWrapper extends Message {
      * @see README#Message classes
      */
     static register() {
-      registerMessage("Identity", IdentityWrapper, IdentityEd25519, IdentityDarc, IdentityDid);
+      registerMessage("Identity", IdentityWrapper, IdentityEd25519, IdentityDarc, IdentityDid, IdentityTsm);
     }
 
     /**
diff --git a/external/js/cothority/src/network/websocket.ts b/external/js/cothority/src/network/websocket.ts
index e0b453df0e..56c972e0ad 100644
--- a/external/js/cothority/src/network/websocket.ts
+++ b/external/js/cothority/src/network/websocket.ts
@@ -120,7 +120,7 @@ export class WebSocketConnection implements IConnection {
             let timer = setTimeout(() => ws.close(1000, "timeout"), this.timeout);
 
             ws.onOpen(() => {
-                Log.lvl3("Sending message to", url.href);
+                Log.lvl3("Sending message", bytes.toString("hex"), "to", url.href);
                 ws.send(bytes);
             });
 

From eacb8944c396f14e7e850ec46d9ba4acd8a474ee Mon Sep 17 00:00:00 2001
From: Linus Gasser 
Date: Wed, 9 Mar 2022 09:23:41 +0100
Subject: [PATCH 15/16] Long live unit tests

---
 external/js/cothority/src/darc/identity-tsm.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/external/js/cothority/src/darc/identity-tsm.ts b/external/js/cothority/src/darc/identity-tsm.ts
index c2b640c18c..261e6e6fff 100644
--- a/external/js/cothority/src/darc/identity-tsm.ts
+++ b/external/js/cothority/src/darc/identity-tsm.ts
@@ -27,7 +27,7 @@ export default class IdentityTsm extends Message implements IIdenti
 
     /** @inheritdoc */
     toBytes(): Buffer {
-        return Buffer.from(this.toString());
+        return Buffer.from(this.publickey);
     }
 
     /** @inheritdoc */

From c0dda65d0dbe77a6cc58cbffb5aa3fa71fec4d69 Mon Sep 17 00:00:00 2001
From: Linus Gasser 
Date: Wed, 9 Mar 2022 09:52:41 +0100
Subject: [PATCH 16/16] Add tools to testing-docker

---
 Makefile                   | 7 +++++--
 external/docker/Dockerfile | 2 ++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 52cc328780..ebfdc7e881 100644
--- a/Makefile
+++ b/Makefile
@@ -29,12 +29,15 @@ proto:
 
 docker:
 	docker run -t -v $(PWD):/cothority golang:1.15-buster \
-		bash -c "cd /cothority; go build -o external/docker/conode -tags test ./conode"
+		bash -c "cd /cothority && \
+		go build -o external/docker/conode -tags test ./conode && \
+		go build -o external/docker/csadmin -tags test ./calypso/csadmin && \
+		go build -o external/docker/bcadmin -tags test ./byzcoin/bcadmin"
 	cp conode/run_nodes.sh external/docker
 	docker build -t $(TEST_IMAGE_NAME) external/docker
 
 docker_test_run: docker
-	docker run -ti -p7770-7777:7770-7777 dedis/conode-test
+	docker run -ti -p7770-7777:7770-7777 $(TEST_IMAGE_NAME)
 
 test_java: docker
 	cd external/java; mvn test
diff --git a/external/docker/Dockerfile b/external/docker/Dockerfile
index c74bba50fa..93cf45f1c8 100644
--- a/external/docker/Dockerfile
+++ b/external/docker/Dockerfile
@@ -13,6 +13,8 @@ COPY co6/*.toml co6/
 COPY co7/*.toml co7/
 COPY conode /usr/local/bin/
 COPY conode /root
+COPY bcadmin /root
+COPY csadmin /root
 COPY run_nodes.sh /root
 
 # local - run this as a set of local nodes in the docker