From ab28d077b224a1ecd5350e0a461badd4bbdb0ede Mon Sep 17 00:00:00 2001 From: toktar Date: Mon, 13 Sep 2021 15:48:34 +0300 Subject: [PATCH 01/74] Add schema, cred_def, did, attr --- go.mod | 25 +- go.sum | 363 ++++++++++++++++++++++++++ proto/cheqd/attrib.proto | 13 + proto/cheqd/cred_def.proto | 15 ++ proto/cheqd/did.proto | 12 + proto/cheqd/genesis.proto | 8 + proto/cheqd/query.proto | 96 +++++++ proto/cheqd/schema.proto | 14 + proto/cheqd/tx.proto | 124 ++++++++- x/cheqd/client/cli/query.go | 12 + x/cheqd/client/cli/queryAttrib.go | 76 ++++++ x/cheqd/client/cli/queryCred_def.go | 76 ++++++ x/cheqd/client/cli/queryDid.go | 76 ++++++ x/cheqd/client/cli/querySchema.go | 76 ++++++ x/cheqd/client/cli/tx.go | 16 ++ x/cheqd/client/cli/txAttrib.go | 99 +++++++ x/cheqd/client/cli/txCred_def.go | 103 ++++++++ x/cheqd/client/cli/txDid.go | 99 +++++++ x/cheqd/client/cli/txSchema.go | 101 +++++++ x/cheqd/client/rest/queryAttrib.go | 39 +++ x/cheqd/client/rest/queryCred_def.go | 39 +++ x/cheqd/client/rest/queryDid.go | 39 +++ x/cheqd/client/rest/querySchema.go | 39 +++ x/cheqd/client/rest/rest.go | 40 +++ x/cheqd/client/rest/txAttrib.go | 137 ++++++++++ x/cheqd/client/rest/txCred_def.go | 153 +++++++++++ x/cheqd/client/rest/txDid.go | 137 ++++++++++ x/cheqd/client/rest/txSchema.go | 145 ++++++++++ x/cheqd/genesis.go | 60 +++++ x/cheqd/handler.go | 48 ++++ x/cheqd/keeper/attrib.go | 124 +++++++++ x/cheqd/keeper/cred_def.go | 128 +++++++++ x/cheqd/keeper/did.go | 124 +++++++++ x/cheqd/keeper/grpc_query_attrib.go | 59 +++++ x/cheqd/keeper/grpc_query_cred_def.go | 59 +++++ x/cheqd/keeper/grpc_query_did.go | 59 +++++ x/cheqd/keeper/grpc_query_schema.go | 59 +++++ x/cheqd/keeper/msg_server_attrib.go | 65 +++++ x/cheqd/keeper/msg_server_cred_def.go | 69 +++++ x/cheqd/keeper/msg_server_did.go | 65 +++++ x/cheqd/keeper/msg_server_schema.go | 67 +++++ x/cheqd/keeper/query.go | 24 ++ x/cheqd/keeper/query_attrib.go | 39 +++ x/cheqd/keeper/query_cred_def.go | 39 +++ x/cheqd/keeper/query_did.go | 39 +++ x/cheqd/keeper/query_schema.go | 39 +++ x/cheqd/keeper/schema.go | 126 +++++++++ x/cheqd/types/codec.go | 36 +++ x/cheqd/types/genesis.go | 42 ++- x/cheqd/types/keys.go | 20 ++ x/cheqd/types/messages_attrib.go | 122 +++++++++ x/cheqd/types/messages_cred_def.go | 126 +++++++++ x/cheqd/types/messages_did.go | 122 +++++++++ x/cheqd/types/messages_schema.go | 124 +++++++++ x/cheqd/types/query.go | 20 ++ 55 files changed, 4069 insertions(+), 7 deletions(-) create mode 100644 proto/cheqd/attrib.proto create mode 100644 proto/cheqd/cred_def.proto create mode 100644 proto/cheqd/did.proto create mode 100644 proto/cheqd/schema.proto create mode 100644 x/cheqd/client/cli/queryAttrib.go create mode 100644 x/cheqd/client/cli/queryCred_def.go create mode 100644 x/cheqd/client/cli/queryDid.go create mode 100644 x/cheqd/client/cli/querySchema.go create mode 100644 x/cheqd/client/cli/txAttrib.go create mode 100644 x/cheqd/client/cli/txCred_def.go create mode 100644 x/cheqd/client/cli/txDid.go create mode 100644 x/cheqd/client/cli/txSchema.go create mode 100644 x/cheqd/client/rest/queryAttrib.go create mode 100644 x/cheqd/client/rest/queryCred_def.go create mode 100644 x/cheqd/client/rest/queryDid.go create mode 100644 x/cheqd/client/rest/querySchema.go create mode 100644 x/cheqd/client/rest/txAttrib.go create mode 100644 x/cheqd/client/rest/txCred_def.go create mode 100644 x/cheqd/client/rest/txDid.go create mode 100644 x/cheqd/client/rest/txSchema.go create mode 100644 x/cheqd/keeper/attrib.go create mode 100644 x/cheqd/keeper/cred_def.go create mode 100644 x/cheqd/keeper/did.go create mode 100644 x/cheqd/keeper/grpc_query_attrib.go create mode 100644 x/cheqd/keeper/grpc_query_cred_def.go create mode 100644 x/cheqd/keeper/grpc_query_did.go create mode 100644 x/cheqd/keeper/grpc_query_schema.go create mode 100644 x/cheqd/keeper/msg_server_attrib.go create mode 100644 x/cheqd/keeper/msg_server_cred_def.go create mode 100644 x/cheqd/keeper/msg_server_did.go create mode 100644 x/cheqd/keeper/msg_server_schema.go create mode 100644 x/cheqd/keeper/query_attrib.go create mode 100644 x/cheqd/keeper/query_cred_def.go create mode 100644 x/cheqd/keeper/query_did.go create mode 100644 x/cheqd/keeper/query_schema.go create mode 100644 x/cheqd/keeper/schema.go create mode 100644 x/cheqd/types/messages_attrib.go create mode 100644 x/cheqd/types/messages_cred_def.go create mode 100644 x/cheqd/types/messages_did.go create mode 100644 x/cheqd/types/messages_schema.go diff --git a/go.mod b/go.mod index 098422539..3cdacb442 100644 --- a/go.mod +++ b/go.mod @@ -3,20 +3,39 @@ module github.com/cheqd/cheqd-node go 1.15 require ( - github.com/cosmos/cosmos-sdk v0.42.5 + github.com/armon/go-metrics v0.3.8 // indirect + github.com/confio/ics23/go v0.6.6 // indirect + github.com/cosmos/cosmos-sdk v0.42.4 github.com/gogo/protobuf v1.3.3 - github.com/golang/protobuf v1.5.2 + github.com/golang/protobuf v1.4.3 + github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 // indirect github.com/google/go-cmp v0.5.6 // indirect + github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa // indirect github.com/gorilla/mux v1.8.0 + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 // indirect + github.com/magiconair/properties v1.8.5 // indirect + github.com/mitchellh/mapstructure v1.3.3 // indirect + github.com/otiai10/copy v1.6.0 // indirect + github.com/pelletier/go-toml v1.8.1 // indirect + github.com/prometheus/client_golang v1.10.0 // indirect + github.com/prometheus/common v0.23.0 // indirect + github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/rs/zerolog v1.21.0 // indirect github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.0 github.com/tendermint/tendermint v0.34.10 github.com/tendermint/tm-db v0.6.4 - google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/text v0.3.5 // indirect + golang.org/x/tools v0.1.3 // indirect + google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea google.golang.org/grpc v1.38.0 + google.golang.org/protobuf v1.26.0-rc.1 // indirect + gopkg.in/ini.v1 v1.61.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 6b98111bc..7aee97755 100644 --- a/go.sum +++ b/go.sum @@ -4,50 +4,98 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.52 h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI= github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= +github.com/aead/siphash v1.0.1 h1:FwHfE/T45KPKYuuSAKyyvE+oPWcaQ+CUmFW0bPlM+kg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0 h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.6/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.8 h1:oOxq3KPj0WhCuy50EhzwiyMyG2ovRQZpZLXQuOh2a/M= github.com/armon/go-metrics v0.3.8/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0 h1:0xphMHGMLBrPMfxR2AmVjZKcMEESEgWF8Kru94BNByk= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0 h1:qZ+woO4SamnH/eEbjM2IDLhRNwIwND/RQyVlBLp3Jqg= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -55,50 +103,80 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M= github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd h1:R/opQEbFEy9JGkIguV40SvRY1uliPX8ifOvi6ICsFCw= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0 h1:Tvd0BfvqX9o823q1j2UZ/epQo09eJh6dTcRp79ilIN4= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0 h1:ZxaA6lo2EpxGddsA8JwWOcxlzRybb444sgmeJQMJGQE= github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3SkEwmHoWBmX1DNXhXZqlTpq6s4tyJGc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0 h1:J9B4L7e3oqhXOcm+2IuNApwzQec85lE+QaikUcCs+dk= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/casbin/casbin/v2 v2.1.2 h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f h1:WBZRG4aNOuI15bLRrCgN8fCq8E5Xuty6jGbmSNEvSsU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/cosmos-sdk v0.42.4 h1:yaD4PyOx0LnyfiWasC5egg1U76lT83GRxjJjupPo7Gk= +github.com/cosmos/cosmos-sdk v0.42.4/go.mod h1:I1Zw1zmU4rA/NITaakTb71pXQnQrWyFBhqo3WSeg0vA= github.com/cosmos/cosmos-sdk v0.42.5 h1:tXttRklrAUUrFopfe9aMXpfiArF6MH2QRRqq0Lxyd5w= github.com/cosmos/cosmos-sdk v0.42.5/go.mod h1:3JyT+Ud7QRTO1/ikncNqVhaF526ZKNqh2HGMqXn+QHE= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= @@ -106,6 +184,7 @@ github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE= github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= +github.com/cosmos/iavl v0.15.3 h1:xE9r6HW8GeKeoYJN4zefpljZ1oukVScP/7M8oj6SUts= github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= github.com/cosmos/iavl v0.16.0 h1:ICIOB8xysirTX27GmVAaoeSpeozzgSu9d49w36xkVJA= github.com/cosmos/iavl v0.16.0/go.mod h1:2A8O/Jz9YwtjqXMO0CjnnbTYEEaovE8jWcwrakH3PoE= @@ -113,9 +192,12 @@ github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6 github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= @@ -123,6 +205,7 @@ github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/lru v1.0.0 h1:Kbsb1SFDsIlaupWPwsPp+dkxiBY1frcS07PCPgotKz8= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= @@ -130,23 +213,31 @@ github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDm github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= +github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4pn2T/hjXMbvwTr1Cvy5THHrQkbeY9HRk= github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= +github.com/envoyproxy/go-control-plane v0.9.4 h1:rEvIZUSZ3fx39WIi3JkQqQBitGwpELBIYWeBVh6wn+E= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= @@ -154,18 +245,25 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojt github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -175,6 +273,7 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -182,12 +281,19 @@ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -195,6 +301,7 @@ github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -203,12 +310,14 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -218,7 +327,9 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= @@ -227,18 +338,31 @@ github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= @@ -256,6 +380,7 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaD github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -263,6 +388,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 h1:HlJcTiqGHvaWDG7/s85d68Kw7G7FqMz+9LlcyVauOAw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0/go.mod h1:gRq9gZWcIFvz68EgWqy2qQpRbmtn5j2qLZ4zHjqiLpg= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -271,24 +398,36 @@ github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/b github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-retryablehttp v0.5.3 h1:QlWt0KvWT0lq8MFppF9tsJGF+ynG7ztc2KIPhzRGk7s= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -296,101 +435,149 @@ github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+l github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 h1:UDMh68UUwekSh5iP2OMhRRZJiiBccgV7axzUG8vi56c= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/jrick/logrotate v1.0.0 h1:lQ1bL/n9mBNeIXoTUoYRlK4dHuNJVofX9oWqBtPnSzI= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= +github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/kkdai/bstream v1.0.0 h1:Se5gHwgp2VT2uHfDrkbbgbgEvV9cimLELwrPJctSjg8= github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5 h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -402,15 +589,22 @@ github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/otiai10/copy v1.4.2/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= @@ -419,27 +613,35 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -466,6 +668,7 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.23.0 h1:GXWvPYuTUenIa+BhOq/x+L/QZzCqASkVRny5KTlPDGM= github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= @@ -478,6 +681,7 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= @@ -489,31 +693,45 @@ github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNw github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxrTy6/VgfVoLuVLFJcURKLH49ie0zSch7gh4= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa h1:YJfZp12Z3AFhSBeXOlv4BO55RMwPn2NoQeDsrdWnBtY= github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= @@ -543,7 +761,9 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -570,6 +790,7 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= +github.com/tendermint/tendermint v0.34.9/go.mod h1:kl4Z1JwGx1I+u1SXIzMDy7Z3T8LiMeCAOnzNn6AIMT4= github.com/tendermint/tendermint v0.34.10 h1:wBOc/It8sh/pVH9np2V5fBvRmIyFN/bUrGPx+eAHexs= github.com/tendermint/tendermint v0.34.10/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= @@ -577,16 +798,26 @@ github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFN github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ugorji/go v1.1.4 h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8 h1:3SVOIvH7Ae1KRYyQWRjXWJEA9sS/c/pjvH++55Gr648= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5 h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= @@ -594,19 +825,27 @@ go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -634,8 +873,15 @@ golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5 h1:FR+oGxGfbQu1d+jglI3rCkjAjUnhRSZcUxr+DqlDLNo= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -643,8 +889,13 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= @@ -652,6 +903,7 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -671,13 +923,25 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -686,15 +950,21 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c h1:HiAZXo96zOhVhtFHchj/ojzoxCFiPrp9/j0GtS38V3g= +golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -722,16 +992,28 @@ golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -745,6 +1027,7 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -754,6 +1037,7 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -768,18 +1052,42 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.3 h1:L69ShwSZEyCsLKoAxDKeMvLDZkumEe8gXUZAjab0tX8= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -792,10 +1100,25 @@ google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -807,18 +1130,40 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201111145450-ac7456db90a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea h1:N98SvVh7Hdle2lgUVFuIkf0B3u29CUakMUQa7Hwz8Wc= +google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced h1:c5geK1iMU3cDKtFrCVQIcjR3W+JOZMuhIyICMCTbtus= google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0 h1:lQ+dE99pFsb8osbJB3oRfE5eW4Hx6a/lZQr8Jh+eoT4= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -829,9 +1174,11 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS0A+VXQ= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -839,16 +1186,22 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25 h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.61.0 h1:LBCdW4FmFYL4s/vDZD1RQYX7oAR6IjujCYgMdbHBR10= gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -868,6 +1221,16 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/proto/cheqd/attrib.proto b/proto/cheqd/attrib.proto new file mode 100644 index 000000000..9c5210af0 --- /dev/null +++ b/proto/cheqd/attrib.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; +package cheqd.cheqdnode.cheqd; + +option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; + +import "gogoproto/gogo.proto"; + +message Attrib { + string creator = 1; + uint64 id = 2; + string did = 3; + string raw = 4; +} diff --git a/proto/cheqd/cred_def.proto b/proto/cheqd/cred_def.proto new file mode 100644 index 000000000..817d1a05a --- /dev/null +++ b/proto/cheqd/cred_def.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; +package cheqd.cheqdnode.cheqd; + +option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; + +import "gogoproto/gogo.proto"; + +message Cred_def { + string creator = 1; + uint64 id = 2; + string schema_id = 3; + string tag = 4; + string signature_type = 5; + string value = 6; +} diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto new file mode 100644 index 000000000..07e705708 --- /dev/null +++ b/proto/cheqd/did.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; +package cheqd.cheqdnode.cheqd; + +option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; + +import "gogoproto/gogo.proto"; + +message Did { + uint64 id = 1; + string verkey = 2; + string alias = 3; +} diff --git a/proto/cheqd/genesis.proto b/proto/cheqd/genesis.proto index df22b451c..36b577d53 100644 --- a/proto/cheqd/genesis.proto +++ b/proto/cheqd/genesis.proto @@ -2,6 +2,10 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; // this line is used by starport scaffolding # genesis/proto/import +import "cheqd/cred_def.proto"; +import "cheqd/schema.proto"; +import "cheqd/attrib.proto"; +import "cheqd/did.proto"; import "cheqd/nym.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; @@ -9,6 +13,10 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // GenesisState defines the capability module's genesis state. message GenesisState { // this line is used by starport scaffolding # genesis/proto/state + repeated Cred_def cred_defList = 5; // this line is used by starport scaffolding # genesis/proto/stateField + repeated Schema schemaList = 4; // this line is used by starport scaffolding # genesis/proto/stateField + repeated Attrib attribList = 3; // this line is used by starport scaffolding # genesis/proto/stateField + repeated Did didList = 2; // this line is used by starport scaffolding # genesis/proto/stateField repeated Nym nymList = 1; // this line is used by starport scaffolding # genesis/proto/stateField } diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index fd555b4fc..d5863da0c 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -4,6 +4,10 @@ package cheqdid.cheqdnode.cheqd; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; // this line is used by starport scaffolding # 1 +import "cheqd/cred_def.proto"; +import "cheqd/schema.proto"; +import "cheqd/attrib.proto"; +import "cheqd/did.proto"; import "cheqd/nym.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; @@ -11,6 +15,34 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // Query defines the gRPC querier service. service Query { // this line is used by starport scaffolding # 2 + rpc Cred_def(QueryGetCred_defRequest) returns (QueryGetCred_defResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/cred_def/{id}"; + } + rpc Cred_defAll(QueryAllCred_defRequest) returns (QueryAllCred_defResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/cred_def"; + } + + rpc Schema(QueryGetSchemaRequest) returns (QueryGetSchemaResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/schema/{id}"; + } + rpc SchemaAll(QueryAllSchemaRequest) returns (QueryAllSchemaResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/schema"; + } + + rpc Attrib(QueryGetAttribRequest) returns (QueryGetAttribResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/attrib/{id}"; + } + rpc AttribAll(QueryAllAttribRequest) returns (QueryAllAttribResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/attrib"; + } + + rpc Did(QueryGetDidRequest) returns (QueryGetDidResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/did/{id}"; + } + rpc DidAll(QueryAllDidRequest) returns (QueryAllDidResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/did"; + } + rpc Nym(QueryGetNymRequest) returns (QueryGetNymResponse) { option (google.api.http).get = "/cheqd/cheqd/cheqd/nym/{id}"; } @@ -21,6 +53,70 @@ service Query { } // this line is used by starport scaffolding # 3 +message QueryGetCred_defRequest { + uint64 id = 1; +} + +message QueryGetCred_defResponse { + Cred_def Cred_def = 1; +} + +message QueryAllCred_defRequest { + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +message QueryAllCred_defResponse { + repeated Cred_def Cred_def = 1; + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} +message QueryGetSchemaRequest { + uint64 id = 1; +} + +message QueryGetSchemaResponse { + Schema Schema = 1; +} + +message QueryAllSchemaRequest { + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +message QueryAllSchemaResponse { + repeated Schema Schema = 1; + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} +message QueryGetAttribRequest { + uint64 id = 1; +} + +message QueryGetAttribResponse { + Attrib Attrib = 1; +} + +message QueryAllAttribRequest { + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +message QueryAllAttribResponse { + repeated Attrib Attrib = 1; + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} +message QueryGetDidRequest { + uint64 id = 1; +} + +message QueryGetDidResponse { + Did Did = 1; +} + +message QueryAllDidRequest { + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +message QueryAllDidResponse { + repeated Did Did = 1; + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} message QueryGetNymRequest { uint64 id = 1; } diff --git a/proto/cheqd/schema.proto b/proto/cheqd/schema.proto new file mode 100644 index 000000000..fe373622d --- /dev/null +++ b/proto/cheqd/schema.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; +package cheqd.cheqdnode.cheqd; + +option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; + +import "gogoproto/gogo.proto"; + +message Schema { + string creator = 1; + uint64 id = 2; + string name = 3; + string version = 4; + string attr_names = 5; +} diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 169a86819..0abc34d54 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -8,12 +8,130 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // Msg defines the Msg service. service Msg { // this line is used by starport scaffolding # proto/tx/rpc - rpc CreateNym(MsgCreateNym) returns (MsgCreateNymResponse); - rpc UpdateNym(MsgUpdateNym) returns (MsgUpdateNymResponse); - rpc DeleteNym(MsgDeleteNym) returns (MsgDeleteNymResponse); + rpc CreateCred_def(MsgCreateCred_def) returns (MsgCreateCred_defResponse); + rpc UpdateCred_def(MsgUpdateCred_def) returns (MsgUpdateCred_defResponse); + rpc DeleteCred_def(MsgDeleteCred_def) returns (MsgDeleteCred_defResponse); + rpc CreateSchema(MsgCreateSchema) returns (MsgCreateSchemaResponse); + rpc UpdateSchema(MsgUpdateSchema) returns (MsgUpdateSchemaResponse); + rpc DeleteSchema(MsgDeleteSchema) returns (MsgDeleteSchemaResponse); + rpc CreateAttrib(MsgCreateAttrib) returns (MsgCreateAttribResponse); + rpc UpdateAttrib(MsgUpdateAttrib) returns (MsgUpdateAttribResponse); + rpc DeleteAttrib(MsgDeleteAttrib) returns (MsgDeleteAttribResponse); + rpc CreateDid(MsgCreateDid) returns (MsgCreateDidResponse); + rpc UpdateDid(MsgUpdateDid) returns (MsgUpdateDidResponse); + rpc DeleteDid(MsgDeleteDid) returns (MsgDeleteDidResponse); } // this line is used by starport scaffolding # proto/tx/message +message MsgCreateCred_def { + string creator = 1; + string schema_id = 2; + string tag = 3; + string signature_type = 4; + string value = 5; +} + +message MsgCreateCred_defResponse { + uint64 id = 1; +} + +message MsgUpdateCred_def { + string creator = 1; + uint64 id = 2; + string schema_id = 3; + string tag = 4; + string signature_type = 5; + string value = 6; +} + +message MsgUpdateCred_defResponse { } + +message MsgDeleteCred_def { + string creator = 1; + uint64 id = 2; +} + +message MsgDeleteCred_defResponse { } + +message MsgCreateSchema { + string creator = 1; + string name = 2; + string version = 3; + string attr_names = 4; +} + +message MsgCreateSchemaResponse { + uint64 id = 1; +} + +message MsgUpdateSchema { + string creator = 1; + uint64 id = 2; + string name = 3; + string version = 4; + string attr_names = 5; +} + +message MsgUpdateSchemaResponse { } + +message MsgDeleteSchema { + string creator = 1; + uint64 id = 2; +} + +message MsgDeleteSchemaResponse { } + +message MsgCreateAttrib { + string creator = 1; + string did = 2; + string raw = 3; +} + +message MsgCreateAttribResponse { + uint64 id = 1; +} + +message MsgUpdateAttrib { + string creator = 1; + uint64 id = 2; + string did = 3; + string raw = 4; +} + +message MsgUpdateAttribResponse { } + +message MsgDeleteAttrib { + string creator = 1; + uint64 id = 2; +} + +message MsgDeleteAttribResponse { } + +message MsgCreateDid { + string id = 1; + string verkey = 2; + string alias = 3; +} + +message MsgCreateDidResponse { + string id = 1; +} + +message MsgUpdateDid { + string id = 2; + string verkey = 3; + string alias = 4; +} + +message MsgUpdateDidResponse { } + +message MsgDeleteDid { + string creator = 1; + uint64 id = 2; +} + +message MsgDeleteDidResponse { } + message MsgCreateNym { string creator = 1; string alias = 2; diff --git a/x/cheqd/client/cli/query.go b/x/cheqd/client/cli/query.go index e75613db1..90f5d436c 100644 --- a/x/cheqd/client/cli/query.go +++ b/x/cheqd/client/cli/query.go @@ -26,6 +26,18 @@ func GetQueryCmd(queryRoute string) *cobra.Command { // this line is used by starport scaffolding # 1 + cmd.AddCommand(CmdListCred_def()) + cmd.AddCommand(CmdShowCred_def()) + + cmd.AddCommand(CmdListSchema()) + cmd.AddCommand(CmdShowSchema()) + + cmd.AddCommand(CmdListAttrib()) + cmd.AddCommand(CmdShowAttrib()) + + cmd.AddCommand(CmdListDid()) + cmd.AddCommand(CmdShowDid()) + cmd.AddCommand(CmdListNym()) cmd.AddCommand(CmdShowNym()) diff --git a/x/cheqd/client/cli/queryAttrib.go b/x/cheqd/client/cli/queryAttrib.go new file mode 100644 index 000000000..00cd69e81 --- /dev/null +++ b/x/cheqd/client/cli/queryAttrib.go @@ -0,0 +1,76 @@ +package cli + +import ( + "context" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" +) + +func CmdListAttrib() *cobra.Command { + cmd := &cobra.Command{ + Use: "list-attrib", + Short: "list all attrib", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryAllAttribRequest{ + Pagination: pageReq, + } + + res, err := queryClient.AttribAll(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func CmdShowAttrib() *cobra.Command { + cmd := &cobra.Command{ + Use: "show-attrib [id]", + Short: "shows a attrib", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + params := &types.QueryGetAttribRequest{ + Id: id, + } + + res, err := queryClient.Attrib(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cheqd/client/cli/queryCred_def.go b/x/cheqd/client/cli/queryCred_def.go new file mode 100644 index 000000000..3616cf9a2 --- /dev/null +++ b/x/cheqd/client/cli/queryCred_def.go @@ -0,0 +1,76 @@ +package cli + +import ( + "context" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" +) + +func CmdListCred_def() *cobra.Command { + cmd := &cobra.Command{ + Use: "list-cred_def", + Short: "list all cred_def", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryAllCred_defRequest{ + Pagination: pageReq, + } + + res, err := queryClient.Cred_defAll(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func CmdShowCred_def() *cobra.Command { + cmd := &cobra.Command{ + Use: "show-cred_def [id]", + Short: "shows a cred_def", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + params := &types.QueryGetCred_defRequest{ + Id: id, + } + + res, err := queryClient.Cred_def(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cheqd/client/cli/queryDid.go b/x/cheqd/client/cli/queryDid.go new file mode 100644 index 000000000..7bdf48c3d --- /dev/null +++ b/x/cheqd/client/cli/queryDid.go @@ -0,0 +1,76 @@ +package cli + +import ( + "context" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" +) + +func CmdListDid() *cobra.Command { + cmd := &cobra.Command{ + Use: "list-did", + Short: "list all did", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryAllDidRequest{ + Pagination: pageReq, + } + + res, err := queryClient.DidAll(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func CmdShowDid() *cobra.Command { + cmd := &cobra.Command{ + Use: "show-did [id]", + Short: "shows a did", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + params := &types.QueryGetDidRequest{ + Id: id, + } + + res, err := queryClient.Did(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cheqd/client/cli/querySchema.go b/x/cheqd/client/cli/querySchema.go new file mode 100644 index 000000000..be5c361e3 --- /dev/null +++ b/x/cheqd/client/cli/querySchema.go @@ -0,0 +1,76 @@ +package cli + +import ( + "context" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" +) + +func CmdListSchema() *cobra.Command { + cmd := &cobra.Command{ + Use: "list-schema", + Short: "list all schema", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryAllSchemaRequest{ + Pagination: pageReq, + } + + res, err := queryClient.SchemaAll(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func CmdShowSchema() *cobra.Command { + cmd := &cobra.Command{ + Use: "show-schema [id]", + Short: "shows a schema", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + params := &types.QueryGetSchemaRequest{ + Id: id, + } + + res, err := queryClient.Schema(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cheqd/client/cli/tx.go b/x/cheqd/client/cli/tx.go index 6422101ed..973c5310b 100644 --- a/x/cheqd/client/cli/tx.go +++ b/x/cheqd/client/cli/tx.go @@ -22,6 +22,22 @@ func GetTxCmd() *cobra.Command { // this line is used by starport scaffolding # 1 + cmd.AddCommand(CmdCreateCred_def()) + cmd.AddCommand(CmdUpdateCred_def()) + cmd.AddCommand(CmdDeleteCred_def()) + + cmd.AddCommand(CmdCreateSchema()) + cmd.AddCommand(CmdUpdateSchema()) + cmd.AddCommand(CmdDeleteSchema()) + + cmd.AddCommand(CmdCreateAttrib()) + cmd.AddCommand(CmdUpdateAttrib()) + cmd.AddCommand(CmdDeleteAttrib()) + + cmd.AddCommand(CmdCreateDid()) + cmd.AddCommand(CmdUpdateDid()) + cmd.AddCommand(CmdDeleteDid()) + cmd.AddCommand(CmdCreateNym()) cmd.AddCommand(CmdUpdateNym()) cmd.AddCommand(CmdDeleteNym()) diff --git a/x/cheqd/client/cli/txAttrib.go b/x/cheqd/client/cli/txAttrib.go new file mode 100644 index 000000000..abc639e28 --- /dev/null +++ b/x/cheqd/client/cli/txAttrib.go @@ -0,0 +1,99 @@ +package cli + +import ( + "github.com/spf13/cobra" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" +) + +func CmdCreateAttrib() *cobra.Command { + cmd := &cobra.Command{ + Use: "create-attrib [did] [raw]", + Short: "Creates a new attrib", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + argsDid := string(args[0]) + argsRaw := string(args[1]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgCreateAttrib(clientCtx.GetFromAddress().String(), string(argsDid), string(argsRaw)) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdUpdateAttrib() *cobra.Command { + cmd := &cobra.Command{ + Use: "update-attrib [id] [did] [raw]", + Short: "Update a attrib", + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) error { + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + argsDid := string(args[1]) + argsRaw := string(args[2]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgUpdateAttrib(clientCtx.GetFromAddress().String(), id, string(argsDid), string(argsRaw)) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdDeleteAttrib() *cobra.Command { + cmd := &cobra.Command{ + Use: "delete-attrib [id] [did] [raw]", + Short: "Delete a attrib by id", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgDeleteAttrib(clientCtx.GetFromAddress().String(), id) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cheqd/client/cli/txCred_def.go b/x/cheqd/client/cli/txCred_def.go new file mode 100644 index 000000000..c6372c100 --- /dev/null +++ b/x/cheqd/client/cli/txCred_def.go @@ -0,0 +1,103 @@ +package cli + +import ( + "github.com/spf13/cobra" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" +) + +func CmdCreateCred_def() *cobra.Command { + cmd := &cobra.Command{ + Use: "create-cred_def [schema_id] [tag] [signature_type] [value]", + Short: "Creates a new cred_def", + Args: cobra.ExactArgs(4), + RunE: func(cmd *cobra.Command, args []string) error { + argsSchema_id := string(args[0]) + argsTag := string(args[1]) + argsSignature_type := string(args[2]) + argsValue := string(args[3]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgCreateCred_def(clientCtx.GetFromAddress().String(), string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdUpdateCred_def() *cobra.Command { + cmd := &cobra.Command{ + Use: "update-cred_def [id] [schema_id] [tag] [signature_type] [value]", + Short: "Update a cred_def", + Args: cobra.ExactArgs(5), + RunE: func(cmd *cobra.Command, args []string) error { + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + argsSchema_id := string(args[1]) + argsTag := string(args[2]) + argsSignature_type := string(args[3]) + argsValue := string(args[4]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgUpdateCred_def(clientCtx.GetFromAddress().String(), id, string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdDeleteCred_def() *cobra.Command { + cmd := &cobra.Command{ + Use: "delete-cred_def [id] [schema_id] [tag] [signature_type] [value]", + Short: "Delete a cred_def by id", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgDeleteCred_def(clientCtx.GetFromAddress().String(), id) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cheqd/client/cli/txDid.go b/x/cheqd/client/cli/txDid.go new file mode 100644 index 000000000..644603e53 --- /dev/null +++ b/x/cheqd/client/cli/txDid.go @@ -0,0 +1,99 @@ +package cli + +import ( + "github.com/spf13/cobra" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" +) + +func CmdCreateDid() *cobra.Command { + cmd := &cobra.Command{ + Use: "create-did [verkey] [alias]", + Short: "Creates a new did", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + argsVerkey := string(args[0]) + argsAlias := string(args[1]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgCreateDid(clientCtx.GetFromAddress().String(), string(argsVerkey), string(argsAlias)) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdUpdateDid() *cobra.Command { + cmd := &cobra.Command{ + Use: "update-did [id] [verkey] [alias]", + Short: "Update a did", + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) error { + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + argsVerkey := string(args[1]) + argsAlias := string(args[2]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgUpdateDid(clientCtx.GetFromAddress().String(), id, string(argsVerkey), string(argsAlias)) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdDeleteDid() *cobra.Command { + cmd := &cobra.Command{ + Use: "delete-did [id] [verkey] [alias]", + Short: "Delete a did by id", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgDeleteDid(clientCtx.GetFromAddress().String(), id) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cheqd/client/cli/txSchema.go b/x/cheqd/client/cli/txSchema.go new file mode 100644 index 000000000..a6af64b70 --- /dev/null +++ b/x/cheqd/client/cli/txSchema.go @@ -0,0 +1,101 @@ +package cli + +import ( + "github.com/spf13/cobra" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" +) + +func CmdCreateSchema() *cobra.Command { + cmd := &cobra.Command{ + Use: "create-schema [name] [version] [attr_names]", + Short: "Creates a new schema", + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) error { + argsName := string(args[0]) + argsVersion := string(args[1]) + argsAttr_names := string(args[2]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgCreateSchema(clientCtx.GetFromAddress().String(), string(argsName), string(argsVersion), string(argsAttr_names)) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdUpdateSchema() *cobra.Command { + cmd := &cobra.Command{ + Use: "update-schema [id] [name] [version] [attr_names]", + Short: "Update a schema", + Args: cobra.ExactArgs(4), + RunE: func(cmd *cobra.Command, args []string) error { + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + argsName := string(args[1]) + argsVersion := string(args[2]) + argsAttr_names := string(args[3]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgUpdateSchema(clientCtx.GetFromAddress().String(), id, string(argsName), string(argsVersion), string(argsAttr_names)) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func CmdDeleteSchema() *cobra.Command { + cmd := &cobra.Command{ + Use: "delete-schema [id] [name] [version] [attr_names]", + Short: "Delete a schema by id", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgDeleteSchema(clientCtx.GetFromAddress().String(), id) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cheqd/client/rest/queryAttrib.go b/x/cheqd/client/rest/queryAttrib.go new file mode 100644 index 000000000..d69a7f843 --- /dev/null +++ b/x/cheqd/client/rest/queryAttrib.go @@ -0,0 +1,39 @@ +package rest + +import ( + "fmt" + "net/http" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/types/rest" + "github.com/gorilla/mux" +) + +func listAttribHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-attrib", types.QuerierRoute), nil) + if err != nil { + rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) + return + } + + clientCtx = clientCtx.WithHeight(height) + rest.PostProcessResponse(w, clientCtx, res) + } +} + +func getAttribHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id := mux.Vars(r)["id"] + + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-attrib/%s", types.QuerierRoute, id), nil) + if err != nil { + rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) + return + } + + clientCtx = clientCtx.WithHeight(height) + rest.PostProcessResponse(w, clientCtx, res) + } +} diff --git a/x/cheqd/client/rest/queryCred_def.go b/x/cheqd/client/rest/queryCred_def.go new file mode 100644 index 000000000..68366afe6 --- /dev/null +++ b/x/cheqd/client/rest/queryCred_def.go @@ -0,0 +1,39 @@ +package rest + +import ( + "fmt" + "net/http" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/types/rest" + "github.com/gorilla/mux" +) + +func listCred_defHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-cred_def", types.QuerierRoute), nil) + if err != nil { + rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) + return + } + + clientCtx = clientCtx.WithHeight(height) + rest.PostProcessResponse(w, clientCtx, res) + } +} + +func getCred_defHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id := mux.Vars(r)["id"] + + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-cred_def/%s", types.QuerierRoute, id), nil) + if err != nil { + rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) + return + } + + clientCtx = clientCtx.WithHeight(height) + rest.PostProcessResponse(w, clientCtx, res) + } +} diff --git a/x/cheqd/client/rest/queryDid.go b/x/cheqd/client/rest/queryDid.go new file mode 100644 index 000000000..8406814fc --- /dev/null +++ b/x/cheqd/client/rest/queryDid.go @@ -0,0 +1,39 @@ +package rest + +import ( + "fmt" + "net/http" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/types/rest" + "github.com/gorilla/mux" +) + +func listDidHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-did", types.QuerierRoute), nil) + if err != nil { + rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) + return + } + + clientCtx = clientCtx.WithHeight(height) + rest.PostProcessResponse(w, clientCtx, res) + } +} + +func getDidHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id := mux.Vars(r)["id"] + + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-did/%s", types.QuerierRoute, id), nil) + if err != nil { + rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) + return + } + + clientCtx = clientCtx.WithHeight(height) + rest.PostProcessResponse(w, clientCtx, res) + } +} diff --git a/x/cheqd/client/rest/querySchema.go b/x/cheqd/client/rest/querySchema.go new file mode 100644 index 000000000..46842effc --- /dev/null +++ b/x/cheqd/client/rest/querySchema.go @@ -0,0 +1,39 @@ +package rest + +import ( + "fmt" + "net/http" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/types/rest" + "github.com/gorilla/mux" +) + +func listSchemaHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-schema", types.QuerierRoute), nil) + if err != nil { + rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) + return + } + + clientCtx = clientCtx.WithHeight(height) + rest.PostProcessResponse(w, clientCtx, res) + } +} + +func getSchemaHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id := mux.Vars(r)["id"] + + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-schema/%s", types.QuerierRoute, id), nil) + if err != nil { + rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) + return + } + + clientCtx = clientCtx.WithHeight(height) + rest.PostProcessResponse(w, clientCtx, res) + } +} diff --git a/x/cheqd/client/rest/rest.go b/x/cheqd/client/rest/rest.go index c080f16e8..017cf70c6 100644 --- a/x/cheqd/client/rest/rest.go +++ b/x/cheqd/client/rest/rest.go @@ -17,10 +17,34 @@ func RegisterRoutes(clientCtx client.Context, r *mux.Router) { registerQueryRoutes(clientCtx, r) registerTxHandlers(clientCtx, r) + registerQueryRoutes(clientCtx, r) + registerTxHandlers(clientCtx, r) + + registerQueryRoutes(clientCtx, r) + registerTxHandlers(clientCtx, r) + + registerQueryRoutes(clientCtx, r) + registerTxHandlers(clientCtx, r) + + registerQueryRoutes(clientCtx, r) + registerTxHandlers(clientCtx, r) + } func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { // this line is used by starport scaffolding # 3 + r.HandleFunc("/cheqd/cred_defs/{id}", getCred_defHandler(clientCtx)).Methods("GET") + r.HandleFunc("/cheqd/cred_defs", listCred_defHandler(clientCtx)).Methods("GET") + + r.HandleFunc("/cheqd/schemata/{id}", getSchemaHandler(clientCtx)).Methods("GET") + r.HandleFunc("/cheqd/schemata", listSchemaHandler(clientCtx)).Methods("GET") + + r.HandleFunc("/cheqd/attribs/{id}", getAttribHandler(clientCtx)).Methods("GET") + r.HandleFunc("/cheqd/attribs", listAttribHandler(clientCtx)).Methods("GET") + + r.HandleFunc("/cheqd/dids/{id}", getDidHandler(clientCtx)).Methods("GET") + r.HandleFunc("/cheqd/dids", listDidHandler(clientCtx)).Methods("GET") + r.HandleFunc("/cheqd/nyms/{id}", getNymHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/nyms", listNymHandler(clientCtx)).Methods("GET") @@ -28,6 +52,22 @@ func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { func registerTxHandlers(clientCtx client.Context, r *mux.Router) { // this line is used by starport scaffolding # 4 + r.HandleFunc("/cheqd/cred_defs", createCred_defHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/cred_defs/{id}", updateCred_defHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/cred_defs/{id}", deleteCred_defHandler(clientCtx)).Methods("POST") + + r.HandleFunc("/cheqd/schemata", createSchemaHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/schemata/{id}", updateSchemaHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/schemata/{id}", deleteSchemaHandler(clientCtx)).Methods("POST") + + r.HandleFunc("/cheqd/attribs", createAttribHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/attribs/{id}", updateAttribHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/attribs/{id}", deleteAttribHandler(clientCtx)).Methods("POST") + + r.HandleFunc("/cheqd/dids", createDidHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/dids/{id}", updateDidHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/dids/{id}", deleteDidHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/nyms", createNymHandler(clientCtx)).Methods("POST") r.HandleFunc("/cheqd/nyms/{id}", updateNymHandler(clientCtx)).Methods("POST") r.HandleFunc("/cheqd/nyms/{id}", deleteNymHandler(clientCtx)).Methods("POST") diff --git a/x/cheqd/client/rest/txAttrib.go b/x/cheqd/client/rest/txAttrib.go new file mode 100644 index 000000000..4ab8fd462 --- /dev/null +++ b/x/cheqd/client/rest/txAttrib.go @@ -0,0 +1,137 @@ +package rest + +import ( + "net/http" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/rest" + "github.com/gorilla/mux" +) + +type createAttribRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Did string `json:"did"` + Raw string `json:"raw"` +} + +func createAttribHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req createAttribRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err := sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + parsedDid := req.Did + + parsedRaw := req.Raw + + msg := types.NewMsgCreateAttrib( + req.Creator, + parsedDid, + parsedRaw, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} + +type updateAttribRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Did string `json:"did"` + Raw string `json:"raw"` +} + +func updateAttribHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + if err != nil { + return + } + + var req updateAttribRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err = sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + parsedDid := req.Did + + parsedRaw := req.Raw + + msg := types.NewMsgUpdateAttrib( + req.Creator, + id, + parsedDid, + parsedRaw, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} + +type deleteAttribRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` +} + +func deleteAttribHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + if err != nil { + return + } + + var req deleteAttribRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err = sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + msg := types.NewMsgDeleteAttrib( + req.Creator, + id, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} diff --git a/x/cheqd/client/rest/txCred_def.go b/x/cheqd/client/rest/txCred_def.go new file mode 100644 index 000000000..fa346921c --- /dev/null +++ b/x/cheqd/client/rest/txCred_def.go @@ -0,0 +1,153 @@ +package rest + +import ( + "net/http" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/rest" + "github.com/gorilla/mux" +) + +type createCred_defRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Schema_id string `json:"schema_id"` + Tag string `json:"tag"` + Signature_type string `json:"signature_type"` + Value string `json:"value"` +} + +func createCred_defHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req createCred_defRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err := sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + parsedSchema_id := req.Schema_id + + parsedTag := req.Tag + + parsedSignature_type := req.Signature_type + + parsedValue := req.Value + + msg := types.NewMsgCreateCred_def( + req.Creator, + parsedSchema_id, + parsedTag, + parsedSignature_type, + parsedValue, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} + +type updateCred_defRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Schema_id string `json:"schema_id"` + Tag string `json:"tag"` + Signature_type string `json:"signature_type"` + Value string `json:"value"` +} + +func updateCred_defHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + if err != nil { + return + } + + var req updateCred_defRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err = sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + parsedSchema_id := req.Schema_id + + parsedTag := req.Tag + + parsedSignature_type := req.Signature_type + + parsedValue := req.Value + + msg := types.NewMsgUpdateCred_def( + req.Creator, + id, + parsedSchema_id, + parsedTag, + parsedSignature_type, + parsedValue, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} + +type deleteCred_defRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` +} + +func deleteCred_defHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + if err != nil { + return + } + + var req deleteCred_defRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err = sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + msg := types.NewMsgDeleteCred_def( + req.Creator, + id, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} diff --git a/x/cheqd/client/rest/txDid.go b/x/cheqd/client/rest/txDid.go new file mode 100644 index 000000000..e94369031 --- /dev/null +++ b/x/cheqd/client/rest/txDid.go @@ -0,0 +1,137 @@ +package rest + +import ( + "net/http" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/rest" + "github.com/gorilla/mux" +) + +type createDidRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Verkey string `json:"verkey"` + Alias string `json:"alias"` +} + +func createDidHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req createDidRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err := sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + parsedVerkey := req.Verkey + + parsedAlias := req.Alias + + msg := types.NewMsgCreateDid( + req.Creator, + parsedVerkey, + parsedAlias, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} + +type updateDidRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Verkey string `json:"verkey"` + Alias string `json:"alias"` +} + +func updateDidHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + if err != nil { + return + } + + var req updateDidRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err = sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + parsedVerkey := req.Verkey + + parsedAlias := req.Alias + + msg := types.NewMsgUpdateDid( + req.Creator, + id, + parsedVerkey, + parsedAlias, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} + +type deleteDidRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` +} + +func deleteDidHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + if err != nil { + return + } + + var req deleteDidRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err = sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + msg := types.NewMsgDeleteDid( + req.Creator, + id, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} diff --git a/x/cheqd/client/rest/txSchema.go b/x/cheqd/client/rest/txSchema.go new file mode 100644 index 000000000..1ea806e22 --- /dev/null +++ b/x/cheqd/client/rest/txSchema.go @@ -0,0 +1,145 @@ +package rest + +import ( + "net/http" + "strconv" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/rest" + "github.com/gorilla/mux" +) + +type createSchemaRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Name string `json:"name"` + Version string `json:"version"` + Attr_names string `json:"attr_names"` +} + +func createSchemaHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req createSchemaRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err := sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + parsedName := req.Name + + parsedVersion := req.Version + + parsedAttr_names := req.Attr_names + + msg := types.NewMsgCreateSchema( + req.Creator, + parsedName, + parsedVersion, + parsedAttr_names, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} + +type updateSchemaRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Name string `json:"name"` + Version string `json:"version"` + Attr_names string `json:"attr_names"` +} + +func updateSchemaHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + if err != nil { + return + } + + var req updateSchemaRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err = sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + parsedName := req.Name + + parsedVersion := req.Version + + parsedAttr_names := req.Attr_names + + msg := types.NewMsgUpdateSchema( + req.Creator, + id, + parsedName, + parsedVersion, + parsedAttr_names, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} + +type deleteSchemaRequest struct { + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` +} + +func deleteSchemaHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + if err != nil { + return + } + + var req deleteSchemaRequest + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") + return + } + + baseReq := req.BaseReq.Sanitize() + if !baseReq.ValidateBasic(w) { + return + } + + _, err = sdk.AccAddressFromBech32(req.Creator) + if err != nil { + rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + msg := types.NewMsgDeleteSchema( + req.Creator, + id, + ) + + tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) + } +} diff --git a/x/cheqd/genesis.go b/x/cheqd/genesis.go index ba88559ca..0fbd7bffa 100644 --- a/x/cheqd/genesis.go +++ b/x/cheqd/genesis.go @@ -10,6 +10,38 @@ import ( // state. func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { // this line is used by starport scaffolding # genesis/module/init + // Set all the cred_def + for _, elem := range genState.Cred_defList { + k.SetCred_def(ctx, *elem) + } + + // Set cred_def count + k.SetCred_defCount(ctx, uint64(len(genState.Cred_defList))) + + // Set all the schema + for _, elem := range genState.SchemaList { + k.SetSchema(ctx, *elem) + } + + // Set schema count + k.SetSchemaCount(ctx, uint64(len(genState.SchemaList))) + + // Set all the attrib + for _, elem := range genState.AttribList { + k.SetAttrib(ctx, *elem) + } + + // Set attrib count + k.SetAttribCount(ctx, uint64(len(genState.AttribList))) + + // Set all the did + for _, elem := range genState.DidList { + k.SetDid(ctx, *elem) + } + + // Set did count + k.SetDidCount(ctx, uint64(len(genState.DidList))) + // Set all the nym for _, elem := range genState.NymList { k.SetNym(ctx, *elem) @@ -25,6 +57,34 @@ func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { genesis := types.DefaultGenesis() // this line is used by starport scaffolding # genesis/module/export + // Get all cred_def + cred_defList := k.GetAllCred_def(ctx) + for _, elem := range cred_defList { + elem := elem + genesis.Cred_defList = append(genesis.Cred_defList, &elem) + } + + // Get all schema + schemaList := k.GetAllSchema(ctx) + for _, elem := range schemaList { + elem := elem + genesis.SchemaList = append(genesis.SchemaList, &elem) + } + + // Get all attrib + attribList := k.GetAllAttrib(ctx) + for _, elem := range attribList { + elem := elem + genesis.AttribList = append(genesis.AttribList, &elem) + } + + // Get all did + didList := k.GetAllDid(ctx) + for _, elem := range didList { + elem := elem + genesis.DidList = append(genesis.DidList, &elem) + } + // Get all nym nymList := k.GetAllNym(ctx) for _, elem := range nymList { diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index 3cddc2763..f7bf7224c 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -18,6 +18,54 @@ func NewHandler(k keeper.Keeper) sdk.Handler { switch msg := msg.(type) { // this line is used by starport scaffolding # 1 + case *types.MsgCreateCred_def: + res, err := msgServer.CreateCred_def(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgUpdateCred_def: + res, err := msgServer.UpdateCred_def(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgDeleteCred_def: + res, err := msgServer.DeleteCred_def(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgCreateSchema: + res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgUpdateSchema: + res, err := msgServer.UpdateSchema(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgDeleteSchema: + res, err := msgServer.DeleteSchema(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgCreateAttrib: + res, err := msgServer.CreateAttrib(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgUpdateAttrib: + res, err := msgServer.UpdateAttrib(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgDeleteAttrib: + res, err := msgServer.DeleteAttrib(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgCreateDid: + res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgUpdateDid: + res, err := msgServer.UpdateDid(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + + case *types.MsgDeleteDid: + res, err := msgServer.DeleteDid(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgCreateNym: res, err := msgServer.CreateNym(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/cheqd/keeper/attrib.go b/x/cheqd/keeper/attrib.go new file mode 100644 index 000000000..2d05f8cc5 --- /dev/null +++ b/x/cheqd/keeper/attrib.go @@ -0,0 +1,124 @@ +package keeper + +import ( + "encoding/binary" + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "strconv" +) + +// GetAttribCount get the total number of attrib +func (k Keeper) GetAttribCount(ctx sdk.Context) uint64 { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribCountKey)) + byteKey := types.KeyPrefix(types.AttribCountKey) + bz := store.Get(byteKey) + + // Count doesn't exist: no element + if bz == nil { + return 0 + } + + // Parse bytes + count, err := strconv.ParseUint(string(bz), 10, 64) + if err != nil { + // Panic because the count should be always formattable to iint64 + panic("cannot decode count") + } + + return count +} + +// SetAttribCount set the total number of attrib +func (k Keeper) SetAttribCount(ctx sdk.Context, count uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribCountKey)) + byteKey := types.KeyPrefix(types.AttribCountKey) + bz := []byte(strconv.FormatUint(count, 10)) + store.Set(byteKey, bz) +} + +// AppendAttrib appends a attrib in the store with a new id and update the count +func (k Keeper) AppendAttrib( + ctx sdk.Context, + creator string, + did string, + raw string, +) uint64 { + // Create the attrib + count := k.GetAttribCount(ctx) + var attrib = types.Attrib{ + Creator: creator, + Id: count, + Did: did, + Raw: raw, + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) + value := k.cdc.MustMarshalBinaryBare(&attrib) + store.Set(GetAttribIDBytes(attrib.Id), value) + + // Update attrib count + k.SetAttribCount(ctx, count+1) + + return count +} + +// SetAttrib set a specific attrib in the store +func (k Keeper) SetAttrib(ctx sdk.Context, attrib types.Attrib) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) + b := k.cdc.MustMarshalBinaryBare(&attrib) + store.Set(GetAttribIDBytes(attrib.Id), b) +} + +// GetAttrib returns a attrib from its id +func (k Keeper) GetAttrib(ctx sdk.Context, id uint64) types.Attrib { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) + var attrib types.Attrib + k.cdc.MustUnmarshalBinaryBare(store.Get(GetAttribIDBytes(id)), &attrib) + return attrib +} + +// HasAttrib checks if the attrib exists in the store +func (k Keeper) HasAttrib(ctx sdk.Context, id uint64) bool { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) + return store.Has(GetAttribIDBytes(id)) +} + +// GetAttribOwner returns the creator of the attrib +func (k Keeper) GetAttribOwner(ctx sdk.Context, id uint64) string { + return k.GetAttrib(ctx, id).Creator +} + +// RemoveAttrib removes a attrib from the store +func (k Keeper) RemoveAttrib(ctx sdk.Context, id uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) + store.Delete(GetAttribIDBytes(id)) +} + +// GetAllAttrib returns all attrib +func (k Keeper) GetAllAttrib(ctx sdk.Context) (list []types.Attrib) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) + iterator := sdk.KVStorePrefixIterator(store, []byte{}) + + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var val types.Attrib + k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) + list = append(list, val) + } + + return +} + +// GetAttribIDBytes returns the byte representation of the ID +func GetAttribIDBytes(id uint64) []byte { + bz := make([]byte, 8) + binary.BigEndian.PutUint64(bz, id) + return bz +} + +// GetAttribIDFromBytes returns ID in uint64 format from a byte array +func GetAttribIDFromBytes(bz []byte) uint64 { + return binary.BigEndian.Uint64(bz) +} diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go new file mode 100644 index 000000000..36bebdae1 --- /dev/null +++ b/x/cheqd/keeper/cred_def.go @@ -0,0 +1,128 @@ +package keeper + +import ( + "encoding/binary" + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "strconv" +) + +// GetCred_defCount get the total number of cred_def +func (k Keeper) GetCred_defCount(ctx sdk.Context) uint64 { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defCountKey)) + byteKey := types.KeyPrefix(types.Cred_defCountKey) + bz := store.Get(byteKey) + + // Count doesn't exist: no element + if bz == nil { + return 0 + } + + // Parse bytes + count, err := strconv.ParseUint(string(bz), 10, 64) + if err != nil { + // Panic because the count should be always formattable to iint64 + panic("cannot decode count") + } + + return count +} + +// SetCred_defCount set the total number of cred_def +func (k Keeper) SetCred_defCount(ctx sdk.Context, count uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defCountKey)) + byteKey := types.KeyPrefix(types.Cred_defCountKey) + bz := []byte(strconv.FormatUint(count, 10)) + store.Set(byteKey, bz) +} + +// AppendCred_def appends a cred_def in the store with a new id and update the count +func (k Keeper) AppendCred_def( + ctx sdk.Context, + creator string, + schema_id string, + tag string, + signature_type string, + value string, +) uint64 { + // Create the cred_def + count := k.GetCred_defCount(ctx) + var cred_def = types.Cred_def{ + Creator: creator, + Id: count, + Schema_id: schema_id, + Tag: tag, + Signature_type: signature_type, + Value: value, + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) + value := k.cdc.MustMarshalBinaryBare(&cred_def) + store.Set(GetCred_defIDBytes(cred_def.Id), value) + + // Update cred_def count + k.SetCred_defCount(ctx, count+1) + + return count +} + +// SetCred_def set a specific cred_def in the store +func (k Keeper) SetCred_def(ctx sdk.Context, cred_def types.Cred_def) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) + b := k.cdc.MustMarshalBinaryBare(&cred_def) + store.Set(GetCred_defIDBytes(cred_def.Id), b) +} + +// GetCred_def returns a cred_def from its id +func (k Keeper) GetCred_def(ctx sdk.Context, id uint64) types.Cred_def { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) + var cred_def types.Cred_def + k.cdc.MustUnmarshalBinaryBare(store.Get(GetCred_defIDBytes(id)), &cred_def) + return cred_def +} + +// HasCred_def checks if the cred_def exists in the store +func (k Keeper) HasCred_def(ctx sdk.Context, id uint64) bool { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) + return store.Has(GetCred_defIDBytes(id)) +} + +// GetCred_defOwner returns the creator of the cred_def +func (k Keeper) GetCred_defOwner(ctx sdk.Context, id uint64) string { + return k.GetCred_def(ctx, id).Creator +} + +// RemoveCred_def removes a cred_def from the store +func (k Keeper) RemoveCred_def(ctx sdk.Context, id uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) + store.Delete(GetCred_defIDBytes(id)) +} + +// GetAllCred_def returns all cred_def +func (k Keeper) GetAllCred_def(ctx sdk.Context) (list []types.Cred_def) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) + iterator := sdk.KVStorePrefixIterator(store, []byte{}) + + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var val types.Cred_def + k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) + list = append(list, val) + } + + return +} + +// GetCred_defIDBytes returns the byte representation of the ID +func GetCred_defIDBytes(id uint64) []byte { + bz := make([]byte, 8) + binary.BigEndian.PutUint64(bz, id) + return bz +} + +// GetCred_defIDFromBytes returns ID in uint64 format from a byte array +func GetCred_defIDFromBytes(bz []byte) uint64 { + return binary.BigEndian.Uint64(bz) +} diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go new file mode 100644 index 000000000..a46826f7b --- /dev/null +++ b/x/cheqd/keeper/did.go @@ -0,0 +1,124 @@ +package keeper + +import ( + "encoding/binary" + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "strconv" +) + +// GetDidCount get the total number of did +func (k Keeper) GetDidCount(ctx sdk.Context) uint64 { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidCountKey)) + byteKey := types.KeyPrefix(types.DidCountKey) + bz := store.Get(byteKey) + + // Count doesn't exist: no element + if bz == nil { + return 0 + } + + // Parse bytes + count, err := strconv.ParseUint(string(bz), 10, 64) + if err != nil { + // Panic because the count should be always formattable to iint64 + panic("cannot decode count") + } + + return count +} + +// SetDidCount set the total number of did +func (k Keeper) SetDidCount(ctx sdk.Context, count uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidCountKey)) + byteKey := types.KeyPrefix(types.DidCountKey) + bz := []byte(strconv.FormatUint(count, 10)) + store.Set(byteKey, bz) +} + +// AppendDid appends a did in the store with a new id and update the count +func (k Keeper) AppendDid( + ctx sdk.Context, + creator string, + verkey string, + alias string, +) uint64 { + // Create the did + count := k.GetDidCount(ctx) + var did = types.Did{ + Creator: creator, + Id: count, + Verkey: verkey, + Alias: alias, + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) + value := k.cdc.MustMarshalBinaryBare(&did) + store.Set(GetDidIDBytes(did.Id), value) + + // Update did count + k.SetDidCount(ctx, count+1) + + return count +} + +// SetDid set a specific did in the store +func (k Keeper) SetDid(ctx sdk.Context, did types.Did) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) + b := k.cdc.MustMarshalBinaryBare(&did) + store.Set(GetDidIDBytes(did.Id), b) +} + +// GetDid returns a did from its id +func (k Keeper) GetDid(ctx sdk.Context, id uint64) types.Did { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) + var did types.Did + k.cdc.MustUnmarshalBinaryBare(store.Get(GetDidIDBytes(id)), &did) + return did +} + +// HasDid checks if the did exists in the store +func (k Keeper) HasDid(ctx sdk.Context, id uint64) bool { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) + return store.Has(GetDidIDBytes(id)) +} + +// GetDidOwner returns the creator of the did +func (k Keeper) GetDidOwner(ctx sdk.Context, id uint64) string { + return k.GetDid(ctx, id).Creator +} + +// RemoveDid removes a did from the store +func (k Keeper) RemoveDid(ctx sdk.Context, id uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) + store.Delete(GetDidIDBytes(id)) +} + +// GetAllDid returns all did +func (k Keeper) GetAllDid(ctx sdk.Context) (list []types.Did) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) + iterator := sdk.KVStorePrefixIterator(store, []byte{}) + + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var val types.Did + k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) + list = append(list, val) + } + + return +} + +// GetDidIDBytes returns the byte representation of the ID +func GetDidIDBytes(id uint64) []byte { + bz := make([]byte, 8) + binary.BigEndian.PutUint64(bz, id) + return bz +} + +// GetDidIDFromBytes returns ID in uint64 format from a byte array +func GetDidIDFromBytes(bz []byte) uint64 { + return binary.BigEndian.Uint64(bz) +} diff --git a/x/cheqd/keeper/grpc_query_attrib.go b/x/cheqd/keeper/grpc_query_attrib.go new file mode 100644 index 000000000..bb6928689 --- /dev/null +++ b/x/cheqd/keeper/grpc_query_attrib.go @@ -0,0 +1,59 @@ +package keeper + +import ( + "context" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (k Keeper) AttribAll(c context.Context, req *types.QueryAllAttribRequest) (*types.QueryAllAttribResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var attribs []*types.Attrib + ctx := sdk.UnwrapSDKContext(c) + + store := ctx.KVStore(k.storeKey) + attribStore := prefix.NewStore(store, types.KeyPrefix(types.AttribKey)) + + pageRes, err := query.Paginate(attribStore, req.Pagination, func(key []byte, value []byte) error { + var attrib types.Attrib + if err := k.cdc.UnmarshalBinaryBare(value, &attrib); err != nil { + return err + } + + attribs = append(attribs, &attrib) + return nil + }) + + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllAttribResponse{Attrib: attribs, Pagination: pageRes}, nil +} + +func (k Keeper) Attrib(c context.Context, req *types.QueryGetAttribRequest) (*types.QueryGetAttribResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var attrib types.Attrib + ctx := sdk.UnwrapSDKContext(c) + + if !k.HasAttrib(ctx, req.Id) { + return nil, sdkerrors.ErrKeyNotFound + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) + k.cdc.MustUnmarshalBinaryBare(store.Get(GetAttribIDBytes(req.Id)), &attrib) + + return &types.QueryGetAttribResponse{Attrib: &attrib}, nil +} diff --git a/x/cheqd/keeper/grpc_query_cred_def.go b/x/cheqd/keeper/grpc_query_cred_def.go new file mode 100644 index 000000000..9ba88178e --- /dev/null +++ b/x/cheqd/keeper/grpc_query_cred_def.go @@ -0,0 +1,59 @@ +package keeper + +import ( + "context" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (k Keeper) Cred_defAll(c context.Context, req *types.QueryAllCred_defRequest) (*types.QueryAllCred_defResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var cred_defs []*types.Cred_def + ctx := sdk.UnwrapSDKContext(c) + + store := ctx.KVStore(k.storeKey) + cred_defStore := prefix.NewStore(store, types.KeyPrefix(types.Cred_defKey)) + + pageRes, err := query.Paginate(cred_defStore, req.Pagination, func(key []byte, value []byte) error { + var cred_def types.Cred_def + if err := k.cdc.UnmarshalBinaryBare(value, &cred_def); err != nil { + return err + } + + cred_defs = append(cred_defs, &cred_def) + return nil + }) + + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllCred_defResponse{Cred_def: cred_defs, Pagination: pageRes}, nil +} + +func (k Keeper) Cred_def(c context.Context, req *types.QueryGetCred_defRequest) (*types.QueryGetCred_defResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var cred_def types.Cred_def + ctx := sdk.UnwrapSDKContext(c) + + if !k.HasCred_def(ctx, req.Id) { + return nil, sdkerrors.ErrKeyNotFound + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) + k.cdc.MustUnmarshalBinaryBare(store.Get(GetCred_defIDBytes(req.Id)), &cred_def) + + return &types.QueryGetCred_defResponse{Cred_def: &cred_def}, nil +} diff --git a/x/cheqd/keeper/grpc_query_did.go b/x/cheqd/keeper/grpc_query_did.go new file mode 100644 index 000000000..cf6cdc810 --- /dev/null +++ b/x/cheqd/keeper/grpc_query_did.go @@ -0,0 +1,59 @@ +package keeper + +import ( + "context" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (k Keeper) DidAll(c context.Context, req *types.QueryAllDidRequest) (*types.QueryAllDidResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var dids []*types.Did + ctx := sdk.UnwrapSDKContext(c) + + store := ctx.KVStore(k.storeKey) + didStore := prefix.NewStore(store, types.KeyPrefix(types.DidKey)) + + pageRes, err := query.Paginate(didStore, req.Pagination, func(key []byte, value []byte) error { + var did types.Did + if err := k.cdc.UnmarshalBinaryBare(value, &did); err != nil { + return err + } + + dids = append(dids, &did) + return nil + }) + + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllDidResponse{Did: dids, Pagination: pageRes}, nil +} + +func (k Keeper) Did(c context.Context, req *types.QueryGetDidRequest) (*types.QueryGetDidResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var did types.Did + ctx := sdk.UnwrapSDKContext(c) + + if !k.HasDid(ctx, req.Id) { + return nil, sdkerrors.ErrKeyNotFound + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) + k.cdc.MustUnmarshalBinaryBare(store.Get(GetDidIDBytes(req.Id)), &did) + + return &types.QueryGetDidResponse{Did: &did}, nil +} diff --git a/x/cheqd/keeper/grpc_query_schema.go b/x/cheqd/keeper/grpc_query_schema.go new file mode 100644 index 000000000..74bfe3c13 --- /dev/null +++ b/x/cheqd/keeper/grpc_query_schema.go @@ -0,0 +1,59 @@ +package keeper + +import ( + "context" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (k Keeper) SchemaAll(c context.Context, req *types.QueryAllSchemaRequest) (*types.QueryAllSchemaResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var schemas []*types.Schema + ctx := sdk.UnwrapSDKContext(c) + + store := ctx.KVStore(k.storeKey) + schemaStore := prefix.NewStore(store, types.KeyPrefix(types.SchemaKey)) + + pageRes, err := query.Paginate(schemaStore, req.Pagination, func(key []byte, value []byte) error { + var schema types.Schema + if err := k.cdc.UnmarshalBinaryBare(value, &schema); err != nil { + return err + } + + schemas = append(schemas, &schema) + return nil + }) + + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllSchemaResponse{Schema: schemas, Pagination: pageRes}, nil +} + +func (k Keeper) Schema(c context.Context, req *types.QueryGetSchemaRequest) (*types.QueryGetSchemaResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var schema types.Schema + ctx := sdk.UnwrapSDKContext(c) + + if !k.HasSchema(ctx, req.Id) { + return nil, sdkerrors.ErrKeyNotFound + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + k.cdc.MustUnmarshalBinaryBare(store.Get(GetSchemaIDBytes(req.Id)), &schema) + + return &types.QueryGetSchemaResponse{Schema: &schema}, nil +} diff --git a/x/cheqd/keeper/msg_server_attrib.go b/x/cheqd/keeper/msg_server_attrib.go new file mode 100644 index 000000000..99fa9343e --- /dev/null +++ b/x/cheqd/keeper/msg_server_attrib.go @@ -0,0 +1,65 @@ +package keeper + +import ( + "context" + "fmt" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func (k msgServer) CreateAttrib(goCtx context.Context, msg *types.MsgCreateAttrib) (*types.MsgCreateAttribResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + id := k.AppendAttrib( + ctx, + msg.Creator, + msg.Did, + msg.Raw, + ) + + return &types.MsgCreateAttribResponse{ + Id: id, + }, nil +} + +func (k msgServer) UpdateAttrib(goCtx context.Context, msg *types.MsgUpdateAttrib) (*types.MsgUpdateAttribResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + var attrib = types.Attrib{ + Creator: msg.Creator, + Id: msg.Id, + Did: msg.Did, + Raw: msg.Raw, + } + + // Checks that the element exists + if !k.HasAttrib(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + + // Checks if the the msg sender is the same as the current owner + if msg.Creator != k.GetAttribOwner(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + + k.SetAttrib(ctx, attrib) + + return &types.MsgUpdateAttribResponse{}, nil +} + +func (k msgServer) DeleteAttrib(goCtx context.Context, msg *types.MsgDeleteAttrib) (*types.MsgDeleteAttribResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + if !k.HasAttrib(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + if msg.Creator != k.GetAttribOwner(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + + k.RemoveAttrib(ctx, msg.Id) + + return &types.MsgDeleteAttribResponse{}, nil +} diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go new file mode 100644 index 000000000..c8ea963e9 --- /dev/null +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -0,0 +1,69 @@ +package keeper + +import ( + "context" + "fmt" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func (k msgServer) CreateCred_def(goCtx context.Context, msg *types.MsgCreateCred_def) (*types.MsgCreateCred_defResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + id := k.AppendCred_def( + ctx, + msg.Creator, + msg.Schema_id, + msg.Tag, + msg.Signature_type, + msg.Value, + ) + + return &types.MsgCreateCred_defResponse{ + Id: id, + }, nil +} + +func (k msgServer) UpdateCred_def(goCtx context.Context, msg *types.MsgUpdateCred_def) (*types.MsgUpdateCred_defResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + var cred_def = types.Cred_def{ + Creator: msg.Creator, + Id: msg.Id, + Schema_id: msg.Schema_id, + Tag: msg.Tag, + Signature_type: msg.Signature_type, + Value: msg.Value, + } + + // Checks that the element exists + if !k.HasCred_def(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + + // Checks if the the msg sender is the same as the current owner + if msg.Creator != k.GetCred_defOwner(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + + k.SetCred_def(ctx, cred_def) + + return &types.MsgUpdateCred_defResponse{}, nil +} + +func (k msgServer) DeleteCred_def(goCtx context.Context, msg *types.MsgDeleteCred_def) (*types.MsgDeleteCred_defResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + if !k.HasCred_def(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + if msg.Creator != k.GetCred_defOwner(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + + k.RemoveCred_def(ctx, msg.Id) + + return &types.MsgDeleteCred_defResponse{}, nil +} diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go new file mode 100644 index 000000000..21ddd0cb5 --- /dev/null +++ b/x/cheqd/keeper/msg_server_did.go @@ -0,0 +1,65 @@ +package keeper + +import ( + "context" + "fmt" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgCreateDid) (*types.MsgCreateDidResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + id := k.AppendDid( + ctx, + msg.Creator, + msg.Verkey, + msg.Alias, + ) + + return &types.MsgCreateDidResponse{ + Id: id, + }, nil +} + +func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgUpdateDid) (*types.MsgUpdateDidResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + var did = types.Did{ + Creator: msg.Creator, + Id: msg.Id, + Verkey: msg.Verkey, + Alias: msg.Alias, + } + + // Checks that the element exists + if !k.HasDid(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + + // Checks if the the msg sender is the same as the current owner + if msg.Creator != k.GetDidOwner(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + + k.SetDid(ctx, did) + + return &types.MsgUpdateDidResponse{}, nil +} + +func (k msgServer) DeleteDid(goCtx context.Context, msg *types.MsgDeleteDid) (*types.MsgDeleteDidResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + if !k.HasDid(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + if msg.Creator != k.GetDidOwner(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + + k.RemoveDid(ctx, msg.Id) + + return &types.MsgDeleteDidResponse{}, nil +} diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go new file mode 100644 index 000000000..bc1cab5e8 --- /dev/null +++ b/x/cheqd/keeper/msg_server_schema.go @@ -0,0 +1,67 @@ +package keeper + +import ( + "context" + "fmt" + + "github.com/cheqd/cheqd-node/x/cheqd/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgCreateSchema) (*types.MsgCreateSchemaResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + id := k.AppendSchema( + ctx, + msg.Creator, + msg.Name, + msg.Version, + msg.Attr_names, + ) + + return &types.MsgCreateSchemaResponse{ + Id: id, + }, nil +} + +func (k msgServer) UpdateSchema(goCtx context.Context, msg *types.MsgUpdateSchema) (*types.MsgUpdateSchemaResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + var schema = types.Schema{ + Creator: msg.Creator, + Id: msg.Id, + Name: msg.Name, + Version: msg.Version, + Attr_names: msg.Attr_names, + } + + // Checks that the element exists + if !k.HasSchema(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + + // Checks if the the msg sender is the same as the current owner + if msg.Creator != k.GetSchemaOwner(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + + k.SetSchema(ctx, schema) + + return &types.MsgUpdateSchemaResponse{}, nil +} + +func (k msgServer) DeleteSchema(goCtx context.Context, msg *types.MsgDeleteSchema) (*types.MsgDeleteSchemaResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + if !k.HasSchema(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + if msg.Creator != k.GetSchemaOwner(ctx, msg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + + k.RemoveSchema(ctx, msg.Id) + + return &types.MsgDeleteSchemaResponse{}, nil +} diff --git a/x/cheqd/keeper/query.go b/x/cheqd/keeper/query.go index f5d130fed..7a56efaa3 100644 --- a/x/cheqd/keeper/query.go +++ b/x/cheqd/keeper/query.go @@ -20,6 +20,30 @@ func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { switch path[0] { // this line is used by starport scaffolding # 2 + case types.QueryGetCred_def: + return getCred_def(ctx, path[1], k, legacyQuerierCdc) + + case types.QueryListCred_def: + return listCred_def(ctx, k, legacyQuerierCdc) + + case types.QueryGetSchema: + return getSchema(ctx, path[1], k, legacyQuerierCdc) + + case types.QueryListSchema: + return listSchema(ctx, k, legacyQuerierCdc) + + case types.QueryGetAttrib: + return getAttrib(ctx, path[1], k, legacyQuerierCdc) + + case types.QueryListAttrib: + return listAttrib(ctx, k, legacyQuerierCdc) + + case types.QueryGetDid: + return getDid(ctx, path[1], k, legacyQuerierCdc) + + case types.QueryListDid: + return listDid(ctx, k, legacyQuerierCdc) + case types.QueryGetNym: return getNym(ctx, path[1], k, legacyQuerierCdc) diff --git a/x/cheqd/keeper/query_attrib.go b/x/cheqd/keeper/query_attrib.go new file mode 100644 index 000000000..9fd0a677b --- /dev/null +++ b/x/cheqd/keeper/query_attrib.go @@ -0,0 +1,39 @@ +package keeper + +import ( + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "strconv" +) + +func listAttrib(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + msgs := keeper.GetAllAttrib(ctx) + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} + +func getAttrib(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + id, err := strconv.ParseUint(key, 10, 64) + if err != nil { + return nil, err + } + + if !keeper.HasAttrib(ctx, id) { + return nil, sdkerrors.ErrKeyNotFound + } + + msg := keeper.GetAttrib(ctx, id) + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} diff --git a/x/cheqd/keeper/query_cred_def.go b/x/cheqd/keeper/query_cred_def.go new file mode 100644 index 000000000..51211abfd --- /dev/null +++ b/x/cheqd/keeper/query_cred_def.go @@ -0,0 +1,39 @@ +package keeper + +import ( + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "strconv" +) + +func listCred_def(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + msgs := keeper.GetAllCred_def(ctx) + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} + +func getCred_def(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + id, err := strconv.ParseUint(key, 10, 64) + if err != nil { + return nil, err + } + + if !keeper.HasCred_def(ctx, id) { + return nil, sdkerrors.ErrKeyNotFound + } + + msg := keeper.GetCred_def(ctx, id) + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} diff --git a/x/cheqd/keeper/query_did.go b/x/cheqd/keeper/query_did.go new file mode 100644 index 000000000..1296faff2 --- /dev/null +++ b/x/cheqd/keeper/query_did.go @@ -0,0 +1,39 @@ +package keeper + +import ( + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "strconv" +) + +func listDid(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + msgs := keeper.GetAllDid(ctx) + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} + +func getDid(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + id, err := strconv.ParseUint(key, 10, 64) + if err != nil { + return nil, err + } + + if !keeper.HasDid(ctx, id) { + return nil, sdkerrors.ErrKeyNotFound + } + + msg := keeper.GetDid(ctx, id) + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} diff --git a/x/cheqd/keeper/query_schema.go b/x/cheqd/keeper/query_schema.go new file mode 100644 index 000000000..df4956e99 --- /dev/null +++ b/x/cheqd/keeper/query_schema.go @@ -0,0 +1,39 @@ +package keeper + +import ( + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "strconv" +) + +func listSchema(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + msgs := keeper.GetAllSchema(ctx) + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} + +func getSchema(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + id, err := strconv.ParseUint(key, 10, 64) + if err != nil { + return nil, err + } + + if !keeper.HasSchema(ctx, id) { + return nil, sdkerrors.ErrKeyNotFound + } + + msg := keeper.GetSchema(ctx, id) + + bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } + + return bz, nil +} diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go new file mode 100644 index 000000000..d486a790a --- /dev/null +++ b/x/cheqd/keeper/schema.go @@ -0,0 +1,126 @@ +package keeper + +import ( + "encoding/binary" + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "strconv" +) + +// GetSchemaCount get the total number of schema +func (k Keeper) GetSchemaCount(ctx sdk.Context) uint64 { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaCountKey)) + byteKey := types.KeyPrefix(types.SchemaCountKey) + bz := store.Get(byteKey) + + // Count doesn't exist: no element + if bz == nil { + return 0 + } + + // Parse bytes + count, err := strconv.ParseUint(string(bz), 10, 64) + if err != nil { + // Panic because the count should be always formattable to iint64 + panic("cannot decode count") + } + + return count +} + +// SetSchemaCount set the total number of schema +func (k Keeper) SetSchemaCount(ctx sdk.Context, count uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaCountKey)) + byteKey := types.KeyPrefix(types.SchemaCountKey) + bz := []byte(strconv.FormatUint(count, 10)) + store.Set(byteKey, bz) +} + +// AppendSchema appends a schema in the store with a new id and update the count +func (k Keeper) AppendSchema( + ctx sdk.Context, + creator string, + name string, + version string, + attr_names string, +) uint64 { + // Create the schema + count := k.GetSchemaCount(ctx) + var schema = types.Schema{ + Creator: creator, + Id: count, + Name: name, + Version: version, + Attr_names: attr_names, + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + value := k.cdc.MustMarshalBinaryBare(&schema) + store.Set(GetSchemaIDBytes(schema.Id), value) + + // Update schema count + k.SetSchemaCount(ctx, count+1) + + return count +} + +// SetSchema set a specific schema in the store +func (k Keeper) SetSchema(ctx sdk.Context, schema types.Schema) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + b := k.cdc.MustMarshalBinaryBare(&schema) + store.Set(GetSchemaIDBytes(schema.Id), b) +} + +// GetSchema returns a schema from its id +func (k Keeper) GetSchema(ctx sdk.Context, id uint64) types.Schema { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + var schema types.Schema + k.cdc.MustUnmarshalBinaryBare(store.Get(GetSchemaIDBytes(id)), &schema) + return schema +} + +// HasSchema checks if the schema exists in the store +func (k Keeper) HasSchema(ctx sdk.Context, id uint64) bool { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + return store.Has(GetSchemaIDBytes(id)) +} + +// GetSchemaOwner returns the creator of the schema +func (k Keeper) GetSchemaOwner(ctx sdk.Context, id uint64) string { + return k.GetSchema(ctx, id).Creator +} + +// RemoveSchema removes a schema from the store +func (k Keeper) RemoveSchema(ctx sdk.Context, id uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + store.Delete(GetSchemaIDBytes(id)) +} + +// GetAllSchema returns all schema +func (k Keeper) GetAllSchema(ctx sdk.Context) (list []types.Schema) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + iterator := sdk.KVStorePrefixIterator(store, []byte{}) + + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var val types.Schema + k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) + list = append(list, val) + } + + return +} + +// GetSchemaIDBytes returns the byte representation of the ID +func GetSchemaIDBytes(id uint64) []byte { + bz := make([]byte, 8) + binary.BigEndian.PutUint64(bz, id) + return bz +} + +// GetSchemaIDFromBytes returns ID in uint64 format from a byte array +func GetSchemaIDFromBytes(bz []byte) uint64 { + return binary.BigEndian.Uint64(bz) +} diff --git a/x/cheqd/types/codec.go b/x/cheqd/types/codec.go index 1f7a72c3a..2cb3c09ff 100644 --- a/x/cheqd/types/codec.go +++ b/x/cheqd/types/codec.go @@ -9,6 +9,22 @@ import ( func RegisterCodec(cdc *codec.LegacyAmino) { // this line is used by starport scaffolding # 2 + cdc.RegisterConcrete(&MsgCreateCred_def{}, "cheqd/CreateCred_def", nil) + cdc.RegisterConcrete(&MsgUpdateCred_def{}, "cheqd/UpdateCred_def", nil) + cdc.RegisterConcrete(&MsgDeleteCred_def{}, "cheqd/DeleteCred_def", nil) + + cdc.RegisterConcrete(&MsgCreateSchema{}, "cheqd/CreateSchema", nil) + cdc.RegisterConcrete(&MsgUpdateSchema{}, "cheqd/UpdateSchema", nil) + cdc.RegisterConcrete(&MsgDeleteSchema{}, "cheqd/DeleteSchema", nil) + + cdc.RegisterConcrete(&MsgCreateAttrib{}, "cheqd/CreateAttrib", nil) + cdc.RegisterConcrete(&MsgUpdateAttrib{}, "cheqd/UpdateAttrib", nil) + cdc.RegisterConcrete(&MsgDeleteAttrib{}, "cheqd/DeleteAttrib", nil) + + cdc.RegisterConcrete(&MsgCreateDid{}, "cheqd/CreateDid", nil) + cdc.RegisterConcrete(&MsgUpdateDid{}, "cheqd/UpdateDid", nil) + cdc.RegisterConcrete(&MsgDeleteDid{}, "cheqd/DeleteDid", nil) + cdc.RegisterConcrete(&MsgCreateNym{}, "cheqd/CreateNym", nil) cdc.RegisterConcrete(&MsgUpdateNym{}, "cheqd/UpdateNym", nil) cdc.RegisterConcrete(&MsgDeleteNym{}, "cheqd/DeleteNym", nil) @@ -17,6 +33,26 @@ func RegisterCodec(cdc *codec.LegacyAmino) { func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { // this line is used by starport scaffolding # 3 + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgCreateCred_def{}, + &MsgUpdateCred_def{}, + &MsgDeleteCred_def{}, + ) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgCreateSchema{}, + &MsgUpdateSchema{}, + &MsgDeleteSchema{}, + ) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgCreateAttrib{}, + &MsgUpdateAttrib{}, + &MsgDeleteAttrib{}, + ) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgCreateDid{}, + &MsgUpdateDid{}, + &MsgDeleteDid{}, + ) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateNym{}, &MsgUpdateNym{}, diff --git a/x/cheqd/types/genesis.go b/x/cheqd/types/genesis.go index f863e6807..8f694f78e 100644 --- a/x/cheqd/types/genesis.go +++ b/x/cheqd/types/genesis.go @@ -11,7 +11,11 @@ const DefaultIndex uint64 = 1 func DefaultGenesis() *GenesisState { return &GenesisState{ // this line is used by starport scaffolding # genesis/types/default - NymList: []*Nym{}, + Cred_defList: []*Cred_def{}, + SchemaList: []*Schema{}, + AttribList: []*Attrib{}, + DidList: []*Did{}, + NymList: []*Nym{}, } } @@ -19,6 +23,42 @@ func DefaultGenesis() *GenesisState { // failure. func (gs GenesisState) Validate() error { // this line is used by starport scaffolding # genesis/types/validate + // Check for duplicated ID in cred_def + cred_defIdMap := make(map[uint64]bool) + + for _, elem := range gs.Cred_defList { + if _, ok := cred_defIdMap[elem.Id]; ok { + return fmt.Errorf("duplicated id for cred_def") + } + cred_defIdMap[elem.Id] = true + } + // Check for duplicated ID in schema + schemaIdMap := make(map[uint64]bool) + + for _, elem := range gs.SchemaList { + if _, ok := schemaIdMap[elem.Id]; ok { + return fmt.Errorf("duplicated id for schema") + } + schemaIdMap[elem.Id] = true + } + // Check for duplicated ID in attrib + attribIdMap := make(map[uint64]bool) + + for _, elem := range gs.AttribList { + if _, ok := attribIdMap[elem.Id]; ok { + return fmt.Errorf("duplicated id for attrib") + } + attribIdMap[elem.Id] = true + } + // Check for duplicated ID in did + didIdMap := make(map[uint64]bool) + + for _, elem := range gs.DidList { + if _, ok := didIdMap[elem.Id]; ok { + return fmt.Errorf("duplicated id for did") + } + didIdMap[elem.Id] = true + } // Check for duplicated ID in nym nymIdMap := make(map[uint64]bool) diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index 9511d9455..8fd0828a1 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -25,3 +25,23 @@ const ( NymKey = "Nym-value-" NymCountKey = "Nym-count-" ) + +const ( + DidKey = "Did-value-" + DidCountKey = "Did-count-" +) + +const ( + AttribKey = "Attrib-value-" + AttribCountKey = "Attrib-count-" +) + +const ( + SchemaKey = "Schema-value-" + SchemaCountKey = "Schema-count-" +) + +const ( + Cred_defKey = "Cred_def-value-" + Cred_defCountKey = "Cred_def-count-" +) diff --git a/x/cheqd/types/messages_attrib.go b/x/cheqd/types/messages_attrib.go new file mode 100644 index 000000000..68b52556c --- /dev/null +++ b/x/cheqd/types/messages_attrib.go @@ -0,0 +1,122 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var _ sdk.Msg = &MsgCreateAttrib{} + +func NewMsgCreateAttrib(creator string, did string, raw string) *MsgCreateAttrib { + return &MsgCreateAttrib{ + Creator: creator, + Did: did, + Raw: raw, + } +} + +func (msg *MsgCreateAttrib) Route() string { + return RouterKey +} + +func (msg *MsgCreateAttrib) Type() string { + return "CreateAttrib" +} + +func (msg *MsgCreateAttrib) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgCreateAttrib) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgCreateAttrib) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} + +var _ sdk.Msg = &MsgUpdateAttrib{} + +func NewMsgUpdateAttrib(creator string, id uint64, did string, raw string) *MsgUpdateAttrib { + return &MsgUpdateAttrib{ + Id: id, + Creator: creator, + Did: did, + Raw: raw, + } +} + +func (msg *MsgUpdateAttrib) Route() string { + return RouterKey +} + +func (msg *MsgUpdateAttrib) Type() string { + return "UpdateAttrib" +} + +func (msg *MsgUpdateAttrib) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgUpdateAttrib) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgUpdateAttrib) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} + +var _ sdk.Msg = &MsgCreateAttrib{} + +func NewMsgDeleteAttrib(creator string, id uint64) *MsgDeleteAttrib { + return &MsgDeleteAttrib{ + Id: id, + Creator: creator, + } +} +func (msg *MsgDeleteAttrib) Route() string { + return RouterKey +} + +func (msg *MsgDeleteAttrib) Type() string { + return "DeleteAttrib" +} + +func (msg *MsgDeleteAttrib) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgDeleteAttrib) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgDeleteAttrib) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go new file mode 100644 index 000000000..aea86501b --- /dev/null +++ b/x/cheqd/types/messages_cred_def.go @@ -0,0 +1,126 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var _ sdk.Msg = &MsgCreateCred_def{} + +func NewMsgCreateCred_def(creator string, schema_id string, tag string, signature_type string, value string) *MsgCreateCred_def { + return &MsgCreateCred_def{ + Creator: creator, + Schema_id: schema_id, + Tag: tag, + Signature_type: signature_type, + Value: value, + } +} + +func (msg *MsgCreateCred_def) Route() string { + return RouterKey +} + +func (msg *MsgCreateCred_def) Type() string { + return "CreateCred_def" +} + +func (msg *MsgCreateCred_def) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgCreateCred_def) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgCreateCred_def) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} + +var _ sdk.Msg = &MsgUpdateCred_def{} + +func NewMsgUpdateCred_def(creator string, id uint64, schema_id string, tag string, signature_type string, value string) *MsgUpdateCred_def { + return &MsgUpdateCred_def{ + Id: id, + Creator: creator, + Schema_id: schema_id, + Tag: tag, + Signature_type: signature_type, + Value: value, + } +} + +func (msg *MsgUpdateCred_def) Route() string { + return RouterKey +} + +func (msg *MsgUpdateCred_def) Type() string { + return "UpdateCred_def" +} + +func (msg *MsgUpdateCred_def) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgUpdateCred_def) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgUpdateCred_def) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} + +var _ sdk.Msg = &MsgCreateCred_def{} + +func NewMsgDeleteCred_def(creator string, id uint64) *MsgDeleteCred_def { + return &MsgDeleteCred_def{ + Id: id, + Creator: creator, + } +} +func (msg *MsgDeleteCred_def) Route() string { + return RouterKey +} + +func (msg *MsgDeleteCred_def) Type() string { + return "DeleteCred_def" +} + +func (msg *MsgDeleteCred_def) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgDeleteCred_def) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgDeleteCred_def) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go new file mode 100644 index 000000000..a35ba3826 --- /dev/null +++ b/x/cheqd/types/messages_did.go @@ -0,0 +1,122 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var _ sdk.Msg = &MsgCreateDid{} + +func NewMsgCreateDid(creator string, verkey string, alias string) *MsgCreateDid { + return &MsgCreateDid{ + Creator: creator, + Verkey: verkey, + Alias: alias, + } +} + +func (msg *MsgCreateDid) Route() string { + return RouterKey +} + +func (msg *MsgCreateDid) Type() string { + return "CreateDid" +} + +func (msg *MsgCreateDid) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgCreateDid) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgCreateDid) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} + +var _ sdk.Msg = &MsgUpdateDid{} + +func NewMsgUpdateDid(creator string, id uint64, verkey string, alias string) *MsgUpdateDid { + return &MsgUpdateDid{ + Id: id, + Creator: creator, + Verkey: verkey, + Alias: alias, + } +} + +func (msg *MsgUpdateDid) Route() string { + return RouterKey +} + +func (msg *MsgUpdateDid) Type() string { + return "UpdateDid" +} + +func (msg *MsgUpdateDid) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgUpdateDid) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgUpdateDid) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} + +var _ sdk.Msg = &MsgCreateDid{} + +func NewMsgDeleteDid(creator string, id uint64) *MsgDeleteDid { + return &MsgDeleteDid{ + Id: id, + Creator: creator, + } +} +func (msg *MsgDeleteDid) Route() string { + return RouterKey +} + +func (msg *MsgDeleteDid) Type() string { + return "DeleteDid" +} + +func (msg *MsgDeleteDid) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgDeleteDid) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgDeleteDid) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go new file mode 100644 index 000000000..da5ef8062 --- /dev/null +++ b/x/cheqd/types/messages_schema.go @@ -0,0 +1,124 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var _ sdk.Msg = &MsgCreateSchema{} + +func NewMsgCreateSchema(creator string, name string, version string, attr_names string) *MsgCreateSchema { + return &MsgCreateSchema{ + Creator: creator, + Name: name, + Version: version, + Attr_names: attr_names, + } +} + +func (msg *MsgCreateSchema) Route() string { + return RouterKey +} + +func (msg *MsgCreateSchema) Type() string { + return "CreateSchema" +} + +func (msg *MsgCreateSchema) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgCreateSchema) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgCreateSchema) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} + +var _ sdk.Msg = &MsgUpdateSchema{} + +func NewMsgUpdateSchema(creator string, id uint64, name string, version string, attr_names string) *MsgUpdateSchema { + return &MsgUpdateSchema{ + Id: id, + Creator: creator, + Name: name, + Version: version, + Attr_names: attr_names, + } +} + +func (msg *MsgUpdateSchema) Route() string { + return RouterKey +} + +func (msg *MsgUpdateSchema) Type() string { + return "UpdateSchema" +} + +func (msg *MsgUpdateSchema) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgUpdateSchema) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgUpdateSchema) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} + +var _ sdk.Msg = &MsgCreateSchema{} + +func NewMsgDeleteSchema(creator string, id uint64) *MsgDeleteSchema { + return &MsgDeleteSchema{ + Id: id, + Creator: creator, + } +} +func (msg *MsgDeleteSchema) Route() string { + return RouterKey +} + +func (msg *MsgDeleteSchema) Type() string { + return "DeleteSchema" +} + +func (msg *MsgDeleteSchema) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgDeleteSchema) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgDeleteSchema) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} diff --git a/x/cheqd/types/query.go b/x/cheqd/types/query.go index 5eae625a2..50f71ac30 100644 --- a/x/cheqd/types/query.go +++ b/x/cheqd/types/query.go @@ -4,3 +4,23 @@ const ( QueryGetNym = "get-nym" QueryListNym = "list-nym" ) + +const ( + QueryGetDid = "get-did" + QueryListDid = "list-did" +) + +const ( + QueryGetAttrib = "get-attrib" + QueryListAttrib = "list-attrib" +) + +const ( + QueryGetSchema = "get-schema" + QueryListSchema = "list-schema" +) + +const ( + QueryGetCred_def = "get-cred_def" + QueryListCred_def = "list-cred_def" +) From 2da7dcd798dafee1050f880c8ca3cd69d772d537 Mon Sep 17 00:00:00 2001 From: toktar Date: Wed, 15 Sep 2021 11:05:58 +0300 Subject: [PATCH 02/74] Rename cred def, update protos --- proto/cheqd/attrib.proto | 6 +- proto/cheqd/credDef.proto | 14 + proto/cheqd/cred_def.proto | 15 - proto/cheqd/did.proto | 2 +- proto/cheqd/nym.proto | 15 - proto/cheqd/query.proto | 91 +-- proto/cheqd/schema.proto | 9 +- proto/cheqd/tx.proto | 143 +---- vue/src/views/Types.vue | 4 + x/cheqd/client/cli/query.go | 4 +- .../cli/{queryCred_def.go => queryCredDef.go} | 20 +- x/cheqd/client/cli/tx.go | 6 +- .../cli/{txCred_def.go => txCredDef.go} | 24 +- .../{queryCred_def.go => queryCredDef.go} | 8 +- x/cheqd/client/rest/rest.go | 10 +- .../rest/{txCred_def.go => txCredDef.go} | 24 +- x/cheqd/genesis.go | 18 +- x/cheqd/handler.go | 12 +- x/cheqd/keeper/cred_def.go | 96 +-- x/cheqd/keeper/grpc_query_cred_def.go | 28 +- x/cheqd/keeper/msg_server_cred_def.go | 28 +- x/cheqd/keeper/query.go | 8 +- x/cheqd/keeper/query_cred_def.go | 10 +- x/cheqd/types/codec.go | 12 +- x/cheqd/types/genesis.go | 22 +- x/cheqd/types/keys.go | 4 +- x/cheqd/types/messages_cred_def.go | 54 +- x/cheqd/types/nym.pb.go | 559 ------------------ x/cheqd/types/query.go | 4 +- 29 files changed, 264 insertions(+), 986 deletions(-) create mode 100644 proto/cheqd/credDef.proto delete mode 100644 proto/cheqd/cred_def.proto delete mode 100644 proto/cheqd/nym.proto rename x/cheqd/client/cli/{queryCred_def.go => queryCredDef.go} (72%) rename x/cheqd/client/cli/{txCred_def.go => txCredDef.go} (68%) rename x/cheqd/client/rest/{queryCred_def.go => queryCredDef.go} (78%) rename x/cheqd/client/rest/{txCred_def.go => txCredDef.go} (85%) delete mode 100644 x/cheqd/types/nym.pb.go diff --git a/proto/cheqd/attrib.proto b/proto/cheqd/attrib.proto index 9c5210af0..094f921c8 100644 --- a/proto/cheqd/attrib.proto +++ b/proto/cheqd/attrib.proto @@ -6,8 +6,6 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; import "gogoproto/gogo.proto"; message Attrib { - string creator = 1; - uint64 id = 2; - string did = 3; - string raw = 4; + string did = 1; + string raw = 2; } diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto new file mode 100644 index 000000000..40ce6f306 --- /dev/null +++ b/proto/cheqd/credDef.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; +package cheqd.cheqdnode.cheqd; + +option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; + +import "gogoproto/gogo.proto"; + +message CredDef { + string author = 1; + string schema_id = 2; + string tag = 3; + string signature_type = 4; + string value = 4; +} diff --git a/proto/cheqd/cred_def.proto b/proto/cheqd/cred_def.proto deleted file mode 100644 index 817d1a05a..000000000 --- a/proto/cheqd/cred_def.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; -package cheqd.cheqdnode.cheqd; - -option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; - -import "gogoproto/gogo.proto"; - -message Cred_def { - string creator = 1; - uint64 id = 2; - string schema_id = 3; - string tag = 4; - string signature_type = 5; - string value = 6; -} diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index 07e705708..1ad7311b2 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -6,7 +6,7 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; import "gogoproto/gogo.proto"; message Did { - uint64 id = 1; + string id = 1; string verkey = 2; string alias = 3; } diff --git a/proto/cheqd/nym.proto b/proto/cheqd/nym.proto deleted file mode 100644 index 01fcd2406..000000000 --- a/proto/cheqd/nym.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; -package cheqdid.cheqdnode.cheqd; - -option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; - -import "gogoproto/gogo.proto"; - -message Nym { - string creator = 1; - uint64 id = 2; - string alias = 3; - string verkey = 4; - string did = 5; - string role = 6; -} diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index d5863da0c..f30b2ce4c 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -4,7 +4,7 @@ package cheqdid.cheqdnode.cheqd; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; // this line is used by starport scaffolding # 1 -import "cheqd/cred_def.proto"; +import "cheqd/credDef.proto"; import "cheqd/schema.proto"; import "cheqd/attrib.proto"; import "cheqd/did.proto"; @@ -15,121 +15,52 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // Query defines the gRPC querier service. service Query { // this line is used by starport scaffolding # 2 - rpc Cred_def(QueryGetCred_defRequest) returns (QueryGetCred_defResponse) { - option (google.api.http).get = "/cheqd/cheqdnode/cheqd/cred_def/{id}"; - } - rpc Cred_defAll(QueryAllCred_defRequest) returns (QueryAllCred_defResponse) { - option (google.api.http).get = "/cheqd/cheqdnode/cheqd/cred_def"; + rpc CredDef(QueryGetCredDefRequest) returns (QueryGetCredDefResponse) { + option (google.api.http).get = "/cheqd/cheqdnode/cheqd/credDef/{id}"; } rpc Schema(QueryGetSchemaRequest) returns (QueryGetSchemaResponse) { option (google.api.http).get = "/cheqd/cheqdnode/cheqd/schema/{id}"; } - rpc SchemaAll(QueryAllSchemaRequest) returns (QueryAllSchemaResponse) { - option (google.api.http).get = "/cheqd/cheqdnode/cheqd/schema"; - } rpc Attrib(QueryGetAttribRequest) returns (QueryGetAttribResponse) { option (google.api.http).get = "/cheqd/cheqdnode/cheqd/attrib/{id}"; } - rpc AttribAll(QueryAllAttribRequest) returns (QueryAllAttribResponse) { - option (google.api.http).get = "/cheqd/cheqdnode/cheqd/attrib"; - } rpc Did(QueryGetDidRequest) returns (QueryGetDidResponse) { option (google.api.http).get = "/cheqd/cheqdnode/cheqd/did/{id}"; } - rpc DidAll(QueryAllDidRequest) returns (QueryAllDidResponse) { - option (google.api.http).get = "/cheqd/cheqdnode/cheqd/did"; - } - - rpc Nym(QueryGetNymRequest) returns (QueryGetNymResponse) { - option (google.api.http).get = "/cheqd/cheqd/cheqd/nym/{id}"; - } - rpc NymAll(QueryAllNymRequest) returns (QueryAllNymResponse) { - option (google.api.http).get = "/cheqd/cheqd/cheqd/nym"; - } - } // this line is used by starport scaffolding # 3 -message QueryGetCred_defRequest { - uint64 id = 1; +message QueryGetCredDefRequest { + string id = 1; } -message QueryGetCred_defResponse { - Cred_def Cred_def = 1; +message QueryGetCredDefResponse { + CredDef CredDef = 1; } -message QueryAllCred_defRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -message QueryAllCred_defResponse { - repeated Cred_def Cred_def = 1; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} message QueryGetSchemaRequest { - uint64 id = 1; + string id = 1; } message QueryGetSchemaResponse { Schema Schema = 1; } -message QueryAllSchemaRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -message QueryAllSchemaResponse { - repeated Schema Schema = 1; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} message QueryGetAttribRequest { - uint64 id = 1; + string id = 1; } message QueryGetAttribResponse { Attrib Attrib = 1; } -message QueryAllAttribRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -message QueryAllAttribResponse { - repeated Attrib Attrib = 1; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} message QueryGetDidRequest { - uint64 id = 1; + string id = 1; } message QueryGetDidResponse { Did Did = 1; -} - -message QueryAllDidRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -message QueryAllDidResponse { - repeated Did Did = 1; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} -message QueryGetNymRequest { - uint64 id = 1; -} - -message QueryGetNymResponse { - Nym Nym = 1; -} - -message QueryAllNymRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -message QueryAllNymResponse { - repeated Nym Nym = 1; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} +} \ No newline at end of file diff --git a/proto/cheqd/schema.proto b/proto/cheqd/schema.proto index fe373622d..55dc88496 100644 --- a/proto/cheqd/schema.proto +++ b/proto/cheqd/schema.proto @@ -6,9 +6,8 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; import "gogoproto/gogo.proto"; message Schema { - string creator = 1; - uint64 id = 2; - string name = 3; - string version = 4; - string attr_names = 5; + string author = 1; + string name = 2; + string version = 3; + string attr_names = 4; } diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 0abc34d54..084da7c60 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -8,105 +8,61 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // Msg defines the Msg service. service Msg { // this line is used by starport scaffolding # proto/tx/rpc - rpc CreateCred_def(MsgCreateCred_def) returns (MsgCreateCred_defResponse); - rpc UpdateCred_def(MsgUpdateCred_def) returns (MsgUpdateCred_defResponse); - rpc DeleteCred_def(MsgDeleteCred_def) returns (MsgDeleteCred_defResponse); - rpc CreateSchema(MsgCreateSchema) returns (MsgCreateSchemaResponse); - rpc UpdateSchema(MsgUpdateSchema) returns (MsgUpdateSchemaResponse); - rpc DeleteSchema(MsgDeleteSchema) returns (MsgDeleteSchemaResponse); - rpc CreateAttrib(MsgCreateAttrib) returns (MsgCreateAttribResponse); - rpc UpdateAttrib(MsgUpdateAttrib) returns (MsgUpdateAttribResponse); - rpc DeleteAttrib(MsgDeleteAttrib) returns (MsgDeleteAttribResponse); - rpc CreateDid(MsgCreateDid) returns (MsgCreateDidResponse); - rpc UpdateDid(MsgUpdateDid) returns (MsgUpdateDidResponse); - rpc DeleteDid(MsgDeleteDid) returns (MsgDeleteDidResponse); + rpc CreateCredDef(WriteRequest) returns (MsgCreateCredDefResponse); + rpc CreateSchema(WriteRequest) returns (MsgCreateSchemaResponse); + rpc CreateAttrib(WriteRequest) returns (MsgCreateAttribResponse); + rpc UpdateAttrib(WriteRequest) returns (MsgUpdateAttribResponse); + rpc CreateDid(WriteRequest) returns (MsgCreateDidResponse); + rpc UpdateDid(WriteRequest) returns (MsgUpdateDidResponse); } // this line is used by starport scaffolding # proto/tx/message -message MsgCreateCred_def { - string creator = 1; - string schema_id = 2; - string tag = 3; - string signature_type = 4; - string value = 5; -} +message WriteRequest { + Any data = 1; + String author = 2 + string signature = 3; -message MsgCreateCred_defResponse { - uint64 id = 1; } -message MsgUpdateCred_def { - string creator = 1; - uint64 id = 2; - string schema_id = 3; - string tag = 4; - string signature_type = 5; - string value = 6; +message MsgCreateCredDef { + string schema_id = 1; + string tag = 2; + string signature_type = 3; + string value = 4; } -message MsgUpdateCred_defResponse { } - -message MsgDeleteCred_def { - string creator = 1; - uint64 id = 2; +message MsgCreateCredDefResponse { + string id = 1; } -message MsgDeleteCred_defResponse { } - message MsgCreateSchema { - string creator = 1; - string name = 2; - string version = 3; - string attr_names = 4; + string name = 1; + string version = 2; + string attr_names = 3; } message MsgCreateSchemaResponse { - uint64 id = 1; -} - -message MsgUpdateSchema { - string creator = 1; - uint64 id = 2; - string name = 3; - string version = 4; - string attr_names = 5; -} - -message MsgUpdateSchemaResponse { } - -message MsgDeleteSchema { - string creator = 1; - uint64 id = 2; + string id = 1; } -message MsgDeleteSchemaResponse { } - message MsgCreateAttrib { - string creator = 1; - string did = 2; - string raw = 3; + string did = 1; + string raw = 2; } message MsgCreateAttribResponse { - uint64 id = 1; + string id = 1; } message MsgUpdateAttrib { - string creator = 1; - uint64 id = 2; - string did = 3; - string raw = 4; + string did = 1; + string raw = 2; } -message MsgUpdateAttribResponse { } - -message MsgDeleteAttrib { - string creator = 1; - uint64 id = 2; +message MsgUpdateAttribResponse { + string id = 1; } -message MsgDeleteAttribResponse { } - message MsgCreateDid { string id = 1; string verkey = 2; @@ -118,46 +74,11 @@ message MsgCreateDidResponse { } message MsgUpdateDid { - string id = 2; - string verkey = 3; - string alias = 4; -} - -message MsgUpdateDidResponse { } - -message MsgDeleteDid { - string creator = 1; - uint64 id = 2; -} - -message MsgDeleteDidResponse { } - -message MsgCreateNym { - string creator = 1; - string alias = 2; - string verkey = 3; - string did = 4; - string role = 5; -} - -message MsgCreateNymResponse { - uint64 id = 1; -} - -message MsgUpdateNym { - string creator = 1; - uint64 id = 2; + string id = 1; + string verkey = 2; string alias = 3; - string verkey = 4; - string did = 5; - string role = 6; } -message MsgUpdateNymResponse { } - -message MsgDeleteNym { - string creator = 1; - uint64 id = 2; +message MsgUpdateDidResponse { + string id = 1; } - -message MsgDeleteNymResponse { } diff --git a/vue/src/views/Types.vue b/vue/src/views/Types.vue index 3048bf95e..0ddb6b83f 100644 --- a/vue/src/views/Types.vue +++ b/vue/src/views/Types.vue @@ -2,6 +2,10 @@
+ + + +
diff --git a/x/cheqd/client/cli/query.go b/x/cheqd/client/cli/query.go index 90f5d436c..db7fc1ce9 100644 --- a/x/cheqd/client/cli/query.go +++ b/x/cheqd/client/cli/query.go @@ -26,8 +26,8 @@ func GetQueryCmd(queryRoute string) *cobra.Command { // this line is used by starport scaffolding # 1 - cmd.AddCommand(CmdListCred_def()) - cmd.AddCommand(CmdShowCred_def()) + cmd.AddCommand(CmdListCredDef()) + cmd.AddCommand(CmdShowCredDef()) cmd.AddCommand(CmdListSchema()) cmd.AddCommand(CmdShowSchema()) diff --git a/x/cheqd/client/cli/queryCred_def.go b/x/cheqd/client/cli/queryCredDef.go similarity index 72% rename from x/cheqd/client/cli/queryCred_def.go rename to x/cheqd/client/cli/queryCredDef.go index 3616cf9a2..8e5c1b309 100644 --- a/x/cheqd/client/cli/queryCred_def.go +++ b/x/cheqd/client/cli/queryCredDef.go @@ -10,10 +10,10 @@ import ( "github.com/spf13/cobra" ) -func CmdListCred_def() *cobra.Command { +func CmdListCredDef() *cobra.Command { cmd := &cobra.Command{ - Use: "list-cred_def", - Short: "list all cred_def", + Use: "list-credDef", + Short: "list all credDef", RunE: func(cmd *cobra.Command, args []string) error { clientCtx := client.GetClientContextFromCmd(cmd) @@ -24,11 +24,11 @@ func CmdListCred_def() *cobra.Command { queryClient := types.NewQueryClient(clientCtx) - params := &types.QueryAllCred_defRequest{ + params := &types.QueryAllCredDefRequest{ Pagination: pageReq, } - res, err := queryClient.Cred_defAll(context.Background(), params) + res, err := queryClient.CredDefAll(context.Background(), params) if err != nil { return err } @@ -42,10 +42,10 @@ func CmdListCred_def() *cobra.Command { return cmd } -func CmdShowCred_def() *cobra.Command { +func CmdShowCredDef() *cobra.Command { cmd := &cobra.Command{ - Use: "show-cred_def [id]", - Short: "shows a cred_def", + Use: "show-credDef [id]", + Short: "shows a credDef", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx := client.GetClientContextFromCmd(cmd) @@ -57,11 +57,11 @@ func CmdShowCred_def() *cobra.Command { return err } - params := &types.QueryGetCred_defRequest{ + params := &types.QueryGetCredDefRequest{ Id: id, } - res, err := queryClient.Cred_def(context.Background(), params) + res, err := queryClient.CredDef(context.Background(), params) if err != nil { return err } diff --git a/x/cheqd/client/cli/tx.go b/x/cheqd/client/cli/tx.go index 973c5310b..c8481231b 100644 --- a/x/cheqd/client/cli/tx.go +++ b/x/cheqd/client/cli/tx.go @@ -22,9 +22,9 @@ func GetTxCmd() *cobra.Command { // this line is used by starport scaffolding # 1 - cmd.AddCommand(CmdCreateCred_def()) - cmd.AddCommand(CmdUpdateCred_def()) - cmd.AddCommand(CmdDeleteCred_def()) + cmd.AddCommand(CmdCreateCredDef()) + cmd.AddCommand(CmdUpdateCredDef()) + cmd.AddCommand(CmdDeleteCredDef()) cmd.AddCommand(CmdCreateSchema()) cmd.AddCommand(CmdUpdateSchema()) diff --git a/x/cheqd/client/cli/txCred_def.go b/x/cheqd/client/cli/txCredDef.go similarity index 68% rename from x/cheqd/client/cli/txCred_def.go rename to x/cheqd/client/cli/txCredDef.go index c6372c100..6a2e801f6 100644 --- a/x/cheqd/client/cli/txCred_def.go +++ b/x/cheqd/client/cli/txCredDef.go @@ -10,10 +10,10 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" ) -func CmdCreateCred_def() *cobra.Command { +func CmdCreateCredDef() *cobra.Command { cmd := &cobra.Command{ - Use: "create-cred_def [schema_id] [tag] [signature_type] [value]", - Short: "Creates a new cred_def", + Use: "create-credDef [schema_id] [tag] [signature_type] [value]", + Short: "Creates a new credDef", Args: cobra.ExactArgs(4), RunE: func(cmd *cobra.Command, args []string) error { argsSchema_id := string(args[0]) @@ -26,7 +26,7 @@ func CmdCreateCred_def() *cobra.Command { return err } - msg := types.NewMsgCreateCred_def(clientCtx.GetFromAddress().String(), string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) + msg := types.NewMsgCreateCredDef(clientCtx.GetFromAddress().String(), string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) if err := msg.ValidateBasic(); err != nil { return err } @@ -39,10 +39,10 @@ func CmdCreateCred_def() *cobra.Command { return cmd } -func CmdUpdateCred_def() *cobra.Command { +func CmdUpdateCredDef() *cobra.Command { cmd := &cobra.Command{ - Use: "update-cred_def [id] [schema_id] [tag] [signature_type] [value]", - Short: "Update a cred_def", + Use: "update-credDef [id] [schema_id] [tag] [signature_type] [value]", + Short: "Update a credDef", Args: cobra.ExactArgs(5), RunE: func(cmd *cobra.Command, args []string) error { id, err := strconv.ParseUint(args[0], 10, 64) @@ -60,7 +60,7 @@ func CmdUpdateCred_def() *cobra.Command { return err } - msg := types.NewMsgUpdateCred_def(clientCtx.GetFromAddress().String(), id, string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) + msg := types.NewMsgUpdateCredDef(clientCtx.GetFromAddress().String(), id, string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) if err := msg.ValidateBasic(); err != nil { return err } @@ -73,10 +73,10 @@ func CmdUpdateCred_def() *cobra.Command { return cmd } -func CmdDeleteCred_def() *cobra.Command { +func CmdDeleteCredDef() *cobra.Command { cmd := &cobra.Command{ - Use: "delete-cred_def [id] [schema_id] [tag] [signature_type] [value]", - Short: "Delete a cred_def by id", + Use: "delete-credDef [id] [schema_id] [tag] [signature_type] [value]", + Short: "Delete a credDef by id", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { id, err := strconv.ParseUint(args[0], 10, 64) @@ -89,7 +89,7 @@ func CmdDeleteCred_def() *cobra.Command { return err } - msg := types.NewMsgDeleteCred_def(clientCtx.GetFromAddress().String(), id) + msg := types.NewMsgDeleteCredDef(clientCtx.GetFromAddress().String(), id) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/cheqd/client/rest/queryCred_def.go b/x/cheqd/client/rest/queryCredDef.go similarity index 78% rename from x/cheqd/client/rest/queryCred_def.go rename to x/cheqd/client/rest/queryCredDef.go index 68366afe6..34e2ad5c2 100644 --- a/x/cheqd/client/rest/queryCred_def.go +++ b/x/cheqd/client/rest/queryCredDef.go @@ -10,9 +10,9 @@ import ( "github.com/gorilla/mux" ) -func listCred_defHandler(clientCtx client.Context) http.HandlerFunc { +func listCredDefHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-cred_def", types.QuerierRoute), nil) + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-credDef", types.QuerierRoute), nil) if err != nil { rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) return @@ -23,11 +23,11 @@ func listCred_defHandler(clientCtx client.Context) http.HandlerFunc { } } -func getCred_defHandler(clientCtx client.Context) http.HandlerFunc { +func getCredDefHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id := mux.Vars(r)["id"] - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-cred_def/%s", types.QuerierRoute, id), nil) + res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-credDef/%s", types.QuerierRoute, id), nil) if err != nil { rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) return diff --git a/x/cheqd/client/rest/rest.go b/x/cheqd/client/rest/rest.go index 017cf70c6..d1032a544 100644 --- a/x/cheqd/client/rest/rest.go +++ b/x/cheqd/client/rest/rest.go @@ -33,8 +33,8 @@ func RegisterRoutes(clientCtx client.Context, r *mux.Router) { func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { // this line is used by starport scaffolding # 3 - r.HandleFunc("/cheqd/cred_defs/{id}", getCred_defHandler(clientCtx)).Methods("GET") - r.HandleFunc("/cheqd/cred_defs", listCred_defHandler(clientCtx)).Methods("GET") + r.HandleFunc("/cheqd/credDefs/{id}", getCredDefHandler(clientCtx)).Methods("GET") + r.HandleFunc("/cheqd/credDefs", listCredDefHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/schemata/{id}", getSchemaHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/schemata", listSchemaHandler(clientCtx)).Methods("GET") @@ -52,9 +52,9 @@ func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { func registerTxHandlers(clientCtx client.Context, r *mux.Router) { // this line is used by starport scaffolding # 4 - r.HandleFunc("/cheqd/cred_defs", createCred_defHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/cred_defs/{id}", updateCred_defHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/cred_defs/{id}", deleteCred_defHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/credDefs", createCredDefHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/credDefs/{id}", updateCredDefHandler(clientCtx)).Methods("POST") + r.HandleFunc("/cheqd/credDefs/{id}", deleteCredDefHandler(clientCtx)).Methods("POST") r.HandleFunc("/cheqd/schemata", createSchemaHandler(clientCtx)).Methods("POST") r.HandleFunc("/cheqd/schemata/{id}", updateSchemaHandler(clientCtx)).Methods("POST") diff --git a/x/cheqd/client/rest/txCred_def.go b/x/cheqd/client/rest/txCredDef.go similarity index 85% rename from x/cheqd/client/rest/txCred_def.go rename to x/cheqd/client/rest/txCredDef.go index fa346921c..67b6c135a 100644 --- a/x/cheqd/client/rest/txCred_def.go +++ b/x/cheqd/client/rest/txCredDef.go @@ -12,7 +12,7 @@ import ( "github.com/gorilla/mux" ) -type createCred_defRequest struct { +type createCredDefRequest struct { BaseReq rest.BaseReq `json:"base_req"` Creator string `json:"creator"` Schema_id string `json:"schema_id"` @@ -21,9 +21,9 @@ type createCred_defRequest struct { Value string `json:"value"` } -func createCred_defHandler(clientCtx client.Context) http.HandlerFunc { +func createCredDefHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - var req createCred_defRequest + var req createCredDefRequest if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") return @@ -48,7 +48,7 @@ func createCred_defHandler(clientCtx client.Context) http.HandlerFunc { parsedValue := req.Value - msg := types.NewMsgCreateCred_def( + msg := types.NewMsgCreateCredDef( req.Creator, parsedSchema_id, parsedTag, @@ -60,7 +60,7 @@ func createCred_defHandler(clientCtx client.Context) http.HandlerFunc { } } -type updateCred_defRequest struct { +type updateCredDefRequest struct { BaseReq rest.BaseReq `json:"base_req"` Creator string `json:"creator"` Schema_id string `json:"schema_id"` @@ -69,14 +69,14 @@ type updateCred_defRequest struct { Value string `json:"value"` } -func updateCred_defHandler(clientCtx client.Context) http.HandlerFunc { +func updateCredDefHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) if err != nil { return } - var req updateCred_defRequest + var req updateCredDefRequest if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") return @@ -101,7 +101,7 @@ func updateCred_defHandler(clientCtx client.Context) http.HandlerFunc { parsedValue := req.Value - msg := types.NewMsgUpdateCred_def( + msg := types.NewMsgUpdateCredDef( req.Creator, id, parsedSchema_id, @@ -114,19 +114,19 @@ func updateCred_defHandler(clientCtx client.Context) http.HandlerFunc { } } -type deleteCred_defRequest struct { +type deleteCredDefRequest struct { BaseReq rest.BaseReq `json:"base_req"` Creator string `json:"creator"` } -func deleteCred_defHandler(clientCtx client.Context) http.HandlerFunc { +func deleteCredDefHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) if err != nil { return } - var req deleteCred_defRequest + var req deleteCredDefRequest if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") return @@ -143,7 +143,7 @@ func deleteCred_defHandler(clientCtx client.Context) http.HandlerFunc { return } - msg := types.NewMsgDeleteCred_def( + msg := types.NewMsgDeleteCredDef( req.Creator, id, ) diff --git a/x/cheqd/genesis.go b/x/cheqd/genesis.go index 0fbd7bffa..109f59653 100644 --- a/x/cheqd/genesis.go +++ b/x/cheqd/genesis.go @@ -10,13 +10,13 @@ import ( // state. func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { // this line is used by starport scaffolding # genesis/module/init - // Set all the cred_def - for _, elem := range genState.Cred_defList { - k.SetCred_def(ctx, *elem) + // Set all the credDef + for _, elem := range genState.CredDefList { + k.SetCredDef(ctx, *elem) } - // Set cred_def count - k.SetCred_defCount(ctx, uint64(len(genState.Cred_defList))) + // Set credDef count + k.SetCredDefCount(ctx, uint64(len(genState.CredDefList))) // Set all the schema for _, elem := range genState.SchemaList { @@ -57,11 +57,11 @@ func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { genesis := types.DefaultGenesis() // this line is used by starport scaffolding # genesis/module/export - // Get all cred_def - cred_defList := k.GetAllCred_def(ctx) - for _, elem := range cred_defList { + // Get all credDef + credDefList := k.GetAllCredDef(ctx) + for _, elem := range credDefList { elem := elem - genesis.Cred_defList = append(genesis.Cred_defList, &elem) + genesis.CredDefList = append(genesis.CredDefList, &elem) } // Get all schema diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index f7bf7224c..9dd99ad5a 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -18,16 +18,16 @@ func NewHandler(k keeper.Keeper) sdk.Handler { switch msg := msg.(type) { // this line is used by starport scaffolding # 1 - case *types.MsgCreateCred_def: - res, err := msgServer.CreateCred_def(sdk.WrapSDKContext(ctx), msg) + case *types.MsgCreateCredDef: + res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgUpdateCred_def: - res, err := msgServer.UpdateCred_def(sdk.WrapSDKContext(ctx), msg) + case *types.MsgUpdateCredDef: + res, err := msgServer.UpdateCredDef(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgDeleteCred_def: - res, err := msgServer.DeleteCred_def(sdk.WrapSDKContext(ctx), msg) + case *types.MsgDeleteCredDef: + res, err := msgServer.DeleteCredDef(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) case *types.MsgCreateSchema: diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 36bebdae1..0445e5dea 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -8,10 +8,10 @@ import ( "strconv" ) -// GetCred_defCount get the total number of cred_def -func (k Keeper) GetCred_defCount(ctx sdk.Context) uint64 { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defCountKey)) - byteKey := types.KeyPrefix(types.Cred_defCountKey) +// GetCredDefCount get the total number of credDef +func (k Keeper) GetCredDefCount(ctx sdk.Context) uint64 { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefCountKey)) + byteKey := types.KeyPrefix(types.CredDefCountKey) bz := store.Get(byteKey) // Count doesn't exist: no element @@ -29,16 +29,16 @@ func (k Keeper) GetCred_defCount(ctx sdk.Context) uint64 { return count } -// SetCred_defCount set the total number of cred_def -func (k Keeper) SetCred_defCount(ctx sdk.Context, count uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defCountKey)) - byteKey := types.KeyPrefix(types.Cred_defCountKey) +// SetCredDefCount set the total number of credDef +func (k Keeper) SetCredDefCount(ctx sdk.Context, count uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefCountKey)) + byteKey := types.KeyPrefix(types.CredDefCountKey) bz := []byte(strconv.FormatUint(count, 10)) store.Set(byteKey, bz) } -// AppendCred_def appends a cred_def in the store with a new id and update the count -func (k Keeper) AppendCred_def( +// AppendCredDef appends a credDef in the store with a new id and update the count +func (k Keeper) AppendCredDef( ctx sdk.Context, creator string, schema_id string, @@ -46,9 +46,9 @@ func (k Keeper) AppendCred_def( signature_type string, value string, ) uint64 { - // Create the cred_def - count := k.GetCred_defCount(ctx) - var cred_def = types.Cred_def{ + // Create the credDef + count := k.GetCredDefCount(ctx) + var credDef = types.CredDef{ Creator: creator, Id: count, Schema_id: schema_id, @@ -57,57 +57,57 @@ func (k Keeper) AppendCred_def( Value: value, } - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) - value := k.cdc.MustMarshalBinaryBare(&cred_def) - store.Set(GetCred_defIDBytes(cred_def.Id), value) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) + value := k.cdc.MustMarshalBinaryBare(&credDef) + store.Set(GetCredDefIDBytes(credDef.Id), value) - // Update cred_def count - k.SetCred_defCount(ctx, count+1) + // Update credDef count + k.SetCredDefCount(ctx, count+1) return count } -// SetCred_def set a specific cred_def in the store -func (k Keeper) SetCred_def(ctx sdk.Context, cred_def types.Cred_def) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) - b := k.cdc.MustMarshalBinaryBare(&cred_def) - store.Set(GetCred_defIDBytes(cred_def.Id), b) +// SetCredDef set a specific credDef in the store +func (k Keeper) SetCredDef(ctx sdk.Context, credDef types.CredDef) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) + b := k.cdc.MustMarshalBinaryBare(&credDef) + store.Set(GetCredDefIDBytes(credDef.Id), b) } -// GetCred_def returns a cred_def from its id -func (k Keeper) GetCred_def(ctx sdk.Context, id uint64) types.Cred_def { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) - var cred_def types.Cred_def - k.cdc.MustUnmarshalBinaryBare(store.Get(GetCred_defIDBytes(id)), &cred_def) - return cred_def +// GetCredDef returns a credDef from its id +func (k Keeper) GetCredDef(ctx sdk.Context, id uint64) types.CredDef { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) + var credDef types.CredDef + k.cdc.MustUnmarshalBinaryBare(store.Get(GetCredDefIDBytes(id)), &credDef) + return credDef } -// HasCred_def checks if the cred_def exists in the store -func (k Keeper) HasCred_def(ctx sdk.Context, id uint64) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) - return store.Has(GetCred_defIDBytes(id)) +// HasCredDef checks if the credDef exists in the store +func (k Keeper) HasCredDef(ctx sdk.Context, id uint64) bool { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) + return store.Has(GetCredDefIDBytes(id)) } -// GetCred_defOwner returns the creator of the cred_def -func (k Keeper) GetCred_defOwner(ctx sdk.Context, id uint64) string { - return k.GetCred_def(ctx, id).Creator +// GetCredDefOwner returns the creator of the credDef +func (k Keeper) GetCredDefOwner(ctx sdk.Context, id uint64) string { + return k.GetCredDef(ctx, id).Creator } -// RemoveCred_def removes a cred_def from the store -func (k Keeper) RemoveCred_def(ctx sdk.Context, id uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) - store.Delete(GetCred_defIDBytes(id)) +// RemoveCredDef removes a credDef from the store +func (k Keeper) RemoveCredDef(ctx sdk.Context, id uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) + store.Delete(GetCredDefIDBytes(id)) } -// GetAllCred_def returns all cred_def -func (k Keeper) GetAllCred_def(ctx sdk.Context) (list []types.Cred_def) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) +// GetAllCredDef returns all credDef +func (k Keeper) GetAllCredDef(ctx sdk.Context) (list []types.CredDef) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { - var val types.Cred_def + var val types.CredDef k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) list = append(list, val) } @@ -115,14 +115,14 @@ func (k Keeper) GetAllCred_def(ctx sdk.Context) (list []types.Cred_def) { return } -// GetCred_defIDBytes returns the byte representation of the ID -func GetCred_defIDBytes(id uint64) []byte { +// GetCredDefIDBytes returns the byte representation of the ID +func GetCredDefIDBytes(id uint64) []byte { bz := make([]byte, 8) binary.BigEndian.PutUint64(bz, id) return bz } -// GetCred_defIDFromBytes returns ID in uint64 format from a byte array -func GetCred_defIDFromBytes(bz []byte) uint64 { +// GetCredDefIDFromBytes returns ID in uint64 format from a byte array +func GetCredDefIDFromBytes(bz []byte) uint64 { return binary.BigEndian.Uint64(bz) } diff --git a/x/cheqd/keeper/grpc_query_cred_def.go b/x/cheqd/keeper/grpc_query_cred_def.go index 9ba88178e..06c83e20b 100644 --- a/x/cheqd/keeper/grpc_query_cred_def.go +++ b/x/cheqd/keeper/grpc_query_cred_def.go @@ -12,24 +12,24 @@ import ( "google.golang.org/grpc/status" ) -func (k Keeper) Cred_defAll(c context.Context, req *types.QueryAllCred_defRequest) (*types.QueryAllCred_defResponse, error) { +func (k Keeper) CredDefAll(c context.Context, req *types.QueryAllCredDefRequest) (*types.QueryAllCredDefResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - var cred_defs []*types.Cred_def + var credDefs []*types.CredDef ctx := sdk.UnwrapSDKContext(c) store := ctx.KVStore(k.storeKey) - cred_defStore := prefix.NewStore(store, types.KeyPrefix(types.Cred_defKey)) + credDefStore := prefix.NewStore(store, types.KeyPrefix(types.CredDefKey)) - pageRes, err := query.Paginate(cred_defStore, req.Pagination, func(key []byte, value []byte) error { - var cred_def types.Cred_def - if err := k.cdc.UnmarshalBinaryBare(value, &cred_def); err != nil { + pageRes, err := query.Paginate(credDefStore, req.Pagination, func(key []byte, value []byte) error { + var credDef types.CredDef + if err := k.cdc.UnmarshalBinaryBare(value, &credDef); err != nil { return err } - cred_defs = append(cred_defs, &cred_def) + credDefs = append(credDefs, &credDef) return nil }) @@ -37,23 +37,23 @@ func (k Keeper) Cred_defAll(c context.Context, req *types.QueryAllCred_defReques return nil, status.Error(codes.Internal, err.Error()) } - return &types.QueryAllCred_defResponse{Cred_def: cred_defs, Pagination: pageRes}, nil + return &types.QueryAllCredDefResponse{CredDef: credDefs, Pagination: pageRes}, nil } -func (k Keeper) Cred_def(c context.Context, req *types.QueryGetCred_defRequest) (*types.QueryGetCred_defResponse, error) { +func (k Keeper) CredDef(c context.Context, req *types.QueryGetCredDefRequest) (*types.QueryGetCredDefResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - var cred_def types.Cred_def + var credDef types.CredDef ctx := sdk.UnwrapSDKContext(c) - if !k.HasCred_def(ctx, req.Id) { + if !k.HasCredDef(ctx, req.Id) { return nil, sdkerrors.ErrKeyNotFound } - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.Cred_defKey)) - k.cdc.MustUnmarshalBinaryBare(store.Get(GetCred_defIDBytes(req.Id)), &cred_def) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) + k.cdc.MustUnmarshalBinaryBare(store.Get(GetCredDefIDBytes(req.Id)), &credDef) - return &types.QueryGetCred_defResponse{Cred_def: &cred_def}, nil + return &types.QueryGetCredDefResponse{CredDef: &credDef}, nil } diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index c8ea963e9..be4e1a008 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -9,10 +9,10 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -func (k msgServer) CreateCred_def(goCtx context.Context, msg *types.MsgCreateCred_def) (*types.MsgCreateCred_defResponse, error) { +func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgCreateCredDef) (*types.MsgCreateCredDefResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - id := k.AppendCred_def( + id := k.AppendCredDef( ctx, msg.Creator, msg.Schema_id, @@ -21,15 +21,15 @@ func (k msgServer) CreateCred_def(goCtx context.Context, msg *types.MsgCreateCre msg.Value, ) - return &types.MsgCreateCred_defResponse{ + return &types.MsgCreateCredDefResponse{ Id: id, }, nil } -func (k msgServer) UpdateCred_def(goCtx context.Context, msg *types.MsgUpdateCred_def) (*types.MsgUpdateCred_defResponse, error) { +func (k msgServer) UpdateCredDef(goCtx context.Context, msg *types.MsgUpdateCredDef) (*types.MsgUpdateCredDefResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - var cred_def = types.Cred_def{ + var credDef = types.CredDef{ Creator: msg.Creator, Id: msg.Id, Schema_id: msg.Schema_id, @@ -39,31 +39,31 @@ func (k msgServer) UpdateCred_def(goCtx context.Context, msg *types.MsgUpdateCre } // Checks that the element exists - if !k.HasCred_def(ctx, msg.Id) { + if !k.HasCredDef(ctx, msg.Id) { return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) } // Checks if the the msg sender is the same as the current owner - if msg.Creator != k.GetCred_defOwner(ctx, msg.Id) { + if msg.Creator != k.GetCredDefOwner(ctx, msg.Id) { return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") } - k.SetCred_def(ctx, cred_def) + k.SetCredDef(ctx, credDef) - return &types.MsgUpdateCred_defResponse{}, nil + return &types.MsgUpdateCredDefResponse{}, nil } -func (k msgServer) DeleteCred_def(goCtx context.Context, msg *types.MsgDeleteCred_def) (*types.MsgDeleteCred_defResponse, error) { +func (k msgServer) DeleteCredDef(goCtx context.Context, msg *types.MsgDeleteCredDef) (*types.MsgDeleteCredDefResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - if !k.HasCred_def(ctx, msg.Id) { + if !k.HasCredDef(ctx, msg.Id) { return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) } - if msg.Creator != k.GetCred_defOwner(ctx, msg.Id) { + if msg.Creator != k.GetCredDefOwner(ctx, msg.Id) { return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") } - k.RemoveCred_def(ctx, msg.Id) + k.RemoveCredDef(ctx, msg.Id) - return &types.MsgDeleteCred_defResponse{}, nil + return &types.MsgDeleteCredDefResponse{}, nil } diff --git a/x/cheqd/keeper/query.go b/x/cheqd/keeper/query.go index 7a56efaa3..b291cb576 100644 --- a/x/cheqd/keeper/query.go +++ b/x/cheqd/keeper/query.go @@ -20,11 +20,11 @@ func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { switch path[0] { // this line is used by starport scaffolding # 2 - case types.QueryGetCred_def: - return getCred_def(ctx, path[1], k, legacyQuerierCdc) + case types.QueryGetCredDef: + return getCredDef(ctx, path[1], k, legacyQuerierCdc) - case types.QueryListCred_def: - return listCred_def(ctx, k, legacyQuerierCdc) + case types.QueryListCredDef: + return listCredDef(ctx, k, legacyQuerierCdc) case types.QueryGetSchema: return getSchema(ctx, path[1], k, legacyQuerierCdc) diff --git a/x/cheqd/keeper/query_cred_def.go b/x/cheqd/keeper/query_cred_def.go index 51211abfd..9dd0d2ddb 100644 --- a/x/cheqd/keeper/query_cred_def.go +++ b/x/cheqd/keeper/query_cred_def.go @@ -7,8 +7,8 @@ import ( "strconv" ) -func listCred_def(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - msgs := keeper.GetAllCred_def(ctx) +func listCredDef(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { + msgs := keeper.GetAllCredDef(ctx) bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) if err != nil { @@ -18,17 +18,17 @@ func listCred_def(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.Legacy return bz, nil } -func getCred_def(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { +func getCredDef(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { id, err := strconv.ParseUint(key, 10, 64) if err != nil { return nil, err } - if !keeper.HasCred_def(ctx, id) { + if !keeper.HasCredDef(ctx, id) { return nil, sdkerrors.ErrKeyNotFound } - msg := keeper.GetCred_def(ctx, id) + msg := keeper.GetCredDef(ctx, id) bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) if err != nil { diff --git a/x/cheqd/types/codec.go b/x/cheqd/types/codec.go index 2cb3c09ff..c6b0988ba 100644 --- a/x/cheqd/types/codec.go +++ b/x/cheqd/types/codec.go @@ -9,9 +9,9 @@ import ( func RegisterCodec(cdc *codec.LegacyAmino) { // this line is used by starport scaffolding # 2 - cdc.RegisterConcrete(&MsgCreateCred_def{}, "cheqd/CreateCred_def", nil) - cdc.RegisterConcrete(&MsgUpdateCred_def{}, "cheqd/UpdateCred_def", nil) - cdc.RegisterConcrete(&MsgDeleteCred_def{}, "cheqd/DeleteCred_def", nil) + cdc.RegisterConcrete(&MsgCreateCredDef{}, "cheqd/CreateCredDef", nil) + cdc.RegisterConcrete(&MsgUpdateCredDef{}, "cheqd/UpdateCredDef", nil) + cdc.RegisterConcrete(&MsgDeleteCredDef{}, "cheqd/DeleteCredDef", nil) cdc.RegisterConcrete(&MsgCreateSchema{}, "cheqd/CreateSchema", nil) cdc.RegisterConcrete(&MsgUpdateSchema{}, "cheqd/UpdateSchema", nil) @@ -34,9 +34,9 @@ func RegisterCodec(cdc *codec.LegacyAmino) { func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { // this line is used by starport scaffolding # 3 registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgCreateCred_def{}, - &MsgUpdateCred_def{}, - &MsgDeleteCred_def{}, + &MsgCreateCredDef{}, + &MsgUpdateCredDef{}, + &MsgDeleteCredDef{}, ) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateSchema{}, diff --git a/x/cheqd/types/genesis.go b/x/cheqd/types/genesis.go index 8f694f78e..4dc07ec79 100644 --- a/x/cheqd/types/genesis.go +++ b/x/cheqd/types/genesis.go @@ -11,11 +11,11 @@ const DefaultIndex uint64 = 1 func DefaultGenesis() *GenesisState { return &GenesisState{ // this line is used by starport scaffolding # genesis/types/default - Cred_defList: []*Cred_def{}, - SchemaList: []*Schema{}, - AttribList: []*Attrib{}, - DidList: []*Did{}, - NymList: []*Nym{}, + CredDefList: []*CredDef{}, + SchemaList: []*Schema{}, + AttribList: []*Attrib{}, + DidList: []*Did{}, + NymList: []*Nym{}, } } @@ -23,14 +23,14 @@ func DefaultGenesis() *GenesisState { // failure. func (gs GenesisState) Validate() error { // this line is used by starport scaffolding # genesis/types/validate - // Check for duplicated ID in cred_def - cred_defIdMap := make(map[uint64]bool) + // Check for duplicated ID in credDef + credDefIdMap := make(map[uint64]bool) - for _, elem := range gs.Cred_defList { - if _, ok := cred_defIdMap[elem.Id]; ok { - return fmt.Errorf("duplicated id for cred_def") + for _, elem := range gs.CredDefList { + if _, ok := credDefIdMap[elem.Id]; ok { + return fmt.Errorf("duplicated id for credDef") } - cred_defIdMap[elem.Id] = true + credDefIdMap[elem.Id] = true } // Check for duplicated ID in schema schemaIdMap := make(map[uint64]bool) diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index 8fd0828a1..e758c4368 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -42,6 +42,6 @@ const ( ) const ( - Cred_defKey = "Cred_def-value-" - Cred_defCountKey = "Cred_def-count-" + CredDefKey = "CredDef-value-" + CredDefCountKey = "CredDef-count-" ) diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index aea86501b..9f69caa46 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -5,10 +5,10 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -var _ sdk.Msg = &MsgCreateCred_def{} +var _ sdk.Msg = &MsgCreateCredDef{} -func NewMsgCreateCred_def(creator string, schema_id string, tag string, signature_type string, value string) *MsgCreateCred_def { - return &MsgCreateCred_def{ +func NewMsgCreateCredDef(creator string, schema_id string, tag string, signature_type string, value string) *MsgCreateCredDef { + return &MsgCreateCredDef{ Creator: creator, Schema_id: schema_id, Tag: tag, @@ -17,15 +17,15 @@ func NewMsgCreateCred_def(creator string, schema_id string, tag string, signatur } } -func (msg *MsgCreateCred_def) Route() string { +func (msg *MsgCreateCredDef) Route() string { return RouterKey } -func (msg *MsgCreateCred_def) Type() string { - return "CreateCred_def" +func (msg *MsgCreateCredDef) Type() string { + return "CreateCredDef" } -func (msg *MsgCreateCred_def) GetSigners() []sdk.AccAddress { +func (msg *MsgCreateCredDef) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { panic(err) @@ -33,12 +33,12 @@ func (msg *MsgCreateCred_def) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{creator} } -func (msg *MsgCreateCred_def) GetSignBytes() []byte { +func (msg *MsgCreateCredDef) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) } -func (msg *MsgCreateCred_def) ValidateBasic() error { +func (msg *MsgCreateCredDef) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) @@ -46,10 +46,10 @@ func (msg *MsgCreateCred_def) ValidateBasic() error { return nil } -var _ sdk.Msg = &MsgUpdateCred_def{} +var _ sdk.Msg = &MsgUpdateCredDef{} -func NewMsgUpdateCred_def(creator string, id uint64, schema_id string, tag string, signature_type string, value string) *MsgUpdateCred_def { - return &MsgUpdateCred_def{ +func NewMsgUpdateCredDef(creator string, id uint64, schema_id string, tag string, signature_type string, value string) *MsgUpdateCredDef { + return &MsgUpdateCredDef{ Id: id, Creator: creator, Schema_id: schema_id, @@ -59,15 +59,15 @@ func NewMsgUpdateCred_def(creator string, id uint64, schema_id string, tag strin } } -func (msg *MsgUpdateCred_def) Route() string { +func (msg *MsgUpdateCredDef) Route() string { return RouterKey } -func (msg *MsgUpdateCred_def) Type() string { - return "UpdateCred_def" +func (msg *MsgUpdateCredDef) Type() string { + return "UpdateCredDef" } -func (msg *MsgUpdateCred_def) GetSigners() []sdk.AccAddress { +func (msg *MsgUpdateCredDef) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { panic(err) @@ -75,12 +75,12 @@ func (msg *MsgUpdateCred_def) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{creator} } -func (msg *MsgUpdateCred_def) GetSignBytes() []byte { +func (msg *MsgUpdateCredDef) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) } -func (msg *MsgUpdateCred_def) ValidateBasic() error { +func (msg *MsgUpdateCredDef) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) @@ -88,23 +88,23 @@ func (msg *MsgUpdateCred_def) ValidateBasic() error { return nil } -var _ sdk.Msg = &MsgCreateCred_def{} +var _ sdk.Msg = &MsgCreateCredDef{} -func NewMsgDeleteCred_def(creator string, id uint64) *MsgDeleteCred_def { - return &MsgDeleteCred_def{ +func NewMsgDeleteCredDef(creator string, id uint64) *MsgDeleteCredDef { + return &MsgDeleteCredDef{ Id: id, Creator: creator, } } -func (msg *MsgDeleteCred_def) Route() string { +func (msg *MsgDeleteCredDef) Route() string { return RouterKey } -func (msg *MsgDeleteCred_def) Type() string { - return "DeleteCred_def" +func (msg *MsgDeleteCredDef) Type() string { + return "DeleteCredDef" } -func (msg *MsgDeleteCred_def) GetSigners() []sdk.AccAddress { +func (msg *MsgDeleteCredDef) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { panic(err) @@ -112,12 +112,12 @@ func (msg *MsgDeleteCred_def) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{creator} } -func (msg *MsgDeleteCred_def) GetSignBytes() []byte { +func (msg *MsgDeleteCredDef) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) } -func (msg *MsgDeleteCred_def) ValidateBasic() error { +func (msg *MsgDeleteCredDef) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) diff --git a/x/cheqd/types/nym.pb.go b/x/cheqd/types/nym.pb.go deleted file mode 100644 index 336975c5c..000000000 --- a/x/cheqd/types/nym.pb.go +++ /dev/null @@ -1,559 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: cheqd/nym.proto - -package types - -import ( - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Nym struct { - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` - Verkey string `protobuf:"bytes,4,opt,name=verkey,proto3" json:"verkey,omitempty"` - Did string `protobuf:"bytes,5,opt,name=did,proto3" json:"did,omitempty"` - Role string `protobuf:"bytes,6,opt,name=role,proto3" json:"role,omitempty"` -} - -func (m *Nym) Reset() { *m = Nym{} } -func (m *Nym) String() string { return proto.CompactTextString(m) } -func (*Nym) ProtoMessage() {} -func (*Nym) Descriptor() ([]byte, []int) { - return fileDescriptor_8ac64d8a3297565c, []int{0} -} -func (m *Nym) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Nym) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Nym.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Nym) XXX_Merge(src proto.Message) { - xxx_messageInfo_Nym.Merge(m, src) -} -func (m *Nym) XXX_Size() int { - return m.Size() -} -func (m *Nym) XXX_DiscardUnknown() { - xxx_messageInfo_Nym.DiscardUnknown(m) -} - -var xxx_messageInfo_Nym proto.InternalMessageInfo - -func (m *Nym) GetCreator() string { - if m != nil { - return m.Creator - } - return "" -} - -func (m *Nym) GetId() uint64 { - if m != nil { - return m.Id - } - return 0 -} - -func (m *Nym) GetAlias() string { - if m != nil { - return m.Alias - } - return "" -} - -func (m *Nym) GetVerkey() string { - if m != nil { - return m.Verkey - } - return "" -} - -func (m *Nym) GetDid() string { - if m != nil { - return m.Did - } - return "" -} - -func (m *Nym) GetRole() string { - if m != nil { - return m.Role - } - return "" -} - -func init() { - proto.RegisterType((*Nym)(nil), "cheqdid.cheqdnode.cheqd.Nym") -} - -func init() { proto.RegisterFile("cheqd/nym.proto", fileDescriptor_8ac64d8a3297565c) } - -var fileDescriptor_8ac64d8a3297565c = []byte{ - // 230 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4f, 0xce, 0x48, 0x2d, - 0x4c, 0xd1, 0xcf, 0xab, 0xcc, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x0b, 0x64, - 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, 0x3f, 0x3d, 0x1f, - 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0x6a, 0x66, 0xe4, 0x62, 0xf6, 0xab, 0xcc, 0x15, 0x92, - 0xe0, 0x62, 0x4f, 0x2e, 0x4a, 0x4d, 0x2c, 0xc9, 0x2f, 0x92, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, - 0x82, 0x71, 0x85, 0xf8, 0xb8, 0x98, 0x32, 0x53, 0x24, 0x98, 0x14, 0x18, 0x35, 0x58, 0x82, 0x98, - 0x32, 0x53, 0x84, 0x44, 0xb8, 0x58, 0x13, 0x73, 0x32, 0x13, 0x8b, 0x25, 0x98, 0xc1, 0xea, 0x20, - 0x1c, 0x21, 0x31, 0x2e, 0xb6, 0xb2, 0xd4, 0xa2, 0xec, 0xd4, 0x4a, 0x09, 0x16, 0xb0, 0x30, 0x94, - 0x27, 0x24, 0xc0, 0xc5, 0x9c, 0x92, 0x99, 0x22, 0xc1, 0x0a, 0x16, 0x04, 0x31, 0x85, 0x84, 0xb8, - 0x58, 0x8a, 0xf2, 0x73, 0x52, 0x25, 0xd8, 0xc0, 0x42, 0x60, 0xb6, 0x93, 0xf3, 0x89, 0x47, 0x72, - 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, - 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x69, 0xa6, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, - 0xe7, 0xe7, 0xea, 0x43, 0xbc, 0x0a, 0x26, 0x75, 0x41, 0x1e, 0xd3, 0xaf, 0x80, 0x0a, 0x95, 0x54, - 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x7d, 0x64, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x9b, - 0x3d, 0x7c, 0x13, 0x01, 0x00, 0x00, -} - -func (m *Nym) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Nym) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Nym) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintNym(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0x32 - } - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintNym(dAtA, i, uint64(len(m.Did))) - i-- - dAtA[i] = 0x2a - } - if len(m.Verkey) > 0 { - i -= len(m.Verkey) - copy(dAtA[i:], m.Verkey) - i = encodeVarintNym(dAtA, i, uint64(len(m.Verkey))) - i-- - dAtA[i] = 0x22 - } - if len(m.Alias) > 0 { - i -= len(m.Alias) - copy(dAtA[i:], m.Alias) - i = encodeVarintNym(dAtA, i, uint64(len(m.Alias))) - i-- - dAtA[i] = 0x1a - } - if m.Id != 0 { - i = encodeVarintNym(dAtA, i, uint64(m.Id)) - i-- - dAtA[i] = 0x10 - } - if len(m.Creator) > 0 { - i -= len(m.Creator) - copy(dAtA[i:], m.Creator) - i = encodeVarintNym(dAtA, i, uint64(len(m.Creator))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintNym(dAtA []byte, offset int, v uint64) int { - offset -= sovNym(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Nym) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Creator) - if l > 0 { - n += 1 + l + sovNym(uint64(l)) - } - if m.Id != 0 { - n += 1 + sovNym(uint64(m.Id)) - } - l = len(m.Alias) - if l > 0 { - n += 1 + l + sovNym(uint64(l)) - } - l = len(m.Verkey) - if l > 0 { - n += 1 + l + sovNym(uint64(l)) - } - l = len(m.Did) - if l > 0 { - n += 1 + l + sovNym(uint64(l)) - } - l = len(m.Role) - if l > 0 { - n += 1 + l + sovNym(uint64(l)) - } - return n -} - -func sovNym(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozNym(x uint64) (n int) { - return sovNym(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Nym) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNym - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Nym: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Nym: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNym - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthNym - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthNym - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Creator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - m.Id = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNym - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Id |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNym - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthNym - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthNym - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Alias = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Verkey", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNym - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthNym - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthNym - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Verkey = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNym - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthNym - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthNym - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNym - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthNym - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthNym - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Role = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipNym(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthNym - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipNym(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowNym - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowNym - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowNym - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthNym - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupNym - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthNym - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthNym = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowNym = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupNym = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/cheqd/types/query.go b/x/cheqd/types/query.go index 50f71ac30..13a026497 100644 --- a/x/cheqd/types/query.go +++ b/x/cheqd/types/query.go @@ -21,6 +21,6 @@ const ( ) const ( - QueryGetCred_def = "get-cred_def" - QueryListCred_def = "list-cred_def" + QueryGetCredDef = "get-credDef" + QueryListCredDef = "list-credDef" ) From e31e21aec8c44b498177258cad1c703219f3149b Mon Sep 17 00:00:00 2001 From: toktar Date: Wed, 15 Sep 2021 14:02:01 +0300 Subject: [PATCH 03/74] Bugfix for proto files --- go.mod | 11 +- go.sum | 12 + proto/cheqd/attrib.proto | 2 +- proto/cheqd/credDef.proto | 4 +- proto/cheqd/did.proto | 2 +- proto/cheqd/genesis.proto | 8 +- proto/cheqd/query.proto | 1 - proto/cheqd/schema.proto | 2 +- proto/cheqd/tx.proto | 5 +- x/cheqd/types/attrib.pb.go | 367 +++++ x/cheqd/types/credDef.pb.go | 524 +++++++ x/cheqd/types/did.pb.go | 419 ++++++ x/cheqd/types/genesis.pb.go | 83 +- x/cheqd/types/query.pb.go | 1147 ++++++++++++--- x/cheqd/types/query.pb.gw.go | 302 +++- x/cheqd/types/schema.pb.go | 472 ++++++ x/cheqd/types/tx.pb.go | 2624 +++++++++++++++++++++++++++------- 17 files changed, 5137 insertions(+), 848 deletions(-) create mode 100644 x/cheqd/types/attrib.pb.go create mode 100644 x/cheqd/types/credDef.pb.go create mode 100644 x/cheqd/types/did.pb.go create mode 100644 x/cheqd/types/schema.pb.go diff --git a/go.mod b/go.mod index 3cdacb442..bd89e1504 100644 --- a/go.mod +++ b/go.mod @@ -7,14 +7,14 @@ require ( github.com/confio/ics23/go v0.6.6 // indirect github.com/cosmos/cosmos-sdk v0.42.4 github.com/gogo/protobuf v1.3.3 - github.com/golang/protobuf v1.4.3 + github.com/golang/protobuf v1.5.2 github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 // indirect github.com/google/go-cmp v0.5.6 // indirect github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa // indirect github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 // indirect github.com/magiconair/properties v1.8.5 // indirect github.com/mitchellh/mapstructure v1.3.3 // indirect github.com/otiai10/copy v1.6.0 // indirect @@ -31,10 +31,9 @@ require ( github.com/tendermint/tm-db v0.6.4 golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect golang.org/x/text v0.3.5 // indirect - golang.org/x/tools v0.1.3 // indirect - google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea - google.golang.org/grpc v1.38.0 - google.golang.org/protobuf v1.26.0-rc.1 // indirect + google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 + google.golang.org/grpc v1.40.0 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0 // indirect gopkg.in/ini.v1 v1.61.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 7aee97755..8bf8359aa 100644 --- a/go.sum +++ b/go.sum @@ -283,6 +283,8 @@ github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -390,6 +392,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 h1:HlJcTiqGHvaWDG7/s85d68Kw7G7FqMz+9LlcyVauOAw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0/go.mod h1:gRq9gZWcIFvz68EgWqy2qQpRbmtn5j2qLZ4zHjqiLpg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 h1:rgxjzoDmDXw5q8HONgyHhBas4to0/XWRo/gPpJhsUNQ= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0/go.mod h1:qrJPVzv9YlhsrxJc3P/Q85nr0w1lIRikTl4JlhdDH5w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -954,6 +958,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c h1:HiAZXo96zOhVhtFHchj/ojzoxCFiPrp9/j0GtS38V3g= golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1089,6 +1095,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.3 h1:L69ShwSZEyCsLKoAxDKeMvLDZkumEe8gXUZAjab0tX8= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1160,6 +1168,8 @@ google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea h1:N98SvVh7Hdle2lg google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced h1:c5geK1iMU3cDKtFrCVQIcjR3W+JOZMuhIyICMCTbtus= google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 h1:3V2dxSZpz4zozWWUq36vUxXEKnSYitEH2LdsAx+RUmg= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0 h1:lQ+dE99pFsb8osbJB3oRfE5eW4Hx6a/lZQr8Jh+eoT4= @@ -1178,6 +1188,8 @@ google.golang.org/protobuf v1.26.0-rc.1 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/proto/cheqd/attrib.proto b/proto/cheqd/attrib.proto index 094f921c8..8f8525b37 100644 --- a/proto/cheqd/attrib.proto +++ b/proto/cheqd/attrib.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package cheqd.cheqdnode.cheqd; +package cheqdid.cheqdnode.cheqd; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index 40ce6f306..a52a2e788 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package cheqd.cheqdnode.cheqd; +package cheqdid.cheqdnode.cheqd; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; @@ -10,5 +10,5 @@ message CredDef { string schema_id = 2; string tag = 3; string signature_type = 4; - string value = 4; + string value = 5; } diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index 1ad7311b2..ba355ab31 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package cheqd.cheqdnode.cheqd; +package cheqdid.cheqdnode.cheqd; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; diff --git a/proto/cheqd/genesis.proto b/proto/cheqd/genesis.proto index 36b577d53..9465cfc56 100644 --- a/proto/cheqd/genesis.proto +++ b/proto/cheqd/genesis.proto @@ -2,21 +2,15 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; // this line is used by starport scaffolding # genesis/proto/import -import "cheqd/cred_def.proto"; +import "cheqd/credDef.proto"; import "cheqd/schema.proto"; import "cheqd/attrib.proto"; import "cheqd/did.proto"; -import "cheqd/nym.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // GenesisState defines the capability module's genesis state. message GenesisState { // this line is used by starport scaffolding # genesis/proto/state - repeated Cred_def cred_defList = 5; // this line is used by starport scaffolding # genesis/proto/stateField - repeated Schema schemaList = 4; // this line is used by starport scaffolding # genesis/proto/stateField - repeated Attrib attribList = 3; // this line is used by starport scaffolding # genesis/proto/stateField - repeated Did didList = 2; // this line is used by starport scaffolding # genesis/proto/stateField - repeated Nym nymList = 1; // this line is used by starport scaffolding # genesis/proto/stateField } diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index f30b2ce4c..5631d61c1 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -8,7 +8,6 @@ import "cheqd/credDef.proto"; import "cheqd/schema.proto"; import "cheqd/attrib.proto"; import "cheqd/did.proto"; -import "cheqd/nym.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; diff --git a/proto/cheqd/schema.proto b/proto/cheqd/schema.proto index 55dc88496..a23ca2b77 100644 --- a/proto/cheqd/schema.proto +++ b/proto/cheqd/schema.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package cheqd.cheqdnode.cheqd; +package cheqdid.cheqdnode.cheqd; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 084da7c60..b0d4be5ce 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -1,5 +1,6 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; +import "google/protobuf/any.proto"; // this line is used by starport scaffolding # proto/tx/import @@ -18,8 +19,8 @@ service Msg { // this line is used by starport scaffolding # proto/tx/message message WriteRequest { - Any data = 1; - String author = 2 + google.protobuf.Any data = 1; + string author = 2; string signature = 3; } diff --git a/x/cheqd/types/attrib.pb.go b/x/cheqd/types/attrib.pb.go new file mode 100644 index 000000000..9ad9f3b67 --- /dev/null +++ b/x/cheqd/types/attrib.pb.go @@ -0,0 +1,367 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cheqd/attrib.proto + +package types + +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type Attrib struct { + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Raw string `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` +} + +func (m *Attrib) Reset() { *m = Attrib{} } +func (m *Attrib) String() string { return proto.CompactTextString(m) } +func (*Attrib) ProtoMessage() {} +func (*Attrib) Descriptor() ([]byte, []int) { + return fileDescriptor_b9f989a63ffe2b70, []int{0} +} +func (m *Attrib) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Attrib) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Attrib.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Attrib) XXX_Merge(src proto.Message) { + xxx_messageInfo_Attrib.Merge(m, src) +} +func (m *Attrib) XXX_Size() int { + return m.Size() +} +func (m *Attrib) XXX_DiscardUnknown() { + xxx_messageInfo_Attrib.DiscardUnknown(m) +} + +var xxx_messageInfo_Attrib proto.InternalMessageInfo + +func (m *Attrib) GetDid() string { + if m != nil { + return m.Did + } + return "" +} + +func (m *Attrib) GetRaw() string { + if m != nil { + return m.Raw + } + return "" +} + +func init() { + proto.RegisterType((*Attrib)(nil), "cheqdid.cheqdnode.cheqd.Attrib") +} + +func init() { proto.RegisterFile("cheqd/attrib.proto", fileDescriptor_b9f989a63ffe2b70) } + +var fileDescriptor_b9f989a63ffe2b70 = []byte{ + // 167 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, + 0x4c, 0xd1, 0x4f, 0x2c, 0x29, 0x29, 0xca, 0x4c, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, + 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, + 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xd2, 0xe1, 0x62, 0x73, 0x04, 0x6b, + 0x17, 0x12, 0xe0, 0x62, 0x4e, 0xc9, 0x4c, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x02, 0x31, + 0x41, 0x22, 0x45, 0x89, 0xe5, 0x12, 0x4c, 0x10, 0x91, 0xa2, 0xc4, 0x72, 0x27, 0xe7, 0x13, 0x8f, + 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, + 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, + 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xb8, 0x0a, 0x4c, 0xea, 0x82, 0x1c, 0xa0, 0x5f, 0x01, 0x15, 0x2a, + 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xdb, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x1d, + 0x8c, 0x51, 0xea, 0xbe, 0x00, 0x00, 0x00, +} + +func (m *Attrib) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Attrib) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Attrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Raw) > 0 { + i -= len(m.Raw) + copy(dAtA[i:], m.Raw) + i = encodeVarintAttrib(dAtA, i, uint64(len(m.Raw))) + i-- + dAtA[i] = 0x12 + } + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintAttrib(dAtA, i, uint64(len(m.Did))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintAttrib(dAtA []byte, offset int, v uint64) int { + offset -= sovAttrib(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Attrib) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Did) + if l > 0 { + n += 1 + l + sovAttrib(uint64(l)) + } + l = len(m.Raw) + if l > 0 { + n += 1 + l + sovAttrib(uint64(l)) + } + return n +} + +func sovAttrib(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozAttrib(x uint64) (n int) { + return sovAttrib(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Attrib) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAttrib + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Attrib: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Attrib: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAttrib + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAttrib + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAttrib + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAttrib + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAttrib + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAttrib + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Raw = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAttrib(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAttrib + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipAttrib(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAttrib + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAttrib + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAttrib + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthAttrib + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupAttrib + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthAttrib + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthAttrib = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowAttrib = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupAttrib = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go new file mode 100644 index 000000000..faa13f46d --- /dev/null +++ b/x/cheqd/types/credDef.pb.go @@ -0,0 +1,524 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cheqd/credDef.proto + +package types + +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type CredDef struct { + Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` + SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,4,opt,name=signature_type,json=signatureType,proto3" json:"signature_type,omitempty"` + Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *CredDef) Reset() { *m = CredDef{} } +func (m *CredDef) String() string { return proto.CompactTextString(m) } +func (*CredDef) ProtoMessage() {} +func (*CredDef) Descriptor() ([]byte, []int) { + return fileDescriptor_bc069326307a6009, []int{0} +} +func (m *CredDef) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CredDef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CredDef.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CredDef) XXX_Merge(src proto.Message) { + xxx_messageInfo_CredDef.Merge(m, src) +} +func (m *CredDef) XXX_Size() int { + return m.Size() +} +func (m *CredDef) XXX_DiscardUnknown() { + xxx_messageInfo_CredDef.DiscardUnknown(m) +} + +var xxx_messageInfo_CredDef proto.InternalMessageInfo + +func (m *CredDef) GetAuthor() string { + if m != nil { + return m.Author + } + return "" +} + +func (m *CredDef) GetSchemaId() string { + if m != nil { + return m.SchemaId + } + return "" +} + +func (m *CredDef) GetTag() string { + if m != nil { + return m.Tag + } + return "" +} + +func (m *CredDef) GetSignatureType() string { + if m != nil { + return m.SignatureType + } + return "" +} + +func (m *CredDef) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +func init() { + proto.RegisterType((*CredDef)(nil), "cheqdid.cheqdnode.cheqd.CredDef") +} + +func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } + +var fileDescriptor_bc069326307a6009 = []byte{ + // 237 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0xce, 0x48, 0x2d, + 0x4c, 0xd1, 0x4f, 0x2e, 0x4a, 0x4d, 0x71, 0x49, 0x4d, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, + 0x12, 0x07, 0x0b, 0x66, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, + 0x3d, 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xea, 0x65, 0xe4, 0x62, 0x77, + 0x86, 0x18, 0x20, 0x24, 0xc6, 0xc5, 0x96, 0x58, 0x5a, 0x92, 0x91, 0x5f, 0x24, 0xc1, 0xa8, 0xc0, + 0xa8, 0xc1, 0x19, 0x04, 0xe5, 0x09, 0x49, 0x73, 0x71, 0x16, 0x27, 0x67, 0xa4, 0xe6, 0x26, 0xc6, + 0x67, 0xa6, 0x48, 0x30, 0x81, 0xa5, 0x38, 0x20, 0x02, 0x9e, 0x29, 0x42, 0x02, 0x5c, 0xcc, 0x25, + 0x89, 0xe9, 0x12, 0xcc, 0x60, 0x61, 0x10, 0x53, 0x48, 0x95, 0x8b, 0xaf, 0x38, 0x33, 0x3d, 0x2f, + 0xb1, 0xa4, 0xb4, 0x28, 0x35, 0xbe, 0xa4, 0xb2, 0x20, 0x55, 0x82, 0x05, 0x2c, 0xc9, 0x0b, 0x17, + 0x0d, 0xa9, 0x2c, 0x48, 0x15, 0x12, 0xe1, 0x62, 0x2d, 0x4b, 0xcc, 0x29, 0x4d, 0x95, 0x60, 0x05, + 0xcb, 0x42, 0x38, 0x4e, 0xce, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, + 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, + 0x99, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0xf5, 0x38, 0x88, 0xd4, + 0x05, 0x79, 0x51, 0xbf, 0x02, 0x2a, 0x04, 0xb2, 0xae, 0x38, 0x89, 0x0d, 0xec, 0x37, 0x63, 0x40, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xf9, 0x6e, 0x6c, 0x21, 0x01, 0x00, 0x00, +} + +func (m *CredDef) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CredDef) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x2a + } + if len(m.SignatureType) > 0 { + i -= len(m.SignatureType) + copy(dAtA[i:], m.SignatureType) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.SignatureType))) + i-- + dAtA[i] = 0x22 + } + if len(m.Tag) > 0 { + i -= len(m.Tag) + copy(dAtA[i:], m.Tag) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.Tag))) + i-- + dAtA[i] = 0x1a + } + if len(m.SchemaId) > 0 { + i -= len(m.SchemaId) + copy(dAtA[i:], m.SchemaId) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.SchemaId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Author) > 0 { + i -= len(m.Author) + copy(dAtA[i:], m.Author) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.Author))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintCredDef(dAtA []byte, offset int, v uint64) int { + offset -= sovCredDef(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *CredDef) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Author) + if l > 0 { + n += 1 + l + sovCredDef(uint64(l)) + } + l = len(m.SchemaId) + if l > 0 { + n += 1 + l + sovCredDef(uint64(l)) + } + l = len(m.Tag) + if l > 0 { + n += 1 + l + sovCredDef(uint64(l)) + } + l = len(m.SignatureType) + if l > 0 { + n += 1 + l + sovCredDef(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sovCredDef(uint64(l)) + } + return n +} + +func sovCredDef(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozCredDef(x uint64) (n int) { + return sovCredDef(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *CredDef) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CredDef: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CredDef: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Author", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Author = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SchemaId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SchemaId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tag", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Tag = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SignatureType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SignatureType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCredDef(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCredDef + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipCredDef(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCredDef + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCredDef + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCredDef + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthCredDef + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupCredDef + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthCredDef + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthCredDef = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowCredDef = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupCredDef = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/cheqd/types/did.pb.go b/x/cheqd/types/did.pb.go new file mode 100644 index 000000000..f0cb5d518 --- /dev/null +++ b/x/cheqd/types/did.pb.go @@ -0,0 +1,419 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cheqd/did.proto + +package types + +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type Did struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Verkey string `protobuf:"bytes,2,opt,name=verkey,proto3" json:"verkey,omitempty"` + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` +} + +func (m *Did) Reset() { *m = Did{} } +func (m *Did) String() string { return proto.CompactTextString(m) } +func (*Did) ProtoMessage() {} +func (*Did) Descriptor() ([]byte, []int) { + return fileDescriptor_382ab0c0f6b6850e, []int{0} +} +func (m *Did) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Did) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Did.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Did) XXX_Merge(src proto.Message) { + xxx_messageInfo_Did.Merge(m, src) +} +func (m *Did) XXX_Size() int { + return m.Size() +} +func (m *Did) XXX_DiscardUnknown() { + xxx_messageInfo_Did.DiscardUnknown(m) +} + +var xxx_messageInfo_Did proto.InternalMessageInfo + +func (m *Did) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *Did) GetVerkey() string { + if m != nil { + return m.Verkey + } + return "" +} + +func (m *Did) GetAlias() string { + if m != nil { + return m.Alias + } + return "" +} + +func init() { + proto.RegisterType((*Did)(nil), "cheqdid.cheqdnode.cheqd.Did") +} + +func init() { proto.RegisterFile("cheqd/did.proto", fileDescriptor_382ab0c0f6b6850e) } + +var fileDescriptor_382ab0c0f6b6850e = []byte{ + // 183 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4f, 0xce, 0x48, 0x2d, + 0x4c, 0xd1, 0x4f, 0xc9, 0x4c, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x0b, 0x64, + 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, 0x3f, 0x3d, 0x1f, + 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0x72, 0xe6, 0x62, 0x76, 0xc9, 0x4c, 0x11, 0xe2, 0xe3, + 0x62, 0xca, 0x4c, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x62, 0xca, 0x4c, 0x11, 0x12, 0xe3, + 0x62, 0x2b, 0x4b, 0x2d, 0xca, 0x4e, 0xad, 0x94, 0x60, 0x02, 0x8b, 0x41, 0x79, 0x42, 0x22, 0x5c, + 0xac, 0x89, 0x39, 0x99, 0x89, 0xc5, 0x12, 0xcc, 0x60, 0x61, 0x08, 0xc7, 0xc9, 0xf9, 0xc4, 0x23, + 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, + 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x34, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, + 0x92, 0xf3, 0x73, 0xf5, 0x21, 0x2e, 0x05, 0x93, 0xba, 0x20, 0x77, 0xe9, 0x57, 0x40, 0x85, 0x4a, + 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x0e, 0x32, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xcd, + 0x53, 0x4c, 0xd3, 0xd2, 0x00, 0x00, 0x00, +} + +func (m *Did) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Did) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Alias) > 0 { + i -= len(m.Alias) + copy(dAtA[i:], m.Alias) + i = encodeVarintDid(dAtA, i, uint64(len(m.Alias))) + i-- + dAtA[i] = 0x1a + } + if len(m.Verkey) > 0 { + i -= len(m.Verkey) + copy(dAtA[i:], m.Verkey) + i = encodeVarintDid(dAtA, i, uint64(len(m.Verkey))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintDid(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintDid(dAtA []byte, offset int, v uint64) int { + offset -= sovDid(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Did) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovDid(uint64(l)) + } + l = len(m.Verkey) + if l > 0 { + n += 1 + l + sovDid(uint64(l)) + } + l = len(m.Alias) + if l > 0 { + n += 1 + l + sovDid(uint64(l)) + } + return n +} + +func sovDid(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozDid(x uint64) (n int) { + return sovDid(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Did) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Did: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Did: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verkey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verkey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Alias = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipDid(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthDid + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipDid(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowDid + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowDid + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowDid + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthDid + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupDid + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthDid + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthDid = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowDid = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupDid = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/cheqd/types/genesis.pb.go b/x/cheqd/types/genesis.pb.go index 3ef28b0ae..ce97172ca 100644 --- a/x/cheqd/types/genesis.pb.go +++ b/x/cheqd/types/genesis.pb.go @@ -24,8 +24,6 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // GenesisState defines the capability module's genesis state. type GenesisState struct { - // this line is used by starport scaffolding # genesis/proto/state - NymList []*Nym `protobuf:"bytes,1,rep,name=nymList,proto3" json:"nymList,omitempty"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -61,13 +59,6 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo -func (m *GenesisState) GetNymList() []*Nym { - if m != nil { - return m.NymList - } - return nil -} - func init() { proto.RegisterType((*GenesisState)(nil), "cheqdid.cheqdnode.cheqd.GenesisState") } @@ -75,18 +66,18 @@ func init() { func init() { proto.RegisterFile("cheqd/genesis.proto", fileDescriptor_125930f9f5015ae5) } var fileDescriptor_125930f9f5015ae5 = []byte{ - // 171 bytes of a gzipped FileDescriptorProto + // 172 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, - 0x12, 0x07, 0x0b, 0x66, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x8a, 0x1f, - 0xa2, 0x3a, 0xaf, 0x32, 0x17, 0xa2, 0x52, 0xc9, 0x8d, 0x8b, 0xc7, 0x1d, 0xa2, 0x35, 0xb8, 0x24, - 0xb1, 0x24, 0x55, 0xc8, 0x8c, 0x8b, 0x3d, 0xaf, 0x32, 0xd7, 0x27, 0xb3, 0xb8, 0x44, 0x82, 0x51, - 0x81, 0x59, 0x83, 0xdb, 0x48, 0x46, 0x0f, 0x87, 0x59, 0x7a, 0x7e, 0x95, 0xb9, 0x41, 0x30, 0xc5, - 0x4e, 0xce, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, - 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x99, 0x9e, 0x59, - 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0xb1, 0x1d, 0x4c, 0xea, 0x82, 0x4c, 0xd2, - 0xaf, 0x80, 0x0a, 0x95, 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0xdd, 0x64, 0x0c, 0x08, 0x00, - 0x00, 0xff, 0xff, 0x3b, 0xc6, 0xb7, 0xed, 0xd4, 0x00, 0x00, 0x00, + 0x12, 0x07, 0x0b, 0x66, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x0a, 0xaa, + 0x3a, 0xb9, 0x28, 0x35, 0xc5, 0x25, 0x35, 0x0d, 0xa2, 0x5a, 0x4a, 0x08, 0x22, 0x58, 0x9c, 0x9c, + 0x91, 0x9a, 0x9b, 0x88, 0x2a, 0x96, 0x58, 0x52, 0x52, 0x94, 0x99, 0x04, 0x15, 0xe3, 0x87, 0x88, + 0x81, 0xcc, 0x05, 0x0b, 0x28, 0xf1, 0x71, 0xf1, 0xb8, 0x43, 0xec, 0x0d, 0x2e, 0x49, 0x2c, 0x49, + 0x75, 0x72, 0x3e, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, + 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xcd, 0xf4, 0xcc, + 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0xa8, 0x13, 0x40, 0xa4, 0x2e, 0xc8, 0x69, + 0xfa, 0x15, 0x50, 0xa1, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0xd9, 0xc6, 0x80, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x42, 0x4f, 0x17, 0x91, 0xd9, 0x00, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -109,20 +100,6 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.NymList) > 0 { - for iNdEx := len(m.NymList) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.NymList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } return len(dAtA) - i, nil } @@ -143,12 +120,6 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l - if len(m.NymList) > 0 { - for _, e := range m.NymList { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } return n } @@ -187,40 +158,6 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NymList", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NymList = append(m.NymList, &Nym{}) - if err := m.NymList[len(m.NymList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/cheqd/types/query.pb.go b/x/cheqd/types/query.pb.go index 648292659..17297cb80 100644 --- a/x/cheqd/types/query.pb.go +++ b/x/cheqd/types/query.pb.go @@ -6,7 +6,7 @@ package types import ( context "context" fmt "fmt" - query "github.com/cosmos/cosmos-sdk/types/query" + _ "github.com/cosmos/cosmos-sdk/types/query" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" @@ -30,22 +30,22 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // this line is used by starport scaffolding # 3 -type QueryGetNymRequest struct { - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +type QueryGetCredDefRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *QueryGetNymRequest) Reset() { *m = QueryGetNymRequest{} } -func (m *QueryGetNymRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetNymRequest) ProtoMessage() {} -func (*QueryGetNymRequest) Descriptor() ([]byte, []int) { +func (m *QueryGetCredDefRequest) Reset() { *m = QueryGetCredDefRequest{} } +func (m *QueryGetCredDefRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetCredDefRequest) ProtoMessage() {} +func (*QueryGetCredDefRequest) Descriptor() ([]byte, []int) { return fileDescriptor_bf3698559b3858f5, []int{0} } -func (m *QueryGetNymRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryGetCredDefRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryGetNymRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryGetCredDefRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryGetNymRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryGetCredDefRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -55,41 +55,41 @@ func (m *QueryGetNymRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *QueryGetNymRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetNymRequest.Merge(m, src) +func (m *QueryGetCredDefRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetCredDefRequest.Merge(m, src) } -func (m *QueryGetNymRequest) XXX_Size() int { +func (m *QueryGetCredDefRequest) XXX_Size() int { return m.Size() } -func (m *QueryGetNymRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetNymRequest.DiscardUnknown(m) +func (m *QueryGetCredDefRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetCredDefRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryGetNymRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryGetCredDefRequest proto.InternalMessageInfo -func (m *QueryGetNymRequest) GetId() uint64 { +func (m *QueryGetCredDefRequest) GetId() string { if m != nil { return m.Id } - return 0 + return "" } -type QueryGetNymResponse struct { - Nym *Nym `protobuf:"bytes,1,opt,name=Nym,proto3" json:"Nym,omitempty"` +type QueryGetCredDefResponse struct { + CredDef *CredDef `protobuf:"bytes,1,opt,name=CredDef,proto3" json:"CredDef,omitempty"` } -func (m *QueryGetNymResponse) Reset() { *m = QueryGetNymResponse{} } -func (m *QueryGetNymResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetNymResponse) ProtoMessage() {} -func (*QueryGetNymResponse) Descriptor() ([]byte, []int) { +func (m *QueryGetCredDefResponse) Reset() { *m = QueryGetCredDefResponse{} } +func (m *QueryGetCredDefResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetCredDefResponse) ProtoMessage() {} +func (*QueryGetCredDefResponse) Descriptor() ([]byte, []int) { return fileDescriptor_bf3698559b3858f5, []int{1} } -func (m *QueryGetNymResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryGetCredDefResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryGetNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryGetCredDefResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryGetNymResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryGetCredDefResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -99,41 +99,41 @@ func (m *QueryGetNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *QueryGetNymResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetNymResponse.Merge(m, src) +func (m *QueryGetCredDefResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetCredDefResponse.Merge(m, src) } -func (m *QueryGetNymResponse) XXX_Size() int { +func (m *QueryGetCredDefResponse) XXX_Size() int { return m.Size() } -func (m *QueryGetNymResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetNymResponse.DiscardUnknown(m) +func (m *QueryGetCredDefResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetCredDefResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryGetNymResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryGetCredDefResponse proto.InternalMessageInfo -func (m *QueryGetNymResponse) GetNym() *Nym { +func (m *QueryGetCredDefResponse) GetCredDef() *CredDef { if m != nil { - return m.Nym + return m.CredDef } return nil } -type QueryAllNymRequest struct { - Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +type QueryGetSchemaRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *QueryAllNymRequest) Reset() { *m = QueryAllNymRequest{} } -func (m *QueryAllNymRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllNymRequest) ProtoMessage() {} -func (*QueryAllNymRequest) Descriptor() ([]byte, []int) { +func (m *QueryGetSchemaRequest) Reset() { *m = QueryGetSchemaRequest{} } +func (m *QueryGetSchemaRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetSchemaRequest) ProtoMessage() {} +func (*QueryGetSchemaRequest) Descriptor() ([]byte, []int) { return fileDescriptor_bf3698559b3858f5, []int{2} } -func (m *QueryAllNymRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryGetSchemaRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllNymRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryGetSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllNymRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryGetSchemaRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -143,42 +143,129 @@ func (m *QueryAllNymRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *QueryAllNymRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllNymRequest.Merge(m, src) +func (m *QueryGetSchemaRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetSchemaRequest.Merge(m, src) } -func (m *QueryAllNymRequest) XXX_Size() int { +func (m *QueryGetSchemaRequest) XXX_Size() int { return m.Size() } -func (m *QueryAllNymRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllNymRequest.DiscardUnknown(m) +func (m *QueryGetSchemaRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetSchemaRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllNymRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryGetSchemaRequest proto.InternalMessageInfo -func (m *QueryAllNymRequest) GetPagination() *query.PageRequest { +func (m *QueryGetSchemaRequest) GetId() string { if m != nil { - return m.Pagination + return m.Id } - return nil + return "" } -type QueryAllNymResponse struct { - Nym []*Nym `protobuf:"bytes,1,rep,name=Nym,proto3" json:"Nym,omitempty"` - Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +type QueryGetSchemaResponse struct { + Schema *Schema `protobuf:"bytes,1,opt,name=Schema,proto3" json:"Schema,omitempty"` } -func (m *QueryAllNymResponse) Reset() { *m = QueryAllNymResponse{} } -func (m *QueryAllNymResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllNymResponse) ProtoMessage() {} -func (*QueryAllNymResponse) Descriptor() ([]byte, []int) { +func (m *QueryGetSchemaResponse) Reset() { *m = QueryGetSchemaResponse{} } +func (m *QueryGetSchemaResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetSchemaResponse) ProtoMessage() {} +func (*QueryGetSchemaResponse) Descriptor() ([]byte, []int) { return fileDescriptor_bf3698559b3858f5, []int{3} } -func (m *QueryAllNymResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryGetSchemaResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetSchemaResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetSchemaResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetSchemaResponse.Merge(m, src) +} +func (m *QueryGetSchemaResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryGetSchemaResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetSchemaResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetSchemaResponse proto.InternalMessageInfo + +func (m *QueryGetSchemaResponse) GetSchema() *Schema { + if m != nil { + return m.Schema + } + return nil +} + +type QueryGetAttribRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *QueryGetAttribRequest) Reset() { *m = QueryGetAttribRequest{} } +func (m *QueryGetAttribRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetAttribRequest) ProtoMessage() {} +func (*QueryGetAttribRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_bf3698559b3858f5, []int{4} +} +func (m *QueryGetAttribRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetAttribRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetAttribRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetAttribRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetAttribRequest.Merge(m, src) +} +func (m *QueryGetAttribRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryGetAttribRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetAttribRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetAttribRequest proto.InternalMessageInfo + +func (m *QueryGetAttribRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type QueryGetAttribResponse struct { + Attrib *Attrib `protobuf:"bytes,1,opt,name=Attrib,proto3" json:"Attrib,omitempty"` +} + +func (m *QueryGetAttribResponse) Reset() { *m = QueryGetAttribResponse{} } +func (m *QueryGetAttribResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetAttribResponse) ProtoMessage() {} +func (*QueryGetAttribResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_bf3698559b3858f5, []int{5} +} +func (m *QueryGetAttribResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryGetAttribResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllNymResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryGetAttribResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -188,68 +275,159 @@ func (m *QueryAllNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *QueryAllNymResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllNymResponse.Merge(m, src) +func (m *QueryGetAttribResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetAttribResponse.Merge(m, src) } -func (m *QueryAllNymResponse) XXX_Size() int { +func (m *QueryGetAttribResponse) XXX_Size() int { return m.Size() } -func (m *QueryAllNymResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllNymResponse.DiscardUnknown(m) +func (m *QueryGetAttribResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetAttribResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllNymResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryGetAttribResponse proto.InternalMessageInfo -func (m *QueryAllNymResponse) GetNym() []*Nym { +func (m *QueryGetAttribResponse) GetAttrib() *Attrib { if m != nil { - return m.Nym + return m.Attrib } return nil } -func (m *QueryAllNymResponse) GetPagination() *query.PageResponse { +type QueryGetDidRequest struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *QueryGetDidRequest) Reset() { *m = QueryGetDidRequest{} } +func (m *QueryGetDidRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetDidRequest) ProtoMessage() {} +func (*QueryGetDidRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_bf3698559b3858f5, []int{6} +} +func (m *QueryGetDidRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetDidRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetDidRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetDidRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetDidRequest.Merge(m, src) +} +func (m *QueryGetDidRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryGetDidRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetDidRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetDidRequest proto.InternalMessageInfo + +func (m *QueryGetDidRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type QueryGetDidResponse struct { + Did *Did `protobuf:"bytes,1,opt,name=Did,proto3" json:"Did,omitempty"` +} + +func (m *QueryGetDidResponse) Reset() { *m = QueryGetDidResponse{} } +func (m *QueryGetDidResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetDidResponse) ProtoMessage() {} +func (*QueryGetDidResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_bf3698559b3858f5, []int{7} +} +func (m *QueryGetDidResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetDidResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetDidResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetDidResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetDidResponse.Merge(m, src) +} +func (m *QueryGetDidResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryGetDidResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetDidResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetDidResponse proto.InternalMessageInfo + +func (m *QueryGetDidResponse) GetDid() *Did { if m != nil { - return m.Pagination + return m.Did } return nil } func init() { - proto.RegisterType((*QueryGetNymRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetNymRequest") - proto.RegisterType((*QueryGetNymResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetNymResponse") - proto.RegisterType((*QueryAllNymRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryAllNymRequest") - proto.RegisterType((*QueryAllNymResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryAllNymResponse") + proto.RegisterType((*QueryGetCredDefRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetCredDefRequest") + proto.RegisterType((*QueryGetCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetCredDefResponse") + proto.RegisterType((*QueryGetSchemaRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetSchemaRequest") + proto.RegisterType((*QueryGetSchemaResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetSchemaResponse") + proto.RegisterType((*QueryGetAttribRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetAttribRequest") + proto.RegisterType((*QueryGetAttribResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetAttribResponse") + proto.RegisterType((*QueryGetDidRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetDidRequest") + proto.RegisterType((*QueryGetDidResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetDidResponse") } func init() { proto.RegisterFile("cheqd/query.proto", fileDescriptor_bf3698559b3858f5) } var fileDescriptor_bf3698559b3858f5 = []byte{ - // 398 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x4b, 0xe3, 0x40, - 0x18, 0xc6, 0x3b, 0xe9, 0x6e, 0x0f, 0xb3, 0xb0, 0xcb, 0xce, 0xc2, 0x6e, 0xe9, 0x76, 0xc3, 0x92, - 0x5d, 0xfc, 0xef, 0x0c, 0xad, 0x9f, 0xa0, 0x8a, 0xf6, 0x56, 0xb4, 0x47, 0xf1, 0x92, 0x34, 0x43, - 0x3a, 0x90, 0xcc, 0xa4, 0x9d, 0xa9, 0x18, 0xc4, 0x8b, 0xe2, 0x55, 0x04, 0xf1, 0x3b, 0x79, 0x2c, - 0x78, 0xf1, 0x28, 0xad, 0x1f, 0x44, 0x32, 0x13, 0x31, 0x51, 0x4b, 0x7b, 0x49, 0xc2, 0xcb, 0xf3, - 0xbc, 0xcf, 0xef, 0x7d, 0xdf, 0xc0, 0xef, 0xbd, 0x3e, 0x1d, 0xf8, 0x64, 0x30, 0xa2, 0xc3, 0x04, - 0xc7, 0x43, 0xa1, 0x04, 0xfa, 0xa5, 0x4b, 0xcc, 0xc7, 0xfa, 0xcd, 0x85, 0x4f, 0xcd, 0x57, 0xad, - 0x1e, 0x08, 0x11, 0x84, 0x94, 0xb8, 0x31, 0x23, 0x2e, 0xe7, 0x42, 0xb9, 0x8a, 0x09, 0x2e, 0x8d, - 0xad, 0xb6, 0xd6, 0x13, 0x32, 0x12, 0x92, 0x78, 0xae, 0xa4, 0xa6, 0x1f, 0x39, 0x6e, 0x78, 0x54, - 0xb9, 0x0d, 0x12, 0xbb, 0x01, 0xe3, 0x5a, 0x9c, 0x69, 0xbf, 0x99, 0x54, 0x9e, 0x44, 0xa6, 0xe0, - 0xfc, 0x87, 0xe8, 0x20, 0xb5, 0xb4, 0xa9, 0xea, 0x24, 0x51, 0x97, 0x0e, 0x46, 0x54, 0x2a, 0xf4, - 0x15, 0x5a, 0xcc, 0xaf, 0x82, 0xbf, 0x60, 0xe5, 0x53, 0xd7, 0x62, 0xbe, 0xb3, 0x0b, 0x7f, 0x14, - 0x54, 0x32, 0x16, 0x5c, 0x52, 0x84, 0x61, 0xb9, 0x93, 0x44, 0x5a, 0xf7, 0xa5, 0x59, 0xc7, 0x33, - 0xf0, 0x71, 0x6a, 0x49, 0x85, 0xce, 0x51, 0x16, 0xd6, 0x0a, 0xc3, 0x5c, 0xd8, 0x1e, 0x84, 0xaf, - 0x9c, 0x59, 0xb3, 0x25, 0x6c, 0x86, 0xc2, 0xe9, 0x50, 0xd8, 0x2c, 0x29, 0x1b, 0x0a, 0xef, 0xbb, - 0x01, 0xcd, 0xbc, 0xdd, 0x9c, 0xd3, 0xb9, 0x02, 0x19, 0xe5, 0x4b, 0xfb, 0xb7, 0x94, 0xe5, 0x85, - 0x28, 0x51, 0xbb, 0xc0, 0x63, 0x69, 0x9e, 0xe5, 0xb9, 0x3c, 0x26, 0x2c, 0x0f, 0xd4, 0xbc, 0xb5, - 0xe0, 0x67, 0x0d, 0x84, 0x2e, 0x81, 0x66, 0x40, 0xeb, 0x33, 0xd3, 0xdf, 0x1f, 0xa1, 0xb6, 0xb1, - 0x98, 0xd8, 0x04, 0x3b, 0xff, 0xce, 0xef, 0x9f, 0x6e, 0xac, 0x3f, 0xe8, 0x37, 0x31, 0x27, 0xce, - 0x3f, 0x79, 0x12, 0x91, 0x53, 0xe6, 0x9f, 0xa1, 0x0b, 0x00, 0x2b, 0x9d, 0x24, 0x6a, 0x85, 0xe1, - 0x3c, 0x94, 0xc2, 0x89, 0xe6, 0xa1, 0x14, 0x17, 0xee, 0xd8, 0x1a, 0xa5, 0x8a, 0x7e, 0x7e, 0x8c, - 0xb2, 0xbd, 0x73, 0x37, 0xb1, 0xc1, 0x78, 0x62, 0x83, 0xc7, 0x89, 0x0d, 0xae, 0xa7, 0x76, 0x69, - 0x3c, 0xb5, 0x4b, 0x0f, 0x53, 0xbb, 0x74, 0xb8, 0x1a, 0x30, 0xd5, 0x1f, 0x79, 0xb8, 0x27, 0xa2, - 0xbc, 0x6b, 0x33, 0x0d, 0x24, 0x27, 0x59, 0x49, 0x25, 0x31, 0x95, 0x5e, 0x45, 0xff, 0xbf, 0x5b, - 0xcf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x2d, 0xd8, 0x3e, 0x60, 0x48, 0x03, 0x00, 0x00, + // 486 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xc1, 0x6b, 0x14, 0x31, + 0x18, 0xc5, 0x37, 0xab, 0x56, 0x4c, 0x41, 0x31, 0x45, 0x2b, 0x43, 0x99, 0xd6, 0xb1, 0xd2, 0xda, + 0xea, 0xc4, 0xae, 0x07, 0xc1, 0x9b, 0x76, 0xc5, 0x73, 0x2b, 0x5e, 0xbc, 0x65, 0x26, 0x71, 0x37, + 0xe0, 0x4e, 0x66, 0x37, 0x59, 0xb1, 0x88, 0x17, 0x6f, 0xde, 0x04, 0xf1, 0xe0, 0x7f, 0xe4, 0xb1, + 0xe0, 0xc5, 0x9b, 0xb2, 0xeb, 0x1f, 0x22, 0x93, 0x7c, 0x71, 0x3a, 0x68, 0x98, 0x39, 0xed, 0xf2, + 0x78, 0xef, 0x7b, 0x3f, 0x92, 0x2f, 0x83, 0xaf, 0xe6, 0x63, 0x31, 0xe5, 0x74, 0x3a, 0x17, 0xb3, + 0x93, 0xb4, 0x9c, 0x29, 0xa3, 0xc8, 0xba, 0x95, 0x24, 0x4f, 0xed, 0x6f, 0xa1, 0xb8, 0x70, 0xff, + 0xa2, 0x8d, 0x91, 0x52, 0xa3, 0xd7, 0x82, 0xb2, 0x52, 0x52, 0x56, 0x14, 0xca, 0x30, 0x23, 0x55, + 0xa1, 0x5d, 0x2c, 0xda, 0xcb, 0x95, 0x9e, 0x28, 0x4d, 0x33, 0xa6, 0x85, 0x9b, 0x47, 0xdf, 0x1c, + 0x64, 0xc2, 0xb0, 0x03, 0x5a, 0xb2, 0x91, 0x2c, 0xac, 0x19, 0xbc, 0x6b, 0xae, 0x35, 0x9f, 0x09, + 0x3e, 0x14, 0xaf, 0x40, 0x24, 0x4e, 0xd4, 0xf9, 0x58, 0x4c, 0x58, 0x53, 0x63, 0xc6, 0xcc, 0x64, + 0x06, 0xda, 0x15, 0xa7, 0x55, 0x84, 0x56, 0x48, 0x76, 0xf1, 0xf5, 0xa3, 0xaa, 0xef, 0x99, 0x30, + 0x87, 0x6e, 0xe2, 0xb1, 0x98, 0xce, 0x85, 0x36, 0xe4, 0x32, 0xee, 0x4b, 0x7e, 0x03, 0x6d, 0xa1, + 0xdd, 0x4b, 0xc7, 0x7d, 0xc9, 0x93, 0x17, 0x78, 0xfd, 0x1f, 0xa7, 0x2e, 0x55, 0xa1, 0x05, 0x79, + 0x84, 0x2f, 0x82, 0x64, 0xfd, 0xab, 0x83, 0xad, 0x34, 0x70, 0x0e, 0xa9, 0x8f, 0xfa, 0x40, 0xb2, + 0x83, 0xaf, 0xf9, 0xb1, 0xcf, 0x2d, 0x7d, 0xa8, 0xff, 0xa8, 0x26, 0xf5, 0x46, 0xa8, 0x7f, 0x88, + 0x57, 0x9c, 0x02, 0xed, 0x9b, 0xc1, 0x76, 0x08, 0x82, 0xfd, 0x6c, 0xf7, 0x63, 0x7b, 0x4a, 0x1d, + 0xba, 0xbd, 0xb1, 0xee, 0x76, 0x4a, 0x6b, 0x37, 0x04, 0xc1, 0x9e, 0x6c, 0x63, 0xe2, 0x47, 0x0e, + 0x25, 0x0f, 0x15, 0x3f, 0xc5, 0x6b, 0x0d, 0x17, 0xb4, 0xa6, 0xf8, 0xdc, 0x10, 0x7c, 0xab, 0x83, + 0x8d, 0x60, 0x65, 0x15, 0xa9, 0x8c, 0x83, 0x9f, 0xe7, 0xf1, 0x05, 0x3b, 0x87, 0x7c, 0x45, 0x7f, + 0xef, 0x8a, 0xd0, 0x60, 0xf0, 0xff, 0x2b, 0x11, 0xdd, 0xef, 0x1e, 0x70, 0xa0, 0xc9, 0xfe, 0x87, + 0xef, 0xbf, 0x3f, 0xf7, 0x6f, 0x93, 0x5b, 0x14, 0xb6, 0xd6, 0xe7, 0x68, 0x63, 0x8b, 0xe9, 0x3b, + 0xc9, 0xdf, 0x93, 0x2f, 0xc8, 0x5f, 0x24, 0x49, 0x5b, 0x9b, 0x1a, 0xcb, 0x12, 0xd1, 0xce, 0x7e, + 0x00, 0xdb, 0xb3, 0x60, 0xdb, 0x24, 0x09, 0x80, 0xb9, 0x97, 0x54, 0x73, 0xb9, 0x5b, 0xeb, 0xc0, + 0xd5, 0x58, 0xa4, 0x0e, 0x5c, 0xcd, 0x7d, 0x6a, 0xe5, 0x72, 0xaf, 0xd9, 0x71, 0x7d, 0x44, 0x76, + 0x0d, 0xc8, 0x7e, 0x6b, 0x49, 0xbd, 0x61, 0xd1, 0xdd, 0x6e, 0x66, 0xc0, 0xd9, 0xb1, 0x38, 0x37, + 0xc9, 0x66, 0x00, 0x87, 0x4b, 0x6e, 0x59, 0x9e, 0x1c, 0x7e, 0x5b, 0xc4, 0xe8, 0x74, 0x11, 0xa3, + 0x5f, 0x8b, 0x18, 0x7d, 0x5a, 0xc6, 0xbd, 0xd3, 0x65, 0xdc, 0xfb, 0xb1, 0x8c, 0x7b, 0x2f, 0xef, + 0x8c, 0xa4, 0x19, 0xcf, 0xb3, 0x34, 0x57, 0x93, 0xb3, 0x43, 0xee, 0xd9, 0x29, 0x6f, 0x41, 0x32, + 0x27, 0xa5, 0xd0, 0xd9, 0x8a, 0xfd, 0x26, 0x3d, 0xf8, 0x13, 0x00, 0x00, 0xff, 0xff, 0x13, 0x97, + 0x79, 0x6f, 0x59, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -265,8 +443,10 @@ const _ = grpc.SupportPackageIsVersion4 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { // this line is used by starport scaffolding # 2 - Nym(ctx context.Context, in *QueryGetNymRequest, opts ...grpc.CallOption) (*QueryGetNymResponse, error) - NymAll(ctx context.Context, in *QueryAllNymRequest, opts ...grpc.CallOption) (*QueryAllNymResponse, error) + CredDef(ctx context.Context, in *QueryGetCredDefRequest, opts ...grpc.CallOption) (*QueryGetCredDefResponse, error) + Schema(ctx context.Context, in *QueryGetSchemaRequest, opts ...grpc.CallOption) (*QueryGetSchemaResponse, error) + Attrib(ctx context.Context, in *QueryGetAttribRequest, opts ...grpc.CallOption) (*QueryGetAttribResponse, error) + Did(ctx context.Context, in *QueryGetDidRequest, opts ...grpc.CallOption) (*QueryGetDidResponse, error) } type queryClient struct { @@ -277,18 +457,36 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } -func (c *queryClient) Nym(ctx context.Context, in *QueryGetNymRequest, opts ...grpc.CallOption) (*QueryGetNymResponse, error) { - out := new(QueryGetNymResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/Nym", in, out, opts...) +func (c *queryClient) CredDef(ctx context.Context, in *QueryGetCredDefRequest, opts ...grpc.CallOption) (*QueryGetCredDefResponse, error) { + out := new(QueryGetCredDefResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/CredDef", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Schema(ctx context.Context, in *QueryGetSchemaRequest, opts ...grpc.CallOption) (*QueryGetSchemaResponse, error) { + out := new(QueryGetSchemaResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/Schema", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Attrib(ctx context.Context, in *QueryGetAttribRequest, opts ...grpc.CallOption) (*QueryGetAttribResponse, error) { + out := new(QueryGetAttribResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/Attrib", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *queryClient) NymAll(ctx context.Context, in *QueryAllNymRequest, opts ...grpc.CallOption) (*QueryAllNymResponse, error) { - out := new(QueryAllNymResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/NymAll", in, out, opts...) +func (c *queryClient) Did(ctx context.Context, in *QueryGetDidRequest, opts ...grpc.CallOption) (*QueryGetDidResponse, error) { + out := new(QueryGetDidResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/Did", in, out, opts...) if err != nil { return nil, err } @@ -298,57 +496,101 @@ func (c *queryClient) NymAll(ctx context.Context, in *QueryAllNymRequest, opts . // QueryServer is the server API for Query service. type QueryServer interface { // this line is used by starport scaffolding # 2 - Nym(context.Context, *QueryGetNymRequest) (*QueryGetNymResponse, error) - NymAll(context.Context, *QueryAllNymRequest) (*QueryAllNymResponse, error) + CredDef(context.Context, *QueryGetCredDefRequest) (*QueryGetCredDefResponse, error) + Schema(context.Context, *QueryGetSchemaRequest) (*QueryGetSchemaResponse, error) + Attrib(context.Context, *QueryGetAttribRequest) (*QueryGetAttribResponse, error) + Did(context.Context, *QueryGetDidRequest) (*QueryGetDidResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. type UnimplementedQueryServer struct { } -func (*UnimplementedQueryServer) Nym(ctx context.Context, req *QueryGetNymRequest) (*QueryGetNymResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Nym not implemented") +func (*UnimplementedQueryServer) CredDef(ctx context.Context, req *QueryGetCredDefRequest) (*QueryGetCredDefResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CredDef not implemented") +} +func (*UnimplementedQueryServer) Schema(ctx context.Context, req *QueryGetSchemaRequest) (*QueryGetSchemaResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Schema not implemented") } -func (*UnimplementedQueryServer) NymAll(ctx context.Context, req *QueryAllNymRequest) (*QueryAllNymResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method NymAll not implemented") +func (*UnimplementedQueryServer) Attrib(ctx context.Context, req *QueryGetAttribRequest) (*QueryGetAttribResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Attrib not implemented") +} +func (*UnimplementedQueryServer) Did(ctx context.Context, req *QueryGetDidRequest) (*QueryGetDidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Did not implemented") } func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) } -func _Query_Nym_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetNymRequest) +func _Query_CredDef_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetCredDefRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CredDef(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cheqdid.cheqdnode.cheqd.Query/CredDef", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CredDef(ctx, req.(*QueryGetCredDefRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Schema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetSchemaRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).Nym(ctx, in) + return srv.(QueryServer).Schema(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Query/Nym", + FullMethod: "/cheqdid.cheqdnode.cheqd.Query/Schema", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Nym(ctx, req.(*QueryGetNymRequest)) + return srv.(QueryServer).Schema(ctx, req.(*QueryGetSchemaRequest)) } return interceptor(ctx, in, info, handler) } -func _Query_NymAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllNymRequest) +func _Query_Attrib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetAttribRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).NymAll(ctx, in) + return srv.(QueryServer).Attrib(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Query/NymAll", + FullMethod: "/cheqdid.cheqdnode.cheqd.Query/Attrib", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).NymAll(ctx, req.(*QueryAllNymRequest)) + return srv.(QueryServer).Attrib(ctx, req.(*QueryGetAttribRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Did_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetDidRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Did(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cheqdid.cheqdnode.cheqd.Query/Did", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Did(ctx, req.(*QueryGetDidRequest)) } return interceptor(ctx, in, info, handler) } @@ -358,19 +600,27 @@ var _Query_serviceDesc = grpc.ServiceDesc{ HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "Nym", - Handler: _Query_Nym_Handler, + MethodName: "CredDef", + Handler: _Query_CredDef_Handler, + }, + { + MethodName: "Schema", + Handler: _Query_Schema_Handler, + }, + { + MethodName: "Attrib", + Handler: _Query_Attrib_Handler, }, { - MethodName: "NymAll", - Handler: _Query_NymAll_Handler, + MethodName: "Did", + Handler: _Query_Did_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "cheqd/query.proto", } -func (m *QueryGetNymRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryGetCredDefRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -380,25 +630,27 @@ func (m *QueryGetNymRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryGetNymRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetCredDefRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetNymRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetCredDefRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Id != 0 { - i = encodeVarintQuery(dAtA, i, uint64(m.Id)) + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Id))) i-- - dAtA[i] = 0x8 + dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *QueryGetNymResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryGetCredDefResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -408,19 +660,19 @@ func (m *QueryGetNymResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryGetNymResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetCredDefResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetNymResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetCredDefResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Nym != nil { + if m.CredDef != nil { { - size, err := m.Nym.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.CredDef.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -433,7 +685,37 @@ func (m *QueryGetNymResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryAllNymRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryGetSchemaRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryGetSchemaRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryGetSchemaResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -443,19 +725,19 @@ func (m *QueryAllNymRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryAllNymRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetSchemaResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllNymRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Pagination != nil { + if m.Schema != nil { { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Schema.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -468,7 +750,37 @@ func (m *QueryAllNymRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryAllNymResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryGetAttribRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryGetAttribRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetAttribRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryGetAttribResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -478,19 +790,19 @@ func (m *QueryAllNymResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryAllNymResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetAttribResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllNymResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetAttribResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Pagination != nil { + if m.Attrib != nil { { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Attrib.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -498,21 +810,72 @@ func (m *QueryAllNymResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintQuery(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 - } - if len(m.Nym) > 0 { - for iNdEx := len(m.Nym) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Nym[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryGetDidRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryGetDidRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetDidRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryGetDidResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryGetDidResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetDidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Did != nil { + { + size, err := m.Did.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } - i-- - dAtA[i] = 0xa + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -528,58 +891,105 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *QueryGetNymRequest) Size() (n int) { +func (m *QueryGetCredDefRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Id != 0 { - n += 1 + sovQuery(uint64(m.Id)) + l = len(m.Id) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryGetNymResponse) Size() (n int) { +func (m *QueryGetCredDefResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Nym != nil { - l = m.Nym.Size() + if m.CredDef != nil { + l = m.CredDef.Size() n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryAllNymRequest) Size() (n int) { +func (m *QueryGetSchemaRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Pagination != nil { - l = m.Pagination.Size() + l = len(m.Id) + if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryAllNymResponse) Size() (n int) { +func (m *QueryGetSchemaResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.Nym) > 0 { - for _, e := range m.Nym { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } + if m.Schema != nil { + l = m.Schema.Size() + n += 1 + l + sovQuery(uint64(l)) } - if m.Pagination != nil { - l = m.Pagination.Size() + return n +} + +func (m *QueryGetAttribRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetAttribResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Attrib != nil { + l = m.Attrib.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetDidRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetDidResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Did != nil { + l = m.Did.Size() n += 1 + l + sovQuery(uint64(l)) } return n @@ -591,7 +1001,7 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *QueryGetNymRequest) Unmarshal(dAtA []byte) error { +func (m *QueryGetCredDefRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -614,17 +1024,17 @@ func (m *QueryGetNymRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryGetNymRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryGetCredDefRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetNymRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryGetCredDefRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { + if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - m.Id = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -634,11 +1044,24 @@ func (m *QueryGetNymRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Id |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -660,7 +1083,7 @@ func (m *QueryGetNymRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryGetNymResponse) Unmarshal(dAtA []byte) error { +func (m *QueryGetCredDefResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -683,15 +1106,15 @@ func (m *QueryGetNymResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryGetNymResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryGetCredDefResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetNymResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryGetCredDefResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Nym", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CredDef", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -718,10 +1141,10 @@ func (m *QueryGetNymResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Nym == nil { - m.Nym = &Nym{} + if m.CredDef == nil { + m.CredDef = &CredDef{} } - if err := m.Nym.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.CredDef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -746,7 +1169,7 @@ func (m *QueryGetNymResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllNymRequest) Unmarshal(dAtA []byte) error { +func (m *QueryGetSchemaRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -769,15 +1192,97 @@ func (m *QueryAllNymRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllNymRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryGetSchemaRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllNymRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryGetSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetSchemaResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetSchemaResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -804,10 +1309,10 @@ func (m *QueryAllNymRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageRequest{} + if m.Schema == nil { + m.Schema = &Schema{} } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Schema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -832,7 +1337,7 @@ func (m *QueryAllNymRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllNymResponse) Unmarshal(dAtA []byte) error { +func (m *QueryGetAttribRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -855,15 +1360,97 @@ func (m *QueryAllNymResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllNymResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryGetAttribRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllNymResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryGetAttribRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Nym", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetAttribResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetAttribResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetAttribResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Attrib", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -890,14 +1477,148 @@ func (m *QueryAllNymResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Nym = append(m.Nym, &Nym{}) - if err := m.Nym[len(m.Nym)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Attrib == nil { + m.Attrib = &Attrib{} + } + if err := m.Attrib.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetDidRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetDidRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetDidRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetDidResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetDidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetDidResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -924,10 +1645,10 @@ func (m *QueryAllNymResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Pagination == nil { - m.Pagination = &query.PageResponse{} + if m.Did == nil { + m.Did = &Did{} } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Did.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/cheqd/types/query.pb.gw.go b/x/cheqd/types/query.pb.gw.go index c33151e80..ad14e20ec 100644 --- a/x/cheqd/types/query.pb.gw.go +++ b/x/cheqd/types/query.pb.gw.go @@ -33,8 +33,8 @@ var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage var _ = metadata.Join -func request_Query_Nym_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetNymRequest +func request_Query_CredDef_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetCredDefRequest var metadata runtime.ServerMetadata var ( @@ -49,19 +49,19 @@ func request_Query_Nym_0(ctx context.Context, marshaler runtime.Marshaler, clien return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - protoReq.Id, err = runtime.Uint64(val) + protoReq.Id, err = runtime.String(val) if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.Nym(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CredDef(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_Nym_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetNymRequest +func local_request_Query_CredDef_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetCredDefRequest var metadata runtime.ServerMetadata var ( @@ -76,49 +76,175 @@ func local_request_Query_Nym_0(ctx context.Context, marshaler runtime.Marshaler, return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - protoReq.Id, err = runtime.Uint64(val) + protoReq.Id, err = runtime.String(val) if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := server.Nym(ctx, &protoReq) + msg, err := server.CredDef(ctx, &protoReq) return msg, metadata, err } -var ( - filter_Query_NymAll_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) +func request_Query_Schema_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetSchemaRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.Schema(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Schema_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetSchemaRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.Schema(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_Attrib_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetAttribRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) -func request_Query_NymAll_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllNymRequest + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.Attrib(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Attrib_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetAttribRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_NymAll_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.NymAll(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.Attrib(ctx, &protoReq) return msg, metadata, err } -func local_request_Query_NymAll_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllNymRequest +func request_Query_Did_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetDidRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_NymAll_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := server.NymAll(ctx, &protoReq) + msg, err := client.Did(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Did_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetDidRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.Did(ctx, &protoReq) return msg, metadata, err } @@ -129,7 +255,30 @@ func local_request_Query_NymAll_0(ctx context.Context, marshaler runtime.Marshal // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { - mux.Handle("GET", pattern_Query_Nym_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_CredDef_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_CredDef_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_CredDef_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Schema_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -140,7 +289,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_Nym_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_Schema_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -148,11 +297,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_Nym_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_Schema_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_NymAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_Attrib_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -163,7 +312,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_NymAll_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_Attrib_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -171,7 +320,30 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_NymAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_Attrib_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Did_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Did_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Did_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -216,7 +388,7 @@ func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // "QueryClient" to call the correct interceptors. func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { - mux.Handle("GET", pattern_Query_Nym_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_CredDef_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -225,18 +397,18 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_Nym_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_CredDef_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_Nym_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_CredDef_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_NymAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_Schema_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -245,14 +417,54 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_NymAll_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_Schema_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_NymAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_Schema_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Attrib_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Attrib_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Attrib_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Did_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Did_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Did_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -260,13 +472,21 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_Nym_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 0, 2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"cheqd", "nym", "id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_CredDef_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "credDef", "id"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Query_Schema_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "schema", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_NymAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 0, 2, 0, 2, 1}, []string{"cheqd", "nym"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_Attrib_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "attrib", "id"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Query_Did_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "did", "id"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( - forward_Query_Nym_0 = runtime.ForwardResponseMessage + forward_Query_CredDef_0 = runtime.ForwardResponseMessage + + forward_Query_Schema_0 = runtime.ForwardResponseMessage + + forward_Query_Attrib_0 = runtime.ForwardResponseMessage - forward_Query_NymAll_0 = runtime.ForwardResponseMessage + forward_Query_Did_0 = runtime.ForwardResponseMessage ) diff --git a/x/cheqd/types/schema.pb.go b/x/cheqd/types/schema.pb.go new file mode 100644 index 000000000..282ed0719 --- /dev/null +++ b/x/cheqd/types/schema.pb.go @@ -0,0 +1,472 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cheqd/schema.proto + +package types + +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type Schema struct { + Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + AttrNames string `protobuf:"bytes,4,opt,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` +} + +func (m *Schema) Reset() { *m = Schema{} } +func (m *Schema) String() string { return proto.CompactTextString(m) } +func (*Schema) ProtoMessage() {} +func (*Schema) Descriptor() ([]byte, []int) { + return fileDescriptor_96d8c360e747a40a, []int{0} +} +func (m *Schema) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Schema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Schema.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Schema) XXX_Merge(src proto.Message) { + xxx_messageInfo_Schema.Merge(m, src) +} +func (m *Schema) XXX_Size() int { + return m.Size() +} +func (m *Schema) XXX_DiscardUnknown() { + xxx_messageInfo_Schema.DiscardUnknown(m) +} + +var xxx_messageInfo_Schema proto.InternalMessageInfo + +func (m *Schema) GetAuthor() string { + if m != nil { + return m.Author + } + return "" +} + +func (m *Schema) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Schema) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *Schema) GetAttrNames() string { + if m != nil { + return m.AttrNames + } + return "" +} + +func init() { + proto.RegisterType((*Schema)(nil), "cheqdid.cheqdnode.cheqd.Schema") +} + +func init() { proto.RegisterFile("cheqd/schema.proto", fileDescriptor_96d8c360e747a40a) } + +var fileDescriptor_96d8c360e747a40a = []byte{ + // 210 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, + 0x4c, 0xd1, 0x2f, 0x4e, 0xce, 0x48, 0xcd, 0x4d, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, + 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, + 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xca, 0xe5, 0x62, 0x0b, 0x06, 0x6b, + 0x17, 0x12, 0xe3, 0x62, 0x4b, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0x92, 0x60, 0x54, 0x60, 0xd4, 0xe0, + 0x0c, 0x82, 0xf2, 0x84, 0x84, 0xb8, 0x58, 0xf2, 0x12, 0x73, 0x53, 0x25, 0x98, 0xc0, 0xa2, 0x60, + 0xb6, 0x90, 0x04, 0x17, 0x7b, 0x59, 0x6a, 0x51, 0x71, 0x66, 0x7e, 0x9e, 0x04, 0x33, 0x58, 0x18, + 0xc6, 0x15, 0x92, 0xe5, 0xe2, 0x4a, 0x2c, 0x29, 0x29, 0x8a, 0x07, 0x29, 0x2b, 0x96, 0x60, 0x01, + 0x4b, 0x72, 0x82, 0x44, 0xfc, 0x40, 0x02, 0x4e, 0xce, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, + 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, + 0x2c, 0xc7, 0x10, 0xa5, 0x99, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, + 0xf1, 0x16, 0x98, 0xd4, 0x05, 0xf9, 0x40, 0xbf, 0x02, 0x2a, 0x54, 0x52, 0x59, 0x90, 0x5a, 0x9c, + 0xc4, 0x06, 0x76, 0xba, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x64, 0x83, 0x16, 0xff, 0x00, + 0x00, 0x00, +} + +func (m *Schema) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Schema) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AttrNames) > 0 { + i -= len(m.AttrNames) + copy(dAtA[i:], m.AttrNames) + i = encodeVarintSchema(dAtA, i, uint64(len(m.AttrNames))) + i-- + dAtA[i] = 0x22 + } + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintSchema(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x1a + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintSchema(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0x12 + } + if len(m.Author) > 0 { + i -= len(m.Author) + copy(dAtA[i:], m.Author) + i = encodeVarintSchema(dAtA, i, uint64(len(m.Author))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintSchema(dAtA []byte, offset int, v uint64) int { + offset -= sovSchema(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Schema) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Author) + if l > 0 { + n += 1 + l + sovSchema(uint64(l)) + } + l = len(m.Name) + if l > 0 { + n += 1 + l + sovSchema(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovSchema(uint64(l)) + } + l = len(m.AttrNames) + if l > 0 { + n += 1 + l + sovSchema(uint64(l)) + } + return n +} + +func sovSchema(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozSchema(x uint64) (n int) { + return sovSchema(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Schema) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSchema + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Schema: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Schema: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Author", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSchema + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSchema + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSchema + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Author = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSchema + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSchema + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSchema + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSchema + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSchema + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSchema + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AttrNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSchema + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSchema + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSchema + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AttrNames = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSchema(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthSchema + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipSchema(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSchema + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSchema + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSchema + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthSchema + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupSchema + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthSchema + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthSchema = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowSchema = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupSchema = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 9d70276dd..ea755e233 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -6,6 +6,7 @@ package types import ( context "context" fmt "fmt" + types "github.com/cosmos/cosmos-sdk/codec/types" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" grpc "google.golang.org/grpc" @@ -28,26 +29,24 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // this line is used by starport scaffolding # proto/tx/message -type MsgCreateNym struct { - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"` - Verkey string `protobuf:"bytes,3,opt,name=verkey,proto3" json:"verkey,omitempty"` - Did string `protobuf:"bytes,4,opt,name=did,proto3" json:"did,omitempty"` - Role string `protobuf:"bytes,5,opt,name=role,proto3" json:"role,omitempty"` -} - -func (m *MsgCreateNym) Reset() { *m = MsgCreateNym{} } -func (m *MsgCreateNym) String() string { return proto.CompactTextString(m) } -func (*MsgCreateNym) ProtoMessage() {} -func (*MsgCreateNym) Descriptor() ([]byte, []int) { +type WriteRequest struct { + Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` + Signature string `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (m *WriteRequest) Reset() { *m = WriteRequest{} } +func (m *WriteRequest) String() string { return proto.CompactTextString(m) } +func (*WriteRequest) ProtoMessage() {} +func (*WriteRequest) Descriptor() ([]byte, []int) { return fileDescriptor_d0277a2196c64ae2, []int{0} } -func (m *MsgCreateNym) XXX_Unmarshal(b []byte) error { +func (m *WriteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgCreateNym) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *WriteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgCreateNym.Marshal(b, m, deterministic) + return xxx_messageInfo_WriteRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -57,69 +56,123 @@ func (m *MsgCreateNym) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *MsgCreateNym) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateNym.Merge(m, src) +func (m *WriteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_WriteRequest.Merge(m, src) } -func (m *MsgCreateNym) XXX_Size() int { +func (m *WriteRequest) XXX_Size() int { return m.Size() } -func (m *MsgCreateNym) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateNym.DiscardUnknown(m) +func (m *WriteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_WriteRequest.DiscardUnknown(m) } -var xxx_messageInfo_MsgCreateNym proto.InternalMessageInfo +var xxx_messageInfo_WriteRequest proto.InternalMessageInfo + +func (m *WriteRequest) GetData() *types.Any { + if m != nil { + return m.Data + } + return nil +} -func (m *MsgCreateNym) GetCreator() string { +func (m *WriteRequest) GetAuthor() string { if m != nil { - return m.Creator + return m.Author } return "" } -func (m *MsgCreateNym) GetAlias() string { +func (m *WriteRequest) GetSignature() string { if m != nil { - return m.Alias + return m.Signature } return "" } -func (m *MsgCreateNym) GetVerkey() string { +type MsgCreateCredDef struct { + SchemaId string `protobuf:"bytes,1,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,3,opt,name=signature_type,json=signatureType,proto3" json:"signature_type,omitempty"` + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *MsgCreateCredDef) Reset() { *m = MsgCreateCredDef{} } +func (m *MsgCreateCredDef) String() string { return proto.CompactTextString(m) } +func (*MsgCreateCredDef) ProtoMessage() {} +func (*MsgCreateCredDef) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{1} +} +func (m *MsgCreateCredDef) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateCredDef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateCredDef.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateCredDef) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateCredDef.Merge(m, src) +} +func (m *MsgCreateCredDef) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateCredDef) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateCredDef.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateCredDef proto.InternalMessageInfo + +func (m *MsgCreateCredDef) GetSchemaId() string { if m != nil { - return m.Verkey + return m.SchemaId } return "" } -func (m *MsgCreateNym) GetDid() string { +func (m *MsgCreateCredDef) GetTag() string { if m != nil { - return m.Did + return m.Tag } return "" } -func (m *MsgCreateNym) GetRole() string { +func (m *MsgCreateCredDef) GetSignatureType() string { if m != nil { - return m.Role + return m.SignatureType } return "" } -type MsgCreateNymResponse struct { - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +func (m *MsgCreateCredDef) GetValue() string { + if m != nil { + return m.Value + } + return "" } -func (m *MsgCreateNymResponse) Reset() { *m = MsgCreateNymResponse{} } -func (m *MsgCreateNymResponse) String() string { return proto.CompactTextString(m) } -func (*MsgCreateNymResponse) ProtoMessage() {} -func (*MsgCreateNymResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{1} +type MsgCreateCredDefResponse struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *MsgCreateNymResponse) XXX_Unmarshal(b []byte) error { + +func (m *MsgCreateCredDefResponse) Reset() { *m = MsgCreateCredDefResponse{} } +func (m *MsgCreateCredDefResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateCredDefResponse) ProtoMessage() {} +func (*MsgCreateCredDefResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{2} +} +func (m *MsgCreateCredDefResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgCreateNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgCreateCredDefResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgCreateNymResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgCreateCredDefResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -129,46 +182,43 @@ func (m *MsgCreateNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte return b[:n], nil } } -func (m *MsgCreateNymResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateNymResponse.Merge(m, src) +func (m *MsgCreateCredDefResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateCredDefResponse.Merge(m, src) } -func (m *MsgCreateNymResponse) XXX_Size() int { +func (m *MsgCreateCredDefResponse) XXX_Size() int { return m.Size() } -func (m *MsgCreateNymResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateNymResponse.DiscardUnknown(m) +func (m *MsgCreateCredDefResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateCredDefResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgCreateNymResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgCreateCredDefResponse proto.InternalMessageInfo -func (m *MsgCreateNymResponse) GetId() uint64 { +func (m *MsgCreateCredDefResponse) GetId() string { if m != nil { return m.Id } - return 0 + return "" } -type MsgUpdateNym struct { - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` - Verkey string `protobuf:"bytes,4,opt,name=verkey,proto3" json:"verkey,omitempty"` - Did string `protobuf:"bytes,5,opt,name=did,proto3" json:"did,omitempty"` - Role string `protobuf:"bytes,6,opt,name=role,proto3" json:"role,omitempty"` +type MsgCreateSchema struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + AttrNames string `protobuf:"bytes,3,opt,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` } -func (m *MsgUpdateNym) Reset() { *m = MsgUpdateNym{} } -func (m *MsgUpdateNym) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNym) ProtoMessage() {} -func (*MsgUpdateNym) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{2} +func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } +func (m *MsgCreateSchema) String() string { return proto.CompactTextString(m) } +func (*MsgCreateSchema) ProtoMessage() {} +func (*MsgCreateSchema) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{3} } -func (m *MsgUpdateNym) XXX_Unmarshal(b []byte) error { +func (m *MsgCreateSchema) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateNym) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgCreateSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateNym.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgCreateSchema.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -178,75 +228,247 @@ func (m *MsgUpdateNym) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *MsgUpdateNym) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNym.Merge(m, src) +func (m *MsgCreateSchema) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateSchema.Merge(m, src) } -func (m *MsgUpdateNym) XXX_Size() int { +func (m *MsgCreateSchema) XXX_Size() int { return m.Size() } -func (m *MsgUpdateNym) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNym.DiscardUnknown(m) +func (m *MsgCreateSchema) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateSchema.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateSchema proto.InternalMessageInfo + +func (m *MsgCreateSchema) GetName() string { + if m != nil { + return m.Name + } + return "" } -var xxx_messageInfo_MsgUpdateNym proto.InternalMessageInfo +func (m *MsgCreateSchema) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} -func (m *MsgUpdateNym) GetCreator() string { +func (m *MsgCreateSchema) GetAttrNames() string { if m != nil { - return m.Creator + return m.AttrNames } return "" } -func (m *MsgUpdateNym) GetId() uint64 { +type MsgCreateSchemaResponse struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *MsgCreateSchemaResponse) Reset() { *m = MsgCreateSchemaResponse{} } +func (m *MsgCreateSchemaResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateSchemaResponse) ProtoMessage() {} +func (*MsgCreateSchemaResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{4} +} +func (m *MsgCreateSchemaResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateSchemaResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateSchemaResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateSchemaResponse.Merge(m, src) +} +func (m *MsgCreateSchemaResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateSchemaResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateSchemaResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateSchemaResponse proto.InternalMessageInfo + +func (m *MsgCreateSchemaResponse) GetId() string { if m != nil { return m.Id } - return 0 + return "" +} + +type MsgCreateAttrib struct { + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Raw string `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` +} + +func (m *MsgCreateAttrib) Reset() { *m = MsgCreateAttrib{} } +func (m *MsgCreateAttrib) String() string { return proto.CompactTextString(m) } +func (*MsgCreateAttrib) ProtoMessage() {} +func (*MsgCreateAttrib) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{5} +} +func (m *MsgCreateAttrib) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateAttrib) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateAttrib.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateAttrib) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateAttrib.Merge(m, src) +} +func (m *MsgCreateAttrib) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateAttrib) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateAttrib.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateAttrib proto.InternalMessageInfo + +func (m *MsgCreateAttrib) GetDid() string { + if m != nil { + return m.Did + } + return "" } -func (m *MsgUpdateNym) GetAlias() string { +func (m *MsgCreateAttrib) GetRaw() string { if m != nil { - return m.Alias + return m.Raw } return "" } -func (m *MsgUpdateNym) GetVerkey() string { +type MsgCreateAttribResponse struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *MsgCreateAttribResponse) Reset() { *m = MsgCreateAttribResponse{} } +func (m *MsgCreateAttribResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateAttribResponse) ProtoMessage() {} +func (*MsgCreateAttribResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{6} +} +func (m *MsgCreateAttribResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateAttribResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateAttribResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateAttribResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateAttribResponse.Merge(m, src) +} +func (m *MsgCreateAttribResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateAttribResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateAttribResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateAttribResponse proto.InternalMessageInfo + +func (m *MsgCreateAttribResponse) GetId() string { if m != nil { - return m.Verkey + return m.Id } return "" } -func (m *MsgUpdateNym) GetDid() string { +type MsgUpdateAttrib struct { + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Raw string `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` +} + +func (m *MsgUpdateAttrib) Reset() { *m = MsgUpdateAttrib{} } +func (m *MsgUpdateAttrib) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateAttrib) ProtoMessage() {} +func (*MsgUpdateAttrib) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{7} +} +func (m *MsgUpdateAttrib) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateAttrib) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateAttrib.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateAttrib) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateAttrib.Merge(m, src) +} +func (m *MsgUpdateAttrib) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateAttrib) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateAttrib.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateAttrib proto.InternalMessageInfo + +func (m *MsgUpdateAttrib) GetDid() string { if m != nil { return m.Did } return "" } -func (m *MsgUpdateNym) GetRole() string { +func (m *MsgUpdateAttrib) GetRaw() string { if m != nil { - return m.Role + return m.Raw } return "" } -type MsgUpdateNymResponse struct { +type MsgUpdateAttribResponse struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *MsgUpdateNymResponse) Reset() { *m = MsgUpdateNymResponse{} } -func (m *MsgUpdateNymResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNymResponse) ProtoMessage() {} -func (*MsgUpdateNymResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{3} +func (m *MsgUpdateAttribResponse) Reset() { *m = MsgUpdateAttribResponse{} } +func (m *MsgUpdateAttribResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateAttribResponse) ProtoMessage() {} +func (*MsgUpdateAttribResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{8} } -func (m *MsgUpdateNymResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateAttribResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateAttribResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateNymResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateAttribResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -256,35 +478,43 @@ func (m *MsgUpdateNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte return b[:n], nil } } -func (m *MsgUpdateNymResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNymResponse.Merge(m, src) +func (m *MsgUpdateAttribResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateAttribResponse.Merge(m, src) } -func (m *MsgUpdateNymResponse) XXX_Size() int { +func (m *MsgUpdateAttribResponse) XXX_Size() int { return m.Size() } -func (m *MsgUpdateNymResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNymResponse.DiscardUnknown(m) +func (m *MsgUpdateAttribResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateAttribResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateNymResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateAttribResponse proto.InternalMessageInfo + +func (m *MsgUpdateAttribResponse) GetId() string { + if m != nil { + return m.Id + } + return "" +} -type MsgDeleteNym struct { - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` +type MsgCreateDid struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Verkey string `protobuf:"bytes,2,opt,name=verkey,proto3" json:"verkey,omitempty"` + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` } -func (m *MsgDeleteNym) Reset() { *m = MsgDeleteNym{} } -func (m *MsgDeleteNym) String() string { return proto.CompactTextString(m) } -func (*MsgDeleteNym) ProtoMessage() {} -func (*MsgDeleteNym) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{4} +func (m *MsgCreateDid) Reset() { *m = MsgCreateDid{} } +func (m *MsgCreateDid) String() string { return proto.CompactTextString(m) } +func (*MsgCreateDid) ProtoMessage() {} +func (*MsgCreateDid) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{9} } -func (m *MsgDeleteNym) XXX_Unmarshal(b []byte) error { +func (m *MsgCreateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgDeleteNym) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgCreateDid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgDeleteNym.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgCreateDid.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -294,47 +524,101 @@ func (m *MsgDeleteNym) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *MsgDeleteNym) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDeleteNym.Merge(m, src) +func (m *MsgCreateDid) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateDid.Merge(m, src) } -func (m *MsgDeleteNym) XXX_Size() int { +func (m *MsgCreateDid) XXX_Size() int { return m.Size() } -func (m *MsgDeleteNym) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDeleteNym.DiscardUnknown(m) +func (m *MsgCreateDid) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateDid.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateDid proto.InternalMessageInfo + +func (m *MsgCreateDid) GetId() string { + if m != nil { + return m.Id + } + return "" } -var xxx_messageInfo_MsgDeleteNym proto.InternalMessageInfo +func (m *MsgCreateDid) GetVerkey() string { + if m != nil { + return m.Verkey + } + return "" +} -func (m *MsgDeleteNym) GetCreator() string { +func (m *MsgCreateDid) GetAlias() string { if m != nil { - return m.Creator + return m.Alias } return "" } -func (m *MsgDeleteNym) GetId() uint64 { +type MsgCreateDidResponse struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *MsgCreateDidResponse) Reset() { *m = MsgCreateDidResponse{} } +func (m *MsgCreateDidResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateDidResponse) ProtoMessage() {} +func (*MsgCreateDidResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{10} +} +func (m *MsgCreateDidResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateDidResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateDidResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateDidResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateDidResponse.Merge(m, src) +} +func (m *MsgCreateDidResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateDidResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateDidResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateDidResponse proto.InternalMessageInfo + +func (m *MsgCreateDidResponse) GetId() string { if m != nil { return m.Id } - return 0 + return "" } -type MsgDeleteNymResponse struct { +type MsgUpdateDid struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Verkey string `protobuf:"bytes,2,opt,name=verkey,proto3" json:"verkey,omitempty"` + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` } -func (m *MsgDeleteNymResponse) Reset() { *m = MsgDeleteNymResponse{} } -func (m *MsgDeleteNymResponse) String() string { return proto.CompactTextString(m) } -func (*MsgDeleteNymResponse) ProtoMessage() {} -func (*MsgDeleteNymResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{5} +func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } +func (m *MsgUpdateDid) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateDid) ProtoMessage() {} +func (*MsgUpdateDid) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{11} } -func (m *MsgDeleteNymResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgDeleteNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateDid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgDeleteNymResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateDid.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -344,53 +628,138 @@ func (m *MsgDeleteNymResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte return b[:n], nil } } -func (m *MsgDeleteNymResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDeleteNymResponse.Merge(m, src) +func (m *MsgUpdateDid) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateDid.Merge(m, src) } -func (m *MsgDeleteNymResponse) XXX_Size() int { +func (m *MsgUpdateDid) XXX_Size() int { return m.Size() } -func (m *MsgDeleteNymResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDeleteNymResponse.DiscardUnknown(m) +func (m *MsgUpdateDid) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateDid.DiscardUnknown(m) } -var xxx_messageInfo_MsgDeleteNymResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateDid proto.InternalMessageInfo + +func (m *MsgUpdateDid) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *MsgUpdateDid) GetVerkey() string { + if m != nil { + return m.Verkey + } + return "" +} + +func (m *MsgUpdateDid) GetAlias() string { + if m != nil { + return m.Alias + } + return "" +} + +type MsgUpdateDidResponse struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *MsgUpdateDidResponse) Reset() { *m = MsgUpdateDidResponse{} } +func (m *MsgUpdateDidResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateDidResponse) ProtoMessage() {} +func (*MsgUpdateDidResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{12} +} +func (m *MsgUpdateDidResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateDidResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateDidResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateDidResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateDidResponse.Merge(m, src) +} +func (m *MsgUpdateDidResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateDidResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateDidResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateDidResponse proto.InternalMessageInfo + +func (m *MsgUpdateDidResponse) GetId() string { + if m != nil { + return m.Id + } + return "" +} func init() { - proto.RegisterType((*MsgCreateNym)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateNym") - proto.RegisterType((*MsgCreateNymResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateNymResponse") - proto.RegisterType((*MsgUpdateNym)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateNym") - proto.RegisterType((*MsgUpdateNymResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateNymResponse") - proto.RegisterType((*MsgDeleteNym)(nil), "cheqdid.cheqdnode.cheqd.MsgDeleteNym") - proto.RegisterType((*MsgDeleteNymResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgDeleteNymResponse") + proto.RegisterType((*WriteRequest)(nil), "cheqdid.cheqdnode.cheqd.WriteRequest") + proto.RegisterType((*MsgCreateCredDef)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDef") + proto.RegisterType((*MsgCreateCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDefResponse") + proto.RegisterType((*MsgCreateSchema)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchema") + proto.RegisterType((*MsgCreateSchemaResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchemaResponse") + proto.RegisterType((*MsgCreateAttrib)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateAttrib") + proto.RegisterType((*MsgCreateAttribResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateAttribResponse") + proto.RegisterType((*MsgUpdateAttrib)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateAttrib") + proto.RegisterType((*MsgUpdateAttribResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateAttribResponse") + proto.RegisterType((*MsgCreateDid)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateDid") + proto.RegisterType((*MsgCreateDidResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateDidResponse") + proto.RegisterType((*MsgUpdateDid)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateDid") + proto.RegisterType((*MsgUpdateDidResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateDidResponse") } func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 348 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4b, 0xce, 0x48, 0x2d, - 0x4c, 0xd1, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0xf3, 0x33, 0x53, - 0xf4, 0xc0, 0x74, 0x5e, 0x7e, 0x4a, 0x2a, 0x84, 0xa5, 0x54, 0xc3, 0xc5, 0xe3, 0x5b, 0x9c, 0xee, - 0x5c, 0x94, 0x9a, 0x58, 0x92, 0xea, 0x57, 0x99, 0x2b, 0x24, 0xc1, 0xc5, 0x9e, 0x0c, 0xe2, 0xe4, - 0x17, 0x49, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0xc1, 0xb8, 0x42, 0x22, 0x5c, 0xac, 0x89, 0x39, - 0x99, 0x89, 0xc5, 0x12, 0x4c, 0x60, 0x71, 0x08, 0x47, 0x48, 0x8c, 0x8b, 0xad, 0x2c, 0xb5, 0x28, - 0x3b, 0xb5, 0x52, 0x82, 0x19, 0x2c, 0x0c, 0xe5, 0x09, 0x09, 0x70, 0x31, 0xa7, 0x64, 0xa6, 0x48, - 0xb0, 0x80, 0x05, 0x41, 0x4c, 0x21, 0x21, 0x2e, 0x96, 0xa2, 0xfc, 0x9c, 0x54, 0x09, 0x56, 0xb0, - 0x10, 0x98, 0xad, 0xa4, 0xc6, 0x25, 0x82, 0x6c, 0x7b, 0x50, 0x6a, 0x71, 0x41, 0x7e, 0x5e, 0x71, - 0xaa, 0x10, 0x1f, 0x17, 0x53, 0x66, 0x0a, 0xd8, 0x01, 0x2c, 0x41, 0x4c, 0x99, 0x29, 0x4a, 0x3d, - 0x8c, 0x60, 0x67, 0x86, 0x16, 0xa4, 0x10, 0x74, 0x26, 0x44, 0x2b, 0x13, 0x4c, 0x2b, 0xc2, 0xd9, - 0xcc, 0xd8, 0x9d, 0xcd, 0x82, 0xcd, 0xd9, 0xac, 0x98, 0xce, 0x66, 0x43, 0x72, 0xb6, 0x18, 0xd8, - 0xd9, 0x70, 0xd7, 0xc0, 0x9c, 0xad, 0x64, 0x01, 0x76, 0xa5, 0x4b, 0x6a, 0x4e, 0x2a, 0x89, 0xae, - 0x84, 0x9a, 0x08, 0xd7, 0x09, 0x33, 0xd1, 0x68, 0x1d, 0x13, 0x17, 0xb3, 0x6f, 0x71, 0xba, 0x50, - 0x22, 0x17, 0x27, 0x22, 0x8e, 0x54, 0xf5, 0x70, 0xc4, 0xa6, 0x1e, 0x72, 0x60, 0x4a, 0xe9, 0x12, - 0xa5, 0x0c, 0x1e, 0xe6, 0x89, 0x5c, 0x9c, 0x88, 0xf0, 0xc5, 0x6b, 0x05, 0x5c, 0x19, 0x7e, 0x2b, - 0x30, 0xc2, 0x07, 0x64, 0x05, 0x22, 0x70, 0xf0, 0x5a, 0x01, 0x57, 0x86, 0xdf, 0x0a, 0x8c, 0x00, - 0x73, 0x72, 0x3e, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, - 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xcd, 0xf4, 0xcc, - 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0x48, 0xee, 0x00, 0x93, 0xba, 0x20, 0x13, - 0xf5, 0x2b, 0xa0, 0x42, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0x4c, 0x63, 0x0c, 0x08, - 0x00, 0x00, 0xff, 0xff, 0xec, 0xc5, 0x32, 0x06, 0x46, 0x03, 0x00, 0x00, + // 550 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xc7, 0xe3, 0x24, 0x14, 0x3c, 0xa4, 0xa1, 0x5a, 0x45, 0xd4, 0x14, 0xb0, 0x2a, 0x4b, 0x45, + 0x29, 0x52, 0x1d, 0x28, 0xe2, 0x01, 0x4a, 0x7a, 0x41, 0xa2, 0x1c, 0x02, 0x08, 0x89, 0x03, 0xd1, + 0x26, 0x3b, 0x75, 0x56, 0x24, 0x76, 0xba, 0x5e, 0xa7, 0xcd, 0x85, 0x67, 0xe0, 0xb1, 0x38, 0xf6, + 0xc8, 0x11, 0x25, 0x4f, 0xc0, 0x1b, 0xa0, 0x5d, 0x7f, 0x24, 0x31, 0x58, 0xa9, 0xaa, 0x5c, 0x92, + 0x99, 0xd9, 0x99, 0xf9, 0x4d, 0x26, 0x7f, 0xaf, 0xa1, 0xde, 0x1f, 0xe0, 0x05, 0x6b, 0xc9, 0x2b, + 0x77, 0x2c, 0x02, 0x19, 0x90, 0x5d, 0xed, 0x73, 0xe6, 0xea, 0x6f, 0x3f, 0x60, 0x18, 0x5b, 0x7b, + 0x8f, 0xbc, 0x20, 0xf0, 0x86, 0xd8, 0xd2, 0x69, 0xbd, 0xe8, 0xbc, 0x45, 0xfd, 0x69, 0x5c, 0xe3, + 0xf8, 0x50, 0xfb, 0x2c, 0xb8, 0xc4, 0x0e, 0x5e, 0x44, 0x18, 0x4a, 0xd2, 0x84, 0x2a, 0xa3, 0x92, + 0x5a, 0xc6, 0xbe, 0xd1, 0xbc, 0x7f, 0xdc, 0x70, 0xe3, 0x4a, 0x37, 0xad, 0x74, 0x4f, 0xfc, 0x69, + 0x47, 0x67, 0x90, 0x87, 0xb0, 0x45, 0x23, 0x39, 0x08, 0x84, 0x55, 0xde, 0x37, 0x9a, 0x66, 0x27, + 0xf1, 0xc8, 0x13, 0x30, 0x43, 0xee, 0xf9, 0x54, 0x46, 0x02, 0xad, 0x8a, 0x3e, 0x5a, 0x04, 0x9c, + 0xef, 0xb0, 0x73, 0x16, 0x7a, 0x6d, 0x81, 0x54, 0x62, 0x5b, 0x20, 0x3b, 0xc5, 0x73, 0xf2, 0x18, + 0xcc, 0xb0, 0x3f, 0xc0, 0x11, 0xed, 0x72, 0xa6, 0xc1, 0x66, 0xe7, 0x5e, 0x1c, 0x78, 0xcb, 0xc8, + 0x0e, 0x54, 0x24, 0xf5, 0x12, 0x86, 0x32, 0xc9, 0x01, 0xd4, 0xb3, 0x7e, 0x5d, 0x39, 0x1d, 0xa7, + 0x94, 0xed, 0x2c, 0xfa, 0x71, 0x3a, 0x46, 0xd2, 0x80, 0x3b, 0x13, 0x3a, 0x8c, 0xd0, 0xaa, 0xea, + 0xd3, 0xd8, 0x71, 0x9e, 0x83, 0x95, 0xe7, 0x77, 0x30, 0x1c, 0x07, 0x7e, 0x88, 0xa4, 0x0e, 0xe5, + 0x6c, 0x80, 0x32, 0x67, 0xce, 0x57, 0x78, 0x90, 0xe5, 0x7e, 0xd0, 0xf3, 0x10, 0x02, 0x55, 0x9f, + 0x8e, 0x30, 0x49, 0xd2, 0x36, 0xb1, 0xe0, 0xee, 0x04, 0x45, 0xc8, 0x03, 0x3f, 0x99, 0x32, 0x75, + 0xc9, 0x53, 0x00, 0x2a, 0xa5, 0xe8, 0xaa, 0xb4, 0x30, 0xdd, 0x85, 0x8a, 0xbc, 0x57, 0x01, 0xe7, + 0x10, 0x76, 0x73, 0xfd, 0x0b, 0x47, 0x79, 0xbd, 0x34, 0xca, 0x89, 0x94, 0x82, 0xf7, 0xd4, 0x62, + 0x58, 0x96, 0xa3, 0x4c, 0x15, 0x11, 0xf4, 0x32, 0x5d, 0x95, 0xa0, 0x97, 0x2b, 0x84, 0xb8, 0x6c, + 0x0d, 0xe1, 0xd3, 0x98, 0xdd, 0x86, 0xb0, 0x5c, 0x56, 0x48, 0x78, 0x07, 0xb5, 0x6c, 0x98, 0x53, + 0xce, 0xf2, 0xe7, 0x4a, 0x50, 0x13, 0x14, 0xdf, 0x70, 0x9a, 0x0a, 0x2a, 0xf6, 0xd4, 0x1f, 0x49, + 0x87, 0x9c, 0xa6, 0x0b, 0x8c, 0x1d, 0xe7, 0x19, 0x34, 0x96, 0xbb, 0xad, 0xa1, 0xc6, 0x03, 0x6e, + 0x8a, 0x9a, 0x75, 0x2b, 0xa2, 0x1e, 0xff, 0xa9, 0x42, 0xe5, 0x2c, 0xf4, 0x08, 0x87, 0xed, 0x55, + 0xad, 0x1f, 0xb8, 0x05, 0x0f, 0xa9, 0xbb, 0xfc, 0x18, 0xee, 0xbd, 0x2c, 0x4c, 0x2b, 0x54, 0xaf, + 0x07, 0xb5, 0x15, 0xa9, 0xde, 0x90, 0xf4, 0x62, 0x3d, 0x29, 0xa7, 0xcd, 0x0c, 0x94, 0xc8, 0x64, + 0x73, 0xa0, 0x9c, 0x80, 0x3c, 0xa8, 0xad, 0xe8, 0x71, 0x13, 0xa0, 0xff, 0x2a, 0x95, 0x82, 0xb9, + 0x90, 0xe5, 0x0d, 0x29, 0x47, 0xeb, 0x7f, 0xce, 0xb2, 0x40, 0x28, 0x98, 0x0b, 0x0d, 0x6e, 0x02, + 0xf1, 0x8f, 0x06, 0xdf, 0xb4, 0x7f, 0xce, 0x6c, 0xe3, 0x7a, 0x66, 0x1b, 0xbf, 0x67, 0xb6, 0xf1, + 0x63, 0x6e, 0x97, 0xae, 0xe7, 0x76, 0xe9, 0xd7, 0xdc, 0x2e, 0x7d, 0x39, 0xf4, 0xb8, 0x1c, 0x44, + 0x3d, 0xb7, 0x1f, 0x8c, 0x5a, 0xf1, 0x3b, 0x43, 0x7f, 0x1e, 0xa9, 0x8e, 0xad, 0xab, 0x24, 0xa4, + 0x6e, 0xd2, 0xb0, 0xb7, 0xa5, 0x6f, 0xfa, 0x57, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x31, 0x70, + 0x6f, 0xea, 0x5c, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -406,9 +775,12 @@ const _ = grpc.SupportPackageIsVersion4 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { // this line is used by starport scaffolding # proto/tx/rpc - CreateNym(ctx context.Context, in *MsgCreateNym, opts ...grpc.CallOption) (*MsgCreateNymResponse, error) - UpdateNym(ctx context.Context, in *MsgUpdateNym, opts ...grpc.CallOption) (*MsgUpdateNymResponse, error) - DeleteNym(ctx context.Context, in *MsgDeleteNym, opts ...grpc.CallOption) (*MsgDeleteNymResponse, error) + CreateCredDef(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) + CreateSchema(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) + CreateAttrib(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateAttribResponse, error) + UpdateAttrib(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgUpdateAttribResponse, error) + CreateDid(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) + UpdateDid(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgUpdateDidResponse, error) } type msgClient struct { @@ -419,27 +791,54 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) CreateNym(ctx context.Context, in *MsgCreateNym, opts ...grpc.CallOption) (*MsgCreateNymResponse, error) { - out := new(MsgCreateNymResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateNym", in, out, opts...) +func (c *msgClient) CreateCredDef(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) { + out := new(MsgCreateCredDefResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateCredDef", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateSchema(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) { + out := new(MsgCreateSchemaResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateSchema", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateAttrib(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateAttribResponse, error) { + out := new(MsgCreateAttribResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateAttrib", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UpdateAttrib(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgUpdateAttribResponse, error) { + out := new(MsgUpdateAttribResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/UpdateAttrib", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *msgClient) UpdateNym(ctx context.Context, in *MsgUpdateNym, opts ...grpc.CallOption) (*MsgUpdateNymResponse, error) { - out := new(MsgUpdateNymResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/UpdateNym", in, out, opts...) +func (c *msgClient) CreateDid(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) { + out := new(MsgCreateDidResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateDid", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *msgClient) DeleteNym(ctx context.Context, in *MsgDeleteNym, opts ...grpc.CallOption) (*MsgDeleteNymResponse, error) { - out := new(MsgDeleteNymResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/DeleteNym", in, out, opts...) +func (c *msgClient) UpdateDid(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgUpdateDidResponse, error) { + out := new(MsgUpdateDidResponse) + err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/UpdateDid", in, out, opts...) if err != nil { return nil, err } @@ -449,79 +848,145 @@ func (c *msgClient) DeleteNym(ctx context.Context, in *MsgDeleteNym, opts ...grp // MsgServer is the server API for Msg service. type MsgServer interface { // this line is used by starport scaffolding # proto/tx/rpc - CreateNym(context.Context, *MsgCreateNym) (*MsgCreateNymResponse, error) - UpdateNym(context.Context, *MsgUpdateNym) (*MsgUpdateNymResponse, error) - DeleteNym(context.Context, *MsgDeleteNym) (*MsgDeleteNymResponse, error) + CreateCredDef(context.Context, *WriteRequest) (*MsgCreateCredDefResponse, error) + CreateSchema(context.Context, *WriteRequest) (*MsgCreateSchemaResponse, error) + CreateAttrib(context.Context, *WriteRequest) (*MsgCreateAttribResponse, error) + UpdateAttrib(context.Context, *WriteRequest) (*MsgUpdateAttribResponse, error) + CreateDid(context.Context, *WriteRequest) (*MsgCreateDidResponse, error) + UpdateDid(context.Context, *WriteRequest) (*MsgUpdateDidResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) CreateNym(ctx context.Context, req *MsgCreateNym) (*MsgCreateNymResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateNym not implemented") +func (*UnimplementedMsgServer) CreateCredDef(ctx context.Context, req *WriteRequest) (*MsgCreateCredDefResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateCredDef not implemented") } -func (*UnimplementedMsgServer) UpdateNym(ctx context.Context, req *MsgUpdateNym) (*MsgUpdateNymResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateNym not implemented") +func (*UnimplementedMsgServer) CreateSchema(ctx context.Context, req *WriteRequest) (*MsgCreateSchemaResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateSchema not implemented") } -func (*UnimplementedMsgServer) DeleteNym(ctx context.Context, req *MsgDeleteNym) (*MsgDeleteNymResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteNym not implemented") +func (*UnimplementedMsgServer) CreateAttrib(ctx context.Context, req *WriteRequest) (*MsgCreateAttribResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAttrib not implemented") } - +func (*UnimplementedMsgServer) UpdateAttrib(ctx context.Context, req *WriteRequest) (*MsgUpdateAttribResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAttrib not implemented") +} +func (*UnimplementedMsgServer) CreateDid(ctx context.Context, req *WriteRequest) (*MsgCreateDidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateDid not implemented") +} +func (*UnimplementedMsgServer) UpdateDid(ctx context.Context, req *WriteRequest) (*MsgUpdateDidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateDid not implemented") +} + func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } -func _Msg_CreateNym_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgCreateNym) +func _Msg_CreateCredDef_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WriteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateCredDef(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateCredDef", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateCredDef(ctx, req.(*WriteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WriteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateSchema(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateSchema", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateSchema(ctx, req.(*WriteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateAttrib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WriteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateAttrib(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateAttrib", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateAttrib(ctx, req.(*WriteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UpdateAttrib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WriteRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).CreateNym(ctx, in) + return srv.(MsgServer).UpdateAttrib(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateNym", + FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/UpdateAttrib", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateNym(ctx, req.(*MsgCreateNym)) + return srv.(MsgServer).UpdateAttrib(ctx, req.(*WriteRequest)) } return interceptor(ctx, in, info, handler) } -func _Msg_UpdateNym_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateNym) +func _Msg_CreateDid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WriteRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).UpdateNym(ctx, in) + return srv.(MsgServer).CreateDid(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/UpdateNym", + FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateDid", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateNym(ctx, req.(*MsgUpdateNym)) + return srv.(MsgServer).CreateDid(ctx, req.(*WriteRequest)) } return interceptor(ctx, in, info, handler) } -func _Msg_DeleteNym_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgDeleteNym) +func _Msg_UpdateDid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WriteRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).DeleteNym(ctx, in) + return srv.(MsgServer).UpdateDid(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/DeleteNym", + FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/UpdateDid", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).DeleteNym(ctx, req.(*MsgDeleteNym)) + return srv.(MsgServer).UpdateDid(ctx, req.(*WriteRequest)) } return interceptor(ctx, in, info, handler) } @@ -531,23 +996,35 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "CreateNym", - Handler: _Msg_CreateNym_Handler, + MethodName: "CreateCredDef", + Handler: _Msg_CreateCredDef_Handler, + }, + { + MethodName: "CreateSchema", + Handler: _Msg_CreateSchema_Handler, + }, + { + MethodName: "CreateAttrib", + Handler: _Msg_CreateAttrib_Handler, + }, + { + MethodName: "UpdateAttrib", + Handler: _Msg_UpdateAttrib_Handler, }, { - MethodName: "UpdateNym", - Handler: _Msg_UpdateNym_Handler, + MethodName: "CreateDid", + Handler: _Msg_CreateDid_Handler, }, { - MethodName: "DeleteNym", - Handler: _Msg_DeleteNym_Handler, + MethodName: "UpdateDid", + Handler: _Msg_UpdateDid_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "cheqd/tx.proto", } -func (m *MsgCreateNym) Marshal() (dAtA []byte, err error) { +func (m *WriteRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -557,55 +1034,97 @@ func (m *MsgCreateNym) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgCreateNym) MarshalTo(dAtA []byte) (int, error) { +func (m *WriteRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgCreateNym) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *WriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintTx(dAtA, i, uint64(len(m.Role))) + if len(m.Signature) > 0 { + i -= len(m.Signature) + copy(dAtA[i:], m.Signature) + i = encodeVarintTx(dAtA, i, uint64(len(m.Signature))) i-- - dAtA[i] = 0x2a + dAtA[i] = 0x1a } - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintTx(dAtA, i, uint64(len(m.Did))) + if len(m.Author) > 0 { + i -= len(m.Author) + copy(dAtA[i:], m.Author) + i = encodeVarintTx(dAtA, i, uint64(len(m.Author))) + i-- + dAtA[i] = 0x12 + } + if m.Data != nil { + { + size, err := m.Data.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCreateCredDef) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCreateCredDef) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintTx(dAtA, i, uint64(len(m.Value))) i-- dAtA[i] = 0x22 } - if len(m.Verkey) > 0 { - i -= len(m.Verkey) - copy(dAtA[i:], m.Verkey) - i = encodeVarintTx(dAtA, i, uint64(len(m.Verkey))) + if len(m.SignatureType) > 0 { + i -= len(m.SignatureType) + copy(dAtA[i:], m.SignatureType) + i = encodeVarintTx(dAtA, i, uint64(len(m.SignatureType))) i-- dAtA[i] = 0x1a } - if len(m.Alias) > 0 { - i -= len(m.Alias) - copy(dAtA[i:], m.Alias) - i = encodeVarintTx(dAtA, i, uint64(len(m.Alias))) + if len(m.Tag) > 0 { + i -= len(m.Tag) + copy(dAtA[i:], m.Tag) + i = encodeVarintTx(dAtA, i, uint64(len(m.Tag))) i-- dAtA[i] = 0x12 } - if len(m.Creator) > 0 { - i -= len(m.Creator) - copy(dAtA[i:], m.Creator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + if len(m.SchemaId) > 0 { + i -= len(m.SchemaId) + copy(dAtA[i:], m.SchemaId) + i = encodeVarintTx(dAtA, i, uint64(len(m.SchemaId))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *MsgCreateNymResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgCreateCredDefResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -615,25 +1134,27 @@ func (m *MsgCreateNymResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgCreateNymResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgCreateCredDefResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgCreateNymResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgCreateCredDefResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Id != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Id)) + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) i-- - dAtA[i] = 0x8 + dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *MsgUpdateNym) Marshal() (dAtA []byte, err error) { +func (m *MsgCreateSchema) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -643,60 +1164,41 @@ func (m *MsgUpdateNym) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateNym) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgCreateSchema) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateNym) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgCreateSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintTx(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0x32 - } - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintTx(dAtA, i, uint64(len(m.Did))) - i-- - dAtA[i] = 0x2a - } - if len(m.Verkey) > 0 { - i -= len(m.Verkey) - copy(dAtA[i:], m.Verkey) - i = encodeVarintTx(dAtA, i, uint64(len(m.Verkey))) - i-- - dAtA[i] = 0x22 - } - if len(m.Alias) > 0 { - i -= len(m.Alias) - copy(dAtA[i:], m.Alias) - i = encodeVarintTx(dAtA, i, uint64(len(m.Alias))) + if len(m.AttrNames) > 0 { + i -= len(m.AttrNames) + copy(dAtA[i:], m.AttrNames) + i = encodeVarintTx(dAtA, i, uint64(len(m.AttrNames))) i-- dAtA[i] = 0x1a } - if m.Id != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Id)) + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) i-- - dAtA[i] = 0x10 + dAtA[i] = 0x12 } - if len(m.Creator) > 0 { - i -= len(m.Creator) - copy(dAtA[i:], m.Creator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintTx(dAtA, i, uint64(len(m.Name))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *MsgUpdateNymResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgCreateSchemaResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -706,20 +1208,27 @@ func (m *MsgUpdateNymResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateNymResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgCreateSchemaResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateNymResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgCreateSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } -func (m *MsgDeleteNym) Marshal() (dAtA []byte, err error) { +func (m *MsgCreateAttrib) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -729,32 +1238,34 @@ func (m *MsgDeleteNym) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgDeleteNym) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgCreateAttrib) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgDeleteNym) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgCreateAttrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Id != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Id)) + if len(m.Raw) > 0 { + i -= len(m.Raw) + copy(dAtA[i:], m.Raw) + i = encodeVarintTx(dAtA, i, uint64(len(m.Raw))) i-- - dAtA[i] = 0x10 + dAtA[i] = 0x12 } - if len(m.Creator) > 0 { - i -= len(m.Creator) - copy(dAtA[i:], m.Creator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintTx(dAtA, i, uint64(len(m.Did))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *MsgDeleteNymResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgCreateAttribResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -764,144 +1275,1118 @@ func (m *MsgDeleteNymResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgDeleteNymResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgCreateAttribResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgDeleteNymResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgCreateAttribResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } -func encodeVarintTx(dAtA []byte, offset int, v uint64) int { - offset -= sovTx(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *MsgUpdateAttrib) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *MsgCreateNym) Size() (n int) { - if m == nil { - return 0 - } + +func (m *MsgUpdateAttrib) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateAttrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Creator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Alias) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Verkey) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Did) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Raw) > 0 { + i -= len(m.Raw) + copy(dAtA[i:], m.Raw) + i = encodeVarintTx(dAtA, i, uint64(len(m.Raw))) + i-- + dAtA[i] = 0x12 } - l = len(m.Role) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintTx(dAtA, i, uint64(len(m.Did))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *MsgCreateNymResponse) Size() (n int) { - if m == nil { - return 0 +func (m *MsgUpdateAttribResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *MsgUpdateAttribResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateAttribResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.Id != 0 { - n += 1 + sovTx(uint64(m.Id)) + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *MsgUpdateNym) Size() (n int) { - if m == nil { - return 0 +func (m *MsgCreateDid) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *MsgCreateDid) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Creator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.Id != 0 { - n += 1 + sovTx(uint64(m.Id)) - } - l = len(m.Alias) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Verkey) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Alias) > 0 { + i -= len(m.Alias) + copy(dAtA[i:], m.Alias) + i = encodeVarintTx(dAtA, i, uint64(len(m.Alias))) + i-- + dAtA[i] = 0x1a } - l = len(m.Did) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Verkey) > 0 { + i -= len(m.Verkey) + copy(dAtA[i:], m.Verkey) + i = encodeVarintTx(dAtA, i, uint64(len(m.Verkey))) + i-- + dAtA[i] = 0x12 } - l = len(m.Role) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *MsgUpdateNymResponse) Size() (n int) { - if m == nil { - return 0 +func (m *MsgCreateDidResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - var l int - _ = l - return n + return dAtA[:n], nil } -func (m *MsgDeleteNym) Size() (n int) { - if m == nil { - return 0 +func (m *MsgCreateDidResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateDidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateDid) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateDid) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Alias) > 0 { + i -= len(m.Alias) + copy(dAtA[i:], m.Alias) + i = encodeVarintTx(dAtA, i, uint64(len(m.Alias))) + i-- + dAtA[i] = 0x1a + } + if len(m.Verkey) > 0 { + i -= len(m.Verkey) + copy(dAtA[i:], m.Verkey) + i = encodeVarintTx(dAtA, i, uint64(len(m.Verkey))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateDidResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateDidResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateDidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *WriteRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Data != nil { + l = m.Data.Size() + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Author) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Signature) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateCredDef) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.SchemaId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Tag) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.SignatureType) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateCredDefResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateSchema) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.AttrNames) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateSchemaResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateAttrib) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Did) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Raw) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateAttribResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateAttrib) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Did) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Raw) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateAttribResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateDid) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Verkey) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Alias) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateDidResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateDid) Size() (n int) { + if m == nil { + return 0 } var l int _ = l - l = len(m.Creator) + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Verkey) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if m.Id != 0 { - n += 1 + sovTx(uint64(m.Id)) + l = len(m.Alias) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateDidResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *WriteRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: WriteRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WriteRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Data == nil { + m.Data = &types.Any{} + } + if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Author", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Author = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signature", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signature = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateCredDef: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateCredDef: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SchemaId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SchemaId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tag", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Tag = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SignatureType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SignatureType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateCredDefResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateCredDefResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateCredDefResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateSchema: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateSchema: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AttrNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AttrNames = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } } - return n -} -func (m *MsgDeleteNymResponse) Size() (n int) { - if m == nil { - return 0 + if iNdEx > l { + return io.ErrUnexpectedEOF } - var l int - _ = l - return n + return nil } +func (m *MsgCreateSchemaResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateSchemaResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } -func sovTx(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozTx(x uint64) (n int) { - return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil } -func (m *MsgCreateNym) Unmarshal(dAtA []byte) error { +func (m *MsgCreateAttrib) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -924,15 +2409,15 @@ func (m *MsgCreateNym) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgCreateNym: wiretype end group for non-group") + return fmt.Errorf("proto: MsgCreateAttrib: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateNym: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgCreateAttrib: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -960,11 +2445,11 @@ func (m *MsgCreateNym) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Creator = string(dAtA[iNdEx:postIndex]) + m.Did = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -992,11 +2477,61 @@ func (m *MsgCreateNym) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Alias = string(dAtA[iNdEx:postIndex]) + m.Raw = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateAttribResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateAttribResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateAttribResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Verkey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1021,12 +2556,62 @@ func (m *MsgCreateNym) Unmarshal(dAtA []byte) error { if postIndex < 0 { return ErrInvalidLengthTx } - if postIndex > l { + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.Verkey = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateAttrib) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateAttrib: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateAttrib: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) } @@ -1058,9 +2643,9 @@ func (m *MsgCreateNym) Unmarshal(dAtA []byte) error { } m.Did = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1088,7 +2673,7 @@ func (m *MsgCreateNym) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Role = string(dAtA[iNdEx:postIndex]) + m.Raw = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1111,7 +2696,7 @@ func (m *MsgCreateNym) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCreateNymResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateAttribResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1134,17 +2719,17 @@ func (m *MsgCreateNymResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgCreateNymResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateAttribResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateNymResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateAttribResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { + if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - m.Id = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -1154,11 +2739,24 @@ func (m *MsgCreateNymResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Id |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -1180,7 +2778,7 @@ func (m *MsgCreateNymResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateNym) Unmarshal(dAtA []byte) error { +func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1203,67 +2801,16 @@ func (m *MsgUpdateNym) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNym: wiretype end group for non-group") + return fmt.Errorf("proto: MsgCreateDid: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNym: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgCreateDid: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Creator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - m.Id = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Id |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) - } var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { @@ -1290,9 +2837,9 @@ func (m *MsgUpdateNym) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Alias = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Verkey", wireType) } @@ -1324,41 +2871,9 @@ func (m *MsgUpdateNym) Unmarshal(dAtA []byte) error { } m.Verkey = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1386,7 +2901,7 @@ func (m *MsgUpdateNym) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Role = string(dAtA[iNdEx:postIndex]) + m.Alias = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1409,7 +2924,7 @@ func (m *MsgUpdateNym) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateNymResponse) Unmarshal(dAtA []byte) error { +func (m *MsgCreateDidResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1432,12 +2947,44 @@ func (m *MsgUpdateNymResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNymResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgCreateDidResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNymResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgCreateDidResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -1459,7 +3006,7 @@ func (m *MsgUpdateNymResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgDeleteNym) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1482,15 +3029,15 @@ func (m *MsgDeleteNym) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgDeleteNym: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateDid: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDeleteNym: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateDid: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1518,13 +3065,45 @@ func (m *MsgDeleteNym) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Creator = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verkey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verkey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) } - m.Id = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -1534,11 +3113,24 @@ func (m *MsgDeleteNym) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Id |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Alias = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -1560,7 +3152,7 @@ func (m *MsgDeleteNym) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgDeleteNymResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateDidResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1583,12 +3175,44 @@ func (m *MsgDeleteNymResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgDeleteNymResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateDidResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDeleteNymResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateDidResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) From 1f92ac61c16c3db1e984672711340eb361d435d1 Mon Sep 17 00:00:00 2001 From: toktar Date: Wed, 15 Sep 2021 18:30:31 +0300 Subject: [PATCH 04/74] Update types dir, remove wrong methods --- x/cheqd/types/tx.pb.go | 122 ++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index ea755e233..75773b48d 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -29,24 +29,24 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // this line is used by starport scaffolding # proto/tx/message -type WriteRequest struct { +type MsgWriteRequest struct { Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` Signature string `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` } -func (m *WriteRequest) Reset() { *m = WriteRequest{} } -func (m *WriteRequest) String() string { return proto.CompactTextString(m) } -func (*WriteRequest) ProtoMessage() {} -func (*WriteRequest) Descriptor() ([]byte, []int) { +func (m *MsgWriteRequest) Reset() { *m = MsgWriteRequest{} } +func (m *MsgWriteRequest) String() string { return proto.CompactTextString(m) } +func (*MsgWriteRequest) ProtoMessage() {} +func (*MsgWriteRequest) Descriptor() ([]byte, []int) { return fileDescriptor_d0277a2196c64ae2, []int{0} } -func (m *WriteRequest) XXX_Unmarshal(b []byte) error { +func (m *MsgWriteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *WriteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgWriteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_WriteRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgWriteRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -56,33 +56,33 @@ func (m *WriteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *WriteRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WriteRequest.Merge(m, src) +func (m *MsgWriteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgWriteRequest.Merge(m, src) } -func (m *WriteRequest) XXX_Size() int { +func (m *MsgWriteRequest) XXX_Size() int { return m.Size() } -func (m *WriteRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WriteRequest.DiscardUnknown(m) +func (m *MsgWriteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_MsgWriteRequest.DiscardUnknown(m) } -var xxx_messageInfo_WriteRequest proto.InternalMessageInfo +var xxx_messageInfo_MsgWriteRequest proto.InternalMessageInfo -func (m *WriteRequest) GetData() *types.Any { +func (m *MsgWriteRequest) GetData() *types.Any { if m != nil { return m.Data } return nil } -func (m *WriteRequest) GetAuthor() string { +func (m *MsgWriteRequest) GetAuthor() string { if m != nil { return m.Author } return "" } -func (m *WriteRequest) GetSignature() string { +func (m *MsgWriteRequest) GetSignature() string { if m != nil { return m.Signature } @@ -706,7 +706,7 @@ func (m *MsgUpdateDidResponse) GetId() string { } func init() { - proto.RegisterType((*WriteRequest)(nil), "cheqdid.cheqdnode.cheqd.WriteRequest") + proto.RegisterType((*MsgWriteRequest)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest") proto.RegisterType((*MsgCreateCredDef)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDef") proto.RegisterType((*MsgCreateCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDefResponse") proto.RegisterType((*MsgCreateSchema)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchema") @@ -775,12 +775,12 @@ const _ = grpc.SupportPackageIsVersion4 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { // this line is used by starport scaffolding # proto/tx/rpc - CreateCredDef(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) - CreateSchema(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) - CreateAttrib(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateAttribResponse, error) - UpdateAttrib(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgUpdateAttribResponse, error) - CreateDid(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) - UpdateDid(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgUpdateDidResponse, error) + CreateCredDef(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) + CreateSchema(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) + CreateAttrib(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateAttribResponse, error) + UpdateAttrib(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgUpdateAttribResponse, error) + CreateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) + UpdateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgUpdateDidResponse, error) } type msgClient struct { @@ -791,7 +791,7 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) CreateCredDef(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) { +func (c *msgClient) CreateCredDef(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) { out := new(MsgCreateCredDefResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateCredDef", in, out, opts...) if err != nil { @@ -800,7 +800,7 @@ func (c *msgClient) CreateCredDef(ctx context.Context, in *WriteRequest, opts .. return out, nil } -func (c *msgClient) CreateSchema(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) { +func (c *msgClient) CreateSchema(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) { out := new(MsgCreateSchemaResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateSchema", in, out, opts...) if err != nil { @@ -809,7 +809,7 @@ func (c *msgClient) CreateSchema(ctx context.Context, in *WriteRequest, opts ... return out, nil } -func (c *msgClient) CreateAttrib(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateAttribResponse, error) { +func (c *msgClient) CreateAttrib(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateAttribResponse, error) { out := new(MsgCreateAttribResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateAttrib", in, out, opts...) if err != nil { @@ -818,7 +818,7 @@ func (c *msgClient) CreateAttrib(ctx context.Context, in *WriteRequest, opts ... return out, nil } -func (c *msgClient) UpdateAttrib(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgUpdateAttribResponse, error) { +func (c *msgClient) UpdateAttrib(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgUpdateAttribResponse, error) { out := new(MsgUpdateAttribResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/UpdateAttrib", in, out, opts...) if err != nil { @@ -827,7 +827,7 @@ func (c *msgClient) UpdateAttrib(ctx context.Context, in *WriteRequest, opts ... return out, nil } -func (c *msgClient) CreateDid(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) { +func (c *msgClient) CreateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) { out := new(MsgCreateDidResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateDid", in, out, opts...) if err != nil { @@ -836,7 +836,7 @@ func (c *msgClient) CreateDid(ctx context.Context, in *WriteRequest, opts ...grp return out, nil } -func (c *msgClient) UpdateDid(ctx context.Context, in *WriteRequest, opts ...grpc.CallOption) (*MsgUpdateDidResponse, error) { +func (c *msgClient) UpdateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgUpdateDidResponse, error) { out := new(MsgUpdateDidResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/UpdateDid", in, out, opts...) if err != nil { @@ -848,34 +848,34 @@ func (c *msgClient) UpdateDid(ctx context.Context, in *WriteRequest, opts ...grp // MsgServer is the server API for Msg service. type MsgServer interface { // this line is used by starport scaffolding # proto/tx/rpc - CreateCredDef(context.Context, *WriteRequest) (*MsgCreateCredDefResponse, error) - CreateSchema(context.Context, *WriteRequest) (*MsgCreateSchemaResponse, error) - CreateAttrib(context.Context, *WriteRequest) (*MsgCreateAttribResponse, error) - UpdateAttrib(context.Context, *WriteRequest) (*MsgUpdateAttribResponse, error) - CreateDid(context.Context, *WriteRequest) (*MsgCreateDidResponse, error) - UpdateDid(context.Context, *WriteRequest) (*MsgUpdateDidResponse, error) + CreateCredDef(context.Context, *MsgWriteRequest) (*MsgCreateCredDefResponse, error) + CreateSchema(context.Context, *MsgWriteRequest) (*MsgCreateSchemaResponse, error) + CreateAttrib(context.Context, *MsgWriteRequest) (*MsgCreateAttribResponse, error) + UpdateAttrib(context.Context, *MsgWriteRequest) (*MsgUpdateAttribResponse, error) + CreateDid(context.Context, *MsgWriteRequest) (*MsgCreateDidResponse, error) + UpdateDid(context.Context, *MsgWriteRequest) (*MsgUpdateDidResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) CreateCredDef(ctx context.Context, req *WriteRequest) (*MsgCreateCredDefResponse, error) { +func (*UnimplementedMsgServer) CreateCredDef(ctx context.Context, req *MsgWriteRequest) (*MsgCreateCredDefResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateCredDef not implemented") } -func (*UnimplementedMsgServer) CreateSchema(ctx context.Context, req *WriteRequest) (*MsgCreateSchemaResponse, error) { +func (*UnimplementedMsgServer) CreateSchema(ctx context.Context, req *MsgWriteRequest) (*MsgCreateSchemaResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateSchema not implemented") } -func (*UnimplementedMsgServer) CreateAttrib(ctx context.Context, req *WriteRequest) (*MsgCreateAttribResponse, error) { +func (*UnimplementedMsgServer) CreateAttrib(ctx context.Context, req *MsgWriteRequest) (*MsgCreateAttribResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateAttrib not implemented") } -func (*UnimplementedMsgServer) UpdateAttrib(ctx context.Context, req *WriteRequest) (*MsgUpdateAttribResponse, error) { +func (*UnimplementedMsgServer) UpdateAttrib(ctx context.Context, req *MsgWriteRequest) (*MsgUpdateAttribResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateAttrib not implemented") } -func (*UnimplementedMsgServer) CreateDid(ctx context.Context, req *WriteRequest) (*MsgCreateDidResponse, error) { +func (*UnimplementedMsgServer) CreateDid(ctx context.Context, req *MsgWriteRequest) (*MsgCreateDidResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateDid not implemented") } -func (*UnimplementedMsgServer) UpdateDid(ctx context.Context, req *WriteRequest) (*MsgUpdateDidResponse, error) { +func (*UnimplementedMsgServer) UpdateDid(ctx context.Context, req *MsgWriteRequest) (*MsgUpdateDidResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateDid not implemented") } @@ -884,7 +884,7 @@ func RegisterMsgServer(s grpc1.Server, srv MsgServer) { } func _Msg_CreateCredDef_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WriteRequest) + in := new(MsgWriteRequest) if err := dec(in); err != nil { return nil, err } @@ -896,13 +896,13 @@ func _Msg_CreateCredDef_Handler(srv interface{}, ctx context.Context, dec func(i FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateCredDef", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateCredDef(ctx, req.(*WriteRequest)) + return srv.(MsgServer).CreateCredDef(ctx, req.(*MsgWriteRequest)) } return interceptor(ctx, in, info, handler) } func _Msg_CreateSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WriteRequest) + in := new(MsgWriteRequest) if err := dec(in); err != nil { return nil, err } @@ -914,13 +914,13 @@ func _Msg_CreateSchema_Handler(srv interface{}, ctx context.Context, dec func(in FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateSchema", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateSchema(ctx, req.(*WriteRequest)) + return srv.(MsgServer).CreateSchema(ctx, req.(*MsgWriteRequest)) } return interceptor(ctx, in, info, handler) } func _Msg_CreateAttrib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WriteRequest) + in := new(MsgWriteRequest) if err := dec(in); err != nil { return nil, err } @@ -932,13 +932,13 @@ func _Msg_CreateAttrib_Handler(srv interface{}, ctx context.Context, dec func(in FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateAttrib", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateAttrib(ctx, req.(*WriteRequest)) + return srv.(MsgServer).CreateAttrib(ctx, req.(*MsgWriteRequest)) } return interceptor(ctx, in, info, handler) } func _Msg_UpdateAttrib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WriteRequest) + in := new(MsgWriteRequest) if err := dec(in); err != nil { return nil, err } @@ -950,13 +950,13 @@ func _Msg_UpdateAttrib_Handler(srv interface{}, ctx context.Context, dec func(in FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/UpdateAttrib", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateAttrib(ctx, req.(*WriteRequest)) + return srv.(MsgServer).UpdateAttrib(ctx, req.(*MsgWriteRequest)) } return interceptor(ctx, in, info, handler) } func _Msg_CreateDid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WriteRequest) + in := new(MsgWriteRequest) if err := dec(in); err != nil { return nil, err } @@ -968,13 +968,13 @@ func _Msg_CreateDid_Handler(srv interface{}, ctx context.Context, dec func(inter FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateDid", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateDid(ctx, req.(*WriteRequest)) + return srv.(MsgServer).CreateDid(ctx, req.(*MsgWriteRequest)) } return interceptor(ctx, in, info, handler) } func _Msg_UpdateDid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WriteRequest) + in := new(MsgWriteRequest) if err := dec(in); err != nil { return nil, err } @@ -986,7 +986,7 @@ func _Msg_UpdateDid_Handler(srv interface{}, ctx context.Context, dec func(inter FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/UpdateDid", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateDid(ctx, req.(*WriteRequest)) + return srv.(MsgServer).UpdateDid(ctx, req.(*MsgWriteRequest)) } return interceptor(ctx, in, info, handler) } @@ -1024,7 +1024,7 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Metadata: "cheqd/tx.proto", } -func (m *WriteRequest) Marshal() (dAtA []byte, err error) { +func (m *MsgWriteRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1034,12 +1034,12 @@ func (m *WriteRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *WriteRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgWriteRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *WriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1521,7 +1521,7 @@ func encodeVarintTx(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *WriteRequest) Size() (n int) { +func (m *MsgWriteRequest) Size() (n int) { if m == nil { return 0 } @@ -1748,7 +1748,7 @@ func sovTx(x uint64) (n int) { func sozTx(x uint64) (n int) { return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *WriteRequest) Unmarshal(dAtA []byte) error { +func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1771,10 +1771,10 @@ func (m *WriteRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: WriteRequest: wiretype end group for non-group") + return fmt.Errorf("proto: MsgWriteRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: WriteRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgWriteRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: From 52db0747cc55b582ebb1f20568250864a48e41d3 Mon Sep 17 00:00:00 2001 From: toktar Date: Wed, 15 Sep 2021 19:25:26 +0300 Subject: [PATCH 05/74] Update general handler --- proto/cheqd/tx.proto | 17 +- x/cheqd/client/cli/txAttrib.go | 48 +---- x/cheqd/client/cli/txCredDef.go | 69 +------ x/cheqd/client/cli/txDid.go | 52 +----- x/cheqd/client/cli/txNym.go | 104 ----------- x/cheqd/genesis.go | 142 +++++++-------- x/cheqd/handler.go | 46 +---- x/cheqd/keeper/attrib.go | 64 ++++--- x/cheqd/types/codec.go | 22 --- x/cheqd/types/genesis.go | 54 +----- x/cheqd/types/keys.go | 5 - x/cheqd/types/messages_attrib.go | 79 +------- x/cheqd/types/messages_cred_def.go | 104 +---------- x/cheqd/types/messages_did.go | 81 ++------- x/cheqd/types/messages_nym.go | 126 ------------- x/cheqd/types/messages_schema.go | 101 +---------- x/cheqd/types/messages_write_request.go | 36 ++++ x/cheqd/types/query.go | 17 +- x/cheqd/types/tx.pb.go | 231 ++++++++++++++++++------ 19 files changed, 383 insertions(+), 1015 deletions(-) delete mode 100644 x/cheqd/client/cli/txNym.go delete mode 100644 x/cheqd/types/messages_nym.go create mode 100644 x/cheqd/types/messages_write_request.go diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index b0d4be5ce..c6b5bf293 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -9,20 +9,19 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // Msg defines the Msg service. service Msg { // this line is used by starport scaffolding # proto/tx/rpc - rpc CreateCredDef(WriteRequest) returns (MsgCreateCredDefResponse); - rpc CreateSchema(WriteRequest) returns (MsgCreateSchemaResponse); - rpc CreateAttrib(WriteRequest) returns (MsgCreateAttribResponse); - rpc UpdateAttrib(WriteRequest) returns (MsgUpdateAttribResponse); - rpc CreateDid(WriteRequest) returns (MsgCreateDidResponse); - rpc UpdateDid(WriteRequest) returns (MsgUpdateDidResponse); + rpc CreateCredDef(MsgWriteRequest) returns (MsgCreateCredDefResponse); + rpc CreateSchema(MsgWriteRequest) returns (MsgCreateSchemaResponse); + rpc CreateAttrib(MsgWriteRequest) returns (MsgCreateAttribResponse); + rpc UpdateAttrib(MsgWriteRequest) returns (MsgUpdateAttribResponse); + rpc CreateDid(MsgWriteRequest) returns (MsgCreateDidResponse); + rpc UpdateDid(MsgWriteRequest) returns (MsgUpdateDidResponse); } // this line is used by starport scaffolding # proto/tx/message -message WriteRequest { +message MsgWriteRequest { google.protobuf.Any data = 1; string author = 2; - string signature = 3; - + map signatures = 3; } message MsgCreateCredDef { diff --git a/x/cheqd/client/cli/txAttrib.go b/x/cheqd/client/cli/txAttrib.go index abc639e28..7fe7c8456 100644 --- a/x/cheqd/client/cli/txAttrib.go +++ b/x/cheqd/client/cli/txAttrib.go @@ -1,13 +1,11 @@ package cli import ( - "github.com/spf13/cobra" - "strconv" - "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" ) func CmdCreateAttrib() *cobra.Command { @@ -24,7 +22,7 @@ func CmdCreateAttrib() *cobra.Command { return err } - msg := types.NewMsgCreateAttrib(clientCtx.GetFromAddress().String(), string(argsDid), string(argsRaw)) + msg := types.NewMsgCreateAttrib(string(argsDid), string(argsRaw)) if err := msg.ValidateBasic(); err != nil { return err } @@ -39,53 +37,19 @@ func CmdCreateAttrib() *cobra.Command { func CmdUpdateAttrib() *cobra.Command { cmd := &cobra.Command{ - Use: "update-attrib [id] [did] [raw]", + Use: "update-attrib [did] [raw]", Short: "Update a attrib", Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - argsDid := string(args[1]) - argsRaw := string(args[2]) - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdateAttrib(clientCtx.GetFromAddress().String(), id, string(argsDid), string(argsRaw)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdDeleteAttrib() *cobra.Command { - cmd := &cobra.Command{ - Use: "delete-attrib [id] [did] [raw]", - Short: "Delete a attrib by id", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } + argsDid := string(args[0]) + argsRaw := string(args[1]) clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - msg := types.NewMsgDeleteAttrib(clientCtx.GetFromAddress().String(), id) + msg := types.NewMsgUpdateAttrib(string(argsDid), string(argsRaw)) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/cheqd/client/cli/txCredDef.go b/x/cheqd/client/cli/txCredDef.go index 6a2e801f6..36e10895c 100644 --- a/x/cheqd/client/cli/txCredDef.go +++ b/x/cheqd/client/cli/txCredDef.go @@ -1,13 +1,11 @@ package cli import ( - "github.com/spf13/cobra" - "strconv" - "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" ) func CmdCreateCredDef() *cobra.Command { @@ -26,70 +24,7 @@ func CmdCreateCredDef() *cobra.Command { return err } - msg := types.NewMsgCreateCredDef(clientCtx.GetFromAddress().String(), string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdUpdateCredDef() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-credDef [id] [schema_id] [tag] [signature_type] [value]", - Short: "Update a credDef", - Args: cobra.ExactArgs(5), - RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - argsSchema_id := string(args[1]) - argsTag := string(args[2]) - argsSignature_type := string(args[3]) - argsValue := string(args[4]) - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdateCredDef(clientCtx.GetFromAddress().String(), id, string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdDeleteCredDef() *cobra.Command { - cmd := &cobra.Command{ - Use: "delete-credDef [id] [schema_id] [tag] [signature_type] [value]", - Short: "Delete a credDef by id", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgDeleteCredDef(clientCtx.GetFromAddress().String(), id) + msg := types.NewMsgCreateCredDef(string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/cheqd/client/cli/txDid.go b/x/cheqd/client/cli/txDid.go index 644603e53..1899f6729 100644 --- a/x/cheqd/client/cli/txDid.go +++ b/x/cheqd/client/cli/txDid.go @@ -1,30 +1,29 @@ package cli import ( - "github.com/spf13/cobra" - "strconv" - "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" ) func CmdCreateDid() *cobra.Command { cmd := &cobra.Command{ - Use: "create-did [verkey] [alias]", + Use: "create-did [id] [verkey] [alias]", Short: "Creates a new did", - Args: cobra.ExactArgs(2), + Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { - argsVerkey := string(args[0]) - argsAlias := string(args[1]) + id := string(args[0]) + argsVerkey := string(args[1]) + argsAlias := string(args[2]) clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - msg := types.NewMsgCreateDid(clientCtx.GetFromAddress().String(), string(argsVerkey), string(argsAlias)) + msg := types.NewMsgCreateDid(string(id), string(argsVerkey), string(argsAlias)) if err := msg.ValidateBasic(); err != nil { return err } @@ -43,11 +42,7 @@ func CmdUpdateDid() *cobra.Command { Short: "Update a did", Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - + id := string(args[0]) argsVerkey := string(args[1]) argsAlias := string(args[2]) @@ -56,36 +51,7 @@ func CmdUpdateDid() *cobra.Command { return err } - msg := types.NewMsgUpdateDid(clientCtx.GetFromAddress().String(), id, string(argsVerkey), string(argsAlias)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdDeleteDid() *cobra.Command { - cmd := &cobra.Command{ - Use: "delete-did [id] [verkey] [alias]", - Short: "Delete a did by id", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgDeleteDid(clientCtx.GetFromAddress().String(), id) + msg := types.NewMsgUpdateDid(string(id), string(argsVerkey), string(argsAlias)) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/cheqd/client/cli/txNym.go b/x/cheqd/client/cli/txNym.go deleted file mode 100644 index 3c9646072..000000000 --- a/x/cheqd/client/cli/txNym.go +++ /dev/null @@ -1,104 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/spf13/cobra" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" -) - -func CmdCreateNym() *cobra.Command { - cmd := &cobra.Command{ - Use: "create-nym [alias] [verkey] [did] [role]", - Short: "Creates a new nym", - Args: cobra.ExactArgs(4), - RunE: func(cmd *cobra.Command, args []string) error { - argsAlias := string(args[0]) - argsVerkey := string(args[1]) - argsDid := string(args[2]) - argsRole := string(args[3]) - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgCreateNym(clientCtx.GetFromAddress().String(), string(argsAlias), string(argsVerkey), string(argsDid), string(argsRole)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdUpdateNym() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-nym [id] [alias] [verkey] [did] [role]", - Short: "Update a nym", - Args: cobra.ExactArgs(5), - RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - argsAlias := string(args[1]) - argsVerkey := string(args[2]) - argsDid := string(args[3]) - argsRole := string(args[4]) - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdateNym(clientCtx.GetFromAddress().String(), id, string(argsAlias), string(argsVerkey), string(argsDid), string(argsRole)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdDeleteNym() *cobra.Command { - cmd := &cobra.Command{ - Use: "delete-nym [id] [alias] [verkey] [did] [role]", - Short: "Delete a nym by id", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgDeleteNym(clientCtx.GetFromAddress().String(), id) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/genesis.go b/x/cheqd/genesis.go index 109f59653..546136253 100644 --- a/x/cheqd/genesis.go +++ b/x/cheqd/genesis.go @@ -11,44 +11,44 @@ import ( func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { // this line is used by starport scaffolding # genesis/module/init // Set all the credDef - for _, elem := range genState.CredDefList { - k.SetCredDef(ctx, *elem) - } - - // Set credDef count - k.SetCredDefCount(ctx, uint64(len(genState.CredDefList))) - - // Set all the schema - for _, elem := range genState.SchemaList { - k.SetSchema(ctx, *elem) - } - - // Set schema count - k.SetSchemaCount(ctx, uint64(len(genState.SchemaList))) - - // Set all the attrib - for _, elem := range genState.AttribList { - k.SetAttrib(ctx, *elem) - } - - // Set attrib count - k.SetAttribCount(ctx, uint64(len(genState.AttribList))) - - // Set all the did - for _, elem := range genState.DidList { - k.SetDid(ctx, *elem) - } - - // Set did count - k.SetDidCount(ctx, uint64(len(genState.DidList))) - - // Set all the nym - for _, elem := range genState.NymList { - k.SetNym(ctx, *elem) - } - - // Set nym count - k.SetNymCount(ctx, uint64(len(genState.NymList))) + //for _, elem := range genState.CredDefList { + // k.SetCredDef(ctx, *elem) + //} + // + //// Set credDef count + //k.SetCredDefCount(ctx, uint64(len(genState.CredDefList))) + // + //// Set all the schema + //for _, elem := range genState.SchemaList { + // k.SetSchema(ctx, *elem) + //} + // + //// Set schema count + //k.SetSchemaCount(ctx, uint64(len(genState.SchemaList))) + // + //// Set all the attrib + //for _, elem := range genState.AttribList { + // k.SetAttrib(ctx, *elem) + //} + // + //// Set attrib count + //k.SetAttribCount(ctx, uint64(len(genState.AttribList))) + // + //// Set all the did + //for _, elem := range genState.DidList { + // k.SetDid(ctx, *elem) + //} + // + //// Set did count + //k.SetDidCount(ctx, uint64(len(genState.DidList))) + // + //// Set all the nym + //for _, elem := range genState.NymList { + // k.SetNym(ctx, *elem) + //} + // + //// Set nym count + //k.SetNymCount(ctx, uint64(len(genState.NymList))) } @@ -58,39 +58,39 @@ func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { // this line is used by starport scaffolding # genesis/module/export // Get all credDef - credDefList := k.GetAllCredDef(ctx) - for _, elem := range credDefList { - elem := elem - genesis.CredDefList = append(genesis.CredDefList, &elem) - } - - // Get all schema - schemaList := k.GetAllSchema(ctx) - for _, elem := range schemaList { - elem := elem - genesis.SchemaList = append(genesis.SchemaList, &elem) - } - - // Get all attrib - attribList := k.GetAllAttrib(ctx) - for _, elem := range attribList { - elem := elem - genesis.AttribList = append(genesis.AttribList, &elem) - } - - // Get all did - didList := k.GetAllDid(ctx) - for _, elem := range didList { - elem := elem - genesis.DidList = append(genesis.DidList, &elem) - } - - // Get all nym - nymList := k.GetAllNym(ctx) - for _, elem := range nymList { - elem := elem - genesis.NymList = append(genesis.NymList, &elem) - } + //credDefList := k.GetAllCredDef(ctx) + //for _, elem := range credDefList { + // elem := elem + // genesis.CredDefList = append(genesis.CredDefList, &elem) + //} + // + //// Get all schema + //schemaList := k.GetAllSchema(ctx) + //for _, elem := range schemaList { + // elem := elem + // genesis.SchemaList = append(genesis.SchemaList, &elem) + //} + // + //// Get all attrib + //attribList := k.GetAllAttrib(ctx) + //for _, elem := range attribList { + // elem := elem + // genesis.AttribList = append(genesis.AttribList, &elem) + //} + // + //// Get all did + //didList := k.GetAllDid(ctx) + //for _, elem := range didList { + // elem := elem + // genesis.DidList = append(genesis.DidList, &elem) + //} + // + //// Get all nym + //nymList := k.GetAllNym(ctx) + //for _, elem := range nymList { + // elem := elem + // genesis.NymList = append(genesis.NymList, &elem) + //} return genesis } diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index 9dd99ad5a..d619e518b 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -15,33 +15,21 @@ func NewHandler(k keeper.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { ctx = ctx.WithEventManager(sdk.NewEventManager()) - - switch msg := msg.(type) { + parsed_msg, isMsgIdentity := msg.(*types.MsgWriteRequest) + if !isMsgIdentity { + errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) + return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + } + switch parsed_msg.Data.TypeUrl { // this line is used by starport scaffolding # 1 - case *types.MsgCreateCredDef: + case types.MsgCreateCredDef.Type(): res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgUpdateCredDef: - res, err := msgServer.UpdateCredDef(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgDeleteCredDef: - res, err := msgServer.DeleteCredDef(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgCreateSchema: res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgUpdateSchema: - res, err := msgServer.UpdateSchema(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgDeleteSchema: - res, err := msgServer.DeleteSchema(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgCreateAttrib: res, err := msgServer.CreateAttrib(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) @@ -50,10 +38,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { res, err := msgServer.UpdateAttrib(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgDeleteAttrib: - res, err := msgServer.DeleteAttrib(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgCreateDid: res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) @@ -62,22 +46,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { res, err := msgServer.UpdateDid(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgDeleteDid: - res, err := msgServer.DeleteDid(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgCreateNym: - res, err := msgServer.CreateNym(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgUpdateNym: - res, err := msgServer.UpdateNym(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgDeleteNym: - res, err := msgServer.DeleteNym(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - default: errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) diff --git a/x/cheqd/keeper/attrib.go b/x/cheqd/keeper/attrib.go index 2d05f8cc5..d7cff1552 100644 --- a/x/cheqd/keeper/attrib.go +++ b/x/cheqd/keeper/attrib.go @@ -40,22 +40,19 @@ func (k Keeper) SetAttribCount(ctx sdk.Context, count uint64) { // AppendAttrib appends a attrib in the store with a new id and update the count func (k Keeper) AppendAttrib( ctx sdk.Context, - creator string, did string, raw string, ) uint64 { // Create the attrib count := k.GetAttribCount(ctx) var attrib = types.Attrib{ - Creator: creator, - Id: count, - Did: did, - Raw: raw, + Did: did, + Raw: raw, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) value := k.cdc.MustMarshalBinaryBare(&attrib) - store.Set(GetAttribIDBytes(attrib.Id), value) + store.Set(GetAttribIDBytes(attrib.Did), value) // Update attrib count k.SetAttribCount(ctx, count+1) @@ -67,11 +64,11 @@ func (k Keeper) AppendAttrib( func (k Keeper) SetAttrib(ctx sdk.Context, attrib types.Attrib) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) b := k.cdc.MustMarshalBinaryBare(&attrib) - store.Set(GetAttribIDBytes(attrib.Id), b) + store.Set(GetAttribIDBytes(attrib.Did), b) } // GetAttrib returns a attrib from its id -func (k Keeper) GetAttrib(ctx sdk.Context, id uint64) types.Attrib { +func (k Keeper) GetAttrib(ctx sdk.Context, id string) types.Attrib { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) var attrib types.Attrib k.cdc.MustUnmarshalBinaryBare(store.Get(GetAttribIDBytes(id)), &attrib) @@ -79,40 +76,41 @@ func (k Keeper) GetAttrib(ctx sdk.Context, id uint64) types.Attrib { } // HasAttrib checks if the attrib exists in the store -func (k Keeper) HasAttrib(ctx sdk.Context, id uint64) bool { +func (k Keeper) HasAttrib(ctx sdk.Context, id string) bool { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) return store.Has(GetAttribIDBytes(id)) } // GetAttribOwner returns the creator of the attrib -func (k Keeper) GetAttribOwner(ctx sdk.Context, id uint64) string { - return k.GetAttrib(ctx, id).Creator +func (k Keeper) GetAttribOwner(ctx sdk.Context, did string) string { + return did } -// RemoveAttrib removes a attrib from the store -func (k Keeper) RemoveAttrib(ctx sdk.Context, id uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) - store.Delete(GetAttribIDBytes(id)) -} - -// GetAllAttrib returns all attrib -func (k Keeper) GetAllAttrib(ctx sdk.Context) (list []types.Attrib) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.Attrib - k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) - list = append(list, val) - } - - return -} +// +//// RemoveAttrib removes a attrib from the store +//func (k Keeper) RemoveAttrib(ctx sdk.Context, id string) { +// store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) +// store.Delete(GetAttribIDBytes(id)) +//} +// +//// GetAllAttrib returns all attrib +//func (k Keeper) GetAllAttrib(ctx sdk.Context) (list []types.Attrib) { +// store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) +// iterator := sdk.KVStorePrefixIterator(store, []byte{}) +// +// defer iterator.Close() +// +// for ; iterator.Valid(); iterator.Next() { +// var val types.Attrib +// k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) +// list = append(list, val) +// } +// +// return +//} // GetAttribIDBytes returns the byte representation of the ID -func GetAttribIDBytes(id uint64) []byte { +func GetAttribIDBytes(id string) []byte { bz := make([]byte, 8) binary.BigEndian.PutUint64(bz, id) return bz diff --git a/x/cheqd/types/codec.go b/x/cheqd/types/codec.go index c6b0988ba..93be4dcc5 100644 --- a/x/cheqd/types/codec.go +++ b/x/cheqd/types/codec.go @@ -10,24 +10,14 @@ import ( func RegisterCodec(cdc *codec.LegacyAmino) { // this line is used by starport scaffolding # 2 cdc.RegisterConcrete(&MsgCreateCredDef{}, "cheqd/CreateCredDef", nil) - cdc.RegisterConcrete(&MsgUpdateCredDef{}, "cheqd/UpdateCredDef", nil) - cdc.RegisterConcrete(&MsgDeleteCredDef{}, "cheqd/DeleteCredDef", nil) cdc.RegisterConcrete(&MsgCreateSchema{}, "cheqd/CreateSchema", nil) - cdc.RegisterConcrete(&MsgUpdateSchema{}, "cheqd/UpdateSchema", nil) - cdc.RegisterConcrete(&MsgDeleteSchema{}, "cheqd/DeleteSchema", nil) cdc.RegisterConcrete(&MsgCreateAttrib{}, "cheqd/CreateAttrib", nil) cdc.RegisterConcrete(&MsgUpdateAttrib{}, "cheqd/UpdateAttrib", nil) - cdc.RegisterConcrete(&MsgDeleteAttrib{}, "cheqd/DeleteAttrib", nil) cdc.RegisterConcrete(&MsgCreateDid{}, "cheqd/CreateDid", nil) cdc.RegisterConcrete(&MsgUpdateDid{}, "cheqd/UpdateDid", nil) - cdc.RegisterConcrete(&MsgDeleteDid{}, "cheqd/DeleteDid", nil) - - cdc.RegisterConcrete(&MsgCreateNym{}, "cheqd/CreateNym", nil) - cdc.RegisterConcrete(&MsgUpdateNym{}, "cheqd/UpdateNym", nil) - cdc.RegisterConcrete(&MsgDeleteNym{}, "cheqd/DeleteNym", nil) } @@ -35,30 +25,18 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { // this line is used by starport scaffolding # 3 registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateCredDef{}, - &MsgUpdateCredDef{}, - &MsgDeleteCredDef{}, ) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateSchema{}, - &MsgUpdateSchema{}, - &MsgDeleteSchema{}, ) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateAttrib{}, &MsgUpdateAttrib{}, - &MsgDeleteAttrib{}, ) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateDid{}, &MsgUpdateDid{}, - &MsgDeleteDid{}, - ) - registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgCreateNym{}, - &MsgUpdateNym{}, - &MsgDeleteNym{}, ) - msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/cheqd/types/genesis.go b/x/cheqd/types/genesis.go index 4dc07ec79..a1a600376 100644 --- a/x/cheqd/types/genesis.go +++ b/x/cheqd/types/genesis.go @@ -1,9 +1,5 @@ package types -import ( - "fmt" -) - // DefaultIndex is the default capability global index const DefaultIndex uint64 = 1 @@ -11,11 +7,7 @@ const DefaultIndex uint64 = 1 func DefaultGenesis() *GenesisState { return &GenesisState{ // this line is used by starport scaffolding # genesis/types/default - CredDefList: []*CredDef{}, - SchemaList: []*Schema{}, - AttribList: []*Attrib{}, - DidList: []*Did{}, - NymList: []*Nym{}, + } } @@ -24,50 +16,6 @@ func DefaultGenesis() *GenesisState { func (gs GenesisState) Validate() error { // this line is used by starport scaffolding # genesis/types/validate // Check for duplicated ID in credDef - credDefIdMap := make(map[uint64]bool) - - for _, elem := range gs.CredDefList { - if _, ok := credDefIdMap[elem.Id]; ok { - return fmt.Errorf("duplicated id for credDef") - } - credDefIdMap[elem.Id] = true - } - // Check for duplicated ID in schema - schemaIdMap := make(map[uint64]bool) - - for _, elem := range gs.SchemaList { - if _, ok := schemaIdMap[elem.Id]; ok { - return fmt.Errorf("duplicated id for schema") - } - schemaIdMap[elem.Id] = true - } - // Check for duplicated ID in attrib - attribIdMap := make(map[uint64]bool) - - for _, elem := range gs.AttribList { - if _, ok := attribIdMap[elem.Id]; ok { - return fmt.Errorf("duplicated id for attrib") - } - attribIdMap[elem.Id] = true - } - // Check for duplicated ID in did - didIdMap := make(map[uint64]bool) - - for _, elem := range gs.DidList { - if _, ok := didIdMap[elem.Id]; ok { - return fmt.Errorf("duplicated id for did") - } - didIdMap[elem.Id] = true - } - // Check for duplicated ID in nym - nymIdMap := make(map[uint64]bool) - - for _, elem := range gs.NymList { - if _, ok := nymIdMap[elem.Id]; ok { - return fmt.Errorf("duplicated id for nym") - } - nymIdMap[elem.Id] = true - } return nil } diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index e758c4368..b50539148 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -21,11 +21,6 @@ func KeyPrefix(p string) []byte { return []byte(p) } -const ( - NymKey = "Nym-value-" - NymCountKey = "Nym-count-" -) - const ( DidKey = "Did-value-" DidCountKey = "Did-count-" diff --git a/x/cheqd/types/messages_attrib.go b/x/cheqd/types/messages_attrib.go index 68b52556c..ed6bdb2e5 100644 --- a/x/cheqd/types/messages_attrib.go +++ b/x/cheqd/types/messages_attrib.go @@ -2,16 +2,14 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) var _ sdk.Msg = &MsgCreateAttrib{} -func NewMsgCreateAttrib(creator string, did string, raw string) *MsgCreateAttrib { +func NewMsgCreateAttrib(did string, raw string) *MsgCreateAttrib { return &MsgCreateAttrib{ - Creator: creator, - Did: did, - Raw: raw, + Did: did, + Raw: raw, } } @@ -24,34 +22,23 @@ func (msg *MsgCreateAttrib) Type() string { } func (msg *MsgCreateAttrib) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} + return []sdk.AccAddress{} } func (msg *MsgCreateAttrib) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) + return []byte{} } func (msg *MsgCreateAttrib) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } return nil } var _ sdk.Msg = &MsgUpdateAttrib{} -func NewMsgUpdateAttrib(creator string, id uint64, did string, raw string) *MsgUpdateAttrib { +func NewMsgUpdateAttrib(did string, raw string) *MsgUpdateAttrib { return &MsgUpdateAttrib{ - Id: id, - Creator: creator, - Did: did, - Raw: raw, + Did: did, + Raw: raw, } } @@ -64,59 +51,13 @@ func (msg *MsgUpdateAttrib) Type() string { } func (msg *MsgUpdateAttrib) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} + return []sdk.AccAddress{} } func (msg *MsgUpdateAttrib) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) + return []byte{} } func (msg *MsgUpdateAttrib) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} - -var _ sdk.Msg = &MsgCreateAttrib{} - -func NewMsgDeleteAttrib(creator string, id uint64) *MsgDeleteAttrib { - return &MsgDeleteAttrib{ - Id: id, - Creator: creator, - } -} -func (msg *MsgDeleteAttrib) Route() string { - return RouterKey -} - -func (msg *MsgDeleteAttrib) Type() string { - return "DeleteAttrib" -} - -func (msg *MsgDeleteAttrib) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgDeleteAttrib) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgDeleteAttrib) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } return nil } diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index 9f69caa46..24484ec68 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -2,18 +2,16 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) var _ sdk.Msg = &MsgCreateCredDef{} -func NewMsgCreateCredDef(creator string, schema_id string, tag string, signature_type string, value string) *MsgCreateCredDef { +func NewMsgCreateCredDef(schema_id string, tag string, signature_type string, value string) *MsgCreateCredDef { return &MsgCreateCredDef{ - Creator: creator, - Schema_id: schema_id, - Tag: tag, - Signature_type: signature_type, - Value: value, + SchemaId: schema_id, + Tag: tag, + SignatureType: signature_type, + Value: value, } } @@ -26,101 +24,13 @@ func (msg *MsgCreateCredDef) Type() string { } func (msg *MsgCreateCredDef) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} + return []sdk.AccAddress{} } func (msg *MsgCreateCredDef) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) + return []byte{} } func (msg *MsgCreateCredDef) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} - -var _ sdk.Msg = &MsgUpdateCredDef{} - -func NewMsgUpdateCredDef(creator string, id uint64, schema_id string, tag string, signature_type string, value string) *MsgUpdateCredDef { - return &MsgUpdateCredDef{ - Id: id, - Creator: creator, - Schema_id: schema_id, - Tag: tag, - Signature_type: signature_type, - Value: value, - } -} - -func (msg *MsgUpdateCredDef) Route() string { - return RouterKey -} - -func (msg *MsgUpdateCredDef) Type() string { - return "UpdateCredDef" -} - -func (msg *MsgUpdateCredDef) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgUpdateCredDef) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUpdateCredDef) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} - -var _ sdk.Msg = &MsgCreateCredDef{} - -func NewMsgDeleteCredDef(creator string, id uint64) *MsgDeleteCredDef { - return &MsgDeleteCredDef{ - Id: id, - Creator: creator, - } -} -func (msg *MsgDeleteCredDef) Route() string { - return RouterKey -} - -func (msg *MsgDeleteCredDef) Type() string { - return "DeleteCredDef" -} - -func (msg *MsgDeleteCredDef) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgDeleteCredDef) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgDeleteCredDef) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } return nil } diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index a35ba3826..fc9370704 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -2,16 +2,15 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) var _ sdk.Msg = &MsgCreateDid{} -func NewMsgCreateDid(creator string, verkey string, alias string) *MsgCreateDid { +func NewMsgCreateDid(id string, verkey string, alias string) *MsgCreateDid { return &MsgCreateDid{ - Creator: creator, - Verkey: verkey, - Alias: alias, + Id: id, + Verkey: verkey, + Alias: alias, } } @@ -24,34 +23,24 @@ func (msg *MsgCreateDid) Type() string { } func (msg *MsgCreateDid) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} + return []sdk.AccAddress{} } func (msg *MsgCreateDid) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) + return []byte{} } func (msg *MsgCreateDid) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } return nil } var _ sdk.Msg = &MsgUpdateDid{} -func NewMsgUpdateDid(creator string, id uint64, verkey string, alias string) *MsgUpdateDid { +func NewMsgUpdateDid(id string, verkey string, alias string) *MsgUpdateDid { return &MsgUpdateDid{ - Id: id, - Creator: creator, - Verkey: verkey, - Alias: alias, + Id: id, + Verkey: verkey, + Alias: alias, } } @@ -64,59 +53,13 @@ func (msg *MsgUpdateDid) Type() string { } func (msg *MsgUpdateDid) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} + return []sdk.AccAddress{} } func (msg *MsgUpdateDid) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) + return []byte{} } func (msg *MsgUpdateDid) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} - -var _ sdk.Msg = &MsgCreateDid{} - -func NewMsgDeleteDid(creator string, id uint64) *MsgDeleteDid { - return &MsgDeleteDid{ - Id: id, - Creator: creator, - } -} -func (msg *MsgDeleteDid) Route() string { - return RouterKey -} - -func (msg *MsgDeleteDid) Type() string { - return "DeleteDid" -} - -func (msg *MsgDeleteDid) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgDeleteDid) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgDeleteDid) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } return nil } diff --git a/x/cheqd/types/messages_nym.go b/x/cheqd/types/messages_nym.go deleted file mode 100644 index 5e0120041..000000000 --- a/x/cheqd/types/messages_nym.go +++ /dev/null @@ -1,126 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -var _ sdk.Msg = &MsgCreateNym{} - -func NewMsgCreateNym(creator string, alias string, verkey string, did string, role string) *MsgCreateNym { - return &MsgCreateNym{ - Creator: creator, - Alias: alias, - Verkey: verkey, - Did: did, - Role: role, - } -} - -func (msg *MsgCreateNym) Route() string { - return RouterKey -} - -func (msg *MsgCreateNym) Type() string { - return "CreateNym" -} - -func (msg *MsgCreateNym) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgCreateNym) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgCreateNym) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} - -var _ sdk.Msg = &MsgUpdateNym{} - -func NewMsgUpdateNym(creator string, id uint64, alias string, verkey string, did string, role string) *MsgUpdateNym { - return &MsgUpdateNym{ - Id: id, - Creator: creator, - Alias: alias, - Verkey: verkey, - Did: did, - Role: role, - } -} - -func (msg *MsgUpdateNym) Route() string { - return RouterKey -} - -func (msg *MsgUpdateNym) Type() string { - return "UpdateNym" -} - -func (msg *MsgUpdateNym) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgUpdateNym) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUpdateNym) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} - -var _ sdk.Msg = &MsgCreateNym{} - -func NewMsgDeleteNym(creator string, id uint64) *MsgDeleteNym { - return &MsgDeleteNym{ - Id: id, - Creator: creator, - } -} -func (msg *MsgDeleteNym) Route() string { - return RouterKey -} - -func (msg *MsgDeleteNym) Type() string { - return "DeleteNym" -} - -func (msg *MsgDeleteNym) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgDeleteNym) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgDeleteNym) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index da5ef8062..48d7301b1 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -2,17 +2,15 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) var _ sdk.Msg = &MsgCreateSchema{} -func NewMsgCreateSchema(creator string, name string, version string, attr_names string) *MsgCreateSchema { +func NewMsgCreateSchema(name string, version string, attr_names string) *MsgCreateSchema { return &MsgCreateSchema{ - Creator: creator, - Name: name, - Version: version, - Attr_names: attr_names, + Name: name, + Version: version, + AttrNames: attr_names, } } @@ -25,100 +23,13 @@ func (msg *MsgCreateSchema) Type() string { } func (msg *MsgCreateSchema) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} + return []sdk.AccAddress{} } func (msg *MsgCreateSchema) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) + return []byte{} } func (msg *MsgCreateSchema) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} - -var _ sdk.Msg = &MsgUpdateSchema{} - -func NewMsgUpdateSchema(creator string, id uint64, name string, version string, attr_names string) *MsgUpdateSchema { - return &MsgUpdateSchema{ - Id: id, - Creator: creator, - Name: name, - Version: version, - Attr_names: attr_names, - } -} - -func (msg *MsgUpdateSchema) Route() string { - return RouterKey -} - -func (msg *MsgUpdateSchema) Type() string { - return "UpdateSchema" -} - -func (msg *MsgUpdateSchema) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgUpdateSchema) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUpdateSchema) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } - return nil -} - -var _ sdk.Msg = &MsgCreateSchema{} - -func NewMsgDeleteSchema(creator string, id uint64) *MsgDeleteSchema { - return &MsgDeleteSchema{ - Id: id, - Creator: creator, - } -} -func (msg *MsgDeleteSchema) Route() string { - return RouterKey -} - -func (msg *MsgDeleteSchema) Type() string { - return "DeleteSchema" -} - -func (msg *MsgDeleteSchema) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - return []sdk.AccAddress{creator} -} - -func (msg *MsgDeleteSchema) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgDeleteSchema) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) - } return nil } diff --git a/x/cheqd/types/messages_write_request.go b/x/cheqd/types/messages_write_request.go new file mode 100644 index 000000000..4f3a92f63 --- /dev/null +++ b/x/cheqd/types/messages_write_request.go @@ -0,0 +1,36 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +var _ sdk.Msg = &MsgWriteRequest{} + +func NewMsgWriteRequest(data *types.Any, author string, signature string) *MsgWriteRequest { + return &MsgWriteRequest{ + Data: data, + Author: author, + Signature: signature, + } +} + +func (msg *MsgWriteRequest) Route() string { + return RouterKey +} + +func (msg *MsgWriteRequest) Type() string { + return "WriteRequestDef" +} + +func (msg *MsgWriteRequest) GetSigners() []sdk.AccAddress { + return []sdk.AccAddress{} +} + +func (msg *MsgWriteRequest) GetSignBytes() []byte { + return []byte{} +} + +func (msg *MsgWriteRequest) ValidateBasic() error { + return nil +} diff --git a/x/cheqd/types/query.go b/x/cheqd/types/query.go index 13a026497..736d2fc60 100644 --- a/x/cheqd/types/query.go +++ b/x/cheqd/types/query.go @@ -1,26 +1,17 @@ package types const ( - QueryGetNym = "get-nym" - QueryListNym = "list-nym" + QueryGetDid = "get-did" ) const ( - QueryGetDid = "get-did" - QueryListDid = "list-did" + QueryGetAttrib = "get-attrib" ) const ( - QueryGetAttrib = "get-attrib" - QueryListAttrib = "list-attrib" + QueryGetSchema = "get-schema" ) const ( - QueryGetSchema = "get-schema" - QueryListSchema = "list-schema" -) - -const ( - QueryGetCredDef = "get-credDef" - QueryListCredDef = "list-credDef" + QueryGetCredDef = "get-credDef" ) diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 75773b48d..c70c2a16d 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -30,9 +30,9 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // this line is used by starport scaffolding # proto/tx/message type MsgWriteRequest struct { - Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` - Signature string `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` + Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` + Signatures map[string]string `protobuf:"bytes,3,rep,name=signatures,proto3" json:"signatures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *MsgWriteRequest) Reset() { *m = MsgWriteRequest{} } @@ -82,11 +82,11 @@ func (m *MsgWriteRequest) GetAuthor() string { return "" } -func (m *MsgWriteRequest) GetSignature() string { +func (m *MsgWriteRequest) GetSignatures() map[string]string { if m != nil { - return m.Signature + return m.Signatures } - return "" + return nil } type MsgCreateCredDef struct { @@ -707,6 +707,7 @@ func (m *MsgUpdateDidResponse) GetId() string { func init() { proto.RegisterType((*MsgWriteRequest)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest") + proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest.SignaturesEntry") proto.RegisterType((*MsgCreateCredDef)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDef") proto.RegisterType((*MsgCreateCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDefResponse") proto.RegisterType((*MsgCreateSchema)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchema") @@ -724,42 +725,45 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 550 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xc7, 0xe3, 0x24, 0x14, 0x3c, 0xa4, 0xa1, 0x5a, 0x45, 0xd4, 0x14, 0xb0, 0x2a, 0x4b, 0x45, - 0x29, 0x52, 0x1d, 0x28, 0xe2, 0x01, 0x4a, 0x7a, 0x41, 0xa2, 0x1c, 0x02, 0x08, 0x89, 0x03, 0xd1, - 0x26, 0x3b, 0x75, 0x56, 0x24, 0x76, 0xba, 0x5e, 0xa7, 0xcd, 0x85, 0x67, 0xe0, 0xb1, 0x38, 0xf6, - 0xc8, 0x11, 0x25, 0x4f, 0xc0, 0x1b, 0xa0, 0x5d, 0x7f, 0x24, 0x31, 0x58, 0xa9, 0xaa, 0x5c, 0x92, - 0x99, 0xd9, 0x99, 0xf9, 0x4d, 0x26, 0x7f, 0xaf, 0xa1, 0xde, 0x1f, 0xe0, 0x05, 0x6b, 0xc9, 0x2b, - 0x77, 0x2c, 0x02, 0x19, 0x90, 0x5d, 0xed, 0x73, 0xe6, 0xea, 0x6f, 0x3f, 0x60, 0x18, 0x5b, 0x7b, - 0x8f, 0xbc, 0x20, 0xf0, 0x86, 0xd8, 0xd2, 0x69, 0xbd, 0xe8, 0xbc, 0x45, 0xfd, 0x69, 0x5c, 0xe3, - 0xf8, 0x50, 0xfb, 0x2c, 0xb8, 0xc4, 0x0e, 0x5e, 0x44, 0x18, 0x4a, 0xd2, 0x84, 0x2a, 0xa3, 0x92, - 0x5a, 0xc6, 0xbe, 0xd1, 0xbc, 0x7f, 0xdc, 0x70, 0xe3, 0x4a, 0x37, 0xad, 0x74, 0x4f, 0xfc, 0x69, - 0x47, 0x67, 0x90, 0x87, 0xb0, 0x45, 0x23, 0x39, 0x08, 0x84, 0x55, 0xde, 0x37, 0x9a, 0x66, 0x27, - 0xf1, 0xc8, 0x13, 0x30, 0x43, 0xee, 0xf9, 0x54, 0x46, 0x02, 0xad, 0x8a, 0x3e, 0x5a, 0x04, 0x9c, - 0xef, 0xb0, 0x73, 0x16, 0x7a, 0x6d, 0x81, 0x54, 0x62, 0x5b, 0x20, 0x3b, 0xc5, 0x73, 0xf2, 0x18, - 0xcc, 0xb0, 0x3f, 0xc0, 0x11, 0xed, 0x72, 0xa6, 0xc1, 0x66, 0xe7, 0x5e, 0x1c, 0x78, 0xcb, 0xc8, - 0x0e, 0x54, 0x24, 0xf5, 0x12, 0x86, 0x32, 0xc9, 0x01, 0xd4, 0xb3, 0x7e, 0x5d, 0x39, 0x1d, 0xa7, - 0x94, 0xed, 0x2c, 0xfa, 0x71, 0x3a, 0x46, 0xd2, 0x80, 0x3b, 0x13, 0x3a, 0x8c, 0xd0, 0xaa, 0xea, - 0xd3, 0xd8, 0x71, 0x9e, 0x83, 0x95, 0xe7, 0x77, 0x30, 0x1c, 0x07, 0x7e, 0x88, 0xa4, 0x0e, 0xe5, - 0x6c, 0x80, 0x32, 0x67, 0xce, 0x57, 0x78, 0x90, 0xe5, 0x7e, 0xd0, 0xf3, 0x10, 0x02, 0x55, 0x9f, - 0x8e, 0x30, 0x49, 0xd2, 0x36, 0xb1, 0xe0, 0xee, 0x04, 0x45, 0xc8, 0x03, 0x3f, 0x99, 0x32, 0x75, - 0xc9, 0x53, 0x00, 0x2a, 0xa5, 0xe8, 0xaa, 0xb4, 0x30, 0xdd, 0x85, 0x8a, 0xbc, 0x57, 0x01, 0xe7, - 0x10, 0x76, 0x73, 0xfd, 0x0b, 0x47, 0x79, 0xbd, 0x34, 0xca, 0x89, 0x94, 0x82, 0xf7, 0xd4, 0x62, - 0x58, 0x96, 0xa3, 0x4c, 0x15, 0x11, 0xf4, 0x32, 0x5d, 0x95, 0xa0, 0x97, 0x2b, 0x84, 0xb8, 0x6c, - 0x0d, 0xe1, 0xd3, 0x98, 0xdd, 0x86, 0xb0, 0x5c, 0x56, 0x48, 0x78, 0x07, 0xb5, 0x6c, 0x98, 0x53, - 0xce, 0xf2, 0xe7, 0x4a, 0x50, 0x13, 0x14, 0xdf, 0x70, 0x9a, 0x0a, 0x2a, 0xf6, 0xd4, 0x1f, 0x49, - 0x87, 0x9c, 0xa6, 0x0b, 0x8c, 0x1d, 0xe7, 0x19, 0x34, 0x96, 0xbb, 0xad, 0xa1, 0xc6, 0x03, 0x6e, - 0x8a, 0x9a, 0x75, 0x2b, 0xa2, 0x1e, 0xff, 0xa9, 0x42, 0xe5, 0x2c, 0xf4, 0x08, 0x87, 0xed, 0x55, - 0xad, 0x1f, 0xb8, 0x05, 0x0f, 0xa9, 0xbb, 0xfc, 0x18, 0xee, 0xbd, 0x2c, 0x4c, 0x2b, 0x54, 0xaf, - 0x07, 0xb5, 0x15, 0xa9, 0xde, 0x90, 0xf4, 0x62, 0x3d, 0x29, 0xa7, 0xcd, 0x0c, 0x94, 0xc8, 0x64, - 0x73, 0xa0, 0x9c, 0x80, 0x3c, 0xa8, 0xad, 0xe8, 0x71, 0x13, 0xa0, 0xff, 0x2a, 0x95, 0x82, 0xb9, - 0x90, 0xe5, 0x0d, 0x29, 0x47, 0xeb, 0x7f, 0xce, 0xb2, 0x40, 0x28, 0x98, 0x0b, 0x0d, 0x6e, 0x02, - 0xf1, 0x8f, 0x06, 0xdf, 0xb4, 0x7f, 0xce, 0x6c, 0xe3, 0x7a, 0x66, 0x1b, 0xbf, 0x67, 0xb6, 0xf1, - 0x63, 0x6e, 0x97, 0xae, 0xe7, 0x76, 0xe9, 0xd7, 0xdc, 0x2e, 0x7d, 0x39, 0xf4, 0xb8, 0x1c, 0x44, - 0x3d, 0xb7, 0x1f, 0x8c, 0x5a, 0xf1, 0x3b, 0x43, 0x7f, 0x1e, 0xa9, 0x8e, 0xad, 0xab, 0x24, 0xa4, - 0x6e, 0xd2, 0xb0, 0xb7, 0xa5, 0x6f, 0xfa, 0x57, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x31, 0x70, - 0x6f, 0xea, 0x5c, 0x06, 0x00, 0x00, + // 597 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0xad, 0x93, 0xb4, 0xe0, 0x69, 0x9a, 0x56, 0xab, 0x88, 0x9a, 0x20, 0xac, 0xc8, 0x12, 0x28, + 0x45, 0xaa, 0x03, 0x41, 0x48, 0x15, 0x12, 0x87, 0x92, 0x72, 0x40, 0x22, 0x1c, 0x5c, 0x10, 0x88, + 0x03, 0xd1, 0x26, 0xbb, 0x75, 0x5c, 0x12, 0x3b, 0xdd, 0x5d, 0xa7, 0xf5, 0x85, 0x0b, 0x3f, 0xc0, + 0x67, 0x71, 0xec, 0x91, 0x23, 0x4a, 0xae, 0x7c, 0x04, 0x5a, 0xdb, 0x71, 0x1c, 0xd3, 0x90, 0x08, + 0xe5, 0x92, 0xcc, 0xcc, 0xce, 0xbc, 0xf7, 0xbc, 0xfb, 0xec, 0x85, 0x52, 0xb7, 0x47, 0x2f, 0x48, + 0x5d, 0x5c, 0x99, 0x43, 0xe6, 0x09, 0x0f, 0xed, 0x87, 0xb9, 0x43, 0xcc, 0xf0, 0xdf, 0xf5, 0x08, + 0x8d, 0xa2, 0xca, 0x5d, 0xdb, 0xf3, 0xec, 0x3e, 0xad, 0x87, 0x6d, 0x1d, 0xff, 0xac, 0x8e, 0xdd, + 0x20, 0x9a, 0x31, 0x7e, 0x2b, 0xb0, 0xdb, 0xe2, 0xf6, 0x07, 0xe6, 0x08, 0x6a, 0xd1, 0x0b, 0x9f, + 0x72, 0x81, 0x6a, 0x50, 0x20, 0x58, 0x60, 0x4d, 0xa9, 0x2a, 0xb5, 0xed, 0x46, 0xd9, 0x8c, 0xa6, + 0xcd, 0xe9, 0xb4, 0x79, 0xec, 0x06, 0x56, 0xd8, 0x81, 0xee, 0xc0, 0x16, 0xf6, 0x45, 0xcf, 0x63, + 0x5a, 0xae, 0xaa, 0xd4, 0x54, 0x2b, 0xce, 0xd0, 0x47, 0x00, 0xee, 0xd8, 0x2e, 0x16, 0x3e, 0xa3, + 0x5c, 0xcb, 0x57, 0xf3, 0xb5, 0xed, 0xc6, 0x91, 0xb9, 0x40, 0x9e, 0x99, 0xe1, 0x37, 0x4f, 0x93, + 0xd1, 0x57, 0xae, 0x60, 0x81, 0x95, 0xc2, 0xaa, 0xbc, 0x80, 0xdd, 0xcc, 0x32, 0xda, 0x83, 0xfc, + 0x17, 0x1a, 0x84, 0x6a, 0x55, 0x4b, 0x86, 0xa8, 0x0c, 0x9b, 0x23, 0xdc, 0xf7, 0x69, 0xac, 0x2a, + 0x4a, 0x9e, 0xe7, 0x8e, 0x14, 0xe3, 0x2b, 0xec, 0xb5, 0xb8, 0xdd, 0x64, 0x14, 0x0b, 0xda, 0x64, + 0x94, 0x9c, 0xd0, 0x33, 0x74, 0x0f, 0x54, 0xde, 0xed, 0xd1, 0x01, 0x6e, 0x3b, 0x24, 0x46, 0xb9, + 0x1d, 0x15, 0x5e, 0x13, 0x09, 0x2e, 0xb0, 0x1d, 0x03, 0xc9, 0x10, 0x3d, 0x80, 0x52, 0xa2, 0xa7, + 0x2d, 0x82, 0x21, 0xd5, 0xf2, 0xe1, 0xe2, 0x4e, 0x52, 0x7d, 0x17, 0x0c, 0xe9, 0x4c, 0x43, 0x21, + 0xa5, 0xc1, 0x78, 0x04, 0x5a, 0x96, 0xdf, 0xa2, 0x7c, 0xe8, 0xb9, 0x9c, 0xa2, 0x12, 0xe4, 0x12, + 0x01, 0x39, 0x87, 0x18, 0x9f, 0xc3, 0x93, 0x89, 0x7a, 0x4f, 0x43, 0x3d, 0x08, 0x41, 0xc1, 0xc5, + 0x03, 0x1a, 0x37, 0x85, 0x31, 0xd2, 0xe0, 0xd6, 0x88, 0x32, 0xee, 0x78, 0x6e, 0xac, 0x72, 0x9a, + 0xa2, 0xfb, 0x00, 0x58, 0x08, 0xd6, 0x96, 0x6d, 0x3c, 0x56, 0xa9, 0xca, 0xca, 0x5b, 0x59, 0x30, + 0x0e, 0x60, 0x3f, 0x83, 0xbf, 0x50, 0xca, 0xb3, 0x94, 0x94, 0x63, 0x21, 0x98, 0xd3, 0x91, 0x1b, + 0x43, 0x92, 0x1e, 0x19, 0xca, 0x0a, 0xc3, 0x97, 0xd3, 0xad, 0x62, 0xf8, 0x72, 0x8e, 0x21, 0x1a, + 0x5b, 0xc2, 0xf0, 0x7e, 0x48, 0xfe, 0x87, 0x21, 0x3d, 0xb6, 0x90, 0xe1, 0x0d, 0x14, 0x13, 0x31, + 0x27, 0x0e, 0xc9, 0xae, 0x4b, 0x2f, 0x8f, 0x28, 0x93, 0x4e, 0x8a, 0xbd, 0x1c, 0x65, 0xf2, 0x20, + 0x71, 0xdf, 0xc1, 0xd3, 0x0d, 0x8c, 0x12, 0xe3, 0x21, 0x94, 0xd3, 0x68, 0x4b, 0x58, 0x23, 0x81, + 0xeb, 0x62, 0x4d, 0xd0, 0x16, 0xb1, 0x36, 0xbe, 0x6d, 0x42, 0xbe, 0xc5, 0x6d, 0xd4, 0x87, 0x9d, + 0x79, 0xaf, 0xd7, 0x56, 0x7d, 0x09, 0x2b, 0x4f, 0xfe, 0xd5, 0x79, 0xb3, 0x81, 0xcf, 0xa1, 0x38, + 0xe7, 0xd6, 0xd5, 0xc9, 0x1e, 0x2f, 0x27, 0xcb, 0x38, 0x34, 0xe1, 0x8a, 0xcd, 0xb2, 0x56, 0xae, + 0x8c, 0x93, 0xce, 0xa1, 0x38, 0x67, 0xcc, 0x35, 0x71, 0xdd, 0xe8, 0x5a, 0x02, 0xea, 0xcc, 0xa2, + 0xab, 0x13, 0x1d, 0x2e, 0x7f, 0xa8, 0xb4, 0x5f, 0x08, 0xa8, 0x33, 0x4b, 0xae, 0x89, 0xe5, 0x2f, + 0x57, 0xbe, 0x6c, 0xfe, 0x18, 0xeb, 0xca, 0xf5, 0x58, 0x57, 0x7e, 0x8d, 0x75, 0xe5, 0xfb, 0x44, + 0xdf, 0xb8, 0x9e, 0xe8, 0x1b, 0x3f, 0x27, 0xfa, 0xc6, 0xa7, 0x03, 0xdb, 0x11, 0x3d, 0xbf, 0x63, + 0x76, 0xbd, 0x41, 0x3d, 0xba, 0xc4, 0xc2, 0xdf, 0x43, 0x89, 0x58, 0xbf, 0x8a, 0x4b, 0xf2, 0xdb, + 0xca, 0x3b, 0x5b, 0xe1, 0xb5, 0xf3, 0xf4, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcf, 0xbe, 0x2f, + 0x87, 0xed, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1044,12 +1048,24 @@ func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Signature) > 0 { - i -= len(m.Signature) - copy(dAtA[i:], m.Signature) - i = encodeVarintTx(dAtA, i, uint64(len(m.Signature))) - i-- - dAtA[i] = 0x1a + if len(m.Signatures) > 0 { + for k := range m.Signatures { + v := m.Signatures[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintTx(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintTx(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintTx(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x1a + } } if len(m.Author) > 0 { i -= len(m.Author) @@ -1535,9 +1551,13 @@ func (m *MsgWriteRequest) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Signature) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Signatures) > 0 { + for k, v := range m.Signatures { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovTx(uint64(len(k))) + 1 + len(v) + sovTx(uint64(len(v))) + n += mapEntrySize + 1 + sovTx(uint64(mapEntrySize)) + } } return n } @@ -1847,9 +1867,9 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Signature", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Signatures", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -1859,23 +1879,118 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Signature = string(dAtA[iNdEx:postIndex]) + if m.Signatures == nil { + m.Signatures = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthTx + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthTx + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthTx + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthTx + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Signatures[mapkey] = mapvalue iNdEx = postIndex default: iNdEx = preIndex From 165d069257eaacc5d2541c0a3ba73422908a7092 Mon Sep 17 00:00:00 2001 From: toktar Date: Thu, 16 Sep 2021 20:34:42 +0300 Subject: [PATCH 06/74] Update attrib model --- proto/cheqd/attrib.proto | 2 +- proto/cheqd/tx.proto | 4 +- x/cheqd/handler.go | 2 + x/cheqd/types/attrib.pb.go | 44 ++++++------ x/cheqd/types/tx.pb.go | 138 ++++++++++++++++++++----------------- 5 files changed, 102 insertions(+), 88 deletions(-) diff --git a/proto/cheqd/attrib.proto b/proto/cheqd/attrib.proto index 8f8525b37..4eef355d9 100644 --- a/proto/cheqd/attrib.proto +++ b/proto/cheqd/attrib.proto @@ -7,5 +7,5 @@ import "gogoproto/gogo.proto"; message Attrib { string did = 1; - string raw = 2; + repeated string raw = 2; } diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index c6b5bf293..b4e09d621 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -47,7 +47,7 @@ message MsgCreateSchemaResponse { message MsgCreateAttrib { string did = 1; - string raw = 2; + repeated string raw = 2; } message MsgCreateAttribResponse { @@ -56,7 +56,7 @@ message MsgCreateAttribResponse { message MsgUpdateAttrib { string did = 1; - string raw = 2; + repeated string raw = 2; } message MsgUpdateAttribResponse { diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index d619e518b..530e7a62e 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -2,6 +2,7 @@ package cheqd import ( "fmt" + "google.golang.org/protobuf/types/known/anypb" "github.com/cheqd/cheqd-node/x/cheqd/keeper" "github.com/cheqd/cheqd-node/x/cheqd/types" @@ -20,6 +21,7 @@ func NewHandler(k keeper.Keeper) sdk.Handler { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + m, err := anypb.New(parsed_msg.Data) switch parsed_msg.Data.TypeUrl { // this line is used by starport scaffolding # 1 case types.MsgCreateCredDef.Type(): diff --git a/x/cheqd/types/attrib.pb.go b/x/cheqd/types/attrib.pb.go index 9ad9f3b67..fc5f68710 100644 --- a/x/cheqd/types/attrib.pb.go +++ b/x/cheqd/types/attrib.pb.go @@ -24,8 +24,8 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Attrib struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` - Raw string `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Raw []string `protobuf:"bytes,2,rep,name=raw,proto3" json:"raw,omitempty"` } func (m *Attrib) Reset() { *m = Attrib{} } @@ -68,11 +68,11 @@ func (m *Attrib) GetDid() string { return "" } -func (m *Attrib) GetRaw() string { +func (m *Attrib) GetRaw() []string { if m != nil { return m.Raw } - return "" + return nil } func init() { @@ -82,18 +82,18 @@ func init() { func init() { proto.RegisterFile("cheqd/attrib.proto", fileDescriptor_b9f989a63ffe2b70) } var fileDescriptor_b9f989a63ffe2b70 = []byte{ - // 167 bytes of a gzipped FileDescriptorProto + // 169 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x4f, 0x2c, 0x29, 0x29, 0xca, 0x4c, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xd2, 0xe1, 0x62, 0x73, 0x04, 0x6b, 0x17, 0x12, 0xe0, 0x62, 0x4e, 0xc9, 0x4c, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x02, 0x31, - 0x41, 0x22, 0x45, 0x89, 0xe5, 0x12, 0x4c, 0x10, 0x91, 0xa2, 0xc4, 0x72, 0x27, 0xe7, 0x13, 0x8f, - 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, - 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, - 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xb8, 0x0a, 0x4c, 0xea, 0x82, 0x1c, 0xa0, 0x5f, 0x01, 0x15, 0x2a, - 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xdb, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x1d, - 0x8c, 0x51, 0xea, 0xbe, 0x00, 0x00, 0x00, + 0x41, 0x22, 0x45, 0x89, 0xe5, 0x12, 0x4c, 0x0a, 0xcc, 0x20, 0x91, 0xa2, 0xc4, 0x72, 0x27, 0xe7, + 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, + 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, + 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xb8, 0x0a, 0x4c, 0xea, 0x82, 0x1c, 0xa0, 0x5f, 0x01, + 0x15, 0x2a, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xdb, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, + 0xff, 0x1f, 0x35, 0x52, 0xfd, 0xbe, 0x00, 0x00, 0x00, } func (m *Attrib) Marshal() (dAtA []byte, err error) { @@ -117,11 +117,13 @@ func (m *Attrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Raw) > 0 { - i -= len(m.Raw) - copy(dAtA[i:], m.Raw) - i = encodeVarintAttrib(dAtA, i, uint64(len(m.Raw))) - i-- - dAtA[i] = 0x12 + for iNdEx := len(m.Raw) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Raw[iNdEx]) + copy(dAtA[i:], m.Raw[iNdEx]) + i = encodeVarintAttrib(dAtA, i, uint64(len(m.Raw[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Did) > 0 { i -= len(m.Did) @@ -154,9 +156,11 @@ func (m *Attrib) Size() (n int) { if l > 0 { n += 1 + l + sovAttrib(uint64(l)) } - l = len(m.Raw) - if l > 0 { - n += 1 + l + sovAttrib(uint64(l)) + if len(m.Raw) > 0 { + for _, s := range m.Raw { + l = len(s) + n += 1 + l + sovAttrib(uint64(l)) + } } return n } @@ -258,7 +262,7 @@ func (m *Attrib) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Raw = string(dAtA[iNdEx:postIndex]) + m.Raw = append(m.Raw, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index c70c2a16d..c829b1a78 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -306,8 +306,8 @@ func (m *MsgCreateSchemaResponse) GetId() string { } type MsgCreateAttrib struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` - Raw string `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Raw []string `protobuf:"bytes,2,rep,name=raw,proto3" json:"raw,omitempty"` } func (m *MsgCreateAttrib) Reset() { *m = MsgCreateAttrib{} } @@ -350,11 +350,11 @@ func (m *MsgCreateAttrib) GetDid() string { return "" } -func (m *MsgCreateAttrib) GetRaw() string { +func (m *MsgCreateAttrib) GetRaw() []string { if m != nil { return m.Raw } - return "" + return nil } type MsgCreateAttribResponse struct { @@ -402,8 +402,8 @@ func (m *MsgCreateAttribResponse) GetId() string { } type MsgUpdateAttrib struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` - Raw string `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Raw []string `protobuf:"bytes,2,rep,name=raw,proto3" json:"raw,omitempty"` } func (m *MsgUpdateAttrib) Reset() { *m = MsgUpdateAttrib{} } @@ -446,11 +446,11 @@ func (m *MsgUpdateAttrib) GetDid() string { return "" } -func (m *MsgUpdateAttrib) GetRaw() string { +func (m *MsgUpdateAttrib) GetRaw() []string { if m != nil { return m.Raw } - return "" + return nil } type MsgUpdateAttribResponse struct { @@ -725,45 +725,45 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 597 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0xad, 0x93, 0xb4, 0xe0, 0x69, 0x9a, 0x56, 0xab, 0x88, 0x9a, 0x20, 0xac, 0xc8, 0x12, 0x28, - 0x45, 0xaa, 0x03, 0x41, 0x48, 0x15, 0x12, 0x87, 0x92, 0x72, 0x40, 0x22, 0x1c, 0x5c, 0x10, 0x88, - 0x03, 0xd1, 0x26, 0xbb, 0x75, 0x5c, 0x12, 0x3b, 0xdd, 0x5d, 0xa7, 0xf5, 0x85, 0x0b, 0x3f, 0xc0, - 0x67, 0x71, 0xec, 0x91, 0x23, 0x4a, 0xae, 0x7c, 0x04, 0x5a, 0xdb, 0x71, 0x1c, 0xd3, 0x90, 0x08, - 0xe5, 0x92, 0xcc, 0xcc, 0xce, 0xbc, 0xf7, 0xbc, 0xfb, 0xec, 0x85, 0x52, 0xb7, 0x47, 0x2f, 0x48, - 0x5d, 0x5c, 0x99, 0x43, 0xe6, 0x09, 0x0f, 0xed, 0x87, 0xb9, 0x43, 0xcc, 0xf0, 0xdf, 0xf5, 0x08, - 0x8d, 0xa2, 0xca, 0x5d, 0xdb, 0xf3, 0xec, 0x3e, 0xad, 0x87, 0x6d, 0x1d, 0xff, 0xac, 0x8e, 0xdd, - 0x20, 0x9a, 0x31, 0x7e, 0x2b, 0xb0, 0xdb, 0xe2, 0xf6, 0x07, 0xe6, 0x08, 0x6a, 0xd1, 0x0b, 0x9f, - 0x72, 0x81, 0x6a, 0x50, 0x20, 0x58, 0x60, 0x4d, 0xa9, 0x2a, 0xb5, 0xed, 0x46, 0xd9, 0x8c, 0xa6, - 0xcd, 0xe9, 0xb4, 0x79, 0xec, 0x06, 0x56, 0xd8, 0x81, 0xee, 0xc0, 0x16, 0xf6, 0x45, 0xcf, 0x63, - 0x5a, 0xae, 0xaa, 0xd4, 0x54, 0x2b, 0xce, 0xd0, 0x47, 0x00, 0xee, 0xd8, 0x2e, 0x16, 0x3e, 0xa3, - 0x5c, 0xcb, 0x57, 0xf3, 0xb5, 0xed, 0xc6, 0x91, 0xb9, 0x40, 0x9e, 0x99, 0xe1, 0x37, 0x4f, 0x93, - 0xd1, 0x57, 0xae, 0x60, 0x81, 0x95, 0xc2, 0xaa, 0xbc, 0x80, 0xdd, 0xcc, 0x32, 0xda, 0x83, 0xfc, - 0x17, 0x1a, 0x84, 0x6a, 0x55, 0x4b, 0x86, 0xa8, 0x0c, 0x9b, 0x23, 0xdc, 0xf7, 0x69, 0xac, 0x2a, - 0x4a, 0x9e, 0xe7, 0x8e, 0x14, 0xe3, 0x2b, 0xec, 0xb5, 0xb8, 0xdd, 0x64, 0x14, 0x0b, 0xda, 0x64, - 0x94, 0x9c, 0xd0, 0x33, 0x74, 0x0f, 0x54, 0xde, 0xed, 0xd1, 0x01, 0x6e, 0x3b, 0x24, 0x46, 0xb9, - 0x1d, 0x15, 0x5e, 0x13, 0x09, 0x2e, 0xb0, 0x1d, 0x03, 0xc9, 0x10, 0x3d, 0x80, 0x52, 0xa2, 0xa7, - 0x2d, 0x82, 0x21, 0xd5, 0xf2, 0xe1, 0xe2, 0x4e, 0x52, 0x7d, 0x17, 0x0c, 0xe9, 0x4c, 0x43, 0x21, - 0xa5, 0xc1, 0x78, 0x04, 0x5a, 0x96, 0xdf, 0xa2, 0x7c, 0xe8, 0xb9, 0x9c, 0xa2, 0x12, 0xe4, 0x12, - 0x01, 0x39, 0x87, 0x18, 0x9f, 0xc3, 0x93, 0x89, 0x7a, 0x4f, 0x43, 0x3d, 0x08, 0x41, 0xc1, 0xc5, - 0x03, 0x1a, 0x37, 0x85, 0x31, 0xd2, 0xe0, 0xd6, 0x88, 0x32, 0xee, 0x78, 0x6e, 0xac, 0x72, 0x9a, - 0xa2, 0xfb, 0x00, 0x58, 0x08, 0xd6, 0x96, 0x6d, 0x3c, 0x56, 0xa9, 0xca, 0xca, 0x5b, 0x59, 0x30, - 0x0e, 0x60, 0x3f, 0x83, 0xbf, 0x50, 0xca, 0xb3, 0x94, 0x94, 0x63, 0x21, 0x98, 0xd3, 0x91, 0x1b, - 0x43, 0x92, 0x1e, 0x19, 0xca, 0x0a, 0xc3, 0x97, 0xd3, 0xad, 0x62, 0xf8, 0x72, 0x8e, 0x21, 0x1a, - 0x5b, 0xc2, 0xf0, 0x7e, 0x48, 0xfe, 0x87, 0x21, 0x3d, 0xb6, 0x90, 0xe1, 0x0d, 0x14, 0x13, 0x31, - 0x27, 0x0e, 0xc9, 0xae, 0x4b, 0x2f, 0x8f, 0x28, 0x93, 0x4e, 0x8a, 0xbd, 0x1c, 0x65, 0xf2, 0x20, - 0x71, 0xdf, 0xc1, 0xd3, 0x0d, 0x8c, 0x12, 0xe3, 0x21, 0x94, 0xd3, 0x68, 0x4b, 0x58, 0x23, 0x81, - 0xeb, 0x62, 0x4d, 0xd0, 0x16, 0xb1, 0x36, 0xbe, 0x6d, 0x42, 0xbe, 0xc5, 0x6d, 0xd4, 0x87, 0x9d, - 0x79, 0xaf, 0xd7, 0x56, 0x7d, 0x09, 0x2b, 0x4f, 0xfe, 0xd5, 0x79, 0xb3, 0x81, 0xcf, 0xa1, 0x38, - 0xe7, 0xd6, 0xd5, 0xc9, 0x1e, 0x2f, 0x27, 0xcb, 0x38, 0x34, 0xe1, 0x8a, 0xcd, 0xb2, 0x56, 0xae, - 0x8c, 0x93, 0xce, 0xa1, 0x38, 0x67, 0xcc, 0x35, 0x71, 0xdd, 0xe8, 0x5a, 0x02, 0xea, 0xcc, 0xa2, - 0xab, 0x13, 0x1d, 0x2e, 0x7f, 0xa8, 0xb4, 0x5f, 0x08, 0xa8, 0x33, 0x4b, 0xae, 0x89, 0xe5, 0x2f, - 0x57, 0xbe, 0x6c, 0xfe, 0x18, 0xeb, 0xca, 0xf5, 0x58, 0x57, 0x7e, 0x8d, 0x75, 0xe5, 0xfb, 0x44, - 0xdf, 0xb8, 0x9e, 0xe8, 0x1b, 0x3f, 0x27, 0xfa, 0xc6, 0xa7, 0x03, 0xdb, 0x11, 0x3d, 0xbf, 0x63, - 0x76, 0xbd, 0x41, 0x3d, 0xba, 0xc4, 0xc2, 0xdf, 0x43, 0x89, 0x58, 0xbf, 0x8a, 0x4b, 0xf2, 0xdb, - 0xca, 0x3b, 0x5b, 0xe1, 0xb5, 0xf3, 0xf4, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcf, 0xbe, 0x2f, - 0x87, 0xed, 0x06, 0x00, 0x00, + // 600 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0x86, 0xeb, 0xb8, 0x2d, 0x78, 0xda, 0xa6, 0xd5, 0x2a, 0xa2, 0x26, 0x08, 0x2b, 0xb2, 0x04, + 0x4a, 0x91, 0xea, 0x40, 0x10, 0x52, 0x85, 0xc4, 0xa1, 0xa4, 0x1c, 0x90, 0x08, 0x07, 0x17, 0x04, + 0xe2, 0x40, 0xb4, 0xc9, 0x6e, 0x1d, 0x97, 0xc4, 0x4e, 0x77, 0xd7, 0x69, 0x7d, 0xe1, 0xc2, 0x0b, + 0xf0, 0x58, 0x1c, 0x7b, 0xe4, 0x88, 0x92, 0x2b, 0x0f, 0x81, 0xd6, 0x76, 0x1c, 0xc7, 0x34, 0x24, + 0x42, 0xb9, 0x24, 0x33, 0xb3, 0x33, 0xf3, 0xfd, 0xb1, 0xff, 0xd8, 0x50, 0xec, 0x74, 0xe9, 0x05, + 0xa9, 0x89, 0x2b, 0x6b, 0xc0, 0x7c, 0xe1, 0xa3, 0xfd, 0x28, 0x77, 0x89, 0x15, 0x7d, 0x7b, 0x3e, + 0xa1, 0x71, 0x54, 0xbe, 0xeb, 0xf8, 0xbe, 0xd3, 0xa3, 0xb5, 0xa8, 0xad, 0x1d, 0x9c, 0xd5, 0xb0, + 0x17, 0xc6, 0x33, 0xe6, 0x6f, 0x05, 0x76, 0x9b, 0xdc, 0xf9, 0xc0, 0x5c, 0x41, 0x6d, 0x7a, 0x11, + 0x50, 0x2e, 0x50, 0x15, 0xd6, 0x09, 0x16, 0x58, 0x57, 0x2a, 0x4a, 0x75, 0xab, 0x5e, 0xb2, 0xe2, + 0x69, 0x6b, 0x32, 0x6d, 0x1d, 0x7b, 0xa1, 0x1d, 0x75, 0xa0, 0x3b, 0xb0, 0x89, 0x03, 0xd1, 0xf5, + 0x99, 0x5e, 0xa8, 0x28, 0x55, 0xcd, 0x4e, 0x32, 0xf4, 0x11, 0x80, 0xbb, 0x8e, 0x87, 0x45, 0xc0, + 0x28, 0xd7, 0xd5, 0x8a, 0x5a, 0xdd, 0xaa, 0x1f, 0x59, 0x73, 0xe4, 0x59, 0x39, 0xbe, 0x75, 0x9a, + 0x8e, 0xbe, 0xf2, 0x04, 0x0b, 0xed, 0xcc, 0xae, 0xf2, 0x0b, 0xd8, 0xcd, 0x1d, 0xa3, 0x3d, 0x50, + 0xbf, 0xd0, 0x30, 0x52, 0xab, 0xd9, 0x32, 0x44, 0x25, 0xd8, 0x18, 0xe2, 0x5e, 0x40, 0x13, 0x55, + 0x71, 0xf2, 0xbc, 0x70, 0xa4, 0x98, 0x5f, 0x61, 0xaf, 0xc9, 0x9d, 0x06, 0xa3, 0x58, 0xd0, 0x06, + 0xa3, 0xe4, 0x84, 0x9e, 0xa1, 0x7b, 0xa0, 0xf1, 0x4e, 0x97, 0xf6, 0x71, 0xcb, 0x25, 0xc9, 0x96, + 0xdb, 0x71, 0xe1, 0x35, 0x91, 0xcb, 0x05, 0x76, 0x92, 0x45, 0x32, 0x44, 0x0f, 0xa0, 0x98, 0xea, + 0x69, 0x89, 0x70, 0x40, 0x75, 0x35, 0x3a, 0xdc, 0x49, 0xab, 0xef, 0xc2, 0x01, 0x9d, 0x6a, 0x58, + 0xcf, 0x68, 0x30, 0x1f, 0x81, 0x9e, 0xe7, 0xdb, 0x94, 0x0f, 0x7c, 0x8f, 0x53, 0x54, 0x84, 0x42, + 0x2a, 0xa0, 0xe0, 0x12, 0xf3, 0x73, 0x74, 0x67, 0xe2, 0xde, 0xd3, 0x48, 0x0f, 0x42, 0xb0, 0xee, + 0xe1, 0x3e, 0x4d, 0x9a, 0xa2, 0x18, 0xe9, 0x70, 0x6b, 0x48, 0x19, 0x77, 0x7d, 0x2f, 0x51, 0x39, + 0x49, 0xd1, 0x7d, 0x00, 0x2c, 0x04, 0x6b, 0xc9, 0x36, 0x9e, 0xa8, 0xd4, 0x64, 0xe5, 0xad, 0x2c, + 0x98, 0x07, 0xb0, 0x9f, 0xdb, 0x3f, 0x57, 0xca, 0xb3, 0x8c, 0x94, 0x63, 0x21, 0x98, 0xdb, 0x96, + 0x17, 0x86, 0xa4, 0x3d, 0x32, 0x94, 0x15, 0x86, 0x2f, 0xf5, 0x42, 0x45, 0x95, 0x15, 0x86, 0x2f, + 0x67, 0x08, 0xf1, 0xd8, 0x02, 0xc2, 0xfb, 0x01, 0xf9, 0x1f, 0x42, 0x76, 0x6c, 0x2e, 0xe1, 0x0d, + 0x6c, 0xa7, 0x62, 0x4e, 0x5c, 0x92, 0x3f, 0x97, 0x5e, 0x1e, 0x52, 0x26, 0x9d, 0x94, 0x78, 0x39, + 0xce, 0xe4, 0x8d, 0xc4, 0x3d, 0x17, 0x4f, 0x2e, 0x60, 0x9c, 0x98, 0x0f, 0xa1, 0x94, 0xdd, 0xb6, + 0x80, 0x1a, 0x0b, 0x5c, 0x15, 0x35, 0xdd, 0x36, 0x8f, 0x5a, 0xff, 0xb6, 0x01, 0x6a, 0x93, 0x3b, + 0xa8, 0x07, 0x3b, 0xb3, 0x5e, 0xaf, 0x2e, 0xfb, 0x27, 0x2c, 0x3f, 0xf9, 0x57, 0xe7, 0xcd, 0x06, + 0x3e, 0x87, 0xed, 0x19, 0xb7, 0x2e, 0x0f, 0x7b, 0xbc, 0x18, 0x96, 0x73, 0x68, 0xca, 0x4a, 0xcc, + 0xb2, 0x52, 0x56, 0xce, 0x49, 0xe7, 0xb0, 0x3d, 0x63, 0xcc, 0x15, 0xb1, 0x6e, 0x74, 0x2d, 0x01, + 0x6d, 0x6a, 0xd1, 0xe5, 0x41, 0x87, 0x8b, 0x7f, 0x54, 0xd6, 0x2f, 0x04, 0xb4, 0xa9, 0x25, 0x57, + 0x44, 0xf9, 0xcb, 0x95, 0x2f, 0x1b, 0x3f, 0x46, 0x86, 0x72, 0x3d, 0x32, 0x94, 0x5f, 0x23, 0x43, + 0xf9, 0x3e, 0x36, 0xd6, 0xae, 0xc7, 0xc6, 0xda, 0xcf, 0xb1, 0xb1, 0xf6, 0xe9, 0xc0, 0x71, 0x45, + 0x37, 0x68, 0x5b, 0x1d, 0xbf, 0x5f, 0x8b, 0x5f, 0x62, 0xd1, 0xe7, 0xa1, 0xdc, 0x58, 0xbb, 0x4a, + 0x4a, 0xf2, 0xd9, 0xca, 0xdb, 0x9b, 0xd1, 0x6b, 0xe7, 0xe9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xc4, 0x53, 0x42, 0x92, 0xed, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1265,11 +1265,13 @@ func (m *MsgCreateAttrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Raw) > 0 { - i -= len(m.Raw) - copy(dAtA[i:], m.Raw) - i = encodeVarintTx(dAtA, i, uint64(len(m.Raw))) - i-- - dAtA[i] = 0x12 + for iNdEx := len(m.Raw) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Raw[iNdEx]) + copy(dAtA[i:], m.Raw[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Raw[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Did) > 0 { i -= len(m.Did) @@ -1332,11 +1334,13 @@ func (m *MsgUpdateAttrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Raw) > 0 { - i -= len(m.Raw) - copy(dAtA[i:], m.Raw) - i = encodeVarintTx(dAtA, i, uint64(len(m.Raw))) - i-- - dAtA[i] = 0x12 + for iNdEx := len(m.Raw) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Raw[iNdEx]) + copy(dAtA[i:], m.Raw[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Raw[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Did) > 0 { i -= len(m.Did) @@ -1644,9 +1648,11 @@ func (m *MsgCreateAttrib) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Raw) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Raw) > 0 { + for _, s := range m.Raw { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } } return n } @@ -1674,9 +1680,11 @@ func (m *MsgUpdateAttrib) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Raw) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Raw) > 0 { + for _, s := range m.Raw { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } } return n } @@ -2592,7 +2600,7 @@ func (m *MsgCreateAttrib) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Raw = string(dAtA[iNdEx:postIndex]) + m.Raw = append(m.Raw, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -2788,7 +2796,7 @@ func (m *MsgUpdateAttrib) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Raw = string(dAtA[iNdEx:postIndex]) + m.Raw = append(m.Raw, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex From 75dd44615aeec44eb1dc9e019a3af1b2653239cd Mon Sep 17 00:00:00 2001 From: toktar Date: Sun, 26 Sep 2021 01:27:56 +0300 Subject: [PATCH 07/74] Added DIDDoc to protobufs --- proto/cheqd/attrib.proto | 11 - proto/cheqd/credDef.proto | 17 +- proto/cheqd/did.proto | 27 +- proto/cheqd/genesis.proto | 1 - proto/cheqd/query.proto | 13 - proto/cheqd/schema.proto | 9 +- proto/cheqd/tx.proto | 62 +- x/cheqd/client/cli/query.go | 9 - x/cheqd/client/cli/queryAttrib.go | 76 -- x/cheqd/client/cli/queryCredDef.go | 41 +- x/cheqd/client/cli/queryDid.go | 40 +- x/cheqd/client/cli/queryNym.go | 76 -- x/cheqd/client/cli/querySchema.go | 40 +- x/cheqd/client/cli/tx.go | 13 - x/cheqd/client/cli/txAttrib.go | 63 -- x/cheqd/client/rest/queryAttrib.go | 39 -- x/cheqd/client/rest/queryNym.go | 39 -- x/cheqd/client/rest/rest.go | 18 - x/cheqd/client/rest/txAttrib.go | 137 ---- x/cheqd/client/rest/txNym.go | 153 ---- x/cheqd/handler.go | 8 - x/cheqd/keeper/attrib.go | 122 ---- x/cheqd/keeper/grpc_query_attrib.go | 59 -- x/cheqd/keeper/grpc_query_nym.go | 59 -- x/cheqd/keeper/msg_server_attrib.go | 65 -- x/cheqd/keeper/msg_server_nym.go | 69 -- x/cheqd/keeper/nym.go | 129 ---- x/cheqd/keeper/query.go | 21 - x/cheqd/keeper/query_attrib.go | 39 -- x/cheqd/keeper/query_nym.go | 39 -- x/cheqd/types/attrib.pb.go | 371 ---------- x/cheqd/types/codec.go | 7 - x/cheqd/types/credDef.pb.go | 104 ++- x/cheqd/types/genesis.pb.go | 16 +- x/cheqd/types/keys.go | 5 - x/cheqd/types/messages_attrib.go | 63 -- x/cheqd/types/query.go | 4 - x/cheqd/types/query.pb.go | 450 +----------- x/cheqd/types/query.pb.gw.go | 101 --- x/cheqd/types/schema.pb.go | 50 +- x/cheqd/types/tx.pb.go | 1014 ++------------------------- 41 files changed, 295 insertions(+), 3384 deletions(-) delete mode 100644 proto/cheqd/attrib.proto delete mode 100644 x/cheqd/client/cli/queryAttrib.go delete mode 100644 x/cheqd/client/cli/queryNym.go delete mode 100644 x/cheqd/client/cli/txAttrib.go delete mode 100644 x/cheqd/client/rest/queryAttrib.go delete mode 100644 x/cheqd/client/rest/queryNym.go delete mode 100644 x/cheqd/client/rest/txAttrib.go delete mode 100644 x/cheqd/client/rest/txNym.go delete mode 100644 x/cheqd/keeper/attrib.go delete mode 100644 x/cheqd/keeper/grpc_query_attrib.go delete mode 100644 x/cheqd/keeper/grpc_query_nym.go delete mode 100644 x/cheqd/keeper/msg_server_attrib.go delete mode 100644 x/cheqd/keeper/msg_server_nym.go delete mode 100644 x/cheqd/keeper/nym.go delete mode 100644 x/cheqd/keeper/query_attrib.go delete mode 100644 x/cheqd/keeper/query_nym.go delete mode 100644 x/cheqd/types/attrib.pb.go delete mode 100644 x/cheqd/types/messages_attrib.go diff --git a/proto/cheqd/attrib.proto b/proto/cheqd/attrib.proto deleted file mode 100644 index 4eef355d9..000000000 --- a/proto/cheqd/attrib.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; -package cheqdid.cheqdnode.cheqd; - -option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; - -import "gogoproto/gogo.proto"; - -message Attrib { - string did = 1; - repeated string raw = 2; -} diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index a52a2e788..a693f0de2 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -1,14 +1,21 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; +import "google/protobuf/any.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; import "gogoproto/gogo.proto"; message CredDef { - string author = 1; - string schema_id = 2; - string tag = 3; - string signature_type = 4; - string value = 5; + string id = 1; + repasted string authors = 2; + string schema_id = 3; + string tag = 4; + string signature_type = 5; + google.protobuf.Any value = 6; +} + +message CredDefValue { + map[string, google.protobuf.Any] primary = 1; + optional map[string, google.protobuf.Any] revocation = 2; } diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index ba355ab31..88ed74957 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -7,6 +7,29 @@ import "gogoproto/gogo.proto"; message Did { string id = 1; - string verkey = 2; - string alias = 3; + optional repeated string controller = 2; + optional repeated VerificationMethod verificationMethod = 3; + optional repeated google.protobuf.Any authentication = 4; + optional repeated google.protobuf.Any assertionMethod = 5; + optional repeated google.protobuf.Any capabilityInvocation = 6; + optional repeated google.protobuf.Any capabilityDelegation = 7; + optional repeated google.protobuf.Any keyAgreement = 8; + optional repeated string alsoKnownAs = 9; + optional repeated DidService service = 10; } + +message VerificationMethod { + string id = 1; + string type = 2; + string controller = 3; + optional map[string,string] publicKeyJwk = 3; + optional string publicKeyMultibase = 3; +} + +message DidService { + string id = 1; + string type = 2; + string serviceEndpoint = 3; +} + + diff --git a/proto/cheqd/genesis.proto b/proto/cheqd/genesis.proto index 9465cfc56..952736826 100644 --- a/proto/cheqd/genesis.proto +++ b/proto/cheqd/genesis.proto @@ -4,7 +4,6 @@ package cheqdid.cheqdnode.cheqd; // this line is used by starport scaffolding # genesis/proto/import import "cheqd/credDef.proto"; import "cheqd/schema.proto"; -import "cheqd/attrib.proto"; import "cheqd/did.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index 5631d61c1..6e93254be 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -6,7 +6,6 @@ import "cosmos/base/query/v1beta1/pagination.proto"; // this line is used by starport scaffolding # 1 import "cheqd/credDef.proto"; import "cheqd/schema.proto"; -import "cheqd/attrib.proto"; import "cheqd/did.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; @@ -22,10 +21,6 @@ service Query { option (google.api.http).get = "/cheqd/cheqdnode/cheqd/schema/{id}"; } - rpc Attrib(QueryGetAttribRequest) returns (QueryGetAttribResponse) { - option (google.api.http).get = "/cheqd/cheqdnode/cheqd/attrib/{id}"; - } - rpc Did(QueryGetDidRequest) returns (QueryGetDidResponse) { option (google.api.http).get = "/cheqd/cheqdnode/cheqd/did/{id}"; } @@ -48,14 +43,6 @@ message QueryGetSchemaResponse { Schema Schema = 1; } -message QueryGetAttribRequest { - string id = 1; -} - -message QueryGetAttribResponse { - Attrib Attrib = 1; -} - message QueryGetDidRequest { string id = 1; } diff --git a/proto/cheqd/schema.proto b/proto/cheqd/schema.proto index a23ca2b77..2f613392d 100644 --- a/proto/cheqd/schema.proto +++ b/proto/cheqd/schema.proto @@ -6,8 +6,9 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; import "gogoproto/gogo.proto"; message Schema { - string author = 1; - string name = 2; - string version = 3; - string attr_names = 4; + string id = 1; + repeated string authors = 2; + string name = 3; + string version = 4; + repeated string attr_names = 5; } diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index b4e09d621..3bfad6b6e 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; import "google/protobuf/any.proto"; +import "cheqd/did.proto"; // this line is used by starport scaffolding # proto/tx/import @@ -11,8 +12,6 @@ service Msg { // this line is used by starport scaffolding # proto/tx/rpc rpc CreateCredDef(MsgWriteRequest) returns (MsgCreateCredDefResponse); rpc CreateSchema(MsgWriteRequest) returns (MsgCreateSchemaResponse); - rpc CreateAttrib(MsgWriteRequest) returns (MsgCreateAttribResponse); - rpc UpdateAttrib(MsgWriteRequest) returns (MsgUpdateAttribResponse); rpc CreateDid(MsgWriteRequest) returns (MsgCreateDidResponse); rpc UpdateDid(MsgWriteRequest) returns (MsgUpdateDidResponse); } @@ -20,15 +19,16 @@ service Msg { // this line is used by starport scaffolding # proto/tx/message message MsgWriteRequest { google.protobuf.Any data = 1; - string author = 2; + repeated string authors = 2; map signatures = 3; } message MsgCreateCredDef { - string schema_id = 1; - string tag = 2; - string signature_type = 3; - string value = 4; + string id = 1; + string schema_id = 2; + string tag = 3; + string signature_type = 4; + google.protobuf.Any value = 5; } message MsgCreateCredDefResponse { @@ -36,37 +36,27 @@ message MsgCreateCredDefResponse { } message MsgCreateSchema { - string name = 1; - string version = 2; - string attr_names = 3; -} - -message MsgCreateSchemaResponse { string id = 1; + string name = 2; + string version = 3; + repeated string attr_names = 4; } -message MsgCreateAttrib { - string did = 1; - repeated string raw = 2; -} - -message MsgCreateAttribResponse { - string id = 1; -} - -message MsgUpdateAttrib { - string did = 1; - repeated string raw = 2; -} - -message MsgUpdateAttribResponse { +message MsgCreateSchemaResponse { string id = 1; } message MsgCreateDid { string id = 1; - string verkey = 2; - string alias = 3; + optional repeated string controller = 2; + optional repeated VerificationMethod verificationMethod = 3; + optional repeated google.protobuf.Any authentication = 4; + optional repeated google.protobuf.Any assertionMethod = 5; + optional repeated google.protobuf.Any capabilityInvocation = 6; + optional repeated google.protobuf.Any capabilityDelegation = 7; + optional repeated google.protobuf.Any keyAgreement = 8; + optional repeated string alsoKnownAs = 9; + optional repeated DidService service = 10; } message MsgCreateDidResponse { @@ -75,10 +65,18 @@ message MsgCreateDidResponse { message MsgUpdateDid { string id = 1; - string verkey = 2; - string alias = 3; + optional repeated string controller = 2; + optional repeated VerificationMethod verificationMethod = 3; + optional repeated google.protobuf.Any authentication = 4; + optional repeated google.protobuf.Any assertionMethod = 5; + optional repeated google.protobuf.Any capabilityInvocation = 6; + optional repeated google.protobuf.Any capabilityDelegation = 7; + optional repeated google.protobuf.Any keyAgreement = 8; + optional repeated string alsoKnownAs = 9; + optional repeated DidService service = 10; } + message MsgUpdateDidResponse { string id = 1; } diff --git a/x/cheqd/client/cli/query.go b/x/cheqd/client/cli/query.go index db7fc1ce9..1b65c9d3c 100644 --- a/x/cheqd/client/cli/query.go +++ b/x/cheqd/client/cli/query.go @@ -26,20 +26,11 @@ func GetQueryCmd(queryRoute string) *cobra.Command { // this line is used by starport scaffolding # 1 - cmd.AddCommand(CmdListCredDef()) cmd.AddCommand(CmdShowCredDef()) - cmd.AddCommand(CmdListSchema()) cmd.AddCommand(CmdShowSchema()) - cmd.AddCommand(CmdListAttrib()) - cmd.AddCommand(CmdShowAttrib()) - - cmd.AddCommand(CmdListDid()) cmd.AddCommand(CmdShowDid()) - cmd.AddCommand(CmdListNym()) - cmd.AddCommand(CmdShowNym()) - return cmd } diff --git a/x/cheqd/client/cli/queryAttrib.go b/x/cheqd/client/cli/queryAttrib.go deleted file mode 100644 index 00cd69e81..000000000 --- a/x/cheqd/client/cli/queryAttrib.go +++ /dev/null @@ -1,76 +0,0 @@ -package cli - -import ( - "context" - "strconv" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" -) - -func CmdListAttrib() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-attrib", - Short: "list all attrib", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllAttribRequest{ - Pagination: pageReq, - } - - res, err := queryClient.AttribAll(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -func CmdShowAttrib() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-attrib [id]", - Short: "shows a attrib", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - params := &types.QueryGetAttribRequest{ - Id: id, - } - - res, err := queryClient.Attrib(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/cli/queryCredDef.go b/x/cheqd/client/cli/queryCredDef.go index 8e5c1b309..92dadb005 100644 --- a/x/cheqd/client/cli/queryCredDef.go +++ b/x/cheqd/client/cli/queryCredDef.go @@ -2,46 +2,12 @@ package cli import ( "context" - "strconv" - "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" ) -func CmdListCredDef() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-credDef", - Short: "list all credDef", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllCredDefRequest{ - Pagination: pageReq, - } - - res, err := queryClient.CredDefAll(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - func CmdShowCredDef() *cobra.Command { cmd := &cobra.Command{ Use: "show-credDef [id]", @@ -51,12 +17,7 @@ func CmdShowCredDef() *cobra.Command { clientCtx := client.GetClientContextFromCmd(cmd) queryClient := types.NewQueryClient(clientCtx) - - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - + id := string(args[0]) params := &types.QueryGetCredDefRequest{ Id: id, } diff --git a/x/cheqd/client/cli/queryDid.go b/x/cheqd/client/cli/queryDid.go index 7bdf48c3d..abfeb2a5c 100644 --- a/x/cheqd/client/cli/queryDid.go +++ b/x/cheqd/client/cli/queryDid.go @@ -2,46 +2,12 @@ package cli import ( "context" - "strconv" - "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" ) -func CmdListDid() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-did", - Short: "list all did", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllDidRequest{ - Pagination: pageReq, - } - - res, err := queryClient.DidAll(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - func CmdShowDid() *cobra.Command { cmd := &cobra.Command{ Use: "show-did [id]", @@ -52,11 +18,7 @@ func CmdShowDid() *cobra.Command { queryClient := types.NewQueryClient(clientCtx) - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - + id := string(args[0]) params := &types.QueryGetDidRequest{ Id: id, } diff --git a/x/cheqd/client/cli/queryNym.go b/x/cheqd/client/cli/queryNym.go deleted file mode 100644 index 1a3d855cc..000000000 --- a/x/cheqd/client/cli/queryNym.go +++ /dev/null @@ -1,76 +0,0 @@ -package cli - -import ( - "context" - "strconv" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" -) - -func CmdListNym() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-nym", - Short: "list all nym", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllNymRequest{ - Pagination: pageReq, - } - - res, err := queryClient.NymAll(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -func CmdShowNym() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-nym [id]", - Short: "shows a nym", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - params := &types.QueryGetNymRequest{ - Id: id, - } - - res, err := queryClient.Nym(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/cli/querySchema.go b/x/cheqd/client/cli/querySchema.go index be5c361e3..68760a0fe 100644 --- a/x/cheqd/client/cli/querySchema.go +++ b/x/cheqd/client/cli/querySchema.go @@ -2,46 +2,12 @@ package cli import ( "context" - "strconv" - "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" ) -func CmdListSchema() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-schema", - Short: "list all schema", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllSchemaRequest{ - Pagination: pageReq, - } - - res, err := queryClient.SchemaAll(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - func CmdShowSchema() *cobra.Command { cmd := &cobra.Command{ Use: "show-schema [id]", @@ -52,11 +18,7 @@ func CmdShowSchema() *cobra.Command { queryClient := types.NewQueryClient(clientCtx) - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - + id := string(args[0]) params := &types.QueryGetSchemaRequest{ Id: id, } diff --git a/x/cheqd/client/cli/tx.go b/x/cheqd/client/cli/tx.go index c8481231b..521ea89ea 100644 --- a/x/cheqd/client/cli/tx.go +++ b/x/cheqd/client/cli/tx.go @@ -23,24 +23,11 @@ func GetTxCmd() *cobra.Command { // this line is used by starport scaffolding # 1 cmd.AddCommand(CmdCreateCredDef()) - cmd.AddCommand(CmdUpdateCredDef()) - cmd.AddCommand(CmdDeleteCredDef()) cmd.AddCommand(CmdCreateSchema()) - cmd.AddCommand(CmdUpdateSchema()) - cmd.AddCommand(CmdDeleteSchema()) - - cmd.AddCommand(CmdCreateAttrib()) - cmd.AddCommand(CmdUpdateAttrib()) - cmd.AddCommand(CmdDeleteAttrib()) cmd.AddCommand(CmdCreateDid()) cmd.AddCommand(CmdUpdateDid()) - cmd.AddCommand(CmdDeleteDid()) - - cmd.AddCommand(CmdCreateNym()) - cmd.AddCommand(CmdUpdateNym()) - cmd.AddCommand(CmdDeleteNym()) return cmd } diff --git a/x/cheqd/client/cli/txAttrib.go b/x/cheqd/client/cli/txAttrib.go deleted file mode 100644 index 7fe7c8456..000000000 --- a/x/cheqd/client/cli/txAttrib.go +++ /dev/null @@ -1,63 +0,0 @@ -package cli - -import ( - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/spf13/cobra" -) - -func CmdCreateAttrib() *cobra.Command { - cmd := &cobra.Command{ - Use: "create-attrib [did] [raw]", - Short: "Creates a new attrib", - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) error { - argsDid := string(args[0]) - argsRaw := string(args[1]) - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgCreateAttrib(string(argsDid), string(argsRaw)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdUpdateAttrib() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-attrib [did] [raw]", - Short: "Update a attrib", - Args: cobra.ExactArgs(3), - RunE: func(cmd *cobra.Command, args []string) error { - argsDid := string(args[0]) - argsRaw := string(args[1]) - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdateAttrib(string(argsDid), string(argsRaw)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/rest/queryAttrib.go b/x/cheqd/client/rest/queryAttrib.go deleted file mode 100644 index d69a7f843..000000000 --- a/x/cheqd/client/rest/queryAttrib.go +++ /dev/null @@ -1,39 +0,0 @@ -package rest - -import ( - "fmt" - "net/http" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" -) - -func listAttribHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-attrib", types.QuerierRoute), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} - -func getAttribHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] - - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-attrib/%s", types.QuerierRoute, id), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} diff --git a/x/cheqd/client/rest/queryNym.go b/x/cheqd/client/rest/queryNym.go deleted file mode 100644 index c3950a0a9..000000000 --- a/x/cheqd/client/rest/queryNym.go +++ /dev/null @@ -1,39 +0,0 @@ -package rest - -import ( - "fmt" - "net/http" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" -) - -func listNymHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-nym", types.QuerierRoute), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} - -func getNymHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] - - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-nym/%s", types.QuerierRoute, id), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} diff --git a/x/cheqd/client/rest/rest.go b/x/cheqd/client/rest/rest.go index d1032a544..cc9a341d1 100644 --- a/x/cheqd/client/rest/rest.go +++ b/x/cheqd/client/rest/rest.go @@ -37,10 +37,6 @@ func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { r.HandleFunc("/cheqd/credDefs", listCredDefHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/schemata/{id}", getSchemaHandler(clientCtx)).Methods("GET") - r.HandleFunc("/cheqd/schemata", listSchemaHandler(clientCtx)).Methods("GET") - - r.HandleFunc("/cheqd/attribs/{id}", getAttribHandler(clientCtx)).Methods("GET") - r.HandleFunc("/cheqd/attribs", listAttribHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/dids/{id}", getDidHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/dids", listDidHandler(clientCtx)).Methods("GET") @@ -53,23 +49,9 @@ func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { func registerTxHandlers(clientCtx client.Context, r *mux.Router) { // this line is used by starport scaffolding # 4 r.HandleFunc("/cheqd/credDefs", createCredDefHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/credDefs/{id}", updateCredDefHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/credDefs/{id}", deleteCredDefHandler(clientCtx)).Methods("POST") r.HandleFunc("/cheqd/schemata", createSchemaHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/schemata/{id}", updateSchemaHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/schemata/{id}", deleteSchemaHandler(clientCtx)).Methods("POST") - - r.HandleFunc("/cheqd/attribs", createAttribHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/attribs/{id}", updateAttribHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/attribs/{id}", deleteAttribHandler(clientCtx)).Methods("POST") r.HandleFunc("/cheqd/dids", createDidHandler(clientCtx)).Methods("POST") r.HandleFunc("/cheqd/dids/{id}", updateDidHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/dids/{id}", deleteDidHandler(clientCtx)).Methods("POST") - - r.HandleFunc("/cheqd/nyms", createNymHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/nyms/{id}", updateNymHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/nyms/{id}", deleteNymHandler(clientCtx)).Methods("POST") - } diff --git a/x/cheqd/client/rest/txAttrib.go b/x/cheqd/client/rest/txAttrib.go deleted file mode 100644 index 4ab8fd462..000000000 --- a/x/cheqd/client/rest/txAttrib.go +++ /dev/null @@ -1,137 +0,0 @@ -package rest - -import ( - "net/http" - "strconv" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" -) - -type createAttribRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Did string `json:"did"` - Raw string `json:"raw"` -} - -func createAttribHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req createAttribRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err := sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedDid := req.Did - - parsedRaw := req.Raw - - msg := types.NewMsgCreateAttrib( - req.Creator, - parsedDid, - parsedRaw, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type updateAttribRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Did string `json:"did"` - Raw string `json:"raw"` -} - -func updateAttribHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req updateAttribRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedDid := req.Did - - parsedRaw := req.Raw - - msg := types.NewMsgUpdateAttrib( - req.Creator, - id, - parsedDid, - parsedRaw, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type deleteAttribRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` -} - -func deleteAttribHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req deleteAttribRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - msg := types.NewMsgDeleteAttrib( - req.Creator, - id, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} diff --git a/x/cheqd/client/rest/txNym.go b/x/cheqd/client/rest/txNym.go deleted file mode 100644 index e09929127..000000000 --- a/x/cheqd/client/rest/txNym.go +++ /dev/null @@ -1,153 +0,0 @@ -package rest - -import ( - "net/http" - "strconv" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" -) - -type createNymRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Alias string `json:"alias"` - Verkey string `json:"verkey"` - Did string `json:"did"` - Role string `json:"role"` -} - -func createNymHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req createNymRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err := sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedAlias := req.Alias - - parsedVerkey := req.Verkey - - parsedDid := req.Did - - parsedRole := req.Role - - msg := types.NewMsgCreateNym( - req.Creator, - parsedAlias, - parsedVerkey, - parsedDid, - parsedRole, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type updateNymRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Alias string `json:"alias"` - Verkey string `json:"verkey"` - Did string `json:"did"` - Role string `json:"role"` -} - -func updateNymHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req updateNymRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedAlias := req.Alias - - parsedVerkey := req.Verkey - - parsedDid := req.Did - - parsedRole := req.Role - - msg := types.NewMsgUpdateNym( - req.Creator, - id, - parsedAlias, - parsedVerkey, - parsedDid, - parsedRole, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type deleteNymRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` -} - -func deleteNymHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req deleteNymRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - msg := types.NewMsgDeleteNym( - req.Creator, - id, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index 530e7a62e..e6201bfeb 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -32,14 +32,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgCreateAttrib: - res, err := msgServer.CreateAttrib(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgUpdateAttrib: - res, err := msgServer.UpdateAttrib(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgCreateDid: res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/cheqd/keeper/attrib.go b/x/cheqd/keeper/attrib.go deleted file mode 100644 index d7cff1552..000000000 --- a/x/cheqd/keeper/attrib.go +++ /dev/null @@ -1,122 +0,0 @@ -package keeper - -import ( - "encoding/binary" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - "strconv" -) - -// GetAttribCount get the total number of attrib -func (k Keeper) GetAttribCount(ctx sdk.Context) uint64 { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribCountKey)) - byteKey := types.KeyPrefix(types.AttribCountKey) - bz := store.Get(byteKey) - - // Count doesn't exist: no element - if bz == nil { - return 0 - } - - // Parse bytes - count, err := strconv.ParseUint(string(bz), 10, 64) - if err != nil { - // Panic because the count should be always formattable to iint64 - panic("cannot decode count") - } - - return count -} - -// SetAttribCount set the total number of attrib -func (k Keeper) SetAttribCount(ctx sdk.Context, count uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribCountKey)) - byteKey := types.KeyPrefix(types.AttribCountKey) - bz := []byte(strconv.FormatUint(count, 10)) - store.Set(byteKey, bz) -} - -// AppendAttrib appends a attrib in the store with a new id and update the count -func (k Keeper) AppendAttrib( - ctx sdk.Context, - did string, - raw string, -) uint64 { - // Create the attrib - count := k.GetAttribCount(ctx) - var attrib = types.Attrib{ - Did: did, - Raw: raw, - } - - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) - value := k.cdc.MustMarshalBinaryBare(&attrib) - store.Set(GetAttribIDBytes(attrib.Did), value) - - // Update attrib count - k.SetAttribCount(ctx, count+1) - - return count -} - -// SetAttrib set a specific attrib in the store -func (k Keeper) SetAttrib(ctx sdk.Context, attrib types.Attrib) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) - b := k.cdc.MustMarshalBinaryBare(&attrib) - store.Set(GetAttribIDBytes(attrib.Did), b) -} - -// GetAttrib returns a attrib from its id -func (k Keeper) GetAttrib(ctx sdk.Context, id string) types.Attrib { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) - var attrib types.Attrib - k.cdc.MustUnmarshalBinaryBare(store.Get(GetAttribIDBytes(id)), &attrib) - return attrib -} - -// HasAttrib checks if the attrib exists in the store -func (k Keeper) HasAttrib(ctx sdk.Context, id string) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) - return store.Has(GetAttribIDBytes(id)) -} - -// GetAttribOwner returns the creator of the attrib -func (k Keeper) GetAttribOwner(ctx sdk.Context, did string) string { - return did -} - -// -//// RemoveAttrib removes a attrib from the store -//func (k Keeper) RemoveAttrib(ctx sdk.Context, id string) { -// store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) -// store.Delete(GetAttribIDBytes(id)) -//} -// -//// GetAllAttrib returns all attrib -//func (k Keeper) GetAllAttrib(ctx sdk.Context) (list []types.Attrib) { -// store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) -// iterator := sdk.KVStorePrefixIterator(store, []byte{}) -// -// defer iterator.Close() -// -// for ; iterator.Valid(); iterator.Next() { -// var val types.Attrib -// k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) -// list = append(list, val) -// } -// -// return -//} - -// GetAttribIDBytes returns the byte representation of the ID -func GetAttribIDBytes(id string) []byte { - bz := make([]byte, 8) - binary.BigEndian.PutUint64(bz, id) - return bz -} - -// GetAttribIDFromBytes returns ID in uint64 format from a byte array -func GetAttribIDFromBytes(bz []byte) uint64 { - return binary.BigEndian.Uint64(bz) -} diff --git a/x/cheqd/keeper/grpc_query_attrib.go b/x/cheqd/keeper/grpc_query_attrib.go deleted file mode 100644 index bb6928689..000000000 --- a/x/cheqd/keeper/grpc_query_attrib.go +++ /dev/null @@ -1,59 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/types/query" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) AttribAll(c context.Context, req *types.QueryAllAttribRequest) (*types.QueryAllAttribResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var attribs []*types.Attrib - ctx := sdk.UnwrapSDKContext(c) - - store := ctx.KVStore(k.storeKey) - attribStore := prefix.NewStore(store, types.KeyPrefix(types.AttribKey)) - - pageRes, err := query.Paginate(attribStore, req.Pagination, func(key []byte, value []byte) error { - var attrib types.Attrib - if err := k.cdc.UnmarshalBinaryBare(value, &attrib); err != nil { - return err - } - - attribs = append(attribs, &attrib) - return nil - }) - - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - return &types.QueryAllAttribResponse{Attrib: attribs, Pagination: pageRes}, nil -} - -func (k Keeper) Attrib(c context.Context, req *types.QueryGetAttribRequest) (*types.QueryGetAttribResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var attrib types.Attrib - ctx := sdk.UnwrapSDKContext(c) - - if !k.HasAttrib(ctx, req.Id) { - return nil, sdkerrors.ErrKeyNotFound - } - - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.AttribKey)) - k.cdc.MustUnmarshalBinaryBare(store.Get(GetAttribIDBytes(req.Id)), &attrib) - - return &types.QueryGetAttribResponse{Attrib: &attrib}, nil -} diff --git a/x/cheqd/keeper/grpc_query_nym.go b/x/cheqd/keeper/grpc_query_nym.go deleted file mode 100644 index 49c4072a1..000000000 --- a/x/cheqd/keeper/grpc_query_nym.go +++ /dev/null @@ -1,59 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/types/query" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) NymAll(c context.Context, req *types.QueryAllNymRequest) (*types.QueryAllNymResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var nyms []*types.Nym - ctx := sdk.UnwrapSDKContext(c) - - store := ctx.KVStore(k.storeKey) - nymStore := prefix.NewStore(store, types.KeyPrefix(types.NymKey)) - - pageRes, err := query.Paginate(nymStore, req.Pagination, func(key []byte, value []byte) error { - var nym types.Nym - if err := k.cdc.UnmarshalBinaryBare(value, &nym); err != nil { - return err - } - - nyms = append(nyms, &nym) - return nil - }) - - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - return &types.QueryAllNymResponse{Nym: nyms, Pagination: pageRes}, nil -} - -func (k Keeper) Nym(c context.Context, req *types.QueryGetNymRequest) (*types.QueryGetNymResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var nym types.Nym - ctx := sdk.UnwrapSDKContext(c) - - if !k.HasNym(ctx, req.Id) { - return nil, sdkerrors.ErrKeyNotFound - } - - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymKey)) - k.cdc.MustUnmarshalBinaryBare(store.Get(GetNymIDBytes(req.Id)), &nym) - - return &types.QueryGetNymResponse{Nym: &nym}, nil -} diff --git a/x/cheqd/keeper/msg_server_attrib.go b/x/cheqd/keeper/msg_server_attrib.go deleted file mode 100644 index 99fa9343e..000000000 --- a/x/cheqd/keeper/msg_server_attrib.go +++ /dev/null @@ -1,65 +0,0 @@ -package keeper - -import ( - "context" - "fmt" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -func (k msgServer) CreateAttrib(goCtx context.Context, msg *types.MsgCreateAttrib) (*types.MsgCreateAttribResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - id := k.AppendAttrib( - ctx, - msg.Creator, - msg.Did, - msg.Raw, - ) - - return &types.MsgCreateAttribResponse{ - Id: id, - }, nil -} - -func (k msgServer) UpdateAttrib(goCtx context.Context, msg *types.MsgUpdateAttrib) (*types.MsgUpdateAttribResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - var attrib = types.Attrib{ - Creator: msg.Creator, - Id: msg.Id, - Did: msg.Did, - Raw: msg.Raw, - } - - // Checks that the element exists - if !k.HasAttrib(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - - // Checks if the the msg sender is the same as the current owner - if msg.Creator != k.GetAttribOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.SetAttrib(ctx, attrib) - - return &types.MsgUpdateAttribResponse{}, nil -} - -func (k msgServer) DeleteAttrib(goCtx context.Context, msg *types.MsgDeleteAttrib) (*types.MsgDeleteAttribResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - if !k.HasAttrib(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - if msg.Creator != k.GetAttribOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.RemoveAttrib(ctx, msg.Id) - - return &types.MsgDeleteAttribResponse{}, nil -} diff --git a/x/cheqd/keeper/msg_server_nym.go b/x/cheqd/keeper/msg_server_nym.go deleted file mode 100644 index b80dc4803..000000000 --- a/x/cheqd/keeper/msg_server_nym.go +++ /dev/null @@ -1,69 +0,0 @@ -package keeper - -import ( - "context" - "fmt" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -func (k msgServer) CreateNym(goCtx context.Context, msg *types.MsgCreateNym) (*types.MsgCreateNymResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - id := k.AppendNym( - ctx, - msg.Creator, - msg.Alias, - msg.Verkey, - msg.Did, - msg.Role, - ) - - return &types.MsgCreateNymResponse{ - Id: id, - }, nil -} - -func (k msgServer) UpdateNym(goCtx context.Context, msg *types.MsgUpdateNym) (*types.MsgUpdateNymResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - var nym = types.Nym{ - Creator: msg.Creator, - Id: msg.Id, - Alias: msg.Alias, - Verkey: msg.Verkey, - Did: msg.Did, - Role: msg.Role, - } - - // Checks that the element exists - if !k.HasNym(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - - // Checks if the the msg sender is the same as the current owner - if msg.Creator != k.GetNymOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.SetNym(ctx, nym) - - return &types.MsgUpdateNymResponse{}, nil -} - -func (k msgServer) DeleteNym(goCtx context.Context, msg *types.MsgDeleteNym) (*types.MsgDeleteNymResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - if !k.HasNym(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - if msg.Creator != k.GetNymOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.RemoveNym(ctx, msg.Id) - - return &types.MsgDeleteNymResponse{}, nil -} diff --git a/x/cheqd/keeper/nym.go b/x/cheqd/keeper/nym.go deleted file mode 100644 index 8d0b73383..000000000 --- a/x/cheqd/keeper/nym.go +++ /dev/null @@ -1,129 +0,0 @@ -package keeper - -import ( - "encoding/binary" - "strconv" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// GetNymCount get the total number of nym -func (k Keeper) GetNymCount(ctx sdk.Context) uint64 { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymCountKey)) - byteKey := types.KeyPrefix(types.NymCountKey) - bz := store.Get(byteKey) - - // Count doesn't exist: no element - if bz == nil { - return 0 - } - - // Parse bytes - count, err := strconv.ParseUint(string(bz), 10, 64) - if err != nil { - // Panic because the count should be always formattable to iint64 - panic("cannot decode count") - } - - return count -} - -// SetNymCount set the total number of nym -func (k Keeper) SetNymCount(ctx sdk.Context, count uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymCountKey)) - byteKey := types.KeyPrefix(types.NymCountKey) - bz := []byte(strconv.FormatUint(count, 10)) - store.Set(byteKey, bz) -} - -// AppendNym appends a nym in the store with a new id and update the count -func (k Keeper) AppendNym( - ctx sdk.Context, - creator string, - alias string, - verkey string, - did string, - role string, -) uint64 { - // Create the nym - count := k.GetNymCount(ctx) - var nym = types.Nym{ - Creator: creator, - Id: count, - Alias: alias, - Verkey: verkey, - Did: did, - Role: role, - } - - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymKey)) - value := k.cdc.MustMarshalBinaryBare(&nym) - store.Set(GetNymIDBytes(nym.Id), value) - - // Update nym count - k.SetNymCount(ctx, count+1) - - return count -} - -// SetNym set a specific nym in the store -func (k Keeper) SetNym(ctx sdk.Context, nym types.Nym) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymKey)) - b := k.cdc.MustMarshalBinaryBare(&nym) - store.Set(GetNymIDBytes(nym.Id), b) -} - -// GetNym returns a nym from its id -func (k Keeper) GetNym(ctx sdk.Context, id uint64) types.Nym { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymKey)) - var nym types.Nym - k.cdc.MustUnmarshalBinaryBare(store.Get(GetNymIDBytes(id)), &nym) - return nym -} - -// HasNym checks if the nym exists in the store -func (k Keeper) HasNym(ctx sdk.Context, id uint64) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymKey)) - return store.Has(GetNymIDBytes(id)) -} - -// GetNymOwner returns the creator of the nym -func (k Keeper) GetNymOwner(ctx sdk.Context, id uint64) string { - return k.GetNym(ctx, id).Creator -} - -// RemoveNym removes a nym from the store -func (k Keeper) RemoveNym(ctx sdk.Context, id uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymKey)) - store.Delete(GetNymIDBytes(id)) -} - -// GetAllNym returns all nym -func (k Keeper) GetAllNym(ctx sdk.Context) (list []types.Nym) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.NymKey)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.Nym - k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) - list = append(list, val) - } - - return -} - -// GetNymIDBytes returns the byte representation of the ID -func GetNymIDBytes(id uint64) []byte { - bz := make([]byte, 8) - binary.BigEndian.PutUint64(bz, id) - return bz -} - -// GetNymIDFromBytes returns ID in uint64 format from a byte array -func GetNymIDFromBytes(bz []byte) uint64 { - return binary.BigEndian.Uint64(bz) -} diff --git a/x/cheqd/keeper/query.go b/x/cheqd/keeper/query.go index b291cb576..22a1e0ee8 100644 --- a/x/cheqd/keeper/query.go +++ b/x/cheqd/keeper/query.go @@ -23,33 +23,12 @@ func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { case types.QueryGetCredDef: return getCredDef(ctx, path[1], k, legacyQuerierCdc) - case types.QueryListCredDef: - return listCredDef(ctx, k, legacyQuerierCdc) - case types.QueryGetSchema: return getSchema(ctx, path[1], k, legacyQuerierCdc) - case types.QueryListSchema: - return listSchema(ctx, k, legacyQuerierCdc) - - case types.QueryGetAttrib: - return getAttrib(ctx, path[1], k, legacyQuerierCdc) - - case types.QueryListAttrib: - return listAttrib(ctx, k, legacyQuerierCdc) - case types.QueryGetDid: return getDid(ctx, path[1], k, legacyQuerierCdc) - case types.QueryListDid: - return listDid(ctx, k, legacyQuerierCdc) - - case types.QueryGetNym: - return getNym(ctx, path[1], k, legacyQuerierCdc) - - case types.QueryListNym: - return listNym(ctx, k, legacyQuerierCdc) - default: err = sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown %s query endpoint: %s", types.ModuleName, path[0]) } diff --git a/x/cheqd/keeper/query_attrib.go b/x/cheqd/keeper/query_attrib.go deleted file mode 100644 index 9fd0a677b..000000000 --- a/x/cheqd/keeper/query_attrib.go +++ /dev/null @@ -1,39 +0,0 @@ -package keeper - -import ( - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "strconv" -) - -func listAttrib(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - msgs := keeper.GetAllAttrib(ctx) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func getAttrib(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - id, err := strconv.ParseUint(key, 10, 64) - if err != nil { - return nil, err - } - - if !keeper.HasAttrib(ctx, id) { - return nil, sdkerrors.ErrKeyNotFound - } - - msg := keeper.GetAttrib(ctx, id) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} diff --git a/x/cheqd/keeper/query_nym.go b/x/cheqd/keeper/query_nym.go deleted file mode 100644 index 0790c7b5b..000000000 --- a/x/cheqd/keeper/query_nym.go +++ /dev/null @@ -1,39 +0,0 @@ -package keeper - -import ( - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "strconv" -) - -func listNym(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - msgs := keeper.GetAllNym(ctx) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func getNym(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - id, err := strconv.ParseUint(key, 10, 64) - if err != nil { - return nil, err - } - - if !keeper.HasNym(ctx, id) { - return nil, sdkerrors.ErrKeyNotFound - } - - msg := keeper.GetNym(ctx, id) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} diff --git a/x/cheqd/types/attrib.pb.go b/x/cheqd/types/attrib.pb.go deleted file mode 100644 index fc5f68710..000000000 --- a/x/cheqd/types/attrib.pb.go +++ /dev/null @@ -1,371 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: cheqd/attrib.proto - -package types - -import ( - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Attrib struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` - Raw []string `protobuf:"bytes,2,rep,name=raw,proto3" json:"raw,omitempty"` -} - -func (m *Attrib) Reset() { *m = Attrib{} } -func (m *Attrib) String() string { return proto.CompactTextString(m) } -func (*Attrib) ProtoMessage() {} -func (*Attrib) Descriptor() ([]byte, []int) { - return fileDescriptor_b9f989a63ffe2b70, []int{0} -} -func (m *Attrib) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Attrib) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Attrib.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Attrib) XXX_Merge(src proto.Message) { - xxx_messageInfo_Attrib.Merge(m, src) -} -func (m *Attrib) XXX_Size() int { - return m.Size() -} -func (m *Attrib) XXX_DiscardUnknown() { - xxx_messageInfo_Attrib.DiscardUnknown(m) -} - -var xxx_messageInfo_Attrib proto.InternalMessageInfo - -func (m *Attrib) GetDid() string { - if m != nil { - return m.Did - } - return "" -} - -func (m *Attrib) GetRaw() []string { - if m != nil { - return m.Raw - } - return nil -} - -func init() { - proto.RegisterType((*Attrib)(nil), "cheqdid.cheqdnode.cheqd.Attrib") -} - -func init() { proto.RegisterFile("cheqd/attrib.proto", fileDescriptor_b9f989a63ffe2b70) } - -var fileDescriptor_b9f989a63ffe2b70 = []byte{ - // 169 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, - 0x4c, 0xd1, 0x4f, 0x2c, 0x29, 0x29, 0xca, 0x4c, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, - 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, - 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xd2, 0xe1, 0x62, 0x73, 0x04, 0x6b, - 0x17, 0x12, 0xe0, 0x62, 0x4e, 0xc9, 0x4c, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x02, 0x31, - 0x41, 0x22, 0x45, 0x89, 0xe5, 0x12, 0x4c, 0x0a, 0xcc, 0x20, 0x91, 0xa2, 0xc4, 0x72, 0x27, 0xe7, - 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, - 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, - 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xb8, 0x0a, 0x4c, 0xea, 0x82, 0x1c, 0xa0, 0x5f, 0x01, - 0x15, 0x2a, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xdb, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, - 0xff, 0x1f, 0x35, 0x52, 0xfd, 0xbe, 0x00, 0x00, 0x00, -} - -func (m *Attrib) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Attrib) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Attrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Raw) > 0 { - for iNdEx := len(m.Raw) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Raw[iNdEx]) - copy(dAtA[i:], m.Raw[iNdEx]) - i = encodeVarintAttrib(dAtA, i, uint64(len(m.Raw[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintAttrib(dAtA, i, uint64(len(m.Did))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintAttrib(dAtA []byte, offset int, v uint64) int { - offset -= sovAttrib(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Attrib) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Did) - if l > 0 { - n += 1 + l + sovAttrib(uint64(l)) - } - if len(m.Raw) > 0 { - for _, s := range m.Raw { - l = len(s) - n += 1 + l + sovAttrib(uint64(l)) - } - } - return n -} - -func sovAttrib(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozAttrib(x uint64) (n int) { - return sovAttrib(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Attrib) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAttrib - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Attrib: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Attrib: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAttrib - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthAttrib - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAttrib - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAttrib - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthAttrib - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAttrib - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Raw = append(m.Raw, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAttrib(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAttrib - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipAttrib(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAttrib - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAttrib - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAttrib - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthAttrib - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupAttrib - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthAttrib - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthAttrib = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowAttrib = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupAttrib = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/cheqd/types/codec.go b/x/cheqd/types/codec.go index 93be4dcc5..b034b76da 100644 --- a/x/cheqd/types/codec.go +++ b/x/cheqd/types/codec.go @@ -13,9 +13,6 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgCreateSchema{}, "cheqd/CreateSchema", nil) - cdc.RegisterConcrete(&MsgCreateAttrib{}, "cheqd/CreateAttrib", nil) - cdc.RegisterConcrete(&MsgUpdateAttrib{}, "cheqd/UpdateAttrib", nil) - cdc.RegisterConcrete(&MsgCreateDid{}, "cheqd/CreateDid", nil) cdc.RegisterConcrete(&MsgUpdateDid{}, "cheqd/UpdateDid", nil) @@ -29,10 +26,6 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateSchema{}, ) - registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgCreateAttrib{}, - &MsgUpdateAttrib{}, - ) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateDid{}, &MsgUpdateDid{}, diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index faa13f46d..1232f0187 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -24,11 +24,12 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type CredDef struct { - Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` - SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,4,opt,name=signature_type,json=signatureType,proto3" json:"signature_type,omitempty"` - Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` + SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,5,opt,name=signature_type,json=signatureType,proto3" json:"signature_type,omitempty"` + Value string `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` } func (m *CredDef) Reset() { *m = CredDef{} } @@ -64,6 +65,13 @@ func (m *CredDef) XXX_DiscardUnknown() { var xxx_messageInfo_CredDef proto.InternalMessageInfo +func (m *CredDef) GetId() string { + if m != nil { + return m.Id + } + return "" +} + func (m *CredDef) GetAuthor() string { if m != nil { return m.Author @@ -106,22 +114,23 @@ func init() { func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } var fileDescriptor_bc069326307a6009 = []byte{ - // 237 bytes of a gzipped FileDescriptorProto + // 250 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x4f, 0x2e, 0x4a, 0x4d, 0x71, 0x49, 0x4d, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x0b, 0x66, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, - 0x3d, 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xea, 0x65, 0xe4, 0x62, 0x77, - 0x86, 0x18, 0x20, 0x24, 0xc6, 0xc5, 0x96, 0x58, 0x5a, 0x92, 0x91, 0x5f, 0x24, 0xc1, 0xa8, 0xc0, - 0xa8, 0xc1, 0x19, 0x04, 0xe5, 0x09, 0x49, 0x73, 0x71, 0x16, 0x27, 0x67, 0xa4, 0xe6, 0x26, 0xc6, - 0x67, 0xa6, 0x48, 0x30, 0x81, 0xa5, 0x38, 0x20, 0x02, 0x9e, 0x29, 0x42, 0x02, 0x5c, 0xcc, 0x25, - 0x89, 0xe9, 0x12, 0xcc, 0x60, 0x61, 0x10, 0x53, 0x48, 0x95, 0x8b, 0xaf, 0x38, 0x33, 0x3d, 0x2f, - 0xb1, 0xa4, 0xb4, 0x28, 0x35, 0xbe, 0xa4, 0xb2, 0x20, 0x55, 0x82, 0x05, 0x2c, 0xc9, 0x0b, 0x17, - 0x0d, 0xa9, 0x2c, 0x48, 0x15, 0x12, 0xe1, 0x62, 0x2d, 0x4b, 0xcc, 0x29, 0x4d, 0x95, 0x60, 0x05, - 0xcb, 0x42, 0x38, 0x4e, 0xce, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, - 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, - 0x99, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0xf5, 0x38, 0x88, 0xd4, - 0x05, 0x79, 0x51, 0xbf, 0x02, 0x2a, 0x04, 0xb2, 0xae, 0x38, 0x89, 0x0d, 0xec, 0x37, 0x63, 0x40, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xf9, 0x6e, 0x6c, 0x21, 0x01, 0x00, 0x00, + 0x3d, 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0x9a, 0xcb, 0xc8, 0xc5, 0xee, + 0x0c, 0x31, 0x40, 0x88, 0x8f, 0x8b, 0x29, 0x33, 0x45, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x88, + 0x29, 0x33, 0x45, 0x48, 0x8c, 0x8b, 0x2d, 0xb1, 0xb4, 0x24, 0x23, 0xbf, 0x48, 0x82, 0x09, 0x2c, + 0x06, 0xe5, 0x09, 0x49, 0x73, 0x71, 0x16, 0x27, 0x67, 0xa4, 0xe6, 0x26, 0xc6, 0x67, 0xa6, 0x48, + 0x30, 0x83, 0xa5, 0x38, 0x20, 0x02, 0x9e, 0x29, 0x42, 0x02, 0x5c, 0xcc, 0x25, 0x89, 0xe9, 0x12, + 0x2c, 0x60, 0x61, 0x10, 0x53, 0x48, 0x95, 0x8b, 0xaf, 0x38, 0x33, 0x3d, 0x2f, 0xb1, 0xa4, 0xb4, + 0x28, 0x35, 0xbe, 0xa4, 0xb2, 0x20, 0x55, 0x82, 0x15, 0x2c, 0xc9, 0x0b, 0x17, 0x0d, 0xa9, 0x2c, + 0x48, 0x15, 0x12, 0xe1, 0x62, 0x2d, 0x4b, 0xcc, 0x29, 0x4d, 0x95, 0x60, 0x03, 0xcb, 0x42, 0x38, + 0x4e, 0xce, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, + 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x99, 0x9e, 0x59, + 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0x0d, 0x08, 0x10, 0xa9, 0x0b, 0xf2, 0xb2, + 0x7e, 0x05, 0x54, 0x08, 0x64, 0x5d, 0x71, 0x12, 0x1b, 0xd8, 0xaf, 0xc6, 0x80, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x4f, 0x63, 0xff, 0x3e, 0x31, 0x01, 0x00, 0x00, } func (m *CredDef) Marshal() (dAtA []byte, err error) { @@ -149,34 +158,41 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Value) i = encodeVarintCredDef(dAtA, i, uint64(len(m.Value))) i-- - dAtA[i] = 0x2a + dAtA[i] = 0x32 } if len(m.SignatureType) > 0 { i -= len(m.SignatureType) copy(dAtA[i:], m.SignatureType) i = encodeVarintCredDef(dAtA, i, uint64(len(m.SignatureType))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a } if len(m.Tag) > 0 { i -= len(m.Tag) copy(dAtA[i:], m.Tag) i = encodeVarintCredDef(dAtA, i, uint64(len(m.Tag))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 } if len(m.SchemaId) > 0 { i -= len(m.SchemaId) copy(dAtA[i:], m.SchemaId) i = encodeVarintCredDef(dAtA, i, uint64(len(m.SchemaId))) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } if len(m.Author) > 0 { i -= len(m.Author) copy(dAtA[i:], m.Author) i = encodeVarintCredDef(dAtA, i, uint64(len(m.Author))) i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.Id))) + i-- dAtA[i] = 0xa } return len(dAtA) - i, nil @@ -199,6 +215,10 @@ func (m *CredDef) Size() (n int) { } var l int _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovCredDef(uint64(l)) + } l = len(m.Author) if l > 0 { n += 1 + l + sovCredDef(uint64(l)) @@ -258,6 +278,38 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Author", wireType) } @@ -289,7 +341,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.Author = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field SchemaId", wireType) } @@ -321,7 +373,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.SchemaId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Tag", wireType) } @@ -353,7 +405,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.Tag = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field SignatureType", wireType) } @@ -385,7 +437,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.SignatureType = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } diff --git a/x/cheqd/types/genesis.pb.go b/x/cheqd/types/genesis.pb.go index ce97172ca..2ed17e451 100644 --- a/x/cheqd/types/genesis.pb.go +++ b/x/cheqd/types/genesis.pb.go @@ -66,18 +66,18 @@ func init() { func init() { proto.RegisterFile("cheqd/genesis.proto", fileDescriptor_125930f9f5015ae5) } var fileDescriptor_125930f9f5015ae5 = []byte{ - // 172 bytes of a gzipped FileDescriptorProto + // 164 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x0b, 0x66, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x0a, 0xaa, 0x3a, 0xb9, 0x28, 0x35, 0xc5, 0x25, 0x35, 0x0d, 0xa2, 0x5a, 0x4a, 0x08, 0x22, 0x58, 0x9c, 0x9c, - 0x91, 0x9a, 0x9b, 0x88, 0x2a, 0x96, 0x58, 0x52, 0x52, 0x94, 0x99, 0x04, 0x15, 0xe3, 0x87, 0x88, - 0x81, 0xcc, 0x05, 0x0b, 0x28, 0xf1, 0x71, 0xf1, 0xb8, 0x43, 0xec, 0x0d, 0x2e, 0x49, 0x2c, 0x49, - 0x75, 0x72, 0x3e, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, - 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xcd, 0xf4, 0xcc, - 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0xa8, 0x13, 0x40, 0xa4, 0x2e, 0xc8, 0x69, - 0xfa, 0x15, 0x50, 0xa1, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0xd9, 0xc6, 0x80, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x4f, 0x17, 0x91, 0xd9, 0x00, 0x00, 0x00, + 0x91, 0x9a, 0x9b, 0x08, 0x15, 0xe3, 0x87, 0x88, 0x81, 0xcc, 0x00, 0x0b, 0x28, 0xf1, 0x71, 0xf1, + 0xb8, 0x43, 0xec, 0x08, 0x2e, 0x49, 0x2c, 0x49, 0x75, 0x72, 0x3e, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, + 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, + 0xc6, 0x63, 0x39, 0x86, 0x28, 0xcd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, + 0x7d, 0xa8, 0x75, 0x20, 0x52, 0x17, 0xe4, 0x0c, 0xfd, 0x0a, 0xa8, 0x50, 0x49, 0x65, 0x41, 0x6a, + 0x71, 0x12, 0x1b, 0xd8, 0x6c, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd7, 0xc6, 0x12, 0x42, + 0xc5, 0x00, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index b50539148..ed10e86f7 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -26,11 +26,6 @@ const ( DidCountKey = "Did-count-" ) -const ( - AttribKey = "Attrib-value-" - AttribCountKey = "Attrib-count-" -) - const ( SchemaKey = "Schema-value-" SchemaCountKey = "Schema-count-" diff --git a/x/cheqd/types/messages_attrib.go b/x/cheqd/types/messages_attrib.go deleted file mode 100644 index ed6bdb2e5..000000000 --- a/x/cheqd/types/messages_attrib.go +++ /dev/null @@ -1,63 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) - -var _ sdk.Msg = &MsgCreateAttrib{} - -func NewMsgCreateAttrib(did string, raw string) *MsgCreateAttrib { - return &MsgCreateAttrib{ - Did: did, - Raw: raw, - } -} - -func (msg *MsgCreateAttrib) Route() string { - return RouterKey -} - -func (msg *MsgCreateAttrib) Type() string { - return "CreateAttrib" -} - -func (msg *MsgCreateAttrib) GetSigners() []sdk.AccAddress { - return []sdk.AccAddress{} -} - -func (msg *MsgCreateAttrib) GetSignBytes() []byte { - return []byte{} -} - -func (msg *MsgCreateAttrib) ValidateBasic() error { - return nil -} - -var _ sdk.Msg = &MsgUpdateAttrib{} - -func NewMsgUpdateAttrib(did string, raw string) *MsgUpdateAttrib { - return &MsgUpdateAttrib{ - Did: did, - Raw: raw, - } -} - -func (msg *MsgUpdateAttrib) Route() string { - return RouterKey -} - -func (msg *MsgUpdateAttrib) Type() string { - return "UpdateAttrib" -} - -func (msg *MsgUpdateAttrib) GetSigners() []sdk.AccAddress { - return []sdk.AccAddress{} -} - -func (msg *MsgUpdateAttrib) GetSignBytes() []byte { - return []byte{} -} - -func (msg *MsgUpdateAttrib) ValidateBasic() error { - return nil -} diff --git a/x/cheqd/types/query.go b/x/cheqd/types/query.go index 736d2fc60..8776d4ec8 100644 --- a/x/cheqd/types/query.go +++ b/x/cheqd/types/query.go @@ -4,10 +4,6 @@ const ( QueryGetDid = "get-did" ) -const ( - QueryGetAttrib = "get-attrib" -) - const ( QueryGetSchema = "get-schema" ) diff --git a/x/cheqd/types/query.pb.go b/x/cheqd/types/query.pb.go index 17297cb80..fc6f7f22a 100644 --- a/x/cheqd/types/query.pb.go +++ b/x/cheqd/types/query.pb.go @@ -206,94 +206,6 @@ func (m *QueryGetSchemaResponse) GetSchema() *Schema { return nil } -type QueryGetAttribRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -} - -func (m *QueryGetAttribRequest) Reset() { *m = QueryGetAttribRequest{} } -func (m *QueryGetAttribRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetAttribRequest) ProtoMessage() {} -func (*QueryGetAttribRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{4} -} -func (m *QueryGetAttribRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetAttribRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetAttribRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetAttribRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetAttribRequest.Merge(m, src) -} -func (m *QueryGetAttribRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetAttribRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetAttribRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetAttribRequest proto.InternalMessageInfo - -func (m *QueryGetAttribRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type QueryGetAttribResponse struct { - Attrib *Attrib `protobuf:"bytes,1,opt,name=Attrib,proto3" json:"Attrib,omitempty"` -} - -func (m *QueryGetAttribResponse) Reset() { *m = QueryGetAttribResponse{} } -func (m *QueryGetAttribResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetAttribResponse) ProtoMessage() {} -func (*QueryGetAttribResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{5} -} -func (m *QueryGetAttribResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetAttribResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetAttribResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetAttribResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetAttribResponse.Merge(m, src) -} -func (m *QueryGetAttribResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetAttribResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetAttribResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetAttribResponse proto.InternalMessageInfo - -func (m *QueryGetAttribResponse) GetAttrib() *Attrib { - if m != nil { - return m.Attrib - } - return nil -} - type QueryGetDidRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -302,7 +214,7 @@ func (m *QueryGetDidRequest) Reset() { *m = QueryGetDidRequest{} } func (m *QueryGetDidRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetDidRequest) ProtoMessage() {} func (*QueryGetDidRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{6} + return fileDescriptor_bf3698559b3858f5, []int{4} } func (m *QueryGetDidRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -346,7 +258,7 @@ func (m *QueryGetDidResponse) Reset() { *m = QueryGetDidResponse{} } func (m *QueryGetDidResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetDidResponse) ProtoMessage() {} func (*QueryGetDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{7} + return fileDescriptor_bf3698559b3858f5, []int{5} } func (m *QueryGetDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -387,8 +299,6 @@ func init() { proto.RegisterType((*QueryGetCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetCredDefResponse") proto.RegisterType((*QueryGetSchemaRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetSchemaRequest") proto.RegisterType((*QueryGetSchemaResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetSchemaResponse") - proto.RegisterType((*QueryGetAttribRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetAttribRequest") - proto.RegisterType((*QueryGetAttribResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetAttribResponse") proto.RegisterType((*QueryGetDidRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetDidRequest") proto.RegisterType((*QueryGetDidResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetDidResponse") } @@ -396,38 +306,35 @@ func init() { func init() { proto.RegisterFile("cheqd/query.proto", fileDescriptor_bf3698559b3858f5) } var fileDescriptor_bf3698559b3858f5 = []byte{ - // 486 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xc1, 0x6b, 0x14, 0x31, - 0x18, 0xc5, 0x37, 0xab, 0x56, 0x4c, 0x41, 0x31, 0x45, 0x2b, 0x43, 0x99, 0xd6, 0xb1, 0xd2, 0xda, - 0xea, 0xc4, 0xae, 0x07, 0xc1, 0x9b, 0x76, 0xc5, 0x73, 0x2b, 0x5e, 0xbc, 0x65, 0x26, 0x71, 0x37, - 0xe0, 0x4e, 0x66, 0x37, 0x59, 0xb1, 0x88, 0x17, 0x6f, 0xde, 0x04, 0xf1, 0xe0, 0x7f, 0xe4, 0xb1, - 0xe0, 0xc5, 0x9b, 0xb2, 0xeb, 0x1f, 0x22, 0x93, 0x7c, 0x71, 0x3a, 0x68, 0x98, 0x39, 0xed, 0xf2, - 0x78, 0xef, 0x7b, 0x3f, 0x92, 0x2f, 0x83, 0xaf, 0xe6, 0x63, 0x31, 0xe5, 0x74, 0x3a, 0x17, 0xb3, - 0x93, 0xb4, 0x9c, 0x29, 0xa3, 0xc8, 0xba, 0x95, 0x24, 0x4f, 0xed, 0x6f, 0xa1, 0xb8, 0x70, 0xff, - 0xa2, 0x8d, 0x91, 0x52, 0xa3, 0xd7, 0x82, 0xb2, 0x52, 0x52, 0x56, 0x14, 0xca, 0x30, 0x23, 0x55, - 0xa1, 0x5d, 0x2c, 0xda, 0xcb, 0x95, 0x9e, 0x28, 0x4d, 0x33, 0xa6, 0x85, 0x9b, 0x47, 0xdf, 0x1c, - 0x64, 0xc2, 0xb0, 0x03, 0x5a, 0xb2, 0x91, 0x2c, 0xac, 0x19, 0xbc, 0x6b, 0xae, 0x35, 0x9f, 0x09, - 0x3e, 0x14, 0xaf, 0x40, 0x24, 0x4e, 0xd4, 0xf9, 0x58, 0x4c, 0x58, 0x53, 0x63, 0xc6, 0xcc, 0x64, - 0x06, 0xda, 0x15, 0xa7, 0x55, 0x84, 0x56, 0x48, 0x76, 0xf1, 0xf5, 0xa3, 0xaa, 0xef, 0x99, 0x30, - 0x87, 0x6e, 0xe2, 0xb1, 0x98, 0xce, 0x85, 0x36, 0xe4, 0x32, 0xee, 0x4b, 0x7e, 0x03, 0x6d, 0xa1, - 0xdd, 0x4b, 0xc7, 0x7d, 0xc9, 0x93, 0x17, 0x78, 0xfd, 0x1f, 0xa7, 0x2e, 0x55, 0xa1, 0x05, 0x79, - 0x84, 0x2f, 0x82, 0x64, 0xfd, 0xab, 0x83, 0xad, 0x34, 0x70, 0x0e, 0xa9, 0x8f, 0xfa, 0x40, 0xb2, - 0x83, 0xaf, 0xf9, 0xb1, 0xcf, 0x2d, 0x7d, 0xa8, 0xff, 0xa8, 0x26, 0xf5, 0x46, 0xa8, 0x7f, 0x88, - 0x57, 0x9c, 0x02, 0xed, 0x9b, 0xc1, 0x76, 0x08, 0x82, 0xfd, 0x6c, 0xf7, 0x63, 0x7b, 0x4a, 0x1d, - 0xba, 0xbd, 0xb1, 0xee, 0x76, 0x4a, 0x6b, 0x37, 0x04, 0xc1, 0x9e, 0x6c, 0x63, 0xe2, 0x47, 0x0e, - 0x25, 0x0f, 0x15, 0x3f, 0xc5, 0x6b, 0x0d, 0x17, 0xb4, 0xa6, 0xf8, 0xdc, 0x10, 0x7c, 0xab, 0x83, - 0x8d, 0x60, 0x65, 0x15, 0xa9, 0x8c, 0x83, 0x9f, 0xe7, 0xf1, 0x05, 0x3b, 0x87, 0x7c, 0x45, 0x7f, - 0xef, 0x8a, 0xd0, 0x60, 0xf0, 0xff, 0x2b, 0x11, 0xdd, 0xef, 0x1e, 0x70, 0xa0, 0xc9, 0xfe, 0x87, - 0xef, 0xbf, 0x3f, 0xf7, 0x6f, 0x93, 0x5b, 0x14, 0xb6, 0xd6, 0xe7, 0x68, 0x63, 0x8b, 0xe9, 0x3b, - 0xc9, 0xdf, 0x93, 0x2f, 0xc8, 0x5f, 0x24, 0x49, 0x5b, 0x9b, 0x1a, 0xcb, 0x12, 0xd1, 0xce, 0x7e, - 0x00, 0xdb, 0xb3, 0x60, 0xdb, 0x24, 0x09, 0x80, 0xb9, 0x97, 0x54, 0x73, 0xb9, 0x5b, 0xeb, 0xc0, - 0xd5, 0x58, 0xa4, 0x0e, 0x5c, 0xcd, 0x7d, 0x6a, 0xe5, 0x72, 0xaf, 0xd9, 0x71, 0x7d, 0x44, 0x76, - 0x0d, 0xc8, 0x7e, 0x6b, 0x49, 0xbd, 0x61, 0xd1, 0xdd, 0x6e, 0x66, 0xc0, 0xd9, 0xb1, 0x38, 0x37, - 0xc9, 0x66, 0x00, 0x87, 0x4b, 0x6e, 0x59, 0x9e, 0x1c, 0x7e, 0x5b, 0xc4, 0xe8, 0x74, 0x11, 0xa3, - 0x5f, 0x8b, 0x18, 0x7d, 0x5a, 0xc6, 0xbd, 0xd3, 0x65, 0xdc, 0xfb, 0xb1, 0x8c, 0x7b, 0x2f, 0xef, - 0x8c, 0xa4, 0x19, 0xcf, 0xb3, 0x34, 0x57, 0x93, 0xb3, 0x43, 0xee, 0xd9, 0x29, 0x6f, 0x41, 0x32, - 0x27, 0xa5, 0xd0, 0xd9, 0x8a, 0xfd, 0x26, 0x3d, 0xf8, 0x13, 0x00, 0x00, 0xff, 0xff, 0x13, 0x97, - 0x79, 0x6f, 0x59, 0x05, 0x00, 0x00, + // 441 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x4f, 0x8f, 0xd2, 0x40, + 0x14, 0x67, 0x20, 0x62, 0x1c, 0x12, 0x8d, 0x43, 0x14, 0xd3, 0x90, 0x82, 0x15, 0x03, 0x82, 0x76, + 0x04, 0x0f, 0x26, 0x1e, 0x05, 0xe3, 0x19, 0x8c, 0x17, 0x6f, 0x6d, 0x67, 0x2c, 0x93, 0x48, 0xa7, + 0x30, 0x83, 0x91, 0x18, 0x2f, 0xde, 0xbc, 0x99, 0x18, 0x0f, 0x7e, 0x22, 0x3d, 0x92, 0x78, 0xd9, + 0xe3, 0x06, 0xf6, 0x83, 0x6c, 0x3a, 0x33, 0x5d, 0x96, 0xec, 0x4e, 0xe0, 0xd4, 0xe6, 0x97, 0xdf, + 0xbf, 0xbe, 0xf7, 0x0a, 0xef, 0x46, 0x53, 0x3a, 0x27, 0x78, 0xbe, 0xa4, 0x8b, 0x95, 0x9f, 0x2e, + 0xb8, 0xe4, 0xa8, 0xa6, 0x20, 0x46, 0x7c, 0xf5, 0x4c, 0x38, 0xa1, 0xfa, 0xcd, 0xa9, 0xc7, 0x9c, + 0xc7, 0x9f, 0x28, 0x0e, 0x52, 0x86, 0x83, 0x24, 0xe1, 0x32, 0x90, 0x8c, 0x27, 0x42, 0xcb, 0x9c, + 0x6e, 0xc4, 0xc5, 0x8c, 0x0b, 0x1c, 0x06, 0x82, 0x6a, 0x3f, 0xfc, 0xb9, 0x1f, 0x52, 0x19, 0xf4, + 0x71, 0x1a, 0xc4, 0x2c, 0x51, 0x64, 0xc3, 0xad, 0xea, 0xd4, 0x68, 0x41, 0xc9, 0x88, 0x7e, 0x34, + 0x20, 0xd2, 0xa0, 0x88, 0xa6, 0x74, 0x16, 0x18, 0xec, 0x8e, 0xc6, 0xb2, 0x36, 0x0a, 0xf0, 0x3a, + 0xf0, 0xfe, 0x38, 0xf3, 0x7e, 0x4b, 0xe5, 0x50, 0xab, 0x27, 0x74, 0xbe, 0xa4, 0x42, 0xa2, 0xdb, + 0xb0, 0xc8, 0xc8, 0x03, 0xd0, 0x04, 0x9d, 0x5b, 0x93, 0x22, 0x23, 0xde, 0x7b, 0x58, 0xbb, 0xc2, + 0x14, 0x29, 0x4f, 0x04, 0x45, 0xaf, 0xe0, 0x4d, 0x03, 0x29, 0x7e, 0x65, 0xd0, 0xf4, 0x2d, 0xdf, + 0xec, 0xe7, 0xd2, 0x5c, 0xe0, 0xb5, 0xe1, 0xbd, 0xdc, 0xf6, 0x9d, 0x6a, 0x6a, 0xcb, 0x1f, 0xef, + 0x9a, 0xe6, 0x44, 0x13, 0xff, 0x12, 0x96, 0x35, 0x62, 0xd2, 0x1b, 0xd6, 0x74, 0x23, 0x34, 0x74, + 0xaf, 0x05, 0x51, 0x6e, 0x39, 0x62, 0xc4, 0x16, 0xfc, 0x06, 0x56, 0xf7, 0x58, 0x26, 0xd5, 0x87, + 0xa5, 0x91, 0xe1, 0x55, 0x06, 0x75, 0x6b, 0x64, 0x26, 0xc9, 0x88, 0x83, 0xbf, 0x25, 0x78, 0x43, + 0xf9, 0xa0, 0x3f, 0xe0, 0x62, 0x5e, 0x08, 0x5b, 0x85, 0xd7, 0xaf, 0xc5, 0x79, 0x7e, 0xbc, 0x40, + 0x17, 0xf5, 0x7a, 0xdf, 0xff, 0x9f, 0xfd, 0x2a, 0x3e, 0x46, 0x8f, 0xb0, 0xb9, 0x92, 0x5c, 0x87, + 0xf7, 0xae, 0x06, 0x7f, 0x65, 0xe4, 0x1b, 0xfa, 0x0d, 0xf2, 0x61, 0x22, 0xff, 0x60, 0xd2, 0xde, + 0xc2, 0x1c, 0x7c, 0x34, 0xdf, 0x14, 0xeb, 0xaa, 0x62, 0x2d, 0xe4, 0x59, 0x8a, 0xe9, 0xcb, 0xd5, + 0xbd, 0x7e, 0x00, 0x35, 0x6e, 0xd4, 0x3b, 0x18, 0xb2, 0xdb, 0xa4, 0xf3, 0xf4, 0x38, 0xb2, 0xa9, + 0xd3, 0x56, 0x75, 0x1e, 0xa2, 0x86, 0xa5, 0x0e, 0x61, 0x44, 0x75, 0x79, 0x3d, 0xfc, 0xb7, 0x71, + 0xc1, 0x7a, 0xe3, 0x82, 0xd3, 0x8d, 0x0b, 0x7e, 0x6e, 0xdd, 0xc2, 0x7a, 0xeb, 0x16, 0x4e, 0xb6, + 0x6e, 0xe1, 0xc3, 0x93, 0x98, 0xc9, 0xe9, 0x32, 0xf4, 0x23, 0x3e, 0xbb, 0x6c, 0xf2, 0x4c, 0xb9, + 0x7c, 0x31, 0x90, 0x5c, 0xa5, 0x54, 0x84, 0x65, 0xf5, 0xff, 0xbd, 0x38, 0x0f, 0x00, 0x00, 0xff, + 0xff, 0x71, 0xd4, 0x20, 0xe8, 0x31, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -445,7 +352,6 @@ type QueryClient interface { // this line is used by starport scaffolding # 2 CredDef(ctx context.Context, in *QueryGetCredDefRequest, opts ...grpc.CallOption) (*QueryGetCredDefResponse, error) Schema(ctx context.Context, in *QueryGetSchemaRequest, opts ...grpc.CallOption) (*QueryGetSchemaResponse, error) - Attrib(ctx context.Context, in *QueryGetAttribRequest, opts ...grpc.CallOption) (*QueryGetAttribResponse, error) Did(ctx context.Context, in *QueryGetDidRequest, opts ...grpc.CallOption) (*QueryGetDidResponse, error) } @@ -475,15 +381,6 @@ func (c *queryClient) Schema(ctx context.Context, in *QueryGetSchemaRequest, opt return out, nil } -func (c *queryClient) Attrib(ctx context.Context, in *QueryGetAttribRequest, opts ...grpc.CallOption) (*QueryGetAttribResponse, error) { - out := new(QueryGetAttribResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/Attrib", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *queryClient) Did(ctx context.Context, in *QueryGetDidRequest, opts ...grpc.CallOption) (*QueryGetDidResponse, error) { out := new(QueryGetDidResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/Did", in, out, opts...) @@ -498,7 +395,6 @@ type QueryServer interface { // this line is used by starport scaffolding # 2 CredDef(context.Context, *QueryGetCredDefRequest) (*QueryGetCredDefResponse, error) Schema(context.Context, *QueryGetSchemaRequest) (*QueryGetSchemaResponse, error) - Attrib(context.Context, *QueryGetAttribRequest) (*QueryGetAttribResponse, error) Did(context.Context, *QueryGetDidRequest) (*QueryGetDidResponse, error) } @@ -512,9 +408,6 @@ func (*UnimplementedQueryServer) CredDef(ctx context.Context, req *QueryGetCredD func (*UnimplementedQueryServer) Schema(ctx context.Context, req *QueryGetSchemaRequest) (*QueryGetSchemaResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Schema not implemented") } -func (*UnimplementedQueryServer) Attrib(ctx context.Context, req *QueryGetAttribRequest) (*QueryGetAttribResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Attrib not implemented") -} func (*UnimplementedQueryServer) Did(ctx context.Context, req *QueryGetDidRequest) (*QueryGetDidResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Did not implemented") } @@ -559,24 +452,6 @@ func _Query_Schema_Handler(srv interface{}, ctx context.Context, dec func(interf return interceptor(ctx, in, info, handler) } -func _Query_Attrib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetAttribRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Attrib(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Query/Attrib", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Attrib(ctx, req.(*QueryGetAttribRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Query_Did_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryGetDidRequest) if err := dec(in); err != nil { @@ -607,10 +482,6 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "Schema", Handler: _Query_Schema_Handler, }, - { - MethodName: "Attrib", - Handler: _Query_Attrib_Handler, - }, { MethodName: "Did", Handler: _Query_Did_Handler, @@ -750,71 +621,6 @@ func (m *QueryGetSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *QueryGetAttribRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetAttribRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetAttribRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryGetAttribResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetAttribResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetAttribResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Attrib != nil { - { - size, err := m.Attrib.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *QueryGetDidRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -943,32 +749,6 @@ func (m *QueryGetSchemaResponse) Size() (n int) { return n } -func (m *QueryGetAttribRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetAttribResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Attrib != nil { - l = m.Attrib.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - func (m *QueryGetDidRequest) Size() (n int) { if m == nil { return 0 @@ -1337,174 +1117,6 @@ func (m *QueryGetSchemaResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryGetAttribRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetAttribRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetAttribRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetAttribResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetAttribResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetAttribResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Attrib", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Attrib == nil { - m.Attrib = &Attrib{} - } - if err := m.Attrib.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *QueryGetDidRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/cheqd/types/query.pb.gw.go b/x/cheqd/types/query.pb.gw.go index ad14e20ec..0f49f0add 100644 --- a/x/cheqd/types/query.pb.gw.go +++ b/x/cheqd/types/query.pb.gw.go @@ -141,60 +141,6 @@ func local_request_Query_Schema_0(ctx context.Context, marshaler runtime.Marshal } -func request_Query_Attrib_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetAttribRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := client.Attrib(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Attrib_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetAttribRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := server.Attrib(ctx, &protoReq) - return msg, metadata, err - -} - func request_Query_Did_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryGetDidRequest var metadata runtime.ServerMetadata @@ -301,29 +247,6 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) - mux.Handle("GET", pattern_Query_Attrib_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Attrib_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Attrib_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_Query_Did_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -428,26 +351,6 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) - mux.Handle("GET", pattern_Query_Attrib_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Attrib_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Attrib_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_Query_Did_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -476,8 +379,6 @@ var ( pattern_Query_Schema_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "schema", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_Attrib_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "attrib", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_Did_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "did", "id"}, "", runtime.AssumeColonVerbOpt(true))) ) @@ -486,7 +387,5 @@ var ( forward_Query_Schema_0 = runtime.ForwardResponseMessage - forward_Query_Attrib_0 = runtime.ForwardResponseMessage - forward_Query_Did_0 = runtime.ForwardResponseMessage ) diff --git a/x/cheqd/types/schema.pb.go b/x/cheqd/types/schema.pb.go index 282ed0719..f35ce0dd6 100644 --- a/x/cheqd/types/schema.pb.go +++ b/x/cheqd/types/schema.pb.go @@ -24,10 +24,10 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Schema struct { - Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - AttrNames string `protobuf:"bytes,4,opt,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` + Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + AttrNames []string `protobuf:"bytes,4,rep,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` } func (m *Schema) Reset() { *m = Schema{} } @@ -84,11 +84,11 @@ func (m *Schema) GetVersion() string { return "" } -func (m *Schema) GetAttrNames() string { +func (m *Schema) GetAttrNames() []string { if m != nil { return m.AttrNames } - return "" + return nil } func init() { @@ -98,7 +98,7 @@ func init() { func init() { proto.RegisterFile("cheqd/schema.proto", fileDescriptor_96d8c360e747a40a) } var fileDescriptor_96d8c360e747a40a = []byte{ - // 210 bytes of a gzipped FileDescriptorProto + // 214 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x2f, 0x4e, 0xce, 0x48, 0xcd, 0x4d, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, @@ -106,13 +106,13 @@ var fileDescriptor_96d8c360e747a40a = []byte{ 0x17, 0x12, 0xe3, 0x62, 0x4b, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0x92, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x82, 0xf2, 0x84, 0x84, 0xb8, 0x58, 0xf2, 0x12, 0x73, 0x53, 0x25, 0x98, 0xc0, 0xa2, 0x60, 0xb6, 0x90, 0x04, 0x17, 0x7b, 0x59, 0x6a, 0x51, 0x71, 0x66, 0x7e, 0x9e, 0x04, 0x33, 0x58, 0x18, - 0xc6, 0x15, 0x92, 0xe5, 0xe2, 0x4a, 0x2c, 0x29, 0x29, 0x8a, 0x07, 0x29, 0x2b, 0x96, 0x60, 0x01, - 0x4b, 0x72, 0x82, 0x44, 0xfc, 0x40, 0x02, 0x4e, 0xce, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, - 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, - 0x2c, 0xc7, 0x10, 0xa5, 0x99, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, - 0xf1, 0x16, 0x98, 0xd4, 0x05, 0xf9, 0x40, 0xbf, 0x02, 0x2a, 0x54, 0x52, 0x59, 0x90, 0x5a, 0x9c, - 0xc4, 0x06, 0x76, 0xba, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x64, 0x83, 0x16, 0xff, 0x00, - 0x00, 0x00, + 0xc6, 0x15, 0x92, 0xe5, 0xe2, 0x4a, 0x2c, 0x29, 0x29, 0x8a, 0x07, 0x29, 0x2b, 0x96, 0x60, 0x51, + 0x60, 0xd6, 0xe0, 0x0c, 0xe2, 0x04, 0x89, 0xf8, 0x81, 0x04, 0x9c, 0x9c, 0x4f, 0x3c, 0x92, 0x63, + 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, + 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0x4a, 0x33, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, + 0x3f, 0x57, 0x1f, 0xe2, 0x2d, 0x30, 0xa9, 0x0b, 0xf2, 0x81, 0x7e, 0x05, 0x54, 0xa8, 0xa4, 0xb2, + 0x20, 0xb5, 0x38, 0x89, 0x0d, 0xec, 0x74, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6b, 0xb5, + 0x40, 0x4d, 0xff, 0x00, 0x00, 0x00, } func (m *Schema) Marshal() (dAtA []byte, err error) { @@ -136,11 +136,13 @@ func (m *Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.AttrNames) > 0 { - i -= len(m.AttrNames) - copy(dAtA[i:], m.AttrNames) - i = encodeVarintSchema(dAtA, i, uint64(len(m.AttrNames))) - i-- - dAtA[i] = 0x22 + for iNdEx := len(m.AttrNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AttrNames[iNdEx]) + copy(dAtA[i:], m.AttrNames[iNdEx]) + i = encodeVarintSchema(dAtA, i, uint64(len(m.AttrNames[iNdEx]))) + i-- + dAtA[i] = 0x22 + } } if len(m.Version) > 0 { i -= len(m.Version) @@ -195,9 +197,11 @@ func (m *Schema) Size() (n int) { if l > 0 { n += 1 + l + sovSchema(uint64(l)) } - l = len(m.AttrNames) - if l > 0 { - n += 1 + l + sovSchema(uint64(l)) + if len(m.AttrNames) > 0 { + for _, s := range m.AttrNames { + l = len(s) + n += 1 + l + sovSchema(uint64(l)) + } } return n } @@ -363,7 +367,7 @@ func (m *Schema) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AttrNames = string(dAtA[iNdEx:postIndex]) + m.AttrNames = append(m.AttrNames, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index c829b1a78..f60769283 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -202,9 +202,9 @@ func (m *MsgCreateCredDefResponse) GetId() string { } type MsgCreateSchema struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - AttrNames string `protobuf:"bytes,3,opt,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + AttrNames []string `protobuf:"bytes,3,rep,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` } func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } @@ -254,11 +254,11 @@ func (m *MsgCreateSchema) GetVersion() string { return "" } -func (m *MsgCreateSchema) GetAttrNames() string { +func (m *MsgCreateSchema) GetAttrNames() []string { if m != nil { return m.AttrNames } - return "" + return nil } type MsgCreateSchemaResponse struct { @@ -305,198 +305,6 @@ func (m *MsgCreateSchemaResponse) GetId() string { return "" } -type MsgCreateAttrib struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` - Raw []string `protobuf:"bytes,2,rep,name=raw,proto3" json:"raw,omitempty"` -} - -func (m *MsgCreateAttrib) Reset() { *m = MsgCreateAttrib{} } -func (m *MsgCreateAttrib) String() string { return proto.CompactTextString(m) } -func (*MsgCreateAttrib) ProtoMessage() {} -func (*MsgCreateAttrib) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{5} -} -func (m *MsgCreateAttrib) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCreateAttrib) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCreateAttrib.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgCreateAttrib) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateAttrib.Merge(m, src) -} -func (m *MsgCreateAttrib) XXX_Size() int { - return m.Size() -} -func (m *MsgCreateAttrib) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateAttrib.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCreateAttrib proto.InternalMessageInfo - -func (m *MsgCreateAttrib) GetDid() string { - if m != nil { - return m.Did - } - return "" -} - -func (m *MsgCreateAttrib) GetRaw() []string { - if m != nil { - return m.Raw - } - return nil -} - -type MsgCreateAttribResponse struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -} - -func (m *MsgCreateAttribResponse) Reset() { *m = MsgCreateAttribResponse{} } -func (m *MsgCreateAttribResponse) String() string { return proto.CompactTextString(m) } -func (*MsgCreateAttribResponse) ProtoMessage() {} -func (*MsgCreateAttribResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{6} -} -func (m *MsgCreateAttribResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCreateAttribResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCreateAttribResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgCreateAttribResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateAttribResponse.Merge(m, src) -} -func (m *MsgCreateAttribResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgCreateAttribResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateAttribResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCreateAttribResponse proto.InternalMessageInfo - -func (m *MsgCreateAttribResponse) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type MsgUpdateAttrib struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` - Raw []string `protobuf:"bytes,2,rep,name=raw,proto3" json:"raw,omitempty"` -} - -func (m *MsgUpdateAttrib) Reset() { *m = MsgUpdateAttrib{} } -func (m *MsgUpdateAttrib) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateAttrib) ProtoMessage() {} -func (*MsgUpdateAttrib) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{7} -} -func (m *MsgUpdateAttrib) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateAttrib) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateAttrib.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateAttrib) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateAttrib.Merge(m, src) -} -func (m *MsgUpdateAttrib) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateAttrib) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateAttrib.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateAttrib proto.InternalMessageInfo - -func (m *MsgUpdateAttrib) GetDid() string { - if m != nil { - return m.Did - } - return "" -} - -func (m *MsgUpdateAttrib) GetRaw() []string { - if m != nil { - return m.Raw - } - return nil -} - -type MsgUpdateAttribResponse struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -} - -func (m *MsgUpdateAttribResponse) Reset() { *m = MsgUpdateAttribResponse{} } -func (m *MsgUpdateAttribResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateAttribResponse) ProtoMessage() {} -func (*MsgUpdateAttribResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{8} -} -func (m *MsgUpdateAttribResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateAttribResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateAttribResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateAttribResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateAttribResponse.Merge(m, src) -} -func (m *MsgUpdateAttribResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateAttribResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateAttribResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateAttribResponse proto.InternalMessageInfo - -func (m *MsgUpdateAttribResponse) GetId() string { - if m != nil { - return m.Id - } - return "" -} - type MsgCreateDid struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Verkey string `protobuf:"bytes,2,opt,name=verkey,proto3" json:"verkey,omitempty"` @@ -507,7 +315,7 @@ func (m *MsgCreateDid) Reset() { *m = MsgCreateDid{} } func (m *MsgCreateDid) String() string { return proto.CompactTextString(m) } func (*MsgCreateDid) ProtoMessage() {} func (*MsgCreateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{9} + return fileDescriptor_d0277a2196c64ae2, []int{5} } func (m *MsgCreateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -565,7 +373,7 @@ func (m *MsgCreateDidResponse) Reset() { *m = MsgCreateDidResponse{} } func (m *MsgCreateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateDidResponse) ProtoMessage() {} func (*MsgCreateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{10} + return fileDescriptor_d0277a2196c64ae2, []int{6} } func (m *MsgCreateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -611,7 +419,7 @@ func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } func (m *MsgUpdateDid) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDid) ProtoMessage() {} func (*MsgUpdateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{11} + return fileDescriptor_d0277a2196c64ae2, []int{7} } func (m *MsgUpdateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -669,7 +477,7 @@ func (m *MsgUpdateDidResponse) Reset() { *m = MsgUpdateDidResponse{} } func (m *MsgUpdateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDidResponse) ProtoMessage() {} func (*MsgUpdateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{12} + return fileDescriptor_d0277a2196c64ae2, []int{8} } func (m *MsgUpdateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -712,10 +520,6 @@ func init() { proto.RegisterType((*MsgCreateCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDefResponse") proto.RegisterType((*MsgCreateSchema)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchema") proto.RegisterType((*MsgCreateSchemaResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchemaResponse") - proto.RegisterType((*MsgCreateAttrib)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateAttrib") - proto.RegisterType((*MsgCreateAttribResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateAttribResponse") - proto.RegisterType((*MsgUpdateAttrib)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateAttrib") - proto.RegisterType((*MsgUpdateAttribResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateAttribResponse") proto.RegisterType((*MsgCreateDid)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateDid") proto.RegisterType((*MsgCreateDidResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateDidResponse") proto.RegisterType((*MsgUpdateDid)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateDid") @@ -725,45 +529,41 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 600 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0x86, 0xeb, 0xb8, 0x2d, 0x78, 0xda, 0xa6, 0xd5, 0x2a, 0xa2, 0x26, 0x08, 0x2b, 0xb2, 0x04, - 0x4a, 0x91, 0xea, 0x40, 0x10, 0x52, 0x85, 0xc4, 0xa1, 0xa4, 0x1c, 0x90, 0x08, 0x07, 0x17, 0x04, - 0xe2, 0x40, 0xb4, 0xc9, 0x6e, 0x1d, 0x97, 0xc4, 0x4e, 0x77, 0xd7, 0x69, 0x7d, 0xe1, 0xc2, 0x0b, - 0xf0, 0x58, 0x1c, 0x7b, 0xe4, 0x88, 0x92, 0x2b, 0x0f, 0x81, 0xd6, 0x76, 0x1c, 0xc7, 0x34, 0x24, - 0x42, 0xb9, 0x24, 0x33, 0xb3, 0x33, 0xf3, 0xfd, 0xb1, 0xff, 0xd8, 0x50, 0xec, 0x74, 0xe9, 0x05, - 0xa9, 0x89, 0x2b, 0x6b, 0xc0, 0x7c, 0xe1, 0xa3, 0xfd, 0x28, 0x77, 0x89, 0x15, 0x7d, 0x7b, 0x3e, - 0xa1, 0x71, 0x54, 0xbe, 0xeb, 0xf8, 0xbe, 0xd3, 0xa3, 0xb5, 0xa8, 0xad, 0x1d, 0x9c, 0xd5, 0xb0, - 0x17, 0xc6, 0x33, 0xe6, 0x6f, 0x05, 0x76, 0x9b, 0xdc, 0xf9, 0xc0, 0x5c, 0x41, 0x6d, 0x7a, 0x11, - 0x50, 0x2e, 0x50, 0x15, 0xd6, 0x09, 0x16, 0x58, 0x57, 0x2a, 0x4a, 0x75, 0xab, 0x5e, 0xb2, 0xe2, - 0x69, 0x6b, 0x32, 0x6d, 0x1d, 0x7b, 0xa1, 0x1d, 0x75, 0xa0, 0x3b, 0xb0, 0x89, 0x03, 0xd1, 0xf5, - 0x99, 0x5e, 0xa8, 0x28, 0x55, 0xcd, 0x4e, 0x32, 0xf4, 0x11, 0x80, 0xbb, 0x8e, 0x87, 0x45, 0xc0, - 0x28, 0xd7, 0xd5, 0x8a, 0x5a, 0xdd, 0xaa, 0x1f, 0x59, 0x73, 0xe4, 0x59, 0x39, 0xbe, 0x75, 0x9a, - 0x8e, 0xbe, 0xf2, 0x04, 0x0b, 0xed, 0xcc, 0xae, 0xf2, 0x0b, 0xd8, 0xcd, 0x1d, 0xa3, 0x3d, 0x50, - 0xbf, 0xd0, 0x30, 0x52, 0xab, 0xd9, 0x32, 0x44, 0x25, 0xd8, 0x18, 0xe2, 0x5e, 0x40, 0x13, 0x55, - 0x71, 0xf2, 0xbc, 0x70, 0xa4, 0x98, 0x5f, 0x61, 0xaf, 0xc9, 0x9d, 0x06, 0xa3, 0x58, 0xd0, 0x06, - 0xa3, 0xe4, 0x84, 0x9e, 0xa1, 0x7b, 0xa0, 0xf1, 0x4e, 0x97, 0xf6, 0x71, 0xcb, 0x25, 0xc9, 0x96, - 0xdb, 0x71, 0xe1, 0x35, 0x91, 0xcb, 0x05, 0x76, 0x92, 0x45, 0x32, 0x44, 0x0f, 0xa0, 0x98, 0xea, - 0x69, 0x89, 0x70, 0x40, 0x75, 0x35, 0x3a, 0xdc, 0x49, 0xab, 0xef, 0xc2, 0x01, 0x9d, 0x6a, 0x58, - 0xcf, 0x68, 0x30, 0x1f, 0x81, 0x9e, 0xe7, 0xdb, 0x94, 0x0f, 0x7c, 0x8f, 0x53, 0x54, 0x84, 0x42, - 0x2a, 0xa0, 0xe0, 0x12, 0xf3, 0x73, 0x74, 0x67, 0xe2, 0xde, 0xd3, 0x48, 0x0f, 0x42, 0xb0, 0xee, - 0xe1, 0x3e, 0x4d, 0x9a, 0xa2, 0x18, 0xe9, 0x70, 0x6b, 0x48, 0x19, 0x77, 0x7d, 0x2f, 0x51, 0x39, - 0x49, 0xd1, 0x7d, 0x00, 0x2c, 0x04, 0x6b, 0xc9, 0x36, 0x9e, 0xa8, 0xd4, 0x64, 0xe5, 0xad, 0x2c, - 0x98, 0x07, 0xb0, 0x9f, 0xdb, 0x3f, 0x57, 0xca, 0xb3, 0x8c, 0x94, 0x63, 0x21, 0x98, 0xdb, 0x96, - 0x17, 0x86, 0xa4, 0x3d, 0x32, 0x94, 0x15, 0x86, 0x2f, 0xf5, 0x42, 0x45, 0x95, 0x15, 0x86, 0x2f, - 0x67, 0x08, 0xf1, 0xd8, 0x02, 0xc2, 0xfb, 0x01, 0xf9, 0x1f, 0x42, 0x76, 0x6c, 0x2e, 0xe1, 0x0d, - 0x6c, 0xa7, 0x62, 0x4e, 0x5c, 0x92, 0x3f, 0x97, 0x5e, 0x1e, 0x52, 0x26, 0x9d, 0x94, 0x78, 0x39, - 0xce, 0xe4, 0x8d, 0xc4, 0x3d, 0x17, 0x4f, 0x2e, 0x60, 0x9c, 0x98, 0x0f, 0xa1, 0x94, 0xdd, 0xb6, - 0x80, 0x1a, 0x0b, 0x5c, 0x15, 0x35, 0xdd, 0x36, 0x8f, 0x5a, 0xff, 0xb6, 0x01, 0x6a, 0x93, 0x3b, - 0xa8, 0x07, 0x3b, 0xb3, 0x5e, 0xaf, 0x2e, 0xfb, 0x27, 0x2c, 0x3f, 0xf9, 0x57, 0xe7, 0xcd, 0x06, - 0x3e, 0x87, 0xed, 0x19, 0xb7, 0x2e, 0x0f, 0x7b, 0xbc, 0x18, 0x96, 0x73, 0x68, 0xca, 0x4a, 0xcc, - 0xb2, 0x52, 0x56, 0xce, 0x49, 0xe7, 0xb0, 0x3d, 0x63, 0xcc, 0x15, 0xb1, 0x6e, 0x74, 0x2d, 0x01, - 0x6d, 0x6a, 0xd1, 0xe5, 0x41, 0x87, 0x8b, 0x7f, 0x54, 0xd6, 0x2f, 0x04, 0xb4, 0xa9, 0x25, 0x57, - 0x44, 0xf9, 0xcb, 0x95, 0x2f, 0x1b, 0x3f, 0x46, 0x86, 0x72, 0x3d, 0x32, 0x94, 0x5f, 0x23, 0x43, - 0xf9, 0x3e, 0x36, 0xd6, 0xae, 0xc7, 0xc6, 0xda, 0xcf, 0xb1, 0xb1, 0xf6, 0xe9, 0xc0, 0x71, 0x45, - 0x37, 0x68, 0x5b, 0x1d, 0xbf, 0x5f, 0x8b, 0x5f, 0x62, 0xd1, 0xe7, 0xa1, 0xdc, 0x58, 0xbb, 0x4a, - 0x4a, 0xf2, 0xd9, 0xca, 0xdb, 0x9b, 0xd1, 0x6b, 0xe7, 0xe9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xc4, 0x53, 0x42, 0x92, 0xed, 0x06, 0x00, 0x00, + // 540 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0xad, 0xe3, 0x50, 0xf0, 0xb4, 0x4d, 0xab, 0x55, 0x44, 0x4d, 0x10, 0x56, 0x64, 0x09, 0x94, + 0x22, 0xd5, 0x81, 0x70, 0xa9, 0x90, 0x38, 0x40, 0xca, 0x01, 0x89, 0x70, 0x70, 0x41, 0x20, 0x0e, + 0x44, 0x9b, 0xec, 0xd4, 0x31, 0x24, 0x76, 0xea, 0x5d, 0x47, 0xf5, 0x85, 0x6f, 0xe0, 0x3f, 0xf8, + 0x11, 0x8e, 0x3d, 0x72, 0x44, 0xc9, 0x95, 0x8f, 0x40, 0xbb, 0x76, 0x9d, 0xd4, 0x10, 0x92, 0x43, + 0x2f, 0xc9, 0xcc, 0xec, 0xcc, 0x7b, 0x4f, 0xfb, 0xc6, 0x0b, 0x95, 0xfe, 0x00, 0xcf, 0x58, 0x53, + 0x9c, 0x3b, 0xe3, 0x28, 0x14, 0x21, 0xd9, 0x57, 0xb9, 0xcf, 0x1c, 0xf5, 0x1f, 0x84, 0x0c, 0xd3, + 0xa8, 0x76, 0xc7, 0x0b, 0x43, 0x6f, 0x88, 0x4d, 0xd5, 0xd6, 0x8b, 0x4f, 0x9b, 0x34, 0x48, 0xd2, + 0x19, 0xfb, 0xb7, 0x06, 0xbb, 0x1d, 0xee, 0xbd, 0x8f, 0x7c, 0x81, 0x2e, 0x9e, 0xc5, 0xc8, 0x05, + 0x69, 0x40, 0x99, 0x51, 0x41, 0x4d, 0xad, 0xae, 0x35, 0xb6, 0x5a, 0x55, 0x27, 0x9d, 0x76, 0x2e, + 0xa7, 0x9d, 0xe7, 0x41, 0xe2, 0xaa, 0x0e, 0x72, 0x1b, 0x36, 0x69, 0x2c, 0x06, 0x61, 0x64, 0x96, + 0xea, 0x5a, 0xc3, 0x70, 0xb3, 0x8c, 0x7c, 0x00, 0xe0, 0xbe, 0x17, 0x50, 0x11, 0x47, 0xc8, 0x4d, + 0xbd, 0xae, 0x37, 0xb6, 0x5a, 0x47, 0xce, 0x12, 0x79, 0x4e, 0x81, 0xdf, 0x39, 0xc9, 0x47, 0x5f, + 0x06, 0x22, 0x4a, 0xdc, 0x05, 0xac, 0xda, 0x33, 0xd8, 0x2d, 0x1c, 0x93, 0x3d, 0xd0, 0xbf, 0x60, + 0xa2, 0xd4, 0x1a, 0xae, 0x0c, 0x49, 0x15, 0x6e, 0x4c, 0xe8, 0x30, 0xc6, 0x4c, 0x55, 0x9a, 0x3c, + 0x2d, 0x1d, 0x69, 0xf6, 0x57, 0xd8, 0xeb, 0x70, 0xaf, 0x1d, 0x21, 0x15, 0xd8, 0x8e, 0x90, 0x1d, + 0xe3, 0x29, 0xb9, 0x0b, 0x06, 0xef, 0x0f, 0x70, 0x44, 0xbb, 0x3e, 0xcb, 0x50, 0x6e, 0xa5, 0x85, + 0x57, 0x4c, 0x82, 0x0b, 0xea, 0x65, 0x40, 0x32, 0x24, 0xf7, 0xa1, 0x92, 0xeb, 0xe9, 0x8a, 0x64, + 0x8c, 0xa6, 0xae, 0x0e, 0x77, 0xf2, 0xea, 0xdb, 0x64, 0x8c, 0x73, 0x0d, 0xe5, 0x05, 0x0d, 0xf6, + 0x43, 0x30, 0x8b, 0xfc, 0x2e, 0xf2, 0x71, 0x18, 0x70, 0x24, 0x15, 0x28, 0xe5, 0x02, 0x4a, 0x3e, + 0xb3, 0x3f, 0x29, 0x67, 0xd2, 0xde, 0x13, 0xa5, 0x87, 0x10, 0x28, 0x07, 0x74, 0x84, 0x59, 0x93, + 0x8a, 0x89, 0x09, 0x37, 0x27, 0x18, 0x71, 0x3f, 0x0c, 0x32, 0x95, 0x97, 0x29, 0xb9, 0x07, 0x40, + 0x85, 0x88, 0xba, 0xb2, 0x2d, 0x75, 0xc1, 0x70, 0x0d, 0x59, 0x79, 0x23, 0x0b, 0xf6, 0x01, 0xec, + 0x17, 0xf0, 0x97, 0x4a, 0x79, 0x0d, 0xdb, 0x79, 0xeb, 0xb1, 0xcf, 0x8a, 0xe7, 0x72, 0x0f, 0x26, + 0x18, 0x49, 0x17, 0xb2, 0x3d, 0x48, 0x33, 0x79, 0x09, 0x74, 0xe8, 0x53, 0x9e, 0x5d, 0x51, 0x9a, + 0xd8, 0x0f, 0xa0, 0xba, 0x88, 0xb6, 0x82, 0xf5, 0xdd, 0x98, 0x5d, 0x23, 0x6b, 0x8e, 0xb6, 0x8c, + 0xb5, 0xf5, 0x5d, 0x07, 0xbd, 0xc3, 0x3d, 0x32, 0x84, 0x9d, 0xab, 0x7b, 0xd2, 0x58, 0x77, 0x81, + 0x6b, 0x8f, 0xff, 0xd7, 0xf9, 0x6f, 0xf3, 0x3f, 0xc3, 0xf6, 0x15, 0xa7, 0xd7, 0x27, 0x7b, 0xb4, + 0x9a, 0xac, 0xe0, 0x2e, 0x03, 0x63, 0x6e, 0xe5, 0xfa, 0x44, 0x87, 0xab, 0x89, 0x16, 0xef, 0x95, + 0x81, 0x31, 0xb7, 0xee, 0x9a, 0x58, 0xfe, 0x72, 0xef, 0x45, 0xfb, 0xc7, 0xd4, 0xd2, 0x2e, 0xa6, + 0x96, 0xf6, 0x6b, 0x6a, 0x69, 0xdf, 0x66, 0xd6, 0xc6, 0xc5, 0xcc, 0xda, 0xf8, 0x39, 0xb3, 0x36, + 0x3e, 0x1e, 0x78, 0xbe, 0x18, 0xc4, 0x3d, 0xa7, 0x1f, 0x8e, 0x9a, 0xe9, 0x43, 0xa9, 0x7e, 0x0f, + 0x25, 0x62, 0xf3, 0x3c, 0x2b, 0xc9, 0xef, 0x97, 0xf7, 0x36, 0xd5, 0xd3, 0xf6, 0xe4, 0x4f, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x43, 0xbe, 0xa8, 0xe5, 0x51, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -781,8 +581,6 @@ type MsgClient interface { // this line is used by starport scaffolding # proto/tx/rpc CreateCredDef(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) CreateSchema(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) - CreateAttrib(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateAttribResponse, error) - UpdateAttrib(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgUpdateAttribResponse, error) CreateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) UpdateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgUpdateDidResponse, error) } @@ -813,24 +611,6 @@ func (c *msgClient) CreateSchema(ctx context.Context, in *MsgWriteRequest, opts return out, nil } -func (c *msgClient) CreateAttrib(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateAttribResponse, error) { - out := new(MsgCreateAttribResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateAttrib", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) UpdateAttrib(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgUpdateAttribResponse, error) { - out := new(MsgUpdateAttribResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/UpdateAttrib", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) CreateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) { out := new(MsgCreateDidResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateDid", in, out, opts...) @@ -854,8 +634,6 @@ type MsgServer interface { // this line is used by starport scaffolding # proto/tx/rpc CreateCredDef(context.Context, *MsgWriteRequest) (*MsgCreateCredDefResponse, error) CreateSchema(context.Context, *MsgWriteRequest) (*MsgCreateSchemaResponse, error) - CreateAttrib(context.Context, *MsgWriteRequest) (*MsgCreateAttribResponse, error) - UpdateAttrib(context.Context, *MsgWriteRequest) (*MsgUpdateAttribResponse, error) CreateDid(context.Context, *MsgWriteRequest) (*MsgCreateDidResponse, error) UpdateDid(context.Context, *MsgWriteRequest) (*MsgUpdateDidResponse, error) } @@ -870,12 +648,6 @@ func (*UnimplementedMsgServer) CreateCredDef(ctx context.Context, req *MsgWriteR func (*UnimplementedMsgServer) CreateSchema(ctx context.Context, req *MsgWriteRequest) (*MsgCreateSchemaResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateSchema not implemented") } -func (*UnimplementedMsgServer) CreateAttrib(ctx context.Context, req *MsgWriteRequest) (*MsgCreateAttribResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateAttrib not implemented") -} -func (*UnimplementedMsgServer) UpdateAttrib(ctx context.Context, req *MsgWriteRequest) (*MsgUpdateAttribResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAttrib not implemented") -} func (*UnimplementedMsgServer) CreateDid(ctx context.Context, req *MsgWriteRequest) (*MsgCreateDidResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateDid not implemented") } @@ -923,42 +695,6 @@ func _Msg_CreateSchema_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } -func _Msg_CreateAttrib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgWriteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).CreateAttrib(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateAttrib", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateAttrib(ctx, req.(*MsgWriteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_UpdateAttrib_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgWriteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateAttrib(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/UpdateAttrib", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateAttrib(ctx, req.(*MsgWriteRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_CreateDid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgWriteRequest) if err := dec(in); err != nil { @@ -1007,14 +743,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "CreateSchema", Handler: _Msg_CreateSchema_Handler, }, - { - MethodName: "CreateAttrib", - Handler: _Msg_CreateAttrib_Handler, - }, - { - MethodName: "UpdateAttrib", - Handler: _Msg_UpdateAttrib_Handler, - }, { MethodName: "CreateDid", Handler: _Msg_CreateDid_Handler, @@ -1191,11 +919,13 @@ func (m *MsgCreateSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.AttrNames) > 0 { - i -= len(m.AttrNames) - copy(dAtA[i:], m.AttrNames) - i = encodeVarintTx(dAtA, i, uint64(len(m.AttrNames))) - i-- - dAtA[i] = 0x1a + for iNdEx := len(m.AttrNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AttrNames[iNdEx]) + copy(dAtA[i:], m.AttrNames[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AttrNames[iNdEx]))) + i-- + dAtA[i] = 0x1a + } } if len(m.Version) > 0 { i -= len(m.Version) @@ -1244,7 +974,7 @@ func (m *MsgCreateSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgCreateAttrib) Marshal() (dAtA []byte, err error) { +func (m *MsgCreateDid) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1254,55 +984,30 @@ func (m *MsgCreateAttrib) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgCreateAttrib) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgCreateDid) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgCreateAttrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Raw) > 0 { - for iNdEx := len(m.Raw) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Raw[iNdEx]) - copy(dAtA[i:], m.Raw[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Raw[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintTx(dAtA, i, uint64(len(m.Did))) + if len(m.Alias) > 0 { + i -= len(m.Alias) + copy(dAtA[i:], m.Alias) + i = encodeVarintTx(dAtA, i, uint64(len(m.Alias))) i-- - dAtA[i] = 0xa + dAtA[i] = 0x1a } - return len(dAtA) - i, nil -} - -func (m *MsgCreateAttribResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + if len(m.Verkey) > 0 { + i -= len(m.Verkey) + copy(dAtA[i:], m.Verkey) + i = encodeVarintTx(dAtA, i, uint64(len(m.Verkey))) + i-- + dAtA[i] = 0x12 } - return dAtA[:n], nil -} - -func (m *MsgCreateAttribResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateAttribResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l if len(m.Id) > 0 { i -= len(m.Id) copy(dAtA[i:], m.Id) @@ -1313,46 +1018,7 @@ func (m *MsgCreateAttribResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgUpdateAttrib) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateAttrib) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateAttrib) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Raw) > 0 { - for iNdEx := len(m.Raw) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Raw[iNdEx]) - copy(dAtA[i:], m.Raw[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Raw[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintTx(dAtA, i, uint64(len(m.Did))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateAttribResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgCreateDidResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1362,12 +1028,12 @@ func (m *MsgUpdateAttribResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateAttribResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgCreateDidResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateAttribResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgCreateDidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1382,7 +1048,7 @@ func (m *MsgUpdateAttribResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgCreateDid) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateDid) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1392,12 +1058,12 @@ func (m *MsgCreateDid) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgCreateDid) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateDid) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1426,81 +1092,7 @@ func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *MsgCreateDidResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgCreateDidResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateDidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateDid) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateDid) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Alias) > 0 { - i -= len(m.Alias) - copy(dAtA[i:], m.Alias) - i = encodeVarintTx(dAtA, i, uint64(len(m.Alias))) - i-- - dAtA[i] = 0x1a - } - if len(m.Verkey) > 0 { - i -= len(m.Verkey) - copy(dAtA[i:], m.Verkey) - i = encodeVarintTx(dAtA, i, uint64(len(m.Verkey))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateDidResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateDidResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1618,70 +1210,8 @@ func (m *MsgCreateSchema) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.AttrNames) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgCreateSchemaResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgCreateAttrib) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Did) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if len(m.Raw) > 0 { - for _, s := range m.Raw { - l = len(s) - n += 1 + l + sovTx(uint64(l)) - } - } - return n -} - -func (m *MsgCreateAttribResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgUpdateAttrib) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Did) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if len(m.Raw) > 0 { - for _, s := range m.Raw { + if len(m.AttrNames) > 0 { + for _, s := range m.AttrNames { l = len(s) n += 1 + l + sovTx(uint64(l)) } @@ -1689,7 +1219,7 @@ func (m *MsgUpdateAttrib) Size() (n int) { return n } -func (m *MsgUpdateAttribResponse) Size() (n int) { +func (m *MsgCreateSchemaResponse) Size() (n int) { if m == nil { return 0 } @@ -2404,7 +1934,7 @@ func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AttrNames = string(dAtA[iNdEx:postIndex]) + m.AttrNames = append(m.AttrNames, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -2509,398 +2039,6 @@ func (m *MsgCreateSchemaResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCreateAttrib) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateAttrib: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateAttrib: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Raw = append(m.Raw, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgCreateAttribResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateAttribResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateAttribResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateAttrib) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateAttrib: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateAttrib: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Raw = append(m.Raw, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateAttribResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateAttribResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateAttribResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 From 35dd91e48731fff3299c36eb48c6e115adcd7858 Mon Sep 17 00:00:00 2001 From: toktar Date: Sun, 26 Sep 2021 02:39:31 +0300 Subject: [PATCH 08/74] Updated proto entities fields and codebase --- .../adr-list/adr_002_identity_transactions.md | 12 +- docs/identity-api.md | 16 +- proto/cheqd/credDef.proto | 8 +- proto/cheqd/did.proto | 23 +- proto/cheqd/schema.proto | 2 +- proto/cheqd/tx.proto | 40 +- x/cheqd/client/cli/txCredDef.go | 2 +- x/cheqd/client/cli/txSchema.go | 14 +- x/cheqd/client/rest/txCredDef.go | 28 +- x/cheqd/client/rest/txSchema.go | 28 +- x/cheqd/keeper/cred_def.go | 46 +- x/cheqd/keeper/did.go | 48 +- x/cheqd/keeper/grpc_query_cred_def.go | 29 - x/cheqd/keeper/grpc_query_did.go | 29 - x/cheqd/keeper/grpc_query_schema.go | 29 - x/cheqd/keeper/msg_server_cred_def.go | 19 +- x/cheqd/keeper/msg_server_schema.go | 12 +- x/cheqd/keeper/schema.go | 35 +- x/cheqd/types/credDef.pb.go | 598 ++++++- x/cheqd/types/did.pb.go | 1302 ++++++++++++++- x/cheqd/types/keys.go | 12 +- x/cheqd/types/messages_cred_def.go | 8 +- x/cheqd/types/messages_did.go | 53 +- x/cheqd/types/messages_schema.go | 5 +- x/cheqd/types/messages_write_request.go | 10 +- x/cheqd/types/schema.pb.go | 116 +- x/cheqd/types/tx.pb.go | 1469 ++++++++++++++--- 27 files changed, 3360 insertions(+), 633 deletions(-) diff --git a/architecture/adr-list/adr_002_identity_transactions.md b/architecture/adr-list/adr_002_identity_transactions.md index 380391b58..936b63473 100644 --- a/architecture/adr-list/adr_002_identity_transactions.md +++ b/architecture/adr-list/adr_002_identity_transactions.md @@ -154,7 +154,7 @@ If a Schema evolves, a new schema with a new version or name needs to be created Dictionary with Schema's data: - * **`attr_names`**: Array of attribute name strings \(125 attributes maximum\) + * **`attrNames`**: Array of attribute name strings \(125 attributes maximum\) * **`name`**: Schema's name string * **`version`**: Schema's version string @@ -164,7 +164,7 @@ SCHEMA transaction format: { "version": "1.0", "name": "Degree", - "attr_names": ["undergrad", "last_name", "first_name", "birth_date", "postgrad", "expiry_date"] + "attrNames": ["undergrad", "last_name", "first_name", "birth_date", "postgrad", "expiry_date"] } ``` @@ -172,7 +172,7 @@ SCHEMA transaction format: #### State format -`(version, name, owner) -> {(version, name, attr_names), tx_hash, tx_timestamp }` +`(version, name, owner) -> {(version, name, attrNames), tx_hash, tx_timestamp }` ### CRED\_DEF @@ -191,7 +191,7 @@ It is not possible to update `data` in existing Credential Definitions. If a Cre Hash of a Schema transaction the credential definition is created for. -* **`signature_type` \(string\):** +* **`signatureType` \(string\):** Type of the credential definition \(that is credential signature\). `CL` \(Camenisch-Lysyanskaya\) is the only supported type now. Other signature types are being explored for future releases. @@ -203,7 +203,7 @@ CRED\_DEF transaction format: ```text { - "signature_type": "CL", + "signatureType": "CL", "schema_id": 5ZTp9g4SP6t73rH2s8zgmtqdXyT, "tag": "some_tag", "cred_def": { @@ -217,7 +217,7 @@ CRED\_DEF transaction format: #### State format -`(owner, signature_type, ref, tag) -> {(signature_type, schema_id, tag, cred_def), tx_hash, tx_timestamp }` +`(owner, signatureType, ref, tag) -> {(signatureType, schema_id, tag, cred_def), tx_hash, tx_timestamp }` ## References diff --git a/docs/identity-api.md b/docs/identity-api.md index 532742fd2..06330f596 100644 --- a/docs/identity-api.md +++ b/docs/identity-api.md @@ -300,7 +300,7 @@ CreateSchemaRequest "data": { "version": "1.0", "name": "Degree", - "attr_names": ["undergrad", "last_name", "first_name", "birth_date", "postgrad", "expiry_date"] + "attrNames": ["undergrad", "last_name", "first_name", "birth_date", "postgrad", "expiry_date"] }, "owner": "GEzcdDLhCpGCYRHW82kjHd", "signature": "49W5WP5jr7x1fZhtpAhHFbuUDqUYZ3AKht88gUjrz8TEJZr5MZUPjskpfBFdboLPZXKjbGjutoVascfKiMD5W7Ba", @@ -308,7 +308,7 @@ CreateSchemaRequest } ``` -* `attr_names`\(array\): Array of attribute name strings \(125 attributes maximum\) +* `attrNames`\(array\): Array of attribute name strings \(125 attributes maximum\) * `name`\(string\): Schema's name string * `version`\(string\): Schema's version string @@ -361,7 +361,7 @@ QueryGetSchemaResponse{ "attrib": { "version": "1.0", "name": "Degree", - "attr_names": ["undergrad", "last_name", "first_name", "birth_date", "postgrad", "expiry_date"] + "attrNames": ["undergrad", "last_name", "first_name", "birth_date", "postgrad", "expiry_date"] }, } ``` @@ -380,7 +380,7 @@ QueryGetSchemaResponse{ CreateCredDefRequest { "data": { - "signature_type": "CL", + "signatureType": "CL", "schema_id": "schema:GEzcdDLhCpGCYRHW82kjHd:Degree:1.0", "tag": "some_tag", "cred_def": { @@ -397,7 +397,7 @@ CreateCredDefRequest * `primary` \(dict\): Primary credential public key * `revocation` \(dict\): Revocation credential public key * `schema_id` \(string\): Schema's key from a state -* `signature_type` \(string\): Type of the Credential Definition \(that is credential signature\). `CL` \(Camenisch-Lysyanskaya\) is the only supported type now. +* `signatureType` \(string\): Type of the Credential Definition \(that is credential signature\). `CL` \(Camenisch-Lysyanskaya\) is the only supported type now. * `tag` \(string, optional\): A unique tag to have multiple public keys for the same Schema and type issued by the same DID. A default tag `tag` will be used if not specified. #### Response format @@ -422,7 +422,7 @@ CreateCredDefResponse { `build\_query\_get\_cred\_def\(name, version, owner\)` * `schema_id`\(string\): Schema's key from a state -* `signature_type`\(string\): Type of the Credential Definition \(that is credential signature\). CL \(Camenisch-Lysyanskaya\) is the only supported type now. +* `signatureType`\(string\): Type of the Credential Definition \(that is credential signature\). CL \(Camenisch-Lysyanskaya\) is the only supported type now. * `owner` \(string\): Credential Definition's owner DID * `tag` \(string, optional\): A unique tag to have multiple public keys for the same Schema and type issued by the same DID. A default tag `tag` will be used if not specified. @@ -439,7 +439,7 @@ Request ``` * `path`: Path for RPC endpoint for cheqd pool -* `data`: Query with an entity key from a state. String `cred_def::::` encoded to bytes +* `data`: Query with an entity key from a state. String `cred_def::::` encoded to bytes * `height`: Ledger height \(size\). `None` for auto calculation * `prove`: Boolean value. `True` for getting state proof in a pool response. @@ -448,7 +448,7 @@ Request ```text QueryGetCredDefResponse{ "cred_def": { - "signature_type": "CL", + "signatureType": "CL", "schema_id": "schema:GEzcdDLhCpGCYRHW82kjHd:Degree:1.0", "tag": "some_tag", "cred_def": { diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index a693f0de2..a1f8347c0 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -8,14 +8,14 @@ import "gogoproto/gogo.proto"; message CredDef { string id = 1; - repasted string authors = 2; + repeated string authors = 2; string schema_id = 3; string tag = 4; - string signature_type = 5; + string signatureType = 5; google.protobuf.Any value = 6; } message CredDefValue { - map[string, google.protobuf.Any] primary = 1; - optional map[string, google.protobuf.Any] revocation = 2; + map primary = 1; + map revocation = 2; //optional } diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index 88ed74957..8568470c2 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -3,27 +3,28 @@ package cheqdid.cheqdnode.cheqd; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; +import "google/protobuf/any.proto"; import "gogoproto/gogo.proto"; message Did { string id = 1; - optional repeated string controller = 2; - optional repeated VerificationMethod verificationMethod = 3; - optional repeated google.protobuf.Any authentication = 4; - optional repeated google.protobuf.Any assertionMethod = 5; - optional repeated google.protobuf.Any capabilityInvocation = 6; - optional repeated google.protobuf.Any capabilityDelegation = 7; - optional repeated google.protobuf.Any keyAgreement = 8; - optional repeated string alsoKnownAs = 9; - optional repeated DidService service = 10; + repeated string controller = 2; //optional + repeated VerificationMethod verificationMethod = 3; // optional + repeated google.protobuf.Any authentication = 4; // optional + repeated google.protobuf.Any assertionMethod = 5; // optional + repeated google.protobuf.Any capabilityInvocation = 6; // optional + repeated google.protobuf.Any capabilityDelegation = 7; // optional + repeated google.protobuf.Any keyAgreement = 8; // optional + repeated string alsoKnownAs = 9; // optional + repeated DidService service = 10; // optional } message VerificationMethod { string id = 1; string type = 2; string controller = 3; - optional map[string,string] publicKeyJwk = 3; - optional string publicKeyMultibase = 3; + map publicKeyJwk = 4; // optional + string publicKeyMultibase = 5; // optional } message DidService { diff --git a/proto/cheqd/schema.proto b/proto/cheqd/schema.proto index 2f613392d..cd3a06ad1 100644 --- a/proto/cheqd/schema.proto +++ b/proto/cheqd/schema.proto @@ -10,5 +10,5 @@ message Schema { repeated string authors = 2; string name = 3; string version = 4; - repeated string attr_names = 5; + repeated string attrNames = 5; } diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 3bfad6b6e..1e493082e 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -27,7 +27,7 @@ message MsgCreateCredDef { string id = 1; string schema_id = 2; string tag = 3; - string signature_type = 4; + string signatureType = 4; google.protobuf.Any value = 5; } @@ -39,7 +39,7 @@ message MsgCreateSchema { string id = 1; string name = 2; string version = 3; - repeated string attr_names = 4; + repeated string attrNames = 4; } message MsgCreateSchemaResponse { @@ -48,15 +48,15 @@ message MsgCreateSchemaResponse { message MsgCreateDid { string id = 1; - optional repeated string controller = 2; - optional repeated VerificationMethod verificationMethod = 3; - optional repeated google.protobuf.Any authentication = 4; - optional repeated google.protobuf.Any assertionMethod = 5; - optional repeated google.protobuf.Any capabilityInvocation = 6; - optional repeated google.protobuf.Any capabilityDelegation = 7; - optional repeated google.protobuf.Any keyAgreement = 8; - optional repeated string alsoKnownAs = 9; - optional repeated DidService service = 10; + repeated string controller = 2; + repeated VerificationMethod verificationMethod = 3; + repeated google.protobuf.Any authentication = 4; + repeated google.protobuf.Any assertionMethod = 5; + repeated google.protobuf.Any capabilityInvocation = 6; + repeated google.protobuf.Any capabilityDelegation = 7; + repeated google.protobuf.Any keyAgreement = 8; + repeated string alsoKnownAs = 9; + repeated DidService service = 10; } message MsgCreateDidResponse { @@ -65,15 +65,15 @@ message MsgCreateDidResponse { message MsgUpdateDid { string id = 1; - optional repeated string controller = 2; - optional repeated VerificationMethod verificationMethod = 3; - optional repeated google.protobuf.Any authentication = 4; - optional repeated google.protobuf.Any assertionMethod = 5; - optional repeated google.protobuf.Any capabilityInvocation = 6; - optional repeated google.protobuf.Any capabilityDelegation = 7; - optional repeated google.protobuf.Any keyAgreement = 8; - optional repeated string alsoKnownAs = 9; - optional repeated DidService service = 10; + repeated string controller = 2; + repeated VerificationMethod verificationMethod = 3; + repeated google.protobuf.Any authentication = 4; + repeated google.protobuf.Any assertionMethod = 5; + repeated google.protobuf.Any capabilityInvocation = 6; + repeated google.protobuf.Any capabilityDelegation = 7; + repeated google.protobuf.Any keyAgreement = 8; + repeated string alsoKnownAs = 9; + repeated DidService service = 10; } diff --git a/x/cheqd/client/cli/txCredDef.go b/x/cheqd/client/cli/txCredDef.go index 36e10895c..ba0017899 100644 --- a/x/cheqd/client/cli/txCredDef.go +++ b/x/cheqd/client/cli/txCredDef.go @@ -10,7 +10,7 @@ import ( func CmdCreateCredDef() *cobra.Command { cmd := &cobra.Command{ - Use: "create-credDef [schema_id] [tag] [signature_type] [value]", + Use: "create-credDef [schema_id] [tag] [signatureType] [value]", Short: "Creates a new credDef", Args: cobra.ExactArgs(4), RunE: func(cmd *cobra.Command, args []string) error { diff --git a/x/cheqd/client/cli/txSchema.go b/x/cheqd/client/cli/txSchema.go index a6af64b70..f1d15318a 100644 --- a/x/cheqd/client/cli/txSchema.go +++ b/x/cheqd/client/cli/txSchema.go @@ -12,20 +12,20 @@ import ( func CmdCreateSchema() *cobra.Command { cmd := &cobra.Command{ - Use: "create-schema [name] [version] [attr_names]", + Use: "create-schema [name] [version] [attrNames]", Short: "Creates a new schema", Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { argsName := string(args[0]) argsVersion := string(args[1]) - argsAttr_names := string(args[2]) + argsAttrNames := string(args[2]) clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - msg := types.NewMsgCreateSchema(clientCtx.GetFromAddress().String(), string(argsName), string(argsVersion), string(argsAttr_names)) + msg := types.NewMsgCreateSchema(clientCtx.GetFromAddress().String(), string(argsName), string(argsVersion), string(argsAttrNames)) if err := msg.ValidateBasic(); err != nil { return err } @@ -40,7 +40,7 @@ func CmdCreateSchema() *cobra.Command { func CmdUpdateSchema() *cobra.Command { cmd := &cobra.Command{ - Use: "update-schema [id] [name] [version] [attr_names]", + Use: "update-schema [id] [name] [version] [attrNames]", Short: "Update a schema", Args: cobra.ExactArgs(4), RunE: func(cmd *cobra.Command, args []string) error { @@ -51,14 +51,14 @@ func CmdUpdateSchema() *cobra.Command { argsName := string(args[1]) argsVersion := string(args[2]) - argsAttr_names := string(args[3]) + argsAttrNames := string(args[3]) clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - msg := types.NewMsgUpdateSchema(clientCtx.GetFromAddress().String(), id, string(argsName), string(argsVersion), string(argsAttr_names)) + msg := types.NewMsgUpdateSchema(clientCtx.GetFromAddress().String(), id, string(argsName), string(argsVersion), string(argsAttrNames)) if err := msg.ValidateBasic(); err != nil { return err } @@ -73,7 +73,7 @@ func CmdUpdateSchema() *cobra.Command { func CmdDeleteSchema() *cobra.Command { cmd := &cobra.Command{ - Use: "delete-schema [id] [name] [version] [attr_names]", + Use: "delete-schema [id] [name] [version] [attrNames]", Short: "Delete a schema by id", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { diff --git a/x/cheqd/client/rest/txCredDef.go b/x/cheqd/client/rest/txCredDef.go index 67b6c135a..eef0fed5f 100644 --- a/x/cheqd/client/rest/txCredDef.go +++ b/x/cheqd/client/rest/txCredDef.go @@ -13,12 +13,12 @@ import ( ) type createCredDefRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Schema_id string `json:"schema_id"` - Tag string `json:"tag"` - Signature_type string `json:"signature_type"` - Value string `json:"value"` + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Schema_id string `json:"schema_id"` + Tag string `json:"tag"` + SignatureType string `json:"signatureType"` + Value string `json:"value"` } func createCredDefHandler(clientCtx client.Context) http.HandlerFunc { @@ -44,7 +44,7 @@ func createCredDefHandler(clientCtx client.Context) http.HandlerFunc { parsedTag := req.Tag - parsedSignature_type := req.Signature_type + parsedSignature_type := req.SignatureType parsedValue := req.Value @@ -61,12 +61,12 @@ func createCredDefHandler(clientCtx client.Context) http.HandlerFunc { } type updateCredDefRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Schema_id string `json:"schema_id"` - Tag string `json:"tag"` - Signature_type string `json:"signature_type"` - Value string `json:"value"` + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Schema_id string `json:"schema_id"` + Tag string `json:"tag"` + SignatureType string `json:"signatureType"` + Value string `json:"value"` } func updateCredDefHandler(clientCtx client.Context) http.HandlerFunc { @@ -97,7 +97,7 @@ func updateCredDefHandler(clientCtx client.Context) http.HandlerFunc { parsedTag := req.Tag - parsedSignature_type := req.Signature_type + parsedSignature_type := req.SignatureType parsedValue := req.Value diff --git a/x/cheqd/client/rest/txSchema.go b/x/cheqd/client/rest/txSchema.go index 1ea806e22..257e25f37 100644 --- a/x/cheqd/client/rest/txSchema.go +++ b/x/cheqd/client/rest/txSchema.go @@ -13,11 +13,11 @@ import ( ) type createSchemaRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Name string `json:"name"` - Version string `json:"version"` - Attr_names string `json:"attr_names"` + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Name string `json:"name"` + Version string `json:"version"` + AttrNames string `json:"attrNames"` } func createSchemaHandler(clientCtx client.Context) http.HandlerFunc { @@ -43,13 +43,13 @@ func createSchemaHandler(clientCtx client.Context) http.HandlerFunc { parsedVersion := req.Version - parsedAttr_names := req.Attr_names + parsedAttrNames := req.AttrNames msg := types.NewMsgCreateSchema( req.Creator, parsedName, parsedVersion, - parsedAttr_names, + parsedAttrNames, ) tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) @@ -57,11 +57,11 @@ func createSchemaHandler(clientCtx client.Context) http.HandlerFunc { } type updateSchemaRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Name string `json:"name"` - Version string `json:"version"` - Attr_names string `json:"attr_names"` + BaseReq rest.BaseReq `json:"base_req"` + Creator string `json:"creator"` + Name string `json:"name"` + Version string `json:"version"` + AttrNames string `json:"attrNames"` } func updateSchemaHandler(clientCtx client.Context) http.HandlerFunc { @@ -92,14 +92,14 @@ func updateSchemaHandler(clientCtx client.Context) http.HandlerFunc { parsedVersion := req.Version - parsedAttr_names := req.Attr_names + parsedAttrNames := req.AttrNames msg := types.NewMsgUpdateSchema( req.Creator, id, parsedName, parsedVersion, - parsedAttr_names, + parsedAttrNames, ) tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 0445e5dea..f20219fce 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -40,21 +40,20 @@ func (k Keeper) SetCredDefCount(ctx sdk.Context, count uint64) { // AppendCredDef appends a credDef in the store with a new id and update the count func (k Keeper) AppendCredDef( ctx sdk.Context, - creator string, - schema_id string, + id string, + schemaId string, tag string, - signature_type string, - value string, -) uint64 { + signatureType string, + value *types.Any, +) string { // Create the credDef count := k.GetCredDefCount(ctx) var credDef = types.CredDef{ - Creator: creator, - Id: count, - Schema_id: schema_id, - Tag: tag, - Signature_type: signature_type, - Value: value, + Id: id, + SchemaId: schemaId, + Tag: tag, + SignatureType: signatureType, + Value: value, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) @@ -64,7 +63,7 @@ func (k Keeper) AppendCredDef( // Update credDef count k.SetCredDefCount(ctx, count+1) - return count + return id } // SetCredDef set a specific credDef in the store @@ -75,7 +74,7 @@ func (k Keeper) SetCredDef(ctx sdk.Context, credDef types.CredDef) { } // GetCredDef returns a credDef from its id -func (k Keeper) GetCredDef(ctx sdk.Context, id uint64) types.CredDef { +func (k Keeper) GetCredDef(ctx sdk.Context, id string) types.CredDef { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) var credDef types.CredDef k.cdc.MustUnmarshalBinaryBare(store.Get(GetCredDefIDBytes(id)), &credDef) @@ -83,18 +82,13 @@ func (k Keeper) GetCredDef(ctx sdk.Context, id uint64) types.CredDef { } // HasCredDef checks if the credDef exists in the store -func (k Keeper) HasCredDef(ctx sdk.Context, id uint64) bool { +func (k Keeper) HasCredDef(ctx sdk.Context, id string) bool { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) return store.Has(GetCredDefIDBytes(id)) } -// GetCredDefOwner returns the creator of the credDef -func (k Keeper) GetCredDefOwner(ctx sdk.Context, id uint64) string { - return k.GetCredDef(ctx, id).Creator -} - // RemoveCredDef removes a credDef from the store -func (k Keeper) RemoveCredDef(ctx sdk.Context, id uint64) { +func (k Keeper) RemoveCredDef(ctx sdk.Context, id string) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) store.Delete(GetCredDefIDBytes(id)) } @@ -116,13 +110,11 @@ func (k Keeper) GetAllCredDef(ctx sdk.Context) (list []types.CredDef) { } // GetCredDefIDBytes returns the byte representation of the ID -func GetCredDefIDBytes(id uint64) []byte { - bz := make([]byte, 8) - binary.BigEndian.PutUint64(bz, id) - return bz +func GetCredDefIDBytes(id string) []byte { + return []byte(id) } -// GetCredDefIDFromBytes returns ID in uint64 format from a byte array -func GetCredDefIDFromBytes(bz []byte) uint64 { - return binary.BigEndian.Uint64(bz) +// GetCredDefIDFromBytes returns ID in string format from a byte array +func GetCredDefIDFromBytes(bz []byte) string { + return string(bz) } diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index a46826f7b..c99f9b5a7 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -40,17 +40,30 @@ func (k Keeper) SetDidCount(ctx sdk.Context, count uint64) { // AppendDid appends a did in the store with a new id and update the count func (k Keeper) AppendDid( ctx sdk.Context, - creator string, - verkey string, - alias string, + id string, + controller []string, + verificationMethod []*VerificationMethod, + authentication []*types.Any, + assertionMethod []*types.Any, + capabilityInvocation []*types.Any, + capabilityDelegation []*types.Any, + keyAgreement []*types.Any, + alsoKnownAs []string, + service []*DidService, ) uint64 { // Create the did count := k.GetDidCount(ctx) var did = types.Did{ - Creator: creator, - Id: count, - Verkey: verkey, - Alias: alias, + Id: id, + Controller: controller, + VerificationMethod: verificationMethod, + Authentication: authentication, + AssertionMethod: assertionMethod, + CapabilityInvocation: capabilityInvocation, + CapabilityDelegation: capabilityDelegation, + KeyAgreement: keyAgreement, + AlsoKnownAs: alsoKnownAs, + Service: service, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) @@ -71,7 +84,7 @@ func (k Keeper) SetDid(ctx sdk.Context, did types.Did) { } // GetDid returns a did from its id -func (k Keeper) GetDid(ctx sdk.Context, id uint64) types.Did { +func (k Keeper) GetDid(ctx sdk.Context, id string) types.Did { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) var did types.Did k.cdc.MustUnmarshalBinaryBare(store.Get(GetDidIDBytes(id)), &did) @@ -79,18 +92,13 @@ func (k Keeper) GetDid(ctx sdk.Context, id uint64) types.Did { } // HasDid checks if the did exists in the store -func (k Keeper) HasDid(ctx sdk.Context, id uint64) bool { +func (k Keeper) HasDid(ctx sdk.Context, id string) bool { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) return store.Has(GetDidIDBytes(id)) } -// GetDidOwner returns the creator of the did -func (k Keeper) GetDidOwner(ctx sdk.Context, id uint64) string { - return k.GetDid(ctx, id).Creator -} - // RemoveDid removes a did from the store -func (k Keeper) RemoveDid(ctx sdk.Context, id uint64) { +func (k Keeper) RemoveDid(ctx sdk.Context, id string) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) store.Delete(GetDidIDBytes(id)) } @@ -112,13 +120,11 @@ func (k Keeper) GetAllDid(ctx sdk.Context) (list []types.Did) { } // GetDidIDBytes returns the byte representation of the ID -func GetDidIDBytes(id uint64) []byte { - bz := make([]byte, 8) - binary.BigEndian.PutUint64(bz, id) - return bz +func GetDidIDBytes(id string) []byte { + return []byte(id) } // GetDidIDFromBytes returns ID in uint64 format from a byte array -func GetDidIDFromBytes(bz []byte) uint64 { - return binary.BigEndian.Uint64(bz) +func GetDidIDFromBytes(bz []byte) string { + return string(bz) } diff --git a/x/cheqd/keeper/grpc_query_cred_def.go b/x/cheqd/keeper/grpc_query_cred_def.go index 06c83e20b..954bf6f79 100644 --- a/x/cheqd/keeper/grpc_query_cred_def.go +++ b/x/cheqd/keeper/grpc_query_cred_def.go @@ -7,39 +7,10 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/types/query" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) -func (k Keeper) CredDefAll(c context.Context, req *types.QueryAllCredDefRequest) (*types.QueryAllCredDefResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var credDefs []*types.CredDef - ctx := sdk.UnwrapSDKContext(c) - - store := ctx.KVStore(k.storeKey) - credDefStore := prefix.NewStore(store, types.KeyPrefix(types.CredDefKey)) - - pageRes, err := query.Paginate(credDefStore, req.Pagination, func(key []byte, value []byte) error { - var credDef types.CredDef - if err := k.cdc.UnmarshalBinaryBare(value, &credDef); err != nil { - return err - } - - credDefs = append(credDefs, &credDef) - return nil - }) - - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - return &types.QueryAllCredDefResponse{CredDef: credDefs, Pagination: pageRes}, nil -} - func (k Keeper) CredDef(c context.Context, req *types.QueryGetCredDefRequest) (*types.QueryGetCredDefResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") diff --git a/x/cheqd/keeper/grpc_query_did.go b/x/cheqd/keeper/grpc_query_did.go index cf6cdc810..35fa297c2 100644 --- a/x/cheqd/keeper/grpc_query_did.go +++ b/x/cheqd/keeper/grpc_query_did.go @@ -7,39 +7,10 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/types/query" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) -func (k Keeper) DidAll(c context.Context, req *types.QueryAllDidRequest) (*types.QueryAllDidResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var dids []*types.Did - ctx := sdk.UnwrapSDKContext(c) - - store := ctx.KVStore(k.storeKey) - didStore := prefix.NewStore(store, types.KeyPrefix(types.DidKey)) - - pageRes, err := query.Paginate(didStore, req.Pagination, func(key []byte, value []byte) error { - var did types.Did - if err := k.cdc.UnmarshalBinaryBare(value, &did); err != nil { - return err - } - - dids = append(dids, &did) - return nil - }) - - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - return &types.QueryAllDidResponse{Did: dids, Pagination: pageRes}, nil -} - func (k Keeper) Did(c context.Context, req *types.QueryGetDidRequest) (*types.QueryGetDidResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") diff --git a/x/cheqd/keeper/grpc_query_schema.go b/x/cheqd/keeper/grpc_query_schema.go index 74bfe3c13..a840b6c49 100644 --- a/x/cheqd/keeper/grpc_query_schema.go +++ b/x/cheqd/keeper/grpc_query_schema.go @@ -7,39 +7,10 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/types/query" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) -func (k Keeper) SchemaAll(c context.Context, req *types.QueryAllSchemaRequest) (*types.QueryAllSchemaResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var schemas []*types.Schema - ctx := sdk.UnwrapSDKContext(c) - - store := ctx.KVStore(k.storeKey) - schemaStore := prefix.NewStore(store, types.KeyPrefix(types.SchemaKey)) - - pageRes, err := query.Paginate(schemaStore, req.Pagination, func(key []byte, value []byte) error { - var schema types.Schema - if err := k.cdc.UnmarshalBinaryBare(value, &schema); err != nil { - return err - } - - schemas = append(schemas, &schema) - return nil - }) - - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - return &types.QueryAllSchemaResponse{Schema: schemas, Pagination: pageRes}, nil -} - func (k Keeper) Schema(c context.Context, req *types.QueryGetSchemaRequest) (*types.QueryGetSchemaResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index be4e1a008..967858254 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -11,13 +11,12 @@ import ( func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgCreateCredDef) (*types.MsgCreateCredDefResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - id := k.AppendCredDef( ctx, - msg.Creator, - msg.Schema_id, + msg.Id, + msg.SchemaId, msg.Tag, - msg.Signature_type, + msg.SignatureType, msg.Value, ) @@ -30,12 +29,12 @@ func (k msgServer) UpdateCredDef(goCtx context.Context, msg *types.MsgUpdateCred ctx := sdk.UnwrapSDKContext(goCtx) var credDef = types.CredDef{ - Creator: msg.Creator, - Id: msg.Id, - Schema_id: msg.Schema_id, - Tag: msg.Tag, - Signature_type: msg.Signature_type, - Value: msg.Value, + Creator: msg.Creator, + Id: msg.Id, + Schema_id: msg.Schema_id, + Tag: msg.Tag, + SignatureType: msg.SignatureType, + Value: msg.Value, } // Checks that the element exists diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index bc1cab5e8..556c002ba 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -17,7 +17,7 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgCreateSchem msg.Creator, msg.Name, msg.Version, - msg.Attr_names, + msg.AttrNames, ) return &types.MsgCreateSchemaResponse{ @@ -29,11 +29,11 @@ func (k msgServer) UpdateSchema(goCtx context.Context, msg *types.MsgUpdateSchem ctx := sdk.UnwrapSDKContext(goCtx) var schema = types.Schema{ - Creator: msg.Creator, - Id: msg.Id, - Name: msg.Name, - Version: msg.Version, - Attr_names: msg.Attr_names, + Creator: msg.Creator, + Id: msg.Id, + Name: msg.Name, + Version: msg.Version, + AttrNames: msg.AttrNames, } // Checks that the element exists diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index d486a790a..2f910f904 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -1,7 +1,6 @@ package keeper import ( - "encoding/binary" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" @@ -40,19 +39,18 @@ func (k Keeper) SetSchemaCount(ctx sdk.Context, count uint64) { // AppendSchema appends a schema in the store with a new id and update the count func (k Keeper) AppendSchema( ctx sdk.Context, - creator string, + id string, name string, version string, - attr_names string, + attrNames []string, ) uint64 { // Create the schema count := k.GetSchemaCount(ctx) var schema = types.Schema{ - Creator: creator, - Id: count, - Name: name, - Version: version, - Attr_names: attr_names, + Id: id, + Name: name, + Version: version, + AttrNames: attrNames, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) @@ -73,7 +71,7 @@ func (k Keeper) SetSchema(ctx sdk.Context, schema types.Schema) { } // GetSchema returns a schema from its id -func (k Keeper) GetSchema(ctx sdk.Context, id uint64) types.Schema { +func (k Keeper) GetSchema(ctx sdk.Context, id string) types.Schema { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) var schema types.Schema k.cdc.MustUnmarshalBinaryBare(store.Get(GetSchemaIDBytes(id)), &schema) @@ -81,18 +79,13 @@ func (k Keeper) GetSchema(ctx sdk.Context, id uint64) types.Schema { } // HasSchema checks if the schema exists in the store -func (k Keeper) HasSchema(ctx sdk.Context, id uint64) bool { +func (k Keeper) HasSchema(ctx sdk.Context, id string) bool { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) return store.Has(GetSchemaIDBytes(id)) } -// GetSchemaOwner returns the creator of the schema -func (k Keeper) GetSchemaOwner(ctx sdk.Context, id uint64) string { - return k.GetSchema(ctx, id).Creator -} - // RemoveSchema removes a schema from the store -func (k Keeper) RemoveSchema(ctx sdk.Context, id uint64) { +func (k Keeper) RemoveSchema(ctx sdk.Context, id string) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) store.Delete(GetSchemaIDBytes(id)) } @@ -114,13 +107,11 @@ func (k Keeper) GetAllSchema(ctx sdk.Context) (list []types.Schema) { } // GetSchemaIDBytes returns the byte representation of the ID -func GetSchemaIDBytes(id uint64) []byte { - bz := make([]byte, 8) - binary.BigEndian.PutUint64(bz, id) - return bz +func GetSchemaIDBytes(id string) []byte { + return []byte(id) } // GetSchemaIDFromBytes returns ID in uint64 format from a byte array -func GetSchemaIDFromBytes(bz []byte) uint64 { - return binary.BigEndian.Uint64(bz) +func GetSchemaIDFromBytes(bz []byte) string { + return string(bz) } diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index 1232f0187..ef9c1255e 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -5,6 +5,7 @@ package types import ( fmt "fmt" + types "github.com/cosmos/cosmos-sdk/codec/types" _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" io "io" @@ -24,12 +25,12 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type CredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` - SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,5,opt,name=signature_type,json=signatureType,proto3" json:"signature_type,omitempty"` - Value string `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` + SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,5,opt,name=signatureType,json=signatureType,proto3" json:"signatureType,omitempty"` + Value *types.Any `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` } func (m *CredDef) Reset() { *m = CredDef{} } @@ -72,11 +73,11 @@ func (m *CredDef) GetId() string { return "" } -func (m *CredDef) GetAuthor() string { +func (m *CredDef) GetAuthors() []string { if m != nil { - return m.Author + return m.Authors } - return "" + return nil } func (m *CredDef) GetSchemaId() string { @@ -100,37 +101,101 @@ func (m *CredDef) GetSignatureType() string { return "" } -func (m *CredDef) GetValue() string { +func (m *CredDef) GetValue() *types.Any { if m != nil { return m.Value } - return "" + return nil +} + +type CredDefValue struct { + Primary map[string]*types.Any `protobuf:"bytes,1,rep,name=primary,proto3" json:"primary,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Revocation map[string]*types.Any `protobuf:"bytes,2,rep,name=revocation,proto3" json:"revocation,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (m *CredDefValue) Reset() { *m = CredDefValue{} } +func (m *CredDefValue) String() string { return proto.CompactTextString(m) } +func (*CredDefValue) ProtoMessage() {} +func (*CredDefValue) Descriptor() ([]byte, []int) { + return fileDescriptor_bc069326307a6009, []int{1} +} +func (m *CredDefValue) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CredDefValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CredDefValue.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CredDefValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_CredDefValue.Merge(m, src) +} +func (m *CredDefValue) XXX_Size() int { + return m.Size() +} +func (m *CredDefValue) XXX_DiscardUnknown() { + xxx_messageInfo_CredDefValue.DiscardUnknown(m) +} + +var xxx_messageInfo_CredDefValue proto.InternalMessageInfo + +func (m *CredDefValue) GetPrimary() map[string]*types.Any { + if m != nil { + return m.Primary + } + return nil +} + +func (m *CredDefValue) GetRevocation() map[string]*types.Any { + if m != nil { + return m.Revocation + } + return nil } func init() { proto.RegisterType((*CredDef)(nil), "cheqdid.cheqdnode.cheqd.CredDef") + proto.RegisterType((*CredDefValue)(nil), "cheqdid.cheqdnode.cheqd.CredDefValue") + proto.RegisterMapType((map[string]*types.Any)(nil), "cheqdid.cheqdnode.cheqd.CredDefValue.PrimaryEntry") + proto.RegisterMapType((map[string]*types.Any)(nil), "cheqdid.cheqdnode.cheqd.CredDefValue.RevocationEntry") } func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } var fileDescriptor_bc069326307a6009 = []byte{ - // 250 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0xce, 0x48, 0x2d, - 0x4c, 0xd1, 0x4f, 0x2e, 0x4a, 0x4d, 0x71, 0x49, 0x4d, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, - 0x12, 0x07, 0x0b, 0x66, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, - 0x3d, 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0x9a, 0xcb, 0xc8, 0xc5, 0xee, - 0x0c, 0x31, 0x40, 0x88, 0x8f, 0x8b, 0x29, 0x33, 0x45, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x88, - 0x29, 0x33, 0x45, 0x48, 0x8c, 0x8b, 0x2d, 0xb1, 0xb4, 0x24, 0x23, 0xbf, 0x48, 0x82, 0x09, 0x2c, - 0x06, 0xe5, 0x09, 0x49, 0x73, 0x71, 0x16, 0x27, 0x67, 0xa4, 0xe6, 0x26, 0xc6, 0x67, 0xa6, 0x48, - 0x30, 0x83, 0xa5, 0x38, 0x20, 0x02, 0x9e, 0x29, 0x42, 0x02, 0x5c, 0xcc, 0x25, 0x89, 0xe9, 0x12, - 0x2c, 0x60, 0x61, 0x10, 0x53, 0x48, 0x95, 0x8b, 0xaf, 0x38, 0x33, 0x3d, 0x2f, 0xb1, 0xa4, 0xb4, - 0x28, 0x35, 0xbe, 0xa4, 0xb2, 0x20, 0x55, 0x82, 0x15, 0x2c, 0xc9, 0x0b, 0x17, 0x0d, 0xa9, 0x2c, - 0x48, 0x15, 0x12, 0xe1, 0x62, 0x2d, 0x4b, 0xcc, 0x29, 0x4d, 0x95, 0x60, 0x03, 0xcb, 0x42, 0x38, - 0x4e, 0xce, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, - 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x99, 0x9e, 0x59, - 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0x0d, 0x08, 0x10, 0xa9, 0x0b, 0xf2, 0xb2, - 0x7e, 0x05, 0x54, 0x08, 0x64, 0x5d, 0x71, 0x12, 0x1b, 0xd8, 0xaf, 0xc6, 0x80, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x4f, 0x63, 0xff, 0x3e, 0x31, 0x01, 0x00, 0x00, + // 397 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x52, 0x5f, 0xab, 0xd3, 0x30, + 0x1c, 0x5d, 0x5a, 0xef, 0x9d, 0xcb, 0xae, 0x57, 0x89, 0x17, 0x8c, 0x15, 0x4a, 0xb9, 0x20, 0x54, + 0xc1, 0x14, 0x2a, 0x82, 0xf8, 0xa6, 0xd3, 0x07, 0xc1, 0x87, 0x51, 0xff, 0x3c, 0xf8, 0x32, 0xb2, + 0x26, 0x6b, 0x83, 0x5b, 0x53, 0xd3, 0x74, 0xd8, 0x6f, 0xe1, 0x97, 0xf1, 0x3b, 0xf8, 0xb8, 0x47, + 0xf1, 0x49, 0xb6, 0x2f, 0x22, 0x49, 0xba, 0x39, 0x04, 0x51, 0xf0, 0xa5, 0x3d, 0x39, 0xf9, 0x9d, + 0xf3, 0xcb, 0xef, 0x24, 0xf0, 0x66, 0x5e, 0xf2, 0x8f, 0x2c, 0xc9, 0x15, 0x67, 0xcf, 0xf9, 0x82, + 0xd4, 0x4a, 0x6a, 0x89, 0x6e, 0x59, 0x52, 0x30, 0x62, 0xff, 0x95, 0x64, 0xdc, 0xa1, 0xe0, 0x76, + 0x21, 0x65, 0xb1, 0xe4, 0x89, 0x2d, 0x9b, 0xb7, 0x8b, 0x84, 0x56, 0x9d, 0xd3, 0x04, 0x17, 0x85, + 0x2c, 0xa4, 0x85, 0x89, 0x41, 0x8e, 0xbd, 0xfc, 0x02, 0xe0, 0x70, 0xe2, 0xbc, 0xd1, 0x39, 0xf4, + 0x04, 0xc3, 0x20, 0x02, 0xf1, 0x28, 0xf3, 0x04, 0x43, 0x18, 0x0e, 0x69, 0xab, 0x4b, 0xa9, 0x1a, + 0xec, 0x45, 0x7e, 0x3c, 0xca, 0xf6, 0x4b, 0x74, 0x07, 0x8e, 0x9a, 0xbc, 0xe4, 0x2b, 0x3a, 0x13, + 0x0c, 0xfb, 0x56, 0x70, 0xd5, 0x11, 0x2f, 0x19, 0xba, 0x01, 0x7d, 0x4d, 0x0b, 0x7c, 0xc5, 0xd2, + 0x06, 0xa2, 0xbb, 0xf0, 0xbc, 0x11, 0x45, 0x45, 0x75, 0xab, 0xf8, 0x4c, 0x77, 0x35, 0xc7, 0x27, + 0x76, 0xf3, 0xda, 0x81, 0x7d, 0xd3, 0xd5, 0x1c, 0xdd, 0x87, 0x27, 0x6b, 0xba, 0x6c, 0x39, 0x3e, + 0x8d, 0x40, 0x3c, 0x4e, 0x2f, 0x88, 0x1b, 0x86, 0xec, 0x87, 0x21, 0x4f, 0xab, 0x2e, 0x73, 0x25, + 0x97, 0xdf, 0x3d, 0x78, 0xd6, 0x9f, 0xfb, 0x9d, 0x21, 0xd0, 0x2b, 0x38, 0xac, 0x95, 0x58, 0x51, + 0xd5, 0x61, 0x10, 0xf9, 0xf1, 0x38, 0x4d, 0xc9, 0x1f, 0x42, 0x22, 0xc7, 0x3a, 0x32, 0x75, 0xa2, + 0x17, 0x95, 0x56, 0x5d, 0xb6, 0xb7, 0x40, 0x6f, 0x21, 0x54, 0x7c, 0x2d, 0x73, 0xaa, 0x85, 0xac, + 0xec, 0xf4, 0xe3, 0xf4, 0xd1, 0xbf, 0x19, 0x66, 0x07, 0x9d, 0xf3, 0x3c, 0x32, 0x0a, 0xa6, 0xf0, + 0xec, 0xb8, 0x9f, 0x89, 0xea, 0x03, 0xef, 0xfa, 0xc8, 0x0d, 0xfc, 0x95, 0x81, 0xf7, 0xd7, 0x0c, + 0x9e, 0x78, 0x8f, 0x41, 0xf0, 0x1a, 0x5e, 0xff, 0xad, 0xe1, 0xff, 0x9b, 0x3e, 0x9b, 0x7c, 0xdd, + 0x86, 0x60, 0xb3, 0x0d, 0xc1, 0x8f, 0x6d, 0x08, 0x3e, 0xef, 0xc2, 0xc1, 0x66, 0x17, 0x0e, 0xbe, + 0xed, 0xc2, 0xc1, 0xfb, 0x7b, 0x85, 0xd0, 0x65, 0x3b, 0x27, 0xb9, 0x5c, 0x25, 0xfd, 0xc3, 0x34, + 0xdf, 0x07, 0x26, 0x8c, 0xe4, 0x53, 0x4f, 0x99, 0x1b, 0x6e, 0xe6, 0xa7, 0xd6, 0xfd, 0xe1, 0xcf, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x02, 0xc5, 0x0a, 0xc1, 0x02, 0x00, 0x00, } func (m *CredDef) Marshal() (dAtA []byte, err error) { @@ -153,10 +218,15 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Value) > 0 { - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.Value))) + if m.Value != nil { + { + size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCredDef(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x32 } @@ -181,12 +251,14 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if len(m.Author) > 0 { - i -= len(m.Author) - copy(dAtA[i:], m.Author) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.Author))) - i-- - dAtA[i] = 0x12 + if len(m.Authors) > 0 { + for iNdEx := len(m.Authors) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Authors[iNdEx]) + copy(dAtA[i:], m.Authors[iNdEx]) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.Authors[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Id) > 0 { i -= len(m.Id) @@ -198,6 +270,81 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *CredDefValue) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CredDefValue) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CredDefValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Revocation) > 0 { + for k := range m.Revocation { + v := m.Revocation[k] + baseI := i + if v != nil { + { + size, err := v.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCredDef(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintCredDef(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintCredDef(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Primary) > 0 { + for k := range m.Primary { + v := m.Primary[k] + baseI := i + if v != nil { + { + size, err := v.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCredDef(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintCredDef(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintCredDef(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintCredDef(dAtA []byte, offset int, v uint64) int { offset -= sovCredDef(v) base := offset @@ -219,9 +366,11 @@ func (m *CredDef) Size() (n int) { if l > 0 { n += 1 + l + sovCredDef(uint64(l)) } - l = len(m.Author) - if l > 0 { - n += 1 + l + sovCredDef(uint64(l)) + if len(m.Authors) > 0 { + for _, s := range m.Authors { + l = len(s) + n += 1 + l + sovCredDef(uint64(l)) + } } l = len(m.SchemaId) if l > 0 { @@ -235,13 +384,48 @@ func (m *CredDef) Size() (n int) { if l > 0 { n += 1 + l + sovCredDef(uint64(l)) } - l = len(m.Value) - if l > 0 { + if m.Value != nil { + l = m.Value.Size() n += 1 + l + sovCredDef(uint64(l)) } return n } +func (m *CredDefValue) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Primary) > 0 { + for k, v := range m.Primary { + _ = k + _ = v + l = 0 + if v != nil { + l = v.Size() + l += 1 + sovCredDef(uint64(l)) + } + mapEntrySize := 1 + len(k) + sovCredDef(uint64(len(k))) + l + n += mapEntrySize + 1 + sovCredDef(uint64(mapEntrySize)) + } + } + if len(m.Revocation) > 0 { + for k, v := range m.Revocation { + _ = k + _ = v + l = 0 + if v != nil { + l = v.Size() + l += 1 + sovCredDef(uint64(l)) + } + mapEntrySize := 1 + len(k) + sovCredDef(uint64(len(k))) + l + n += mapEntrySize + 1 + sovCredDef(uint64(mapEntrySize)) + } + } + return n +} + func sovCredDef(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -311,7 +495,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Author", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Authors", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -339,7 +523,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Author = string(dAtA[iNdEx:postIndex]) + m.Authors = append(m.Authors, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 3: if wireType != 2 { @@ -441,7 +625,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowCredDef @@ -451,23 +635,335 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthCredDef } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthCredDef } if postIndex > l { return io.ErrUnexpectedEOF } - m.Value = string(dAtA[iNdEx:postIndex]) + if m.Value == nil { + m.Value = &types.Any{} + } + if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCredDef(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCredDef + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CredDefValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CredDefValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CredDefValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Primary", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Primary == nil { + m.Primary = make(map[string]*types.Any) + } + var mapkey string + var mapvalue *types.Any + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthCredDef + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthCredDef + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthCredDef + } + postmsgIndex := iNdEx + mapmsglen + if postmsgIndex < 0 { + return ErrInvalidLengthCredDef + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue = &types.Any{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + } else { + iNdEx = entryPreIndex + skippy, err := skipCredDef(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCredDef + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Primary[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Revocation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Revocation == nil { + m.Revocation = make(map[string]*types.Any) + } + var mapkey string + var mapvalue *types.Any + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthCredDef + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthCredDef + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthCredDef + } + postmsgIndex := iNdEx + mapmsglen + if postmsgIndex < 0 { + return ErrInvalidLengthCredDef + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue = &types.Any{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + } else { + iNdEx = entryPreIndex + skippy, err := skipCredDef(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCredDef + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Revocation[mapkey] = mapvalue iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/cheqd/types/did.pb.go b/x/cheqd/types/did.pb.go index f0cb5d518..4f0f1f305 100644 --- a/x/cheqd/types/did.pb.go +++ b/x/cheqd/types/did.pb.go @@ -5,6 +5,7 @@ package types import ( fmt "fmt" + types "github.com/cosmos/cosmos-sdk/codec/types" _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" io "io" @@ -24,9 +25,16 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Did struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Verkey string `protobuf:"bytes,2,opt,name=verkey,proto3" json:"verkey,omitempty"` - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` + VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` + Authentication []*types.Any `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` + AssertionMethod []*types.Any `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` + CapabilityInvocation []*types.Any `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` + CapabilityDelegation []*types.Any `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` + KeyAgreement []*types.Any `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` + AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` + Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` } func (m *Did) Reset() { *m = Did{} } @@ -69,40 +77,249 @@ func (m *Did) GetId() string { return "" } -func (m *Did) GetVerkey() string { +func (m *Did) GetController() []string { if m != nil { - return m.Verkey + return m.Controller + } + return nil +} + +func (m *Did) GetVerificationMethod() []*VerificationMethod { + if m != nil { + return m.VerificationMethod + } + return nil +} + +func (m *Did) GetAuthentication() []*types.Any { + if m != nil { + return m.Authentication + } + return nil +} + +func (m *Did) GetAssertionMethod() []*types.Any { + if m != nil { + return m.AssertionMethod + } + return nil +} + +func (m *Did) GetCapabilityInvocation() []*types.Any { + if m != nil { + return m.CapabilityInvocation + } + return nil +} + +func (m *Did) GetCapabilityDelegation() []*types.Any { + if m != nil { + return m.CapabilityDelegation + } + return nil +} + +func (m *Did) GetKeyAgreement() []*types.Any { + if m != nil { + return m.KeyAgreement + } + return nil +} + +func (m *Did) GetAlsoKnownAs() []string { + if m != nil { + return m.AlsoKnownAs + } + return nil +} + +func (m *Did) GetService() []*DidService { + if m != nil { + return m.Service + } + return nil +} + +type VerificationMethod struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` + PublicKeyJwk map[string]string `protobuf:"bytes,4,rep,name=publicKeyJwk,proto3" json:"publicKeyJwk,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PublicKeyMultibase string `protobuf:"bytes,5,opt,name=publicKeyMultibase,proto3" json:"publicKeyMultibase,omitempty"` +} + +func (m *VerificationMethod) Reset() { *m = VerificationMethod{} } +func (m *VerificationMethod) String() string { return proto.CompactTextString(m) } +func (*VerificationMethod) ProtoMessage() {} +func (*VerificationMethod) Descriptor() ([]byte, []int) { + return fileDescriptor_382ab0c0f6b6850e, []int{1} +} +func (m *VerificationMethod) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *VerificationMethod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_VerificationMethod.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *VerificationMethod) XXX_Merge(src proto.Message) { + xxx_messageInfo_VerificationMethod.Merge(m, src) +} +func (m *VerificationMethod) XXX_Size() int { + return m.Size() +} +func (m *VerificationMethod) XXX_DiscardUnknown() { + xxx_messageInfo_VerificationMethod.DiscardUnknown(m) +} + +var xxx_messageInfo_VerificationMethod proto.InternalMessageInfo + +func (m *VerificationMethod) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *VerificationMethod) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *VerificationMethod) GetController() string { + if m != nil { + return m.Controller + } + return "" +} + +func (m *VerificationMethod) GetPublicKeyJwk() map[string]string { + if m != nil { + return m.PublicKeyJwk + } + return nil +} + +func (m *VerificationMethod) GetPublicKeyMultibase() string { + if m != nil { + return m.PublicKeyMultibase + } + return "" +} + +type DidService struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + ServiceEndpoint string `protobuf:"bytes,3,opt,name=serviceEndpoint,proto3" json:"serviceEndpoint,omitempty"` +} + +func (m *DidService) Reset() { *m = DidService{} } +func (m *DidService) String() string { return proto.CompactTextString(m) } +func (*DidService) ProtoMessage() {} +func (*DidService) Descriptor() ([]byte, []int) { + return fileDescriptor_382ab0c0f6b6850e, []int{2} +} +func (m *DidService) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DidService) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DidService.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DidService) XXX_Merge(src proto.Message) { + xxx_messageInfo_DidService.Merge(m, src) +} +func (m *DidService) XXX_Size() int { + return m.Size() +} +func (m *DidService) XXX_DiscardUnknown() { + xxx_messageInfo_DidService.DiscardUnknown(m) +} + +var xxx_messageInfo_DidService proto.InternalMessageInfo + +func (m *DidService) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *DidService) GetType() string { + if m != nil { + return m.Type } return "" } -func (m *Did) GetAlias() string { +func (m *DidService) GetServiceEndpoint() string { if m != nil { - return m.Alias + return m.ServiceEndpoint } return "" } func init() { proto.RegisterType((*Did)(nil), "cheqdid.cheqdnode.cheqd.Did") + proto.RegisterType((*VerificationMethod)(nil), "cheqdid.cheqdnode.cheqd.VerificationMethod") + proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.VerificationMethod.PublicKeyJwkEntry") + proto.RegisterType((*DidService)(nil), "cheqdid.cheqdnode.cheqd.DidService") } func init() { proto.RegisterFile("cheqd/did.proto", fileDescriptor_382ab0c0f6b6850e) } var fileDescriptor_382ab0c0f6b6850e = []byte{ - // 183 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4f, 0xce, 0x48, 0x2d, - 0x4c, 0xd1, 0x4f, 0xc9, 0x4c, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x0b, 0x64, - 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, 0x3f, 0x3d, 0x1f, - 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0x72, 0xe6, 0x62, 0x76, 0xc9, 0x4c, 0x11, 0xe2, 0xe3, - 0x62, 0xca, 0x4c, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x62, 0xca, 0x4c, 0x11, 0x12, 0xe3, - 0x62, 0x2b, 0x4b, 0x2d, 0xca, 0x4e, 0xad, 0x94, 0x60, 0x02, 0x8b, 0x41, 0x79, 0x42, 0x22, 0x5c, - 0xac, 0x89, 0x39, 0x99, 0x89, 0xc5, 0x12, 0xcc, 0x60, 0x61, 0x08, 0xc7, 0xc9, 0xf9, 0xc4, 0x23, - 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, - 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x34, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, - 0x92, 0xf3, 0x73, 0xf5, 0x21, 0x2e, 0x05, 0x93, 0xba, 0x20, 0x77, 0xe9, 0x57, 0x40, 0x85, 0x4a, - 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x0e, 0x32, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xcd, - 0x53, 0x4c, 0xd3, 0xd2, 0x00, 0x00, 0x00, + // 514 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xcb, 0x6e, 0xd3, 0x40, + 0x14, 0x8d, 0xed, 0xa4, 0x25, 0xb7, 0x55, 0x03, 0xa3, 0x48, 0x98, 0x2c, 0xac, 0x28, 0x6c, 0x82, + 0x10, 0xb6, 0x04, 0x9b, 0x0a, 0x51, 0x50, 0x20, 0x95, 0x80, 0xaa, 0x12, 0x32, 0x12, 0x8b, 0xb2, + 0x1a, 0x7b, 0x6e, 0x9d, 0x51, 0xdc, 0x99, 0x60, 0x8f, 0x53, 0xfc, 0x17, 0x7c, 0x08, 0xff, 0xc0, + 0x96, 0x65, 0x97, 0x2c, 0x51, 0xf2, 0x23, 0x28, 0x63, 0x87, 0xe6, 0xd5, 0xa8, 0xdd, 0xd8, 0x77, + 0xce, 0xdc, 0x73, 0x7c, 0x1f, 0x47, 0x86, 0x46, 0x38, 0xc0, 0x6f, 0xcc, 0x63, 0x9c, 0xb9, 0xa3, + 0x44, 0x2a, 0x49, 0x1e, 0x6a, 0x80, 0x33, 0x57, 0xbf, 0x85, 0x64, 0x58, 0x44, 0xad, 0x47, 0x91, + 0x94, 0x51, 0x8c, 0x9e, 0x4e, 0x0b, 0xb2, 0x73, 0x8f, 0x8a, 0xbc, 0xe0, 0xb4, 0x9a, 0x91, 0x8c, + 0xa4, 0x0e, 0xbd, 0x59, 0x54, 0xa0, 0x9d, 0x5f, 0x55, 0xb0, 0xfa, 0x9c, 0x91, 0x03, 0x30, 0x39, + 0xb3, 0x8d, 0xb6, 0xd1, 0xad, 0xfb, 0x26, 0x67, 0xc4, 0x01, 0x08, 0xa5, 0x50, 0x89, 0x8c, 0x63, + 0x4c, 0x6c, 0xb3, 0x6d, 0x75, 0xeb, 0xfe, 0x02, 0x42, 0xbe, 0x02, 0x19, 0x63, 0xc2, 0xcf, 0x79, + 0x48, 0x15, 0x97, 0xe2, 0x14, 0xd5, 0x40, 0x32, 0xdb, 0x6a, 0x5b, 0xdd, 0xbd, 0xe7, 0x4f, 0xdd, + 0x1b, 0xca, 0x73, 0xbf, 0xac, 0x51, 0xfc, 0x0d, 0x32, 0xe4, 0x15, 0x1c, 0xd0, 0x4c, 0x0d, 0x50, + 0xa8, 0x12, 0xb7, 0xab, 0x5a, 0xb8, 0xe9, 0x16, 0xed, 0xb9, 0xf3, 0xf6, 0xdc, 0x9e, 0xc8, 0xfd, + 0x95, 0x5c, 0xf2, 0x1a, 0x1a, 0x34, 0x4d, 0x31, 0x59, 0xa8, 0xab, 0xb6, 0x85, 0xbe, 0x9a, 0x4c, + 0xde, 0x43, 0x33, 0xa4, 0x23, 0x1a, 0xf0, 0x98, 0xab, 0xfc, 0x83, 0x18, 0xcb, 0xb2, 0x86, 0x9d, + 0x2d, 0x22, 0x1b, 0x19, 0xcb, 0x4a, 0x7d, 0x8c, 0x31, 0x2a, 0x94, 0x76, 0x6f, 0xa7, 0x74, 0xcd, + 0x20, 0x87, 0xb0, 0x3f, 0xc4, 0xbc, 0x17, 0x25, 0x88, 0x17, 0x28, 0x94, 0x7d, 0x6f, 0x8b, 0xc2, + 0x52, 0x26, 0x69, 0xc3, 0x1e, 0x8d, 0x53, 0x79, 0x22, 0xe4, 0xa5, 0xe8, 0xa5, 0x76, 0x5d, 0x6f, + 0x72, 0x11, 0x22, 0x47, 0xb0, 0x9b, 0x62, 0x32, 0xe6, 0x21, 0xda, 0xa0, 0x65, 0x1f, 0xdf, 0xb8, + 0xbf, 0x3e, 0x67, 0x9f, 0x8b, 0x54, 0x7f, 0xce, 0xe9, 0xfc, 0x34, 0x81, 0xac, 0xef, 0x75, 0xcd, + 0x50, 0x04, 0xaa, 0x2a, 0x1f, 0xa1, 0x6d, 0x6a, 0x44, 0xc7, 0x2b, 0x26, 0xb3, 0xf4, 0xcd, 0xa2, + 0xc9, 0x28, 0xec, 0x8f, 0xb2, 0x20, 0xe6, 0xe1, 0x09, 0xe6, 0x1f, 0x2f, 0x87, 0xa5, 0x0b, 0x8e, + 0xee, 0x60, 0x2f, 0xf7, 0xd3, 0x02, 0xff, 0x58, 0xa8, 0x24, 0xf7, 0x97, 0x24, 0x89, 0x0b, 0xe4, + 0xff, 0xf9, 0x34, 0x8b, 0x15, 0x0f, 0x68, 0x8a, 0x76, 0x4d, 0x97, 0xb2, 0xe1, 0xa6, 0xf5, 0x06, + 0x1e, 0xac, 0x49, 0x92, 0xfb, 0x60, 0x0d, 0x31, 0x2f, 0x9b, 0x9d, 0x85, 0xa4, 0x09, 0xb5, 0x31, + 0x8d, 0xb3, 0x79, 0xbb, 0xc5, 0xe1, 0xa5, 0x79, 0x68, 0x74, 0xce, 0x00, 0xae, 0xa7, 0x78, 0xab, + 0x29, 0x75, 0xa1, 0x51, 0xce, 0xfa, 0x58, 0xb0, 0x91, 0xe4, 0x42, 0x95, 0xa3, 0x5a, 0x85, 0xdf, + 0xbe, 0xfb, 0x3d, 0x71, 0x8c, 0xab, 0x89, 0x63, 0xfc, 0x9d, 0x38, 0xc6, 0x8f, 0xa9, 0x53, 0xb9, + 0x9a, 0x3a, 0x95, 0x3f, 0x53, 0xa7, 0x72, 0xf6, 0x24, 0xe2, 0x6a, 0x90, 0x05, 0x6e, 0x28, 0x2f, + 0xbc, 0xe2, 0x67, 0xa2, 0x9f, 0xcf, 0x66, 0xc3, 0xf3, 0xbe, 0x97, 0xd0, 0xec, 0x6b, 0x69, 0xb0, + 0xa3, 0xcd, 0xf4, 0xe2, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0x55, 0x26, 0x7e, 0x75, 0x04, + 0x00, 0x00, } func (m *Did) Marshal() (dAtA []byte, err error) { @@ -125,17 +342,233 @@ func (m *Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Alias) > 0 { - i -= len(m.Alias) - copy(dAtA[i:], m.Alias) - i = encodeVarintDid(dAtA, i, uint64(len(m.Alias))) + if len(m.Service) > 0 { + for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Service[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.AlsoKnownAs) > 0 { + for iNdEx := len(m.AlsoKnownAs) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AlsoKnownAs[iNdEx]) + copy(dAtA[i:], m.AlsoKnownAs[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.AlsoKnownAs[iNdEx]))) + i-- + dAtA[i] = 0x4a + } + } + if len(m.KeyAgreement) > 0 { + for iNdEx := len(m.KeyAgreement) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.KeyAgreement[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.CapabilityDelegation) > 0 { + for iNdEx := len(m.CapabilityDelegation) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CapabilityDelegation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.CapabilityInvocation) > 0 { + for iNdEx := len(m.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CapabilityInvocation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.AssertionMethod) > 0 { + for iNdEx := len(m.AssertionMethod) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssertionMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.Authentication) > 0 { + for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Authentication[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.VerificationMethod) > 0 { + for iNdEx := len(m.VerificationMethod) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VerificationMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.Controller) > 0 { + for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Controller[iNdEx]) + copy(dAtA[i:], m.Controller[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.Controller[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintDid(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *VerificationMethod) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VerificationMethod) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *VerificationMethod) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PublicKeyMultibase) > 0 { + i -= len(m.PublicKeyMultibase) + copy(dAtA[i:], m.PublicKeyMultibase) + i = encodeVarintDid(dAtA, i, uint64(len(m.PublicKeyMultibase))) + i-- + dAtA[i] = 0x2a + } + if len(m.PublicKeyJwk) > 0 { + for k := range m.PublicKeyJwk { + v := m.PublicKeyJwk[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintDid(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintDid(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintDid(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x22 + } + } + if len(m.Controller) > 0 { + i -= len(m.Controller) + copy(dAtA[i:], m.Controller) + i = encodeVarintDid(dAtA, i, uint64(len(m.Controller))) + i-- + dAtA[i] = 0x1a + } + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintDid(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintDid(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DidService) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DidService) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DidService) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ServiceEndpoint) > 0 { + i -= len(m.ServiceEndpoint) + copy(dAtA[i:], m.ServiceEndpoint) + i = encodeVarintDid(dAtA, i, uint64(len(m.ServiceEndpoint))) i-- dAtA[i] = 0x1a } - if len(m.Verkey) > 0 { - i -= len(m.Verkey) - copy(dAtA[i:], m.Verkey) - i = encodeVarintDid(dAtA, i, uint64(len(m.Verkey))) + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintDid(dAtA, i, uint64(len(m.Type))) i-- dAtA[i] = 0x12 } @@ -170,23 +603,123 @@ func (m *Did) Size() (n int) { if l > 0 { n += 1 + l + sovDid(uint64(l)) } - l = len(m.Verkey) + if len(m.Controller) > 0 { + for _, s := range m.Controller { + l = len(s) + n += 1 + l + sovDid(uint64(l)) + } + } + if len(m.VerificationMethod) > 0 { + for _, e := range m.VerificationMethod { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) + } + } + if len(m.Authentication) > 0 { + for _, e := range m.Authentication { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) + } + } + if len(m.AssertionMethod) > 0 { + for _, e := range m.AssertionMethod { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) + } + } + if len(m.CapabilityInvocation) > 0 { + for _, e := range m.CapabilityInvocation { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) + } + } + if len(m.CapabilityDelegation) > 0 { + for _, e := range m.CapabilityDelegation { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) + } + } + if len(m.KeyAgreement) > 0 { + for _, e := range m.KeyAgreement { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) + } + } + if len(m.AlsoKnownAs) > 0 { + for _, s := range m.AlsoKnownAs { + l = len(s) + n += 1 + l + sovDid(uint64(l)) + } + } + if len(m.Service) > 0 { + for _, e := range m.Service { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) + } + } + return n +} + +func (m *VerificationMethod) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovDid(uint64(l)) + } + l = len(m.Type) + if l > 0 { + n += 1 + l + sovDid(uint64(l)) + } + l = len(m.Controller) if l > 0 { n += 1 + l + sovDid(uint64(l)) } - l = len(m.Alias) + if len(m.PublicKeyJwk) > 0 { + for k, v := range m.PublicKeyJwk { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovDid(uint64(len(k))) + 1 + len(v) + sovDid(uint64(len(v))) + n += mapEntrySize + 1 + sovDid(uint64(mapEntrySize)) + } + } + l = len(m.PublicKeyMultibase) if l > 0 { n += 1 + l + sovDid(uint64(l)) } return n } -func sovDid(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozDid(x uint64) (n int) { - return sovDid(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} +func (m *DidService) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovDid(uint64(l)) + } + l = len(m.Type) + if l > 0 { + n += 1 + l + sovDid(uint64(l)) + } + l = len(m.ServiceEndpoint) + if l > 0 { + n += 1 + l + sovDid(uint64(l)) + } + return n +} + +func sovDid(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozDid(x uint64) (n int) { + return sovDid(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} func (m *Did) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -250,7 +783,696 @@ func (m *Did) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Verkey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VerificationMethod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VerificationMethod = append(m.VerificationMethod, &VerificationMethod{}) + if err := m.VerificationMethod[len(m.VerificationMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authentication = append(m.Authentication, &types.Any{}) + if err := m.Authentication[len(m.Authentication)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssertionMethod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssertionMethod = append(m.AssertionMethod, &types.Any{}) + if err := m.AssertionMethod[len(m.AssertionMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CapabilityInvocation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CapabilityInvocation = append(m.CapabilityInvocation, &types.Any{}) + if err := m.CapabilityInvocation[len(m.CapabilityInvocation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CapabilityDelegation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CapabilityDelegation = append(m.CapabilityDelegation, &types.Any{}) + if err := m.CapabilityDelegation[len(m.CapabilityDelegation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KeyAgreement", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KeyAgreement = append(m.KeyAgreement, &types.Any{}) + if err := m.KeyAgreement[len(m.KeyAgreement)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AlsoKnownAs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AlsoKnownAs = append(m.AlsoKnownAs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Service = append(m.Service, &DidService{}) + if err := m.Service[len(m.Service)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipDid(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthDid + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VerificationMethod) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VerificationMethod: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VerificationMethod: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PublicKeyJwk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PublicKeyJwk == nil { + m.PublicKeyJwk = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthDid + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthDid + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthDid + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthDid + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipDid(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthDid + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.PublicKeyJwk[mapkey] = mapvalue + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PublicKeyMultibase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PublicKeyMultibase = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipDid(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthDid + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DidService) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DidService: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DidService: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -278,11 +1500,11 @@ func (m *Did) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Verkey = string(dAtA[iNdEx:postIndex]) + m.Type = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceEndpoint", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -310,7 +1532,7 @@ func (m *Did) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Alias = string(dAtA[iNdEx:postIndex]) + m.ServiceEndpoint = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index ed10e86f7..63b3f9470 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -22,16 +22,16 @@ func KeyPrefix(p string) []byte { } const ( - DidKey = "Did-value-" - DidCountKey = "Did-count-" + DidKey = "did:" + DidCountKey = "Did-count:" ) const ( - SchemaKey = "Schema-value-" - SchemaCountKey = "Schema-count-" + SchemaKey = "schema:" + SchemaCountKey = "Schema-count:" ) const ( - CredDefKey = "CredDef-value-" - CredDefCountKey = "CredDef-count-" + CredDefKey = "CredDef:" + CredDefCountKey = "CredDef-count:" ) diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index 24484ec68..aab70a6c1 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -1,16 +1,18 @@ package types import ( + "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" ) var _ sdk.Msg = &MsgCreateCredDef{} -func NewMsgCreateCredDef(schema_id string, tag string, signature_type string, value string) *MsgCreateCredDef { +func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, value *types.Any) *MsgCreateCredDef { return &MsgCreateCredDef{ - SchemaId: schema_id, + Id: id, + SchemaId: schemaId, Tag: tag, - SignatureType: signature_type, + SignatureType: signatureType, Value: value, } } diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index fc9370704..7115b5d6a 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -1,16 +1,35 @@ package types import ( + "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" ) var _ sdk.Msg = &MsgCreateDid{} -func NewMsgCreateDid(id string, verkey string, alias string) *MsgCreateDid { +func NewMsgCreateDid( + id string, + controller []string, + verificationMethod []*VerificationMethod, + authentication []*types.Any, + assertionMethod []*types.Any, + capabilityInvocation []*types.Any, + capabilityDelegation []*types.Any, + keyAgreement []*types.Any, + alsoKnownAs []string, + service []*DidService, +) *MsgCreateDid { return &MsgCreateDid{ - Id: id, - Verkey: verkey, - Alias: alias, + Id: id, + Controller: controller, + VerificationMethod: verificationMethod, + Authentication: authentication, + AssertionMethod: assertionMethod, + CapabilityInvocation: capabilityInvocation, + CapabilityDelegation: capabilityDelegation, + KeyAgreement: keyAgreement, + AlsoKnownAs: alsoKnownAs, + Service: service, } } @@ -36,11 +55,29 @@ func (msg *MsgCreateDid) ValidateBasic() error { var _ sdk.Msg = &MsgUpdateDid{} -func NewMsgUpdateDid(id string, verkey string, alias string) *MsgUpdateDid { +func NewMsgUpdateDid( + id string, + controller []string, + verificationMethod []*VerificationMethod, + authentication []*types.Any, + assertionMethod []*types.Any, + capabilityInvocation []*types.Any, + capabilityDelegation []*types.Any, + keyAgreement []*types.Any, + alsoKnownAs []string, + service []*DidService, +) *MsgUpdateDid { return &MsgUpdateDid{ - Id: id, - Verkey: verkey, - Alias: alias, + Id: id, + Controller: controller, + VerificationMethod: verificationMethod, + Authentication: authentication, + AssertionMethod: assertionMethod, + CapabilityInvocation: capabilityInvocation, + CapabilityDelegation: capabilityDelegation, + KeyAgreement: keyAgreement, + AlsoKnownAs: alsoKnownAs, + Service: service, } } diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index 48d7301b1..7a4ee1206 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -6,11 +6,12 @@ import ( var _ sdk.Msg = &MsgCreateSchema{} -func NewMsgCreateSchema(name string, version string, attr_names string) *MsgCreateSchema { +func NewMsgCreateSchema(id string, name string, version string, attrNames []string) *MsgCreateSchema { return &MsgCreateSchema{ + Id: id, Name: name, Version: version, - AttrNames: attr_names, + AttrNames: attrNames, } } diff --git a/x/cheqd/types/messages_write_request.go b/x/cheqd/types/messages_write_request.go index 4f3a92f63..882aa3d39 100644 --- a/x/cheqd/types/messages_write_request.go +++ b/x/cheqd/types/messages_write_request.go @@ -7,11 +7,11 @@ import ( var _ sdk.Msg = &MsgWriteRequest{} -func NewMsgWriteRequest(data *types.Any, author string, signature string) *MsgWriteRequest { +func NewMsgWriteRequest(data *types.Any, authors []string, signatures map[string]string) *MsgWriteRequest { return &MsgWriteRequest{ - Data: data, - Author: author, - Signature: signature, + Data: data, + Authors: authors, + Signatures: signatures, } } @@ -20,7 +20,7 @@ func (msg *MsgWriteRequest) Route() string { } func (msg *MsgWriteRequest) Type() string { - return "WriteRequestDef" + return "WriteRequest" } func (msg *MsgWriteRequest) GetSigners() []sdk.AccAddress { diff --git a/x/cheqd/types/schema.pb.go b/x/cheqd/types/schema.pb.go index f35ce0dd6..b9dd04b83 100644 --- a/x/cheqd/types/schema.pb.go +++ b/x/cheqd/types/schema.pb.go @@ -24,10 +24,11 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Schema struct { - Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - AttrNames []string `protobuf:"bytes,4,rep,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + AttrNames []string `protobuf:"bytes,5,rep,name=attrNames,json=attrNames,proto3" json:"attrNames,omitempty"` } func (m *Schema) Reset() { *m = Schema{} } @@ -63,13 +64,20 @@ func (m *Schema) XXX_DiscardUnknown() { var xxx_messageInfo_Schema proto.InternalMessageInfo -func (m *Schema) GetAuthor() string { +func (m *Schema) GetId() string { if m != nil { - return m.Author + return m.Id } return "" } +func (m *Schema) GetAuthors() []string { + if m != nil { + return m.Authors + } + return nil +} + func (m *Schema) GetName() string { if m != nil { return m.Name @@ -98,21 +106,22 @@ func init() { func init() { proto.RegisterFile("cheqd/schema.proto", fileDescriptor_96d8c360e747a40a) } var fileDescriptor_96d8c360e747a40a = []byte{ - // 214 bytes of a gzipped FileDescriptorProto + // 226 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x2f, 0x4e, 0xce, 0x48, 0xcd, 0x4d, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, - 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xca, 0xe5, 0x62, 0x0b, 0x06, 0x6b, - 0x17, 0x12, 0xe3, 0x62, 0x4b, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0x92, 0x60, 0x54, 0x60, 0xd4, 0xe0, - 0x0c, 0x82, 0xf2, 0x84, 0x84, 0xb8, 0x58, 0xf2, 0x12, 0x73, 0x53, 0x25, 0x98, 0xc0, 0xa2, 0x60, - 0xb6, 0x90, 0x04, 0x17, 0x7b, 0x59, 0x6a, 0x51, 0x71, 0x66, 0x7e, 0x9e, 0x04, 0x33, 0x58, 0x18, - 0xc6, 0x15, 0x92, 0xe5, 0xe2, 0x4a, 0x2c, 0x29, 0x29, 0x8a, 0x07, 0x29, 0x2b, 0x96, 0x60, 0x51, - 0x60, 0xd6, 0xe0, 0x0c, 0xe2, 0x04, 0x89, 0xf8, 0x81, 0x04, 0x9c, 0x9c, 0x4f, 0x3c, 0x92, 0x63, - 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, - 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0x4a, 0x33, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, - 0x3f, 0x57, 0x1f, 0xe2, 0x2d, 0x30, 0xa9, 0x0b, 0xf2, 0x81, 0x7e, 0x05, 0x54, 0xa8, 0xa4, 0xb2, - 0x20, 0xb5, 0x38, 0x89, 0x0d, 0xec, 0x74, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6b, 0xb5, - 0x40, 0x4d, 0xff, 0x00, 0x00, 0x00, + 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xaa, 0xe7, 0x62, 0x0b, 0x06, 0x6b, + 0x17, 0xe2, 0xe3, 0x62, 0xca, 0x4c, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x62, 0xca, 0x4c, + 0x11, 0x92, 0xe0, 0x62, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0x2a, 0x96, 0x60, 0x52, 0x60, 0xd6, + 0xe0, 0x0c, 0x82, 0x71, 0x85, 0x84, 0xb8, 0x58, 0xf2, 0x12, 0x73, 0x53, 0x25, 0x98, 0xc1, 0x6a, + 0xc1, 0x6c, 0x90, 0xea, 0xb2, 0xd4, 0xa2, 0xe2, 0xcc, 0xfc, 0x3c, 0x09, 0x16, 0xb0, 0x30, 0x8c, + 0x2b, 0x24, 0xcb, 0xc5, 0x95, 0x58, 0x52, 0x52, 0x14, 0x0f, 0x52, 0x56, 0x2c, 0xc1, 0x0a, 0x36, + 0x8a, 0x13, 0x24, 0xe2, 0x07, 0x12, 0x70, 0x72, 0x3e, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, + 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, + 0x39, 0x86, 0x28, 0xcd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0x88, + 0x47, 0xc1, 0xa4, 0x2e, 0xc8, 0x4f, 0xfa, 0x15, 0x50, 0xa1, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, + 0x36, 0xb0, 0x67, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x3f, 0x5e, 0x48, 0x11, 0x01, + 0x00, 0x00, } func (m *Schema) Marshal() (dAtA []byte, err error) { @@ -141,7 +150,7 @@ func (m *Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.AttrNames[iNdEx]) i = encodeVarintSchema(dAtA, i, uint64(len(m.AttrNames[iNdEx]))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a } } if len(m.Version) > 0 { @@ -149,19 +158,28 @@ func (m *Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Version) i = encodeVarintSchema(dAtA, i, uint64(len(m.Version))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 } if len(m.Name) > 0 { i -= len(m.Name) copy(dAtA[i:], m.Name) i = encodeVarintSchema(dAtA, i, uint64(len(m.Name))) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a + } + if len(m.Authors) > 0 { + for iNdEx := len(m.Authors) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Authors[iNdEx]) + copy(dAtA[i:], m.Authors[iNdEx]) + i = encodeVarintSchema(dAtA, i, uint64(len(m.Authors[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } - if len(m.Author) > 0 { - i -= len(m.Author) - copy(dAtA[i:], m.Author) - i = encodeVarintSchema(dAtA, i, uint64(len(m.Author))) + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintSchema(dAtA, i, uint64(len(m.Id))) i-- dAtA[i] = 0xa } @@ -185,10 +203,16 @@ func (m *Schema) Size() (n int) { } var l int _ = l - l = len(m.Author) + l = len(m.Id) if l > 0 { n += 1 + l + sovSchema(uint64(l)) } + if len(m.Authors) > 0 { + for _, s := range m.Authors { + l = len(s) + n += 1 + l + sovSchema(uint64(l)) + } + } l = len(m.Name) if l > 0 { n += 1 + l + sovSchema(uint64(l)) @@ -243,7 +267,7 @@ func (m *Schema) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Author", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -271,9 +295,41 @@ func (m *Schema) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Author = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSchema + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSchema + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSchema + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authors = append(m.Authors, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } @@ -305,7 +361,7 @@ func (m *Schema) Unmarshal(dAtA []byte) error { } m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } @@ -337,7 +393,7 @@ func (m *Schema) Unmarshal(dAtA []byte) error { } m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AttrNames", wireType) } diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index f60769283..88db921bd 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -31,7 +31,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // this line is used by starport scaffolding # proto/tx/message type MsgWriteRequest struct { Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` + Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` Signatures map[string]string `protobuf:"bytes,3,rep,name=signatures,proto3" json:"signatures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } @@ -75,11 +75,11 @@ func (m *MsgWriteRequest) GetData() *types.Any { return nil } -func (m *MsgWriteRequest) GetAuthor() string { +func (m *MsgWriteRequest) GetAuthors() []string { if m != nil { - return m.Author + return m.Authors } - return "" + return nil } func (m *MsgWriteRequest) GetSignatures() map[string]string { @@ -90,10 +90,11 @@ func (m *MsgWriteRequest) GetSignatures() map[string]string { } type MsgCreateCredDef struct { - SchemaId string `protobuf:"bytes,1,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,3,opt,name=signature_type,json=signatureType,proto3" json:"signature_type,omitempty"` - Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,4,opt,name=signatureType,json=signatureType,proto3" json:"signatureType,omitempty"` + Value *types.Any `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` } func (m *MsgCreateCredDef) Reset() { *m = MsgCreateCredDef{} } @@ -129,6 +130,13 @@ func (m *MsgCreateCredDef) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCreateCredDef proto.InternalMessageInfo +func (m *MsgCreateCredDef) GetId() string { + if m != nil { + return m.Id + } + return "" +} + func (m *MsgCreateCredDef) GetSchemaId() string { if m != nil { return m.SchemaId @@ -150,11 +158,11 @@ func (m *MsgCreateCredDef) GetSignatureType() string { return "" } -func (m *MsgCreateCredDef) GetValue() string { +func (m *MsgCreateCredDef) GetValue() *types.Any { if m != nil { return m.Value } - return "" + return nil } type MsgCreateCredDefResponse struct { @@ -202,9 +210,10 @@ func (m *MsgCreateCredDefResponse) GetId() string { } type MsgCreateSchema struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - AttrNames []string `protobuf:"bytes,3,rep,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + AttrNames []string `protobuf:"bytes,4,rep,name=attrNames,json=attrNames,proto3" json:"attrNames,omitempty"` } func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } @@ -240,6 +249,13 @@ func (m *MsgCreateSchema) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCreateSchema proto.InternalMessageInfo +func (m *MsgCreateSchema) GetId() string { + if m != nil { + return m.Id + } + return "" +} + func (m *MsgCreateSchema) GetName() string { if m != nil { return m.Name @@ -306,9 +322,16 @@ func (m *MsgCreateSchemaResponse) GetId() string { } type MsgCreateDid struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Verkey string `protobuf:"bytes,2,opt,name=verkey,proto3" json:"verkey,omitempty"` - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` + VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` + Authentication []*types.Any `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` + AssertionMethod []*types.Any `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` + CapabilityInvocation []*types.Any `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` + CapabilityDelegation []*types.Any `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` + KeyAgreement []*types.Any `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` + AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` + Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` } func (m *MsgCreateDid) Reset() { *m = MsgCreateDid{} } @@ -351,18 +374,67 @@ func (m *MsgCreateDid) GetId() string { return "" } -func (m *MsgCreateDid) GetVerkey() string { +func (m *MsgCreateDid) GetController() []string { if m != nil { - return m.Verkey + return m.Controller } - return "" + return nil } -func (m *MsgCreateDid) GetAlias() string { +func (m *MsgCreateDid) GetVerificationMethod() []*VerificationMethod { if m != nil { - return m.Alias + return m.VerificationMethod } - return "" + return nil +} + +func (m *MsgCreateDid) GetAuthentication() []*types.Any { + if m != nil { + return m.Authentication + } + return nil +} + +func (m *MsgCreateDid) GetAssertionMethod() []*types.Any { + if m != nil { + return m.AssertionMethod + } + return nil +} + +func (m *MsgCreateDid) GetCapabilityInvocation() []*types.Any { + if m != nil { + return m.CapabilityInvocation + } + return nil +} + +func (m *MsgCreateDid) GetCapabilityDelegation() []*types.Any { + if m != nil { + return m.CapabilityDelegation + } + return nil +} + +func (m *MsgCreateDid) GetKeyAgreement() []*types.Any { + if m != nil { + return m.KeyAgreement + } + return nil +} + +func (m *MsgCreateDid) GetAlsoKnownAs() []string { + if m != nil { + return m.AlsoKnownAs + } + return nil +} + +func (m *MsgCreateDid) GetService() []*DidService { + if m != nil { + return m.Service + } + return nil } type MsgCreateDidResponse struct { @@ -410,9 +482,16 @@ func (m *MsgCreateDidResponse) GetId() string { } type MsgUpdateDid struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Verkey string `protobuf:"bytes,2,opt,name=verkey,proto3" json:"verkey,omitempty"` - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` + VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` + Authentication []*types.Any `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` + AssertionMethod []*types.Any `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` + CapabilityInvocation []*types.Any `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` + CapabilityDelegation []*types.Any `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` + KeyAgreement []*types.Any `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` + AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` + Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` } func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } @@ -455,18 +534,67 @@ func (m *MsgUpdateDid) GetId() string { return "" } -func (m *MsgUpdateDid) GetVerkey() string { +func (m *MsgUpdateDid) GetController() []string { if m != nil { - return m.Verkey + return m.Controller } - return "" + return nil } -func (m *MsgUpdateDid) GetAlias() string { +func (m *MsgUpdateDid) GetVerificationMethod() []*VerificationMethod { if m != nil { - return m.Alias + return m.VerificationMethod } - return "" + return nil +} + +func (m *MsgUpdateDid) GetAuthentication() []*types.Any { + if m != nil { + return m.Authentication + } + return nil +} + +func (m *MsgUpdateDid) GetAssertionMethod() []*types.Any { + if m != nil { + return m.AssertionMethod + } + return nil +} + +func (m *MsgUpdateDid) GetCapabilityInvocation() []*types.Any { + if m != nil { + return m.CapabilityInvocation + } + return nil +} + +func (m *MsgUpdateDid) GetCapabilityDelegation() []*types.Any { + if m != nil { + return m.CapabilityDelegation + } + return nil +} + +func (m *MsgUpdateDid) GetKeyAgreement() []*types.Any { + if m != nil { + return m.KeyAgreement + } + return nil +} + +func (m *MsgUpdateDid) GetAlsoKnownAs() []string { + if m != nil { + return m.AlsoKnownAs + } + return nil +} + +func (m *MsgUpdateDid) GetService() []*DidService { + if m != nil { + return m.Service + } + return nil } type MsgUpdateDidResponse struct { @@ -529,41 +657,53 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 540 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0xad, 0xe3, 0x50, 0xf0, 0xb4, 0x4d, 0xab, 0x55, 0x44, 0x4d, 0x10, 0x56, 0x64, 0x09, 0x94, - 0x22, 0xd5, 0x81, 0x70, 0xa9, 0x90, 0x38, 0x40, 0xca, 0x01, 0x89, 0x70, 0x70, 0x41, 0x20, 0x0e, - 0x44, 0x9b, 0xec, 0xd4, 0x31, 0x24, 0x76, 0xea, 0x5d, 0x47, 0xf5, 0x85, 0x6f, 0xe0, 0x3f, 0xf8, - 0x11, 0x8e, 0x3d, 0x72, 0x44, 0xc9, 0x95, 0x8f, 0x40, 0xbb, 0x76, 0x9d, 0xd4, 0x10, 0x92, 0x43, - 0x2f, 0xc9, 0xcc, 0xec, 0xcc, 0x7b, 0x4f, 0xfb, 0xc6, 0x0b, 0x95, 0xfe, 0x00, 0xcf, 0x58, 0x53, - 0x9c, 0x3b, 0xe3, 0x28, 0x14, 0x21, 0xd9, 0x57, 0xb9, 0xcf, 0x1c, 0xf5, 0x1f, 0x84, 0x0c, 0xd3, - 0xa8, 0x76, 0xc7, 0x0b, 0x43, 0x6f, 0x88, 0x4d, 0xd5, 0xd6, 0x8b, 0x4f, 0x9b, 0x34, 0x48, 0xd2, - 0x19, 0xfb, 0xb7, 0x06, 0xbb, 0x1d, 0xee, 0xbd, 0x8f, 0x7c, 0x81, 0x2e, 0x9e, 0xc5, 0xc8, 0x05, - 0x69, 0x40, 0x99, 0x51, 0x41, 0x4d, 0xad, 0xae, 0x35, 0xb6, 0x5a, 0x55, 0x27, 0x9d, 0x76, 0x2e, - 0xa7, 0x9d, 0xe7, 0x41, 0xe2, 0xaa, 0x0e, 0x72, 0x1b, 0x36, 0x69, 0x2c, 0x06, 0x61, 0x64, 0x96, - 0xea, 0x5a, 0xc3, 0x70, 0xb3, 0x8c, 0x7c, 0x00, 0xe0, 0xbe, 0x17, 0x50, 0x11, 0x47, 0xc8, 0x4d, - 0xbd, 0xae, 0x37, 0xb6, 0x5a, 0x47, 0xce, 0x12, 0x79, 0x4e, 0x81, 0xdf, 0x39, 0xc9, 0x47, 0x5f, - 0x06, 0x22, 0x4a, 0xdc, 0x05, 0xac, 0xda, 0x33, 0xd8, 0x2d, 0x1c, 0x93, 0x3d, 0xd0, 0xbf, 0x60, - 0xa2, 0xd4, 0x1a, 0xae, 0x0c, 0x49, 0x15, 0x6e, 0x4c, 0xe8, 0x30, 0xc6, 0x4c, 0x55, 0x9a, 0x3c, - 0x2d, 0x1d, 0x69, 0xf6, 0x57, 0xd8, 0xeb, 0x70, 0xaf, 0x1d, 0x21, 0x15, 0xd8, 0x8e, 0x90, 0x1d, - 0xe3, 0x29, 0xb9, 0x0b, 0x06, 0xef, 0x0f, 0x70, 0x44, 0xbb, 0x3e, 0xcb, 0x50, 0x6e, 0xa5, 0x85, - 0x57, 0x4c, 0x82, 0x0b, 0xea, 0x65, 0x40, 0x32, 0x24, 0xf7, 0xa1, 0x92, 0xeb, 0xe9, 0x8a, 0x64, - 0x8c, 0xa6, 0xae, 0x0e, 0x77, 0xf2, 0xea, 0xdb, 0x64, 0x8c, 0x73, 0x0d, 0xe5, 0x05, 0x0d, 0xf6, - 0x43, 0x30, 0x8b, 0xfc, 0x2e, 0xf2, 0x71, 0x18, 0x70, 0x24, 0x15, 0x28, 0xe5, 0x02, 0x4a, 0x3e, - 0xb3, 0x3f, 0x29, 0x67, 0xd2, 0xde, 0x13, 0xa5, 0x87, 0x10, 0x28, 0x07, 0x74, 0x84, 0x59, 0x93, - 0x8a, 0x89, 0x09, 0x37, 0x27, 0x18, 0x71, 0x3f, 0x0c, 0x32, 0x95, 0x97, 0x29, 0xb9, 0x07, 0x40, - 0x85, 0x88, 0xba, 0xb2, 0x2d, 0x75, 0xc1, 0x70, 0x0d, 0x59, 0x79, 0x23, 0x0b, 0xf6, 0x01, 0xec, - 0x17, 0xf0, 0x97, 0x4a, 0x79, 0x0d, 0xdb, 0x79, 0xeb, 0xb1, 0xcf, 0x8a, 0xe7, 0x72, 0x0f, 0x26, - 0x18, 0x49, 0x17, 0xb2, 0x3d, 0x48, 0x33, 0x79, 0x09, 0x74, 0xe8, 0x53, 0x9e, 0x5d, 0x51, 0x9a, - 0xd8, 0x0f, 0xa0, 0xba, 0x88, 0xb6, 0x82, 0xf5, 0xdd, 0x98, 0x5d, 0x23, 0x6b, 0x8e, 0xb6, 0x8c, - 0xb5, 0xf5, 0x5d, 0x07, 0xbd, 0xc3, 0x3d, 0x32, 0x84, 0x9d, 0xab, 0x7b, 0xd2, 0x58, 0x77, 0x81, - 0x6b, 0x8f, 0xff, 0xd7, 0xf9, 0x6f, 0xf3, 0x3f, 0xc3, 0xf6, 0x15, 0xa7, 0xd7, 0x27, 0x7b, 0xb4, - 0x9a, 0xac, 0xe0, 0x2e, 0x03, 0x63, 0x6e, 0xe5, 0xfa, 0x44, 0x87, 0xab, 0x89, 0x16, 0xef, 0x95, - 0x81, 0x31, 0xb7, 0xee, 0x9a, 0x58, 0xfe, 0x72, 0xef, 0x45, 0xfb, 0xc7, 0xd4, 0xd2, 0x2e, 0xa6, - 0x96, 0xf6, 0x6b, 0x6a, 0x69, 0xdf, 0x66, 0xd6, 0xc6, 0xc5, 0xcc, 0xda, 0xf8, 0x39, 0xb3, 0x36, - 0x3e, 0x1e, 0x78, 0xbe, 0x18, 0xc4, 0x3d, 0xa7, 0x1f, 0x8e, 0x9a, 0xe9, 0x43, 0xa9, 0x7e, 0x0f, - 0x25, 0x62, 0xf3, 0x3c, 0x2b, 0xc9, 0xef, 0x97, 0xf7, 0x36, 0xd5, 0xd3, 0xf6, 0xe4, 0x4f, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x43, 0xbe, 0xa8, 0xe5, 0x51, 0x05, 0x00, 0x00, + // 721 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcd, 0x6e, 0x1a, 0x49, + 0x10, 0xf6, 0x00, 0xfe, 0xa1, 0x6c, 0x83, 0xd5, 0x42, 0xf2, 0x2c, 0xab, 0x45, 0x88, 0xd5, 0xae, + 0xb0, 0x57, 0x1e, 0x76, 0xbd, 0x17, 0x6b, 0xb5, 0x8e, 0xe4, 0x98, 0x48, 0xb1, 0x22, 0x72, 0x18, + 0xe7, 0x4f, 0xc9, 0xc1, 0x6a, 0x98, 0xf2, 0xd0, 0xf1, 0xd0, 0x8d, 0xa7, 0x1b, 0xe2, 0x79, 0x8b, + 0x3c, 0x44, 0x6e, 0x79, 0x11, 0x1f, 0x7d, 0xcc, 0x31, 0xb2, 0xef, 0x79, 0x86, 0x68, 0x7a, 0x06, + 0x0c, 0x83, 0xc1, 0x1c, 0x7c, 0xf4, 0x05, 0xba, 0xab, 0xbf, 0xfa, 0xea, 0xeb, 0xae, 0x8f, 0x6e, + 0x20, 0xd7, 0x6a, 0xe3, 0xb9, 0x53, 0x53, 0x17, 0x56, 0xd7, 0x17, 0x4a, 0x90, 0x4d, 0x3d, 0x67, + 0x8e, 0xa5, 0xbf, 0xb9, 0x70, 0x30, 0x1a, 0x15, 0x7f, 0x71, 0x85, 0x70, 0x3d, 0xac, 0x69, 0x58, + 0xb3, 0x77, 0x5a, 0xa3, 0x3c, 0x88, 0x72, 0x8a, 0xf9, 0x88, 0x23, 0xcc, 0xd2, 0x81, 0xca, 0x0f, + 0x03, 0xf2, 0x0d, 0xe9, 0xbe, 0xf5, 0x99, 0x42, 0x1b, 0xcf, 0x7b, 0x28, 0x15, 0xa9, 0x42, 0xc6, + 0xa1, 0x8a, 0x9a, 0x46, 0xd9, 0xa8, 0xae, 0xee, 0x16, 0xac, 0x88, 0xce, 0x1a, 0xd0, 0x59, 0x07, + 0x3c, 0xb0, 0x35, 0x82, 0x98, 0xb0, 0x4c, 0x7b, 0xaa, 0x2d, 0x7c, 0x69, 0xa6, 0xca, 0xe9, 0x6a, + 0xd6, 0x1e, 0x4c, 0xc9, 0x3b, 0x00, 0xc9, 0x5c, 0x4e, 0x55, 0xcf, 0x47, 0x69, 0xa6, 0xcb, 0xe9, + 0xea, 0xea, 0xee, 0x9e, 0x35, 0x45, 0xb1, 0x95, 0x50, 0x60, 0x1d, 0x0f, 0x53, 0x9f, 0x71, 0xe5, + 0x07, 0xf6, 0x08, 0x57, 0x71, 0x1f, 0xf2, 0x89, 0x65, 0xb2, 0x01, 0xe9, 0x33, 0x0c, 0xb4, 0xde, + 0xac, 0x1d, 0x0e, 0x49, 0x01, 0x16, 0xfb, 0xd4, 0xeb, 0xa1, 0x99, 0xd2, 0xb1, 0x68, 0xf2, 0x5f, + 0x6a, 0xcf, 0xa8, 0x7c, 0x31, 0x60, 0xa3, 0x21, 0xdd, 0x43, 0x1f, 0xa9, 0xc2, 0x43, 0x1f, 0x9d, + 0x3a, 0x9e, 0x92, 0x1c, 0xa4, 0x98, 0x13, 0xe7, 0xa7, 0x98, 0x43, 0x7e, 0x85, 0xac, 0x6c, 0xb5, + 0xb1, 0x43, 0x4f, 0x98, 0x13, 0x53, 0xac, 0x44, 0x81, 0x23, 0x27, 0xac, 0xa6, 0xa8, 0x6b, 0xa6, + 0xa3, 0x6a, 0x8a, 0xba, 0xe4, 0x0f, 0xc8, 0x0d, 0x05, 0x9e, 0xa8, 0xa0, 0x8b, 0x66, 0x46, 0x2f, + 0xae, 0x0f, 0xa3, 0xaf, 0x82, 0x2e, 0x92, 0xed, 0x81, 0xa8, 0xc5, 0x19, 0x07, 0x1b, 0x41, 0x2a, + 0xdb, 0x60, 0x26, 0x55, 0xda, 0x28, 0xbb, 0x82, 0x4b, 0x4c, 0xaa, 0xad, 0x70, 0xdd, 0xc2, 0x08, + 0x7b, 0xac, 0x55, 0x4e, 0x6c, 0x88, 0x40, 0x86, 0xd3, 0xce, 0xe0, 0x38, 0xf4, 0x38, 0x6c, 0x5e, + 0x1f, 0x7d, 0xc9, 0x04, 0x8f, 0xf7, 0x32, 0x98, 0x92, 0xdf, 0x00, 0xa8, 0x52, 0xfe, 0x49, 0x08, + 0x93, 0x66, 0x46, 0x77, 0x36, 0x1b, 0x46, 0x5e, 0x86, 0x81, 0xca, 0x16, 0x6c, 0x26, 0xea, 0x4d, + 0x95, 0x76, 0x99, 0x81, 0xb5, 0x21, 0xb6, 0xce, 0x9c, 0x09, 0x61, 0x25, 0x80, 0x96, 0xe0, 0xca, + 0x17, 0x9e, 0x87, 0x7e, 0x6c, 0xa2, 0x91, 0x08, 0xf9, 0x00, 0xa4, 0x8f, 0x3e, 0x3b, 0x65, 0x2d, + 0xaa, 0x98, 0xe0, 0x0d, 0x54, 0x6d, 0xe1, 0xc4, 0x7e, 0xfa, 0x6b, 0xaa, 0x9f, 0xde, 0x4c, 0xa4, + 0xd8, 0x77, 0xd0, 0x90, 0xff, 0x21, 0x17, 0xfa, 0x15, 0xb9, 0x8a, 0xe3, 0x7a, 0xaf, 0xd3, 0x3a, + 0x93, 0xc0, 0x92, 0x27, 0x90, 0xa7, 0x52, 0xa2, 0x3f, 0xa2, 0x6b, 0x71, 0x46, 0x7a, 0x12, 0x4c, + 0x9e, 0x43, 0xa1, 0x45, 0xbb, 0xb4, 0xc9, 0x3c, 0xa6, 0x82, 0x23, 0xde, 0x17, 0xb1, 0x86, 0xa5, + 0x19, 0x24, 0x77, 0x66, 0x8c, 0x33, 0xd5, 0xd1, 0x43, 0x37, 0x62, 0x5a, 0x9e, 0x8f, 0xe9, 0x36, + 0x83, 0xec, 0xc1, 0xda, 0x19, 0x06, 0x07, 0xae, 0x8f, 0xd8, 0x41, 0xae, 0xcc, 0x95, 0x19, 0x0c, + 0x63, 0x48, 0x52, 0x86, 0x55, 0xea, 0x49, 0xf1, 0x82, 0x8b, 0x4f, 0xfc, 0x40, 0x9a, 0x59, 0xdd, + 0xc9, 0xd1, 0x10, 0xd9, 0x87, 0x65, 0x89, 0x7e, 0x9f, 0xb5, 0xd0, 0x04, 0x4d, 0xfb, 0xfb, 0xd4, + 0xfe, 0xd5, 0x99, 0x73, 0x1c, 0x41, 0xed, 0x41, 0x4e, 0xe5, 0x4f, 0x28, 0x8c, 0x3a, 0xe9, 0x3e, + 0xcb, 0xbd, 0xee, 0x3a, 0x8f, 0x96, 0x7b, 0xb4, 0xdc, 0x03, 0x58, 0x6e, 0xe8, 0xa4, 0x69, 0x96, + 0xdb, 0xfd, 0x9a, 0x86, 0x74, 0x43, 0xba, 0xc4, 0x83, 0xf5, 0xf1, 0x77, 0xa5, 0x3a, 0xef, 0x8b, + 0x57, 0xfc, 0x67, 0x16, 0xf2, 0xee, 0x67, 0xe0, 0x23, 0xac, 0x8d, 0xdd, 0xf9, 0xf3, 0x17, 0xfb, + 0xfb, 0xfe, 0x62, 0x89, 0x7b, 0xdd, 0x81, 0xec, 0xed, 0x1d, 0x3e, 0x7f, 0xa1, 0x9d, 0xfb, 0x0b, + 0x8d, 0x9e, 0xab, 0x03, 0xd9, 0xdb, 0x9f, 0xed, 0x03, 0x55, 0x99, 0xe8, 0xde, 0xd3, 0xc3, 0xcb, + 0xeb, 0x92, 0x71, 0x75, 0x5d, 0x32, 0xbe, 0x5f, 0x97, 0x8c, 0xcf, 0x37, 0xa5, 0x85, 0xab, 0x9b, + 0xd2, 0xc2, 0xb7, 0x9b, 0xd2, 0xc2, 0xfb, 0x2d, 0x97, 0xa9, 0x76, 0xaf, 0x69, 0xb5, 0x44, 0xa7, + 0x16, 0xfd, 0x51, 0xd2, 0x9f, 0x3b, 0x21, 0x63, 0xed, 0x22, 0x0e, 0x85, 0xef, 0xbb, 0x6c, 0x2e, + 0x69, 0x5f, 0xfe, 0xfb, 0x33, 0x00, 0x00, 0xff, 0xff, 0x61, 0x0e, 0xa1, 0x35, 0x95, 0x09, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -795,12 +935,14 @@ func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x1a } } - if len(m.Author) > 0 { - i -= len(m.Author) - copy(dAtA[i:], m.Author) - i = encodeVarintTx(dAtA, i, uint64(len(m.Author))) - i-- - dAtA[i] = 0x12 + if len(m.Authors) > 0 { + for iNdEx := len(m.Authors) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Authors[iNdEx]) + copy(dAtA[i:], m.Authors[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authors[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if m.Data != nil { { @@ -837,32 +979,44 @@ func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Value) > 0 { - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintTx(dAtA, i, uint64(len(m.Value))) + if m.Value != nil { + { + size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a } if len(m.SignatureType) > 0 { i -= len(m.SignatureType) copy(dAtA[i:], m.SignatureType) i = encodeVarintTx(dAtA, i, uint64(len(m.SignatureType))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 } if len(m.Tag) > 0 { i -= len(m.Tag) copy(dAtA[i:], m.Tag) i = encodeVarintTx(dAtA, i, uint64(len(m.Tag))) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } if len(m.SchemaId) > 0 { i -= len(m.SchemaId) copy(dAtA[i:], m.SchemaId) i = encodeVarintTx(dAtA, i, uint64(len(m.SchemaId))) i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- dAtA[i] = 0xa } return len(dAtA) - i, nil @@ -924,7 +1078,7 @@ func (m *MsgCreateSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.AttrNames[iNdEx]) i = encodeVarintTx(dAtA, i, uint64(len(m.AttrNames[iNdEx]))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 } } if len(m.Version) > 0 { @@ -932,13 +1086,20 @@ func (m *MsgCreateSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Version) i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } if len(m.Name) > 0 { i -= len(m.Name) copy(dAtA[i:], m.Name) i = encodeVarintTx(dAtA, i, uint64(len(m.Name))) i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) + i-- dAtA[i] = 0xa } return len(dAtA) - i, nil @@ -994,19 +1155,121 @@ func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Alias) > 0 { - i -= len(m.Alias) - copy(dAtA[i:], m.Alias) - i = encodeVarintTx(dAtA, i, uint64(len(m.Alias))) - i-- - dAtA[i] = 0x1a + if len(m.Service) > 0 { + for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Service[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } } - if len(m.Verkey) > 0 { - i -= len(m.Verkey) - copy(dAtA[i:], m.Verkey) - i = encodeVarintTx(dAtA, i, uint64(len(m.Verkey))) - i-- - dAtA[i] = 0x12 + if len(m.AlsoKnownAs) > 0 { + for iNdEx := len(m.AlsoKnownAs) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AlsoKnownAs[iNdEx]) + copy(dAtA[i:], m.AlsoKnownAs[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AlsoKnownAs[iNdEx]))) + i-- + dAtA[i] = 0x4a + } + } + if len(m.KeyAgreement) > 0 { + for iNdEx := len(m.KeyAgreement) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.KeyAgreement[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.CapabilityDelegation) > 0 { + for iNdEx := len(m.CapabilityDelegation) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CapabilityDelegation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.CapabilityInvocation) > 0 { + for iNdEx := len(m.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CapabilityInvocation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.AssertionMethod) > 0 { + for iNdEx := len(m.AssertionMethod) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssertionMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.Authentication) > 0 { + for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Authentication[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.VerificationMethod) > 0 { + for iNdEx := len(m.VerificationMethod) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VerificationMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.Controller) > 0 { + for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Controller[iNdEx]) + copy(dAtA[i:], m.Controller[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Controller[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Id) > 0 { i -= len(m.Id) @@ -1068,19 +1331,121 @@ func (m *MsgUpdateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Alias) > 0 { - i -= len(m.Alias) - copy(dAtA[i:], m.Alias) - i = encodeVarintTx(dAtA, i, uint64(len(m.Alias))) - i-- - dAtA[i] = 0x1a + if len(m.Service) > 0 { + for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Service[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } } - if len(m.Verkey) > 0 { - i -= len(m.Verkey) - copy(dAtA[i:], m.Verkey) - i = encodeVarintTx(dAtA, i, uint64(len(m.Verkey))) - i-- - dAtA[i] = 0x12 + if len(m.AlsoKnownAs) > 0 { + for iNdEx := len(m.AlsoKnownAs) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AlsoKnownAs[iNdEx]) + copy(dAtA[i:], m.AlsoKnownAs[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AlsoKnownAs[iNdEx]))) + i-- + dAtA[i] = 0x4a + } + } + if len(m.KeyAgreement) > 0 { + for iNdEx := len(m.KeyAgreement) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.KeyAgreement[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.CapabilityDelegation) > 0 { + for iNdEx := len(m.CapabilityDelegation) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CapabilityDelegation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.CapabilityInvocation) > 0 { + for iNdEx := len(m.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CapabilityInvocation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.AssertionMethod) > 0 { + for iNdEx := len(m.AssertionMethod) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssertionMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.Authentication) > 0 { + for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Authentication[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.VerificationMethod) > 0 { + for iNdEx := len(m.VerificationMethod) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VerificationMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.Controller) > 0 { + for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Controller[iNdEx]) + copy(dAtA[i:], m.Controller[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Controller[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Id) > 0 { i -= len(m.Id) @@ -1143,9 +1508,11 @@ func (m *MsgWriteRequest) Size() (n int) { l = m.Data.Size() n += 1 + l + sovTx(uint64(l)) } - l = len(m.Author) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Authors) > 0 { + for _, s := range m.Authors { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } } if len(m.Signatures) > 0 { for k, v := range m.Signatures { @@ -1164,6 +1531,10 @@ func (m *MsgCreateCredDef) Size() (n int) { } var l int _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } l = len(m.SchemaId) if l > 0 { n += 1 + l + sovTx(uint64(l)) @@ -1176,8 +1547,8 @@ func (m *MsgCreateCredDef) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Value) - if l > 0 { + if m.Value != nil { + l = m.Value.Size() n += 1 + l + sovTx(uint64(l)) } return n @@ -1202,6 +1573,10 @@ func (m *MsgCreateSchema) Size() (n int) { } var l int _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } l = len(m.Name) if l > 0 { n += 1 + l + sovTx(uint64(l)) @@ -1242,31 +1617,64 @@ func (m *MsgCreateDid) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Verkey) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.Controller) > 0 { + for _, s := range m.Controller { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } } - l = len(m.Alias) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.VerificationMethod) > 0 { + for _, e := range m.VerificationMethod { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - return n -} - -func (m *MsgCreateDidResponse) Size() (n int) { - if m == nil { - return 0 + if len(m.Authentication) > 0 { + for _, e := range m.Authentication { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.AssertionMethod) > 0 { + for _, e := range m.AssertionMethod { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CapabilityInvocation) > 0 { + for _, e := range m.CapabilityInvocation { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CapabilityDelegation) > 0 { + for _, e := range m.CapabilityDelegation { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.KeyAgreement) > 0 { + for _, e := range m.KeyAgreement { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.AlsoKnownAs) > 0 { + for _, s := range m.AlsoKnownAs { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.Service) > 0 { + for _, e := range m.Service { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } return n } -func (m *MsgUpdateDid) Size() (n int) { +func (m *MsgCreateDidResponse) Size() (n int) { if m == nil { return 0 } @@ -1276,14 +1684,73 @@ func (m *MsgUpdateDid) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Verkey) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateDid) Size() (n int) { + if m == nil { + return 0 } - l = len(m.Alias) + var l int + _ = l + l = len(m.Id) if l > 0 { n += 1 + l + sovTx(uint64(l)) } + if len(m.Controller) > 0 { + for _, s := range m.Controller { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.VerificationMethod) > 0 { + for _, e := range m.VerificationMethod { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.Authentication) > 0 { + for _, e := range m.Authentication { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.AssertionMethod) > 0 { + for _, e := range m.AssertionMethod { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CapabilityInvocation) > 0 { + for _, e := range m.CapabilityInvocation { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CapabilityDelegation) > 0 { + for _, e := range m.CapabilityDelegation { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.KeyAgreement) > 0 { + for _, e := range m.KeyAgreement { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.AlsoKnownAs) > 0 { + for _, s := range m.AlsoKnownAs { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.Service) > 0 { + for _, e := range m.Service { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } return n } @@ -1373,7 +1840,7 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Author", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Authors", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1401,7 +1868,7 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Author = string(dAtA[iNdEx:postIndex]) + m.Authors = append(m.Authors, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 3: if wireType != 2 { @@ -1582,7 +2049,7 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SchemaId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1610,11 +2077,11 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SchemaId = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Tag", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SchemaId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1642,11 +2109,11 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Tag = string(dAtA[iNdEx:postIndex]) + m.SchemaId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SignatureType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Tag", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1674,11 +2141,11 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SignatureType = string(dAtA[iNdEx:postIndex]) + m.Tag = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SignatureType", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1706,7 +2173,43 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Value = string(dAtA[iNdEx:postIndex]) + m.SignatureType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Value == nil { + m.Value = &types.Any{} + } + if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -1841,6 +2344,38 @@ func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } @@ -1872,7 +2407,7 @@ func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { } m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } @@ -1904,7 +2439,7 @@ func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { } m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AttrNames", wireType) } @@ -2102,7 +2637,7 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Verkey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2130,13 +2665,13 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Verkey = string(dAtA[iNdEx:postIndex]) + m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field VerificationMethod", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2146,79 +2681,65 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Alias = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { + m.VerificationMethod = append(m.VerificationMethod, &VerificationMethod{}) + if err := m.VerificationMethod[len(m.VerificationMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgCreateDidResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx + if msglen < 0 { + return ErrInvalidLengthTx } - if iNdEx >= l { + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + m.Authentication = append(m.Authentication, &types.Any{}) + if err := m.Authentication[len(m.Authentication)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateDidResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateDidResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssertionMethod", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2228,47 +2749,299 @@ func (m *MsgCreateDidResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { + m.AssertionMethod = append(m.AssertionMethod, &types.Any{}) + if err := m.AssertionMethod[len(m.AssertionMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CapabilityInvocation", wireType) } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { - l := len(dAtA) + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CapabilityInvocation = append(m.CapabilityInvocation, &types.Any{}) + if err := m.CapabilityInvocation[len(m.CapabilityInvocation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CapabilityDelegation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CapabilityDelegation = append(m.CapabilityDelegation, &types.Any{}) + if err := m.CapabilityDelegation[len(m.CapabilityDelegation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KeyAgreement", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KeyAgreement = append(m.KeyAgreement, &types.Any{}) + if err := m.KeyAgreement[len(m.KeyAgreement)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AlsoKnownAs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AlsoKnownAs = append(m.AlsoKnownAs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Service = append(m.Service, &DidService{}) + if err := m.Service[len(m.Service)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateDidResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateDidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateDidResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { + l := len(dAtA) iNdEx := 0 for iNdEx < l { preIndex := iNdEx @@ -2330,7 +3103,7 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Verkey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2358,11 +3131,215 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Verkey = string(dAtA[iNdEx:postIndex]) + m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field VerificationMethod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VerificationMethod = append(m.VerificationMethod, &VerificationMethod{}) + if err := m.VerificationMethod[len(m.VerificationMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authentication = append(m.Authentication, &types.Any{}) + if err := m.Authentication[len(m.Authentication)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssertionMethod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssertionMethod = append(m.AssertionMethod, &types.Any{}) + if err := m.AssertionMethod[len(m.AssertionMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CapabilityInvocation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CapabilityInvocation = append(m.CapabilityInvocation, &types.Any{}) + if err := m.CapabilityInvocation[len(m.CapabilityInvocation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CapabilityDelegation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CapabilityDelegation = append(m.CapabilityDelegation, &types.Any{}) + if err := m.CapabilityDelegation[len(m.CapabilityDelegation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KeyAgreement", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KeyAgreement = append(m.KeyAgreement, &types.Any{}) + if err := m.KeyAgreement[len(m.KeyAgreement)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AlsoKnownAs", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2390,7 +3367,41 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Alias = string(dAtA[iNdEx:postIndex]) + m.AlsoKnownAs = append(m.AlsoKnownAs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Service = append(m.Service, &DidService{}) + if err := m.Service[len(m.Service)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex From 34ba388a5098a9c0fecec4aebcba71d35999c4ad Mon Sep 17 00:00:00 2001 From: toktar Date: Mon, 27 Sep 2021 16:44:47 +0300 Subject: [PATCH 09/74] Update keeper files for the new prototypes --- x/cheqd/handler.go | 19 ++++---- x/cheqd/keeper/cred_def.go | 5 +- x/cheqd/keeper/did.go | 14 ++++-- x/cheqd/keeper/msg_server_cred_def.go | 63 +++++------------------- x/cheqd/keeper/msg_server_did.go | 69 +++++++++++++++------------ x/cheqd/keeper/msg_server_schema.go | 61 +++++------------------ x/cheqd/keeper/query_cred_def.go | 19 +------- x/cheqd/keeper/query_did.go | 18 +------ x/cheqd/keeper/query_schema.go | 19 +------- x/cheqd/keeper/schema.go | 4 +- x/cheqd/utils/utils.go | 18 +++++++ 11 files changed, 108 insertions(+), 201 deletions(-) create mode 100644 x/cheqd/utils/utils.go diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index e6201bfeb..335641268 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -2,7 +2,7 @@ package cheqd import ( "fmt" - "google.golang.org/protobuf/types/known/anypb" + "reflect" "github.com/cheqd/cheqd-node/x/cheqd/keeper" "github.com/cheqd/cheqd-node/x/cheqd/types" @@ -21,23 +21,22 @@ func NewHandler(k keeper.Keeper) sdk.Handler { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } - m, err := anypb.New(parsed_msg.Data) switch parsed_msg.Data.TypeUrl { // this line is used by starport scaffolding # 1 - case types.MsgCreateCredDef.Type(): - res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), msg) + case reflect.TypeOf(types.MsgCreateCredDef{}).Name(): + res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), parsed_msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgCreateSchema: - res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), msg) + case reflect.TypeOf(types.MsgCreateSchema{}).Name(): + res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), parsed_msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgCreateDid: - res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), msg) + case reflect.TypeOf(types.MsgCreateDid{}).Name(): + res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), parsed_msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgUpdateDid: - res, err := msgServer.UpdateDid(sdk.WrapSDKContext(ctx), msg) + case reflect.TypeOf(types.MsgUpdateDid{}).Name(): + res, err := msgServer.UpdateDid(sdk.WrapSDKContext(ctx), parsed_msg) return sdk.WrapServiceResult(ctx, res, err) default: diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index f20219fce..83151cc13 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -3,6 +3,7 @@ package keeper import ( "encoding/binary" "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cheqd/cheqd-node/x/cheqd/utils" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "strconv" @@ -44,7 +45,7 @@ func (k Keeper) AppendCredDef( schemaId string, tag string, signatureType string, - value *types.Any, + credDefValue *types.Any, ) string { // Create the credDef count := k.GetCredDefCount(ctx) @@ -53,7 +54,7 @@ func (k Keeper) AppendCredDef( SchemaId: schemaId, Tag: tag, SignatureType: signatureType, - Value: value, + Value: credDefValue, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index c99f9b5a7..c0680dcc1 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -3,6 +3,7 @@ package keeper import ( "encoding/binary" "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cheqd/cheqd-node/x/cheqd/utils" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "strconv" @@ -42,15 +43,15 @@ func (k Keeper) AppendDid( ctx sdk.Context, id string, controller []string, - verificationMethod []*VerificationMethod, + verificationMethod []*types.VerificationMethod, authentication []*types.Any, assertionMethod []*types.Any, capabilityInvocation []*types.Any, capabilityDelegation []*types.Any, keyAgreement []*types.Any, alsoKnownAs []string, - service []*DidService, -) uint64 { + service []*types.DidService, +) string { // Create the did count := k.GetDidCount(ctx) var did = types.Did{ @@ -73,7 +74,7 @@ func (k Keeper) AppendDid( // Update did count k.SetDidCount(ctx, count+1) - return count + return id } // SetDid set a specific did in the store @@ -91,6 +92,11 @@ func (k Keeper) GetDid(ctx sdk.Context, id string) types.Did { return did } +// areOwners returns a bool are received authors can control this DID +func (k Keeper) areDidOwners(ctx sdk.Context, id string, authors []string) bool { + return utils.CompareOwners(authors, k.GetDid(ctx, id).Controller) +} + // HasDid checks if the did exists in the store func (k Keeper) HasDid(ctx sdk.Context, id string) bool { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 967858254..b9cd4f77b 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -9,60 +9,23 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgCreateCredDef) (*types.MsgCreateCredDefResponse, error) { +func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateCredDefResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - id := k.AppendCredDef( + credDefMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateCredDef) + if !isMsgIdentity { + errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) + return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + } + k.AppendCredDef( ctx, - msg.Id, - msg.SchemaId, - msg.Tag, - msg.SignatureType, - msg.Value, + credDefMsg.Id, + credDefMsg.SchemaId, + credDefMsg.Tag, + credDefMsg.SignatureType, + credDefMsg.Value, ) return &types.MsgCreateCredDefResponse{ - Id: id, + Id: credDefMsg.Id, }, nil } - -func (k msgServer) UpdateCredDef(goCtx context.Context, msg *types.MsgUpdateCredDef) (*types.MsgUpdateCredDefResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - var credDef = types.CredDef{ - Creator: msg.Creator, - Id: msg.Id, - Schema_id: msg.Schema_id, - Tag: msg.Tag, - SignatureType: msg.SignatureType, - Value: msg.Value, - } - - // Checks that the element exists - if !k.HasCredDef(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - - // Checks if the the msg sender is the same as the current owner - if msg.Creator != k.GetCredDefOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.SetCredDef(ctx, credDef) - - return &types.MsgUpdateCredDefResponse{}, nil -} - -func (k msgServer) DeleteCredDef(goCtx context.Context, msg *types.MsgDeleteCredDef) (*types.MsgDeleteCredDefResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - if !k.HasCredDef(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - if msg.Creator != k.GetCredDefOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.RemoveCredDef(ctx, msg.Id) - - return &types.MsgDeleteCredDefResponse{}, nil -} diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 21ddd0cb5..871915cf4 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -9,38 +9,60 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgCreateDid) (*types.MsgCreateDidResponse, error) { +func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateDidResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - - id := k.AppendDid( + didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateDid) + if !isMsgIdentity { + errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) + return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + } + k.AppendDid( ctx, - msg.Creator, - msg.Verkey, - msg.Alias, + didMsg.Id, + didMsg.Controller, + didMsg.VerificationMethod, + didMsg.Authentication, + didMsg.AssertionMethod, + didMsg.CapabilityInvocation, + didMsg.CapabilityDelegation, + didMsg.KeyAgreement, + didMsg.AlsoKnownAs, + didMsg.Service, ) return &types.MsgCreateDidResponse{ - Id: id, + Id: didMsg.Id, }, nil } -func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgUpdateDid) (*types.MsgUpdateDidResponse, error) { +func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgUpdateDidResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - + didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgUpdateDid) + if !isMsgIdentity { + errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) + return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + } var did = types.Did{ - Creator: msg.Creator, - Id: msg.Id, - Verkey: msg.Verkey, - Alias: msg.Alias, + Id: didMsg.Id, + Controller: didMsg.Controller, + VerificationMethod: didMsg.VerificationMethod, + Authentication: didMsg.Authentication, + AssertionMethod: didMsg.AssertionMethod, + CapabilityInvocation: didMsg.CapabilityInvocation, + CapabilityDelegation: didMsg.CapabilityDelegation, + KeyAgreement: didMsg.KeyAgreement, + AlsoKnownAs: didMsg.AlsoKnownAs, + Service: didMsg.Service, } // Checks that the element exists - if !k.HasDid(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + if !k.HasDid(ctx, didMsg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) } // Checks if the the msg sender is the same as the current owner - if msg.Creator != k.GetDidOwner(ctx, msg.Id) { + + if !k.areDidOwners(ctx, didMsg.Id, msg.Authors) { return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") } @@ -48,18 +70,3 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgUpdateDid) (*t return &types.MsgUpdateDidResponse{}, nil } - -func (k msgServer) DeleteDid(goCtx context.Context, msg *types.MsgDeleteDid) (*types.MsgDeleteDidResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - if !k.HasDid(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - if msg.Creator != k.GetDidOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.RemoveDid(ctx, msg.Id) - - return &types.MsgDeleteDidResponse{}, nil -} diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 556c002ba..1add87d0e 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -9,59 +9,22 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgCreateSchema) (*types.MsgCreateSchemaResponse, error) { +func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateSchemaResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - - id := k.AppendSchema( + schemaMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateSchema) + if !isMsgIdentity { + errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) + return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + } + k.AppendSchema( ctx, - msg.Creator, - msg.Name, - msg.Version, - msg.AttrNames, + schemaMsg.Id, + schemaMsg.Name, + schemaMsg.Version, + schemaMsg.AttrNames, ) return &types.MsgCreateSchemaResponse{ - Id: id, + Id: schemaMsg.Id, }, nil } - -func (k msgServer) UpdateSchema(goCtx context.Context, msg *types.MsgUpdateSchema) (*types.MsgUpdateSchemaResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - var schema = types.Schema{ - Creator: msg.Creator, - Id: msg.Id, - Name: msg.Name, - Version: msg.Version, - AttrNames: msg.AttrNames, - } - - // Checks that the element exists - if !k.HasSchema(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - - // Checks if the the msg sender is the same as the current owner - if msg.Creator != k.GetSchemaOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.SetSchema(ctx, schema) - - return &types.MsgUpdateSchemaResponse{}, nil -} - -func (k msgServer) DeleteSchema(goCtx context.Context, msg *types.MsgDeleteSchema) (*types.MsgDeleteSchemaResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - if !k.HasSchema(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) - } - if msg.Creator != k.GetSchemaOwner(ctx, msg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - - k.RemoveSchema(ctx, msg.Id) - - return &types.MsgDeleteSchemaResponse{}, nil -} diff --git a/x/cheqd/keeper/query_cred_def.go b/x/cheqd/keeper/query_cred_def.go index 9dd0d2ddb..bf498661a 100644 --- a/x/cheqd/keeper/query_cred_def.go +++ b/x/cheqd/keeper/query_cred_def.go @@ -4,26 +4,9 @@ import ( "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "strconv" ) -func listCredDef(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - msgs := keeper.GetAllCredDef(ctx) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func getCredDef(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - id, err := strconv.ParseUint(key, 10, 64) - if err != nil { - return nil, err - } - +func getCredDef(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { if !keeper.HasCredDef(ctx, id) { return nil, sdkerrors.ErrKeyNotFound } diff --git a/x/cheqd/keeper/query_did.go b/x/cheqd/keeper/query_did.go index 1296faff2..14140f944 100644 --- a/x/cheqd/keeper/query_did.go +++ b/x/cheqd/keeper/query_did.go @@ -4,25 +4,9 @@ import ( "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "strconv" ) -func listDid(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - msgs := keeper.GetAllDid(ctx) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func getDid(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - id, err := strconv.ParseUint(key, 10, 64) - if err != nil { - return nil, err - } +func getDid(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { if !keeper.HasDid(ctx, id) { return nil, sdkerrors.ErrKeyNotFound diff --git a/x/cheqd/keeper/query_schema.go b/x/cheqd/keeper/query_schema.go index df4956e99..87368c444 100644 --- a/x/cheqd/keeper/query_schema.go +++ b/x/cheqd/keeper/query_schema.go @@ -4,26 +4,9 @@ import ( "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "strconv" ) -func listSchema(ctx sdk.Context, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - msgs := keeper.GetAllSchema(ctx) - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msgs) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} - -func getSchema(ctx sdk.Context, key string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - id, err := strconv.ParseUint(key, 10, 64) - if err != nil { - return nil, err - } - +func getSchema(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { if !keeper.HasSchema(ctx, id) { return nil, sdkerrors.ErrKeyNotFound } diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index 2f910f904..ef9ba6aac 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -43,7 +43,7 @@ func (k Keeper) AppendSchema( name string, version string, attrNames []string, -) uint64 { +) string { // Create the schema count := k.GetSchemaCount(ctx) var schema = types.Schema{ @@ -60,7 +60,7 @@ func (k Keeper) AppendSchema( // Update schema count k.SetSchemaCount(ctx, count+1) - return count + return id } // SetSchema set a specific schema in the store diff --git a/x/cheqd/utils/utils.go b/x/cheqd/utils/utils.go new file mode 100644 index 000000000..a6472da32 --- /dev/null +++ b/x/cheqd/utils/utils.go @@ -0,0 +1,18 @@ +package utils + +func CompareOwners(authors []string, controllers []string) bool { + type void struct{} + var member void + + controllerSet := make(map[string]void) + for _, author := range authors { + controllerSet[author] = member + } + result := true + for _, controller := range controllers { + _, exists := controllerSet[controller] + result = result && exists + } + + return result +} From 6772661737a41fe004c1c9829b4d7d5f68da2451 Mon Sep 17 00:00:00 2001 From: Andrew Nikitin Date: Wed, 29 Sep 2021 12:50:00 +0300 Subject: [PATCH 10/74] Move CredDef to oneof feature and verification methods to list of string Signed-off-by: Andrew Nikitin --- proto/cheqd/credDef.proto | 5 +- proto/cheqd/did.proto | 10 +- x/cheqd/types/credDef.pb.go | 233 +++++++++++++++++++++++++++-------- x/cheqd/types/did.pb.go | 234 +++++++++++++++--------------------- x/cheqd/types/schema.pb.go | 19 ++- x/cheqd/types/tx.pb.go | 97 ++++++++------- 6 files changed, 351 insertions(+), 247 deletions(-) diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index a1f8347c0..b82ff99c6 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -12,7 +12,10 @@ message CredDef { string schema_id = 3; string tag = 4; string signatureType = 5; - google.protobuf.Any value = 6; + oneof value { + CredDefValue cl_type = 7; + google.protobuf.Any any_type = 6; + } } message CredDefValue { diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index 8568470c2..f8ecd14aa 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -10,11 +10,11 @@ message Did { string id = 1; repeated string controller = 2; //optional repeated VerificationMethod verificationMethod = 3; // optional - repeated google.protobuf.Any authentication = 4; // optional - repeated google.protobuf.Any assertionMethod = 5; // optional - repeated google.protobuf.Any capabilityInvocation = 6; // optional - repeated google.protobuf.Any capabilityDelegation = 7; // optional - repeated google.protobuf.Any keyAgreement = 8; // optional + repeated string authentication = 4; // optional + repeated string assertionMethod = 5; // optional + repeated string capabilityInvocation = 6; // optional + repeated string capabilityDelegation = 7; // optional + repeated string keyAgreement = 8; // optional repeated string alsoKnownAs = 9; // optional repeated DidService service = 10; // optional } diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index ef9c1255e..079405bf6 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -25,12 +25,15 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type CredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` - SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,5,opt,name=signatureType,json=signatureType,proto3" json:"signatureType,omitempty"` - Value *types.Any `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` + SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,5,opt,name=signatureType,proto3" json:"signatureType,omitempty"` + // Types that are valid to be assigned to Value: + // *CredDef_ClType + // *CredDef_AnyType + Value isCredDef_Value `protobuf_oneof:"value"` } func (m *CredDef) Reset() { *m = CredDef{} } @@ -66,6 +69,29 @@ func (m *CredDef) XXX_DiscardUnknown() { var xxx_messageInfo_CredDef proto.InternalMessageInfo +type isCredDef_Value interface { + isCredDef_Value() + MarshalTo([]byte) (int, error) + Size() int +} + +type CredDef_ClType struct { + ClType *CredDefValue `protobuf:"bytes,7,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` +} +type CredDef_AnyType struct { + AnyType *types.Any `protobuf:"bytes,6,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` +} + +func (*CredDef_ClType) isCredDef_Value() {} +func (*CredDef_AnyType) isCredDef_Value() {} + +func (m *CredDef) GetValue() isCredDef_Value { + if m != nil { + return m.Value + } + return nil +} + func (m *CredDef) GetId() string { if m != nil { return m.Id @@ -101,13 +127,28 @@ func (m *CredDef) GetSignatureType() string { return "" } -func (m *CredDef) GetValue() *types.Any { - if m != nil { - return m.Value +func (m *CredDef) GetClType() *CredDefValue { + if x, ok := m.GetValue().(*CredDef_ClType); ok { + return x.ClType } return nil } +func (m *CredDef) GetAnyType() *types.Any { + if x, ok := m.GetValue().(*CredDef_AnyType); ok { + return x.AnyType + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*CredDef) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*CredDef_ClType)(nil), + (*CredDef_AnyType)(nil), + } +} + type CredDefValue struct { Primary map[string]*types.Any `protobuf:"bytes,1,rep,name=primary,proto3" json:"primary,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Revocation map[string]*types.Any `protobuf:"bytes,2,rep,name=revocation,proto3" json:"revocation,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` @@ -170,32 +211,34 @@ func init() { func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } var fileDescriptor_bc069326307a6009 = []byte{ - // 397 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x52, 0x5f, 0xab, 0xd3, 0x30, - 0x1c, 0x5d, 0x5a, 0xef, 0x9d, 0xcb, 0xae, 0x57, 0x89, 0x17, 0x8c, 0x15, 0x4a, 0xb9, 0x20, 0x54, - 0xc1, 0x14, 0x2a, 0x82, 0xf8, 0xa6, 0xd3, 0x07, 0xc1, 0x87, 0x51, 0xff, 0x3c, 0xf8, 0x32, 0xb2, - 0x26, 0x6b, 0x83, 0x5b, 0x53, 0xd3, 0x74, 0xd8, 0x6f, 0xe1, 0x97, 0xf1, 0x3b, 0xf8, 0xb8, 0x47, - 0xf1, 0x49, 0xb6, 0x2f, 0x22, 0x49, 0xba, 0x39, 0x04, 0x51, 0xf0, 0xa5, 0x3d, 0x39, 0xf9, 0x9d, - 0xf3, 0xcb, 0xef, 0x24, 0xf0, 0x66, 0x5e, 0xf2, 0x8f, 0x2c, 0xc9, 0x15, 0x67, 0xcf, 0xf9, 0x82, - 0xd4, 0x4a, 0x6a, 0x89, 0x6e, 0x59, 0x52, 0x30, 0x62, 0xff, 0x95, 0x64, 0xdc, 0xa1, 0xe0, 0x76, - 0x21, 0x65, 0xb1, 0xe4, 0x89, 0x2d, 0x9b, 0xb7, 0x8b, 0x84, 0x56, 0x9d, 0xd3, 0x04, 0x17, 0x85, - 0x2c, 0xa4, 0x85, 0x89, 0x41, 0x8e, 0xbd, 0xfc, 0x02, 0xe0, 0x70, 0xe2, 0xbc, 0xd1, 0x39, 0xf4, - 0x04, 0xc3, 0x20, 0x02, 0xf1, 0x28, 0xf3, 0x04, 0x43, 0x18, 0x0e, 0x69, 0xab, 0x4b, 0xa9, 0x1a, - 0xec, 0x45, 0x7e, 0x3c, 0xca, 0xf6, 0x4b, 0x74, 0x07, 0x8e, 0x9a, 0xbc, 0xe4, 0x2b, 0x3a, 0x13, - 0x0c, 0xfb, 0x56, 0x70, 0xd5, 0x11, 0x2f, 0x19, 0xba, 0x01, 0x7d, 0x4d, 0x0b, 0x7c, 0xc5, 0xd2, - 0x06, 0xa2, 0xbb, 0xf0, 0xbc, 0x11, 0x45, 0x45, 0x75, 0xab, 0xf8, 0x4c, 0x77, 0x35, 0xc7, 0x27, - 0x76, 0xf3, 0xda, 0x81, 0x7d, 0xd3, 0xd5, 0x1c, 0xdd, 0x87, 0x27, 0x6b, 0xba, 0x6c, 0x39, 0x3e, - 0x8d, 0x40, 0x3c, 0x4e, 0x2f, 0x88, 0x1b, 0x86, 0xec, 0x87, 0x21, 0x4f, 0xab, 0x2e, 0x73, 0x25, - 0x97, 0xdf, 0x3d, 0x78, 0xd6, 0x9f, 0xfb, 0x9d, 0x21, 0xd0, 0x2b, 0x38, 0xac, 0x95, 0x58, 0x51, - 0xd5, 0x61, 0x10, 0xf9, 0xf1, 0x38, 0x4d, 0xc9, 0x1f, 0x42, 0x22, 0xc7, 0x3a, 0x32, 0x75, 0xa2, - 0x17, 0x95, 0x56, 0x5d, 0xb6, 0xb7, 0x40, 0x6f, 0x21, 0x54, 0x7c, 0x2d, 0x73, 0xaa, 0x85, 0xac, - 0xec, 0xf4, 0xe3, 0xf4, 0xd1, 0xbf, 0x19, 0x66, 0x07, 0x9d, 0xf3, 0x3c, 0x32, 0x0a, 0xa6, 0xf0, - 0xec, 0xb8, 0x9f, 0x89, 0xea, 0x03, 0xef, 0xfa, 0xc8, 0x0d, 0xfc, 0x95, 0x81, 0xf7, 0xd7, 0x0c, - 0x9e, 0x78, 0x8f, 0x41, 0xf0, 0x1a, 0x5e, 0xff, 0xad, 0xe1, 0xff, 0x9b, 0x3e, 0x9b, 0x7c, 0xdd, - 0x86, 0x60, 0xb3, 0x0d, 0xc1, 0x8f, 0x6d, 0x08, 0x3e, 0xef, 0xc2, 0xc1, 0x66, 0x17, 0x0e, 0xbe, - 0xed, 0xc2, 0xc1, 0xfb, 0x7b, 0x85, 0xd0, 0x65, 0x3b, 0x27, 0xb9, 0x5c, 0x25, 0xfd, 0xc3, 0x34, - 0xdf, 0x07, 0x26, 0x8c, 0xe4, 0x53, 0x4f, 0x99, 0x1b, 0x6e, 0xe6, 0xa7, 0xd6, 0xfd, 0xe1, 0xcf, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x02, 0xc5, 0x0a, 0xc1, 0x02, 0x00, 0x00, + // 430 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0x4d, 0x8b, 0x13, 0x31, + 0x1c, 0xc6, 0x67, 0xa6, 0x6e, 0x67, 0xfb, 0xef, 0xfa, 0x42, 0x5c, 0x30, 0x56, 0x18, 0xca, 0xa2, + 0x50, 0x05, 0x33, 0x58, 0x11, 0xc4, 0x93, 0xee, 0x2a, 0xac, 0xe0, 0x61, 0x19, 0x5f, 0x0e, 0x5e, + 0x96, 0x74, 0x92, 0x9d, 0x06, 0xdb, 0xa4, 0x66, 0x32, 0x8b, 0xf9, 0x02, 0x9e, 0xfd, 0x58, 0x1e, + 0xf7, 0x28, 0x9e, 0xa4, 0xfd, 0x22, 0x92, 0x64, 0x2a, 0x55, 0x58, 0x28, 0x78, 0x99, 0x79, 0xe6, + 0x49, 0x9e, 0x5f, 0x92, 0x27, 0x03, 0x37, 0xcb, 0x29, 0xff, 0xcc, 0xf2, 0x52, 0x73, 0xf6, 0x92, + 0x9f, 0x91, 0x85, 0x56, 0x46, 0xa1, 0x5b, 0xde, 0x14, 0x8c, 0xf8, 0xb7, 0x54, 0x8c, 0x07, 0x35, + 0xb8, 0x5d, 0x29, 0x55, 0xcd, 0x78, 0xee, 0xa7, 0x4d, 0x9a, 0xb3, 0x9c, 0x4a, 0x1b, 0x32, 0x83, + 0xfd, 0x4a, 0x55, 0xca, 0xcb, 0xdc, 0xa9, 0xe0, 0x1e, 0x7c, 0x4d, 0x20, 0x3d, 0x0a, 0x6c, 0x74, + 0x0d, 0x12, 0xc1, 0x70, 0x3c, 0x8c, 0x47, 0xbd, 0x22, 0x11, 0x0c, 0x61, 0x48, 0x69, 0x63, 0xa6, + 0x4a, 0xd7, 0x38, 0x19, 0x76, 0x46, 0xbd, 0x62, 0xfd, 0x89, 0xee, 0x40, 0xaf, 0x2e, 0xa7, 0x7c, + 0x4e, 0x4f, 0x05, 0xc3, 0x1d, 0x1f, 0xd8, 0x0d, 0xc6, 0x6b, 0x86, 0x6e, 0x40, 0xc7, 0xd0, 0x0a, + 0x5f, 0xf1, 0xb6, 0x93, 0xe8, 0x2e, 0x5c, 0xad, 0x45, 0x25, 0xa9, 0x69, 0x34, 0x7f, 0x67, 0x17, + 0x1c, 0xef, 0xf8, 0xb1, 0xbf, 0x4d, 0xf4, 0x1c, 0xd2, 0x72, 0x76, 0x6a, 0xdc, 0x78, 0x3a, 0x8c, + 0x47, 0xfd, 0xf1, 0x3d, 0x72, 0xc9, 0x31, 0x49, 0xbb, 0xe3, 0x0f, 0x74, 0xd6, 0xf0, 0xe3, 0xa8, + 0xe8, 0x96, 0x33, 0x4f, 0x78, 0x04, 0xbb, 0x54, 0xda, 0x80, 0xe8, 0x7a, 0xc4, 0x3e, 0x09, 0x85, + 0x90, 0x75, 0x21, 0xe4, 0x85, 0xb4, 0xc7, 0x51, 0x91, 0x52, 0x69, 0x5d, 0xe4, 0x30, 0x85, 0x9d, + 0x73, 0x47, 0x39, 0xf8, 0x99, 0xc0, 0xde, 0x26, 0x16, 0xbd, 0x81, 0x74, 0xa1, 0xc5, 0x9c, 0x6a, + 0x8b, 0xe3, 0x61, 0x67, 0xd4, 0x1f, 0x8f, 0xb7, 0xda, 0x0e, 0x39, 0x09, 0xa1, 0x57, 0xd2, 0x68, + 0x5b, 0xac, 0x11, 0xe8, 0x3d, 0x80, 0xe6, 0xe7, 0xaa, 0xa4, 0x46, 0x28, 0xe9, 0xeb, 0xec, 0x8f, + 0x9f, 0x6c, 0x07, 0x2c, 0xfe, 0xe4, 0x02, 0x73, 0x03, 0x34, 0x38, 0x81, 0xbd, 0xcd, 0xf5, 0x5c, + 0xf7, 0x9f, 0xb8, 0x6d, 0xef, 0xd0, 0x49, 0xf4, 0xa0, 0x3d, 0x20, 0x4e, 0x2e, 0x2f, 0xa4, 0x08, + 0x53, 0x9e, 0x25, 0x4f, 0xe3, 0xc1, 0x5b, 0xb8, 0xfe, 0xcf, 0x82, 0xff, 0x0f, 0x3d, 0x3c, 0xfa, + 0xbe, 0xcc, 0xe2, 0x8b, 0x65, 0x16, 0xff, 0x5a, 0x66, 0xf1, 0xb7, 0x55, 0x16, 0x5d, 0xac, 0xb2, + 0xe8, 0xc7, 0x2a, 0x8b, 0x3e, 0xde, 0xaf, 0x84, 0x99, 0x36, 0x13, 0x52, 0xaa, 0x79, 0xde, 0xfe, + 0xe9, 0xee, 0xf9, 0xd0, 0x95, 0x91, 0x7f, 0x69, 0x2d, 0x77, 0xa1, 0xf5, 0xa4, 0xeb, 0xe9, 0x8f, + 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xad, 0x74, 0x6c, 0x17, 0x12, 0x03, 0x00, 0x00, } func (m *CredDef) Marshal() (dAtA []byte, err error) { @@ -220,15 +263,12 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = l if m.Value != nil { { - size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { + size := m.Value.Size() + i -= size + if _, err := m.Value.MarshalTo(dAtA[i:]); err != nil { return 0, err } - i -= size - i = encodeVarintCredDef(dAtA, i, uint64(size)) } - i-- - dAtA[i] = 0x32 } if len(m.SignatureType) > 0 { i -= len(m.SignatureType) @@ -270,6 +310,48 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *CredDef_AnyType) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.AnyType != nil { + { + size, err := m.AnyType.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCredDef(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + return len(dAtA) - i, nil +} +func (m *CredDef_ClType) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CredDef_ClType) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ClType != nil { + { + size, err := m.ClType.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCredDef(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + return len(dAtA) - i, nil +} func (m *CredDefValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -385,12 +467,35 @@ func (m *CredDef) Size() (n int) { n += 1 + l + sovCredDef(uint64(l)) } if m.Value != nil { - l = m.Value.Size() - n += 1 + l + sovCredDef(uint64(l)) + n += m.Value.Size() } return n } +func (m *CredDef_AnyType) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AnyType != nil { + l = m.AnyType.Size() + n += 1 + l + sovCredDef(uint64(l)) + } + return n +} +func (m *CredDef_ClType) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ClType != nil { + l = m.ClType.Size() + n += 1 + l + sovCredDef(uint64(l)) + } + return n +} func (m *CredDefValue) Size() (n int) { if m == nil { return 0 @@ -623,7 +728,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AnyType", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -650,12 +755,46 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Value == nil { - m.Value = &types.Any{} + v := &types.Any{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &CredDef_AnyType{v} + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClType", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF } - if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &CredDefValue{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.Value = &CredDef_ClType{v} iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/cheqd/types/did.pb.go b/x/cheqd/types/did.pb.go index 4f0f1f305..2a4962388 100644 --- a/x/cheqd/types/did.pb.go +++ b/x/cheqd/types/did.pb.go @@ -5,7 +5,7 @@ package types import ( fmt "fmt" - types "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/cosmos-sdk/codec/types" _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" io "io" @@ -28,11 +28,11 @@ type Did struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` - Authentication []*types.Any `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` - AssertionMethod []*types.Any `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` - CapabilityInvocation []*types.Any `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` - CapabilityDelegation []*types.Any `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` - KeyAgreement []*types.Any `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` + Authentication []string `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` + AssertionMethod []string `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` + CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` + CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` + KeyAgreement []string `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` } @@ -91,35 +91,35 @@ func (m *Did) GetVerificationMethod() []*VerificationMethod { return nil } -func (m *Did) GetAuthentication() []*types.Any { +func (m *Did) GetAuthentication() []string { if m != nil { return m.Authentication } return nil } -func (m *Did) GetAssertionMethod() []*types.Any { +func (m *Did) GetAssertionMethod() []string { if m != nil { return m.AssertionMethod } return nil } -func (m *Did) GetCapabilityInvocation() []*types.Any { +func (m *Did) GetCapabilityInvocation() []string { if m != nil { return m.CapabilityInvocation } return nil } -func (m *Did) GetCapabilityDelegation() []*types.Any { +func (m *Did) GetCapabilityDelegation() []string { if m != nil { return m.CapabilityDelegation } return nil } -func (m *Did) GetKeyAgreement() []*types.Any { +func (m *Did) GetKeyAgreement() []string { if m != nil { return m.KeyAgreement } @@ -286,40 +286,39 @@ func init() { func init() { proto.RegisterFile("cheqd/did.proto", fileDescriptor_382ab0c0f6b6850e) } var fileDescriptor_382ab0c0f6b6850e = []byte{ - // 514 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xcb, 0x6e, 0xd3, 0x40, - 0x14, 0x8d, 0xed, 0xa4, 0x25, 0xb7, 0x55, 0x03, 0xa3, 0x48, 0x98, 0x2c, 0xac, 0x28, 0x6c, 0x82, - 0x10, 0xb6, 0x04, 0x9b, 0x0a, 0x51, 0x50, 0x20, 0x95, 0x80, 0xaa, 0x12, 0x32, 0x12, 0x8b, 0xb2, - 0x1a, 0x7b, 0x6e, 0x9d, 0x51, 0xdc, 0x99, 0x60, 0x8f, 0x53, 0xfc, 0x17, 0x7c, 0x08, 0xff, 0xc0, - 0x96, 0x65, 0x97, 0x2c, 0x51, 0xf2, 0x23, 0x28, 0x63, 0x87, 0xe6, 0xd5, 0xa8, 0xdd, 0xd8, 0x77, - 0xce, 0xdc, 0x73, 0x7c, 0x1f, 0x47, 0x86, 0x46, 0x38, 0xc0, 0x6f, 0xcc, 0x63, 0x9c, 0xb9, 0xa3, - 0x44, 0x2a, 0x49, 0x1e, 0x6a, 0x80, 0x33, 0x57, 0xbf, 0x85, 0x64, 0x58, 0x44, 0xad, 0x47, 0x91, - 0x94, 0x51, 0x8c, 0x9e, 0x4e, 0x0b, 0xb2, 0x73, 0x8f, 0x8a, 0xbc, 0xe0, 0xb4, 0x9a, 0x91, 0x8c, - 0xa4, 0x0e, 0xbd, 0x59, 0x54, 0xa0, 0x9d, 0x5f, 0x55, 0xb0, 0xfa, 0x9c, 0x91, 0x03, 0x30, 0x39, - 0xb3, 0x8d, 0xb6, 0xd1, 0xad, 0xfb, 0x26, 0x67, 0xc4, 0x01, 0x08, 0xa5, 0x50, 0x89, 0x8c, 0x63, - 0x4c, 0x6c, 0xb3, 0x6d, 0x75, 0xeb, 0xfe, 0x02, 0x42, 0xbe, 0x02, 0x19, 0x63, 0xc2, 0xcf, 0x79, - 0x48, 0x15, 0x97, 0xe2, 0x14, 0xd5, 0x40, 0x32, 0xdb, 0x6a, 0x5b, 0xdd, 0xbd, 0xe7, 0x4f, 0xdd, - 0x1b, 0xca, 0x73, 0xbf, 0xac, 0x51, 0xfc, 0x0d, 0x32, 0xe4, 0x15, 0x1c, 0xd0, 0x4c, 0x0d, 0x50, - 0xa8, 0x12, 0xb7, 0xab, 0x5a, 0xb8, 0xe9, 0x16, 0xed, 0xb9, 0xf3, 0xf6, 0xdc, 0x9e, 0xc8, 0xfd, - 0x95, 0x5c, 0xf2, 0x1a, 0x1a, 0x34, 0x4d, 0x31, 0x59, 0xa8, 0xab, 0xb6, 0x85, 0xbe, 0x9a, 0x4c, - 0xde, 0x43, 0x33, 0xa4, 0x23, 0x1a, 0xf0, 0x98, 0xab, 0xfc, 0x83, 0x18, 0xcb, 0xb2, 0x86, 0x9d, - 0x2d, 0x22, 0x1b, 0x19, 0xcb, 0x4a, 0x7d, 0x8c, 0x31, 0x2a, 0x94, 0x76, 0x6f, 0xa7, 0x74, 0xcd, - 0x20, 0x87, 0xb0, 0x3f, 0xc4, 0xbc, 0x17, 0x25, 0x88, 0x17, 0x28, 0x94, 0x7d, 0x6f, 0x8b, 0xc2, - 0x52, 0x26, 0x69, 0xc3, 0x1e, 0x8d, 0x53, 0x79, 0x22, 0xe4, 0xa5, 0xe8, 0xa5, 0x76, 0x5d, 0x6f, - 0x72, 0x11, 0x22, 0x47, 0xb0, 0x9b, 0x62, 0x32, 0xe6, 0x21, 0xda, 0xa0, 0x65, 0x1f, 0xdf, 0xb8, - 0xbf, 0x3e, 0x67, 0x9f, 0x8b, 0x54, 0x7f, 0xce, 0xe9, 0xfc, 0x34, 0x81, 0xac, 0xef, 0x75, 0xcd, - 0x50, 0x04, 0xaa, 0x2a, 0x1f, 0xa1, 0x6d, 0x6a, 0x44, 0xc7, 0x2b, 0x26, 0xb3, 0xf4, 0xcd, 0xa2, - 0xc9, 0x28, 0xec, 0x8f, 0xb2, 0x20, 0xe6, 0xe1, 0x09, 0xe6, 0x1f, 0x2f, 0x87, 0xa5, 0x0b, 0x8e, - 0xee, 0x60, 0x2f, 0xf7, 0xd3, 0x02, 0xff, 0x58, 0xa8, 0x24, 0xf7, 0x97, 0x24, 0x89, 0x0b, 0xe4, - 0xff, 0xf9, 0x34, 0x8b, 0x15, 0x0f, 0x68, 0x8a, 0x76, 0x4d, 0x97, 0xb2, 0xe1, 0xa6, 0xf5, 0x06, - 0x1e, 0xac, 0x49, 0x92, 0xfb, 0x60, 0x0d, 0x31, 0x2f, 0x9b, 0x9d, 0x85, 0xa4, 0x09, 0xb5, 0x31, - 0x8d, 0xb3, 0x79, 0xbb, 0xc5, 0xe1, 0xa5, 0x79, 0x68, 0x74, 0xce, 0x00, 0xae, 0xa7, 0x78, 0xab, - 0x29, 0x75, 0xa1, 0x51, 0xce, 0xfa, 0x58, 0xb0, 0x91, 0xe4, 0x42, 0x95, 0xa3, 0x5a, 0x85, 0xdf, - 0xbe, 0xfb, 0x3d, 0x71, 0x8c, 0xab, 0x89, 0x63, 0xfc, 0x9d, 0x38, 0xc6, 0x8f, 0xa9, 0x53, 0xb9, - 0x9a, 0x3a, 0x95, 0x3f, 0x53, 0xa7, 0x72, 0xf6, 0x24, 0xe2, 0x6a, 0x90, 0x05, 0x6e, 0x28, 0x2f, - 0xbc, 0xe2, 0x67, 0xa2, 0x9f, 0xcf, 0x66, 0xc3, 0xf3, 0xbe, 0x97, 0xd0, 0xec, 0x6b, 0x69, 0xb0, - 0xa3, 0xcd, 0xf4, 0xe2, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0x55, 0x26, 0x7e, 0x75, 0x04, - 0x00, 0x00, + // 500 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0x86, 0x6b, 0xbb, 0x69, 0xc9, 0xa4, 0x6a, 0x60, 0x15, 0x09, 0x93, 0x83, 0x15, 0x05, 0x09, + 0x05, 0x21, 0x6c, 0x29, 0x5c, 0x10, 0x52, 0x85, 0x0a, 0xe9, 0x01, 0xaa, 0x4a, 0xc8, 0x48, 0x1c, + 0xca, 0x69, 0xed, 0x9d, 0x3a, 0xab, 0xb8, 0xbb, 0xc6, 0x5e, 0xa7, 0xf8, 0x2d, 0x78, 0x10, 0x1e, + 0x84, 0x63, 0xb9, 0x71, 0x44, 0xc9, 0x8b, 0xa0, 0xac, 0x5d, 0xea, 0x38, 0xa9, 0x04, 0x97, 0x64, + 0xf6, 0x9b, 0xf9, 0xc7, 0xb3, 0xff, 0x68, 0xa1, 0x1b, 0x4e, 0xf1, 0x0b, 0xf3, 0x18, 0x67, 0x6e, + 0x92, 0x4a, 0x25, 0xc9, 0x43, 0x0d, 0x38, 0x73, 0xf5, 0xbf, 0x90, 0x0c, 0xcb, 0xa8, 0xff, 0x28, + 0x92, 0x32, 0x8a, 0xd1, 0xd3, 0x65, 0x41, 0x7e, 0xe1, 0x51, 0x51, 0x94, 0x9a, 0x7e, 0x2f, 0x92, + 0x91, 0xd4, 0xa1, 0xb7, 0x8a, 0x4a, 0x3a, 0xfc, 0x69, 0x81, 0x35, 0xe1, 0x8c, 0x1c, 0x82, 0xc9, + 0x99, 0x6d, 0x0c, 0x8c, 0x51, 0xdb, 0x37, 0x39, 0x23, 0x0e, 0x40, 0x28, 0x85, 0x4a, 0x65, 0x1c, + 0x63, 0x6a, 0x9b, 0x03, 0x6b, 0xd4, 0xf6, 0x6b, 0x84, 0x7c, 0x06, 0x32, 0xc7, 0x94, 0x5f, 0xf0, + 0x90, 0x2a, 0x2e, 0xc5, 0x19, 0xaa, 0xa9, 0x64, 0xb6, 0x35, 0xb0, 0x46, 0x9d, 0xf1, 0x33, 0xf7, + 0x8e, 0xf1, 0xdc, 0x4f, 0x1b, 0x12, 0x7f, 0x4b, 0x1b, 0xf2, 0x04, 0x0e, 0x69, 0xae, 0xa6, 0x28, + 0x54, 0xc5, 0xed, 0x5d, 0x3d, 0x40, 0x83, 0x92, 0x11, 0x74, 0x69, 0x96, 0x61, 0x5a, 0x9b, 0xa0, + 0xa5, 0x0b, 0x9b, 0x98, 0x8c, 0xa1, 0x17, 0xd2, 0x84, 0x06, 0x3c, 0xe6, 0xaa, 0x78, 0x27, 0xe6, + 0xb2, 0xea, 0xbb, 0xa7, 0xcb, 0xb7, 0xe6, 0xd6, 0x35, 0x13, 0x8c, 0x31, 0x2a, 0x35, 0xfb, 0x4d, + 0xcd, 0x6d, 0x8e, 0x0c, 0xe1, 0x60, 0x86, 0xc5, 0x71, 0x94, 0x22, 0x5e, 0xa2, 0x50, 0xf6, 0x3d, + 0x5d, 0xbb, 0xc6, 0xc8, 0x00, 0x3a, 0x34, 0xce, 0xe4, 0xa9, 0x90, 0x57, 0xe2, 0x38, 0xb3, 0xdb, + 0xba, 0xa4, 0x8e, 0xc8, 0x11, 0xec, 0x67, 0x98, 0xce, 0x79, 0x88, 0x36, 0x68, 0x47, 0x1f, 0xdf, + 0xe9, 0xe8, 0x84, 0xb3, 0x8f, 0x65, 0xa9, 0x7f, 0xa3, 0x19, 0x7e, 0x37, 0x81, 0x6c, 0x3a, 0xbd, + 0xb1, 0x62, 0x02, 0xbb, 0xaa, 0x48, 0xd0, 0x36, 0x35, 0xd1, 0x71, 0x63, 0xed, 0x96, 0xce, 0xd4, + 0xd7, 0x4e, 0xe1, 0x20, 0xc9, 0x83, 0x98, 0x87, 0xa7, 0x58, 0xbc, 0xbf, 0x9a, 0xe9, 0xbd, 0x74, + 0xc6, 0x47, 0xff, 0xb1, 0x70, 0xf7, 0x43, 0x4d, 0x7f, 0x22, 0x54, 0x5a, 0xf8, 0x6b, 0x2d, 0x89, + 0x0b, 0xe4, 0xef, 0xf9, 0x2c, 0x8f, 0x15, 0x0f, 0x68, 0x86, 0x76, 0x4b, 0x8f, 0xb2, 0x25, 0xd3, + 0x7f, 0x0d, 0x0f, 0x36, 0x5a, 0x92, 0xfb, 0x60, 0xcd, 0xb0, 0xa8, 0x2e, 0xbb, 0x0a, 0x49, 0x0f, + 0x5a, 0x73, 0x1a, 0xe7, 0x37, 0xd7, 0x2d, 0x0f, 0xaf, 0xcc, 0x97, 0xc6, 0xf0, 0x1c, 0xe0, 0xd6, + 0xc5, 0x7f, 0x72, 0x69, 0x04, 0xdd, 0xca, 0xeb, 0x13, 0xc1, 0x12, 0xc9, 0x85, 0xaa, 0xac, 0x6a, + 0xe2, 0x37, 0x6f, 0x7f, 0x2c, 0x1c, 0xe3, 0x7a, 0xe1, 0x18, 0xbf, 0x17, 0x8e, 0xf1, 0x6d, 0xe9, + 0xec, 0x5c, 0x2f, 0x9d, 0x9d, 0x5f, 0x4b, 0x67, 0xe7, 0xfc, 0x69, 0xc4, 0xd5, 0x34, 0x0f, 0xdc, + 0x50, 0x5e, 0x7a, 0xe5, 0xf3, 0xd6, 0xbf, 0xcf, 0x57, 0xe6, 0x79, 0x5f, 0x2b, 0xb4, 0xfa, 0x5a, + 0x16, 0xec, 0xe9, 0xa7, 0xfa, 0xe2, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x65, 0x6c, 0x7e, 0xb5, + 0x07, 0x04, 0x00, 0x00, } func (m *Did) Marshal() (dAtA []byte, err error) { @@ -367,70 +366,45 @@ func (m *Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { } if len(m.KeyAgreement) > 0 { for iNdEx := len(m.KeyAgreement) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.KeyAgreement[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintDid(dAtA, i, uint64(size)) - } + i -= len(m.KeyAgreement[iNdEx]) + copy(dAtA[i:], m.KeyAgreement[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.KeyAgreement[iNdEx]))) i-- dAtA[i] = 0x42 } } if len(m.CapabilityDelegation) > 0 { for iNdEx := len(m.CapabilityDelegation) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.CapabilityDelegation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintDid(dAtA, i, uint64(size)) - } + i -= len(m.CapabilityDelegation[iNdEx]) + copy(dAtA[i:], m.CapabilityDelegation[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.CapabilityDelegation[iNdEx]))) i-- dAtA[i] = 0x3a } } if len(m.CapabilityInvocation) > 0 { for iNdEx := len(m.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.CapabilityInvocation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintDid(dAtA, i, uint64(size)) - } + i -= len(m.CapabilityInvocation[iNdEx]) + copy(dAtA[i:], m.CapabilityInvocation[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.CapabilityInvocation[iNdEx]))) i-- dAtA[i] = 0x32 } } if len(m.AssertionMethod) > 0 { for iNdEx := len(m.AssertionMethod) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.AssertionMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintDid(dAtA, i, uint64(size)) - } + i -= len(m.AssertionMethod[iNdEx]) + copy(dAtA[i:], m.AssertionMethod[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.AssertionMethod[iNdEx]))) i-- dAtA[i] = 0x2a } } if len(m.Authentication) > 0 { for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Authentication[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintDid(dAtA, i, uint64(size)) - } + i -= len(m.Authentication[iNdEx]) + copy(dAtA[i:], m.Authentication[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.Authentication[iNdEx]))) i-- dAtA[i] = 0x22 } @@ -616,32 +590,32 @@ func (m *Did) Size() (n int) { } } if len(m.Authentication) > 0 { - for _, e := range m.Authentication { - l = e.Size() + for _, s := range m.Authentication { + l = len(s) n += 1 + l + sovDid(uint64(l)) } } if len(m.AssertionMethod) > 0 { - for _, e := range m.AssertionMethod { - l = e.Size() + for _, s := range m.AssertionMethod { + l = len(s) n += 1 + l + sovDid(uint64(l)) } } if len(m.CapabilityInvocation) > 0 { - for _, e := range m.CapabilityInvocation { - l = e.Size() + for _, s := range m.CapabilityInvocation { + l = len(s) n += 1 + l + sovDid(uint64(l)) } } if len(m.CapabilityDelegation) > 0 { - for _, e := range m.CapabilityDelegation { - l = e.Size() + for _, s := range m.CapabilityDelegation { + l = len(s) n += 1 + l + sovDid(uint64(l)) } } if len(m.KeyAgreement) > 0 { - for _, e := range m.KeyAgreement { - l = e.Size() + for _, s := range m.KeyAgreement { + l = len(s) n += 1 + l + sovDid(uint64(l)) } } @@ -851,7 +825,7 @@ func (m *Did) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowDid @@ -861,31 +835,29 @@ func (m *Did) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthDid } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthDid } if postIndex > l { return io.ErrUnexpectedEOF } - m.Authentication = append(m.Authentication, &types.Any{}) - if err := m.Authentication[len(m.Authentication)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Authentication = append(m.Authentication, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AssertionMethod", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowDid @@ -895,31 +867,29 @@ func (m *Did) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthDid } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthDid } if postIndex > l { return io.ErrUnexpectedEOF } - m.AssertionMethod = append(m.AssertionMethod, &types.Any{}) - if err := m.AssertionMethod[len(m.AssertionMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AssertionMethod = append(m.AssertionMethod, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CapabilityInvocation", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowDid @@ -929,31 +899,29 @@ func (m *Did) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthDid } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthDid } if postIndex > l { return io.ErrUnexpectedEOF } - m.CapabilityInvocation = append(m.CapabilityInvocation, &types.Any{}) - if err := m.CapabilityInvocation[len(m.CapabilityInvocation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.CapabilityInvocation = append(m.CapabilityInvocation, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CapabilityDelegation", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowDid @@ -963,31 +931,29 @@ func (m *Did) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthDid } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthDid } if postIndex > l { return io.ErrUnexpectedEOF } - m.CapabilityDelegation = append(m.CapabilityDelegation, &types.Any{}) - if err := m.CapabilityDelegation[len(m.CapabilityDelegation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.CapabilityDelegation = append(m.CapabilityDelegation, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field KeyAgreement", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowDid @@ -997,25 +963,23 @@ func (m *Did) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthDid } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthDid } if postIndex > l { return io.ErrUnexpectedEOF } - m.KeyAgreement = append(m.KeyAgreement, &types.Any{}) - if err := m.KeyAgreement[len(m.KeyAgreement)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.KeyAgreement = append(m.KeyAgreement, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 9: if wireType != 2 { diff --git a/x/cheqd/types/schema.pb.go b/x/cheqd/types/schema.pb.go index b9dd04b83..c994ce0de 100644 --- a/x/cheqd/types/schema.pb.go +++ b/x/cheqd/types/schema.pb.go @@ -28,7 +28,7 @@ type Schema struct { Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` - AttrNames []string `protobuf:"bytes,5,rep,name=attrNames,json=attrNames,proto3" json:"attrNames,omitempty"` + AttrNames []string `protobuf:"bytes,5,rep,name=attrNames,proto3" json:"attrNames,omitempty"` } func (m *Schema) Reset() { *m = Schema{} } @@ -106,22 +106,21 @@ func init() { func init() { proto.RegisterFile("cheqd/schema.proto", fileDescriptor_96d8c360e747a40a) } var fileDescriptor_96d8c360e747a40a = []byte{ - // 226 bytes of a gzipped FileDescriptorProto + // 223 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x2f, 0x4e, 0xce, 0x48, 0xcd, 0x4d, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, - 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xaa, 0xe7, 0x62, 0x0b, 0x06, 0x6b, + 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xaa, 0xe3, 0x62, 0x0b, 0x06, 0x6b, 0x17, 0xe2, 0xe3, 0x62, 0xca, 0x4c, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x62, 0xca, 0x4c, 0x11, 0x92, 0xe0, 0x62, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0x2a, 0x96, 0x60, 0x52, 0x60, 0xd6, 0xe0, 0x0c, 0x82, 0x71, 0x85, 0x84, 0xb8, 0x58, 0xf2, 0x12, 0x73, 0x53, 0x25, 0x98, 0xc1, 0x6a, 0xc1, 0x6c, 0x90, 0xea, 0xb2, 0xd4, 0xa2, 0xe2, 0xcc, 0xfc, 0x3c, 0x09, 0x16, 0xb0, 0x30, 0x8c, - 0x2b, 0x24, 0xcb, 0xc5, 0x95, 0x58, 0x52, 0x52, 0x14, 0x0f, 0x52, 0x56, 0x2c, 0xc1, 0x0a, 0x36, - 0x8a, 0x13, 0x24, 0xe2, 0x07, 0x12, 0x70, 0x72, 0x3e, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, - 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, - 0x39, 0x86, 0x28, 0xcd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0x88, - 0x47, 0xc1, 0xa4, 0x2e, 0xc8, 0x4f, 0xfa, 0x15, 0x50, 0xa1, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, - 0x36, 0xb0, 0x67, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x3f, 0x5e, 0x48, 0x11, 0x01, - 0x00, 0x00, + 0x2b, 0x24, 0xc3, 0xc5, 0x99, 0x58, 0x52, 0x52, 0xe4, 0x97, 0x98, 0x9b, 0x5a, 0x2c, 0xc1, 0x0a, + 0x36, 0x09, 0x21, 0xe0, 0xe4, 0x7c, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, + 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, + 0x9a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0x10, 0x7f, 0x82, 0x49, + 0x5d, 0x90, 0x97, 0xf4, 0x2b, 0xa0, 0x42, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0xbf, + 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x14, 0xfe, 0x28, 0x10, 0x01, 0x00, 0x00, } func (m *Schema) Marshal() (dAtA []byte, err error) { diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 88db921bd..75082286c 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -93,7 +93,7 @@ type MsgCreateCredDef struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,4,opt,name=signatureType,json=signatureType,proto3" json:"signatureType,omitempty"` + SignatureType string `protobuf:"bytes,4,opt,name=signatureType,proto3" json:"signatureType,omitempty"` Value *types.Any `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` } @@ -213,7 +213,7 @@ type MsgCreateSchema struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - AttrNames []string `protobuf:"bytes,4,rep,name=attrNames,json=attrNames,proto3" json:"attrNames,omitempty"` + AttrNames []string `protobuf:"bytes,4,rep,name=attrNames,proto3" json:"attrNames,omitempty"` } func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } @@ -657,53 +657,52 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 721 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcd, 0x6e, 0x1a, 0x49, - 0x10, 0xf6, 0x00, 0xfe, 0xa1, 0x6c, 0x83, 0xd5, 0x42, 0xf2, 0x2c, 0xab, 0x45, 0x88, 0xd5, 0xae, - 0xb0, 0x57, 0x1e, 0x76, 0xbd, 0x17, 0x6b, 0xb5, 0x8e, 0xe4, 0x98, 0x48, 0xb1, 0x22, 0x72, 0x18, - 0xe7, 0x4f, 0xc9, 0xc1, 0x6a, 0x98, 0xf2, 0xd0, 0xf1, 0xd0, 0x8d, 0xa7, 0x1b, 0xe2, 0x79, 0x8b, - 0x3c, 0x44, 0x6e, 0x79, 0x11, 0x1f, 0x7d, 0xcc, 0x31, 0xb2, 0xef, 0x79, 0x86, 0x68, 0x7a, 0x06, - 0x0c, 0x83, 0xc1, 0x1c, 0x7c, 0xf4, 0x05, 0xba, 0xab, 0xbf, 0xfa, 0xea, 0xeb, 0xae, 0x8f, 0x6e, - 0x20, 0xd7, 0x6a, 0xe3, 0xb9, 0x53, 0x53, 0x17, 0x56, 0xd7, 0x17, 0x4a, 0x90, 0x4d, 0x3d, 0x67, - 0x8e, 0xa5, 0xbf, 0xb9, 0x70, 0x30, 0x1a, 0x15, 0x7f, 0x71, 0x85, 0x70, 0x3d, 0xac, 0x69, 0x58, - 0xb3, 0x77, 0x5a, 0xa3, 0x3c, 0x88, 0x72, 0x8a, 0xf9, 0x88, 0x23, 0xcc, 0xd2, 0x81, 0xca, 0x0f, - 0x03, 0xf2, 0x0d, 0xe9, 0xbe, 0xf5, 0x99, 0x42, 0x1b, 0xcf, 0x7b, 0x28, 0x15, 0xa9, 0x42, 0xc6, - 0xa1, 0x8a, 0x9a, 0x46, 0xd9, 0xa8, 0xae, 0xee, 0x16, 0xac, 0x88, 0xce, 0x1a, 0xd0, 0x59, 0x07, - 0x3c, 0xb0, 0x35, 0x82, 0x98, 0xb0, 0x4c, 0x7b, 0xaa, 0x2d, 0x7c, 0x69, 0xa6, 0xca, 0xe9, 0x6a, - 0xd6, 0x1e, 0x4c, 0xc9, 0x3b, 0x00, 0xc9, 0x5c, 0x4e, 0x55, 0xcf, 0x47, 0x69, 0xa6, 0xcb, 0xe9, - 0xea, 0xea, 0xee, 0x9e, 0x35, 0x45, 0xb1, 0x95, 0x50, 0x60, 0x1d, 0x0f, 0x53, 0x9f, 0x71, 0xe5, - 0x07, 0xf6, 0x08, 0x57, 0x71, 0x1f, 0xf2, 0x89, 0x65, 0xb2, 0x01, 0xe9, 0x33, 0x0c, 0xb4, 0xde, - 0xac, 0x1d, 0x0e, 0x49, 0x01, 0x16, 0xfb, 0xd4, 0xeb, 0xa1, 0x99, 0xd2, 0xb1, 0x68, 0xf2, 0x5f, - 0x6a, 0xcf, 0xa8, 0x7c, 0x31, 0x60, 0xa3, 0x21, 0xdd, 0x43, 0x1f, 0xa9, 0xc2, 0x43, 0x1f, 0x9d, - 0x3a, 0x9e, 0x92, 0x1c, 0xa4, 0x98, 0x13, 0xe7, 0xa7, 0x98, 0x43, 0x7e, 0x85, 0xac, 0x6c, 0xb5, - 0xb1, 0x43, 0x4f, 0x98, 0x13, 0x53, 0xac, 0x44, 0x81, 0x23, 0x27, 0xac, 0xa6, 0xa8, 0x6b, 0xa6, - 0xa3, 0x6a, 0x8a, 0xba, 0xe4, 0x0f, 0xc8, 0x0d, 0x05, 0x9e, 0xa8, 0xa0, 0x8b, 0x66, 0x46, 0x2f, - 0xae, 0x0f, 0xa3, 0xaf, 0x82, 0x2e, 0x92, 0xed, 0x81, 0xa8, 0xc5, 0x19, 0x07, 0x1b, 0x41, 0x2a, - 0xdb, 0x60, 0x26, 0x55, 0xda, 0x28, 0xbb, 0x82, 0x4b, 0x4c, 0xaa, 0xad, 0x70, 0xdd, 0xc2, 0x08, - 0x7b, 0xac, 0x55, 0x4e, 0x6c, 0x88, 0x40, 0x86, 0xd3, 0xce, 0xe0, 0x38, 0xf4, 0x38, 0x6c, 0x5e, - 0x1f, 0x7d, 0xc9, 0x04, 0x8f, 0xf7, 0x32, 0x98, 0x92, 0xdf, 0x00, 0xa8, 0x52, 0xfe, 0x49, 0x08, - 0x93, 0x66, 0x46, 0x77, 0x36, 0x1b, 0x46, 0x5e, 0x86, 0x81, 0xca, 0x16, 0x6c, 0x26, 0xea, 0x4d, - 0x95, 0x76, 0x99, 0x81, 0xb5, 0x21, 0xb6, 0xce, 0x9c, 0x09, 0x61, 0x25, 0x80, 0x96, 0xe0, 0xca, - 0x17, 0x9e, 0x87, 0x7e, 0x6c, 0xa2, 0x91, 0x08, 0xf9, 0x00, 0xa4, 0x8f, 0x3e, 0x3b, 0x65, 0x2d, - 0xaa, 0x98, 0xe0, 0x0d, 0x54, 0x6d, 0xe1, 0xc4, 0x7e, 0xfa, 0x6b, 0xaa, 0x9f, 0xde, 0x4c, 0xa4, - 0xd8, 0x77, 0xd0, 0x90, 0xff, 0x21, 0x17, 0xfa, 0x15, 0xb9, 0x8a, 0xe3, 0x7a, 0xaf, 0xd3, 0x3a, - 0x93, 0xc0, 0x92, 0x27, 0x90, 0xa7, 0x52, 0xa2, 0x3f, 0xa2, 0x6b, 0x71, 0x46, 0x7a, 0x12, 0x4c, - 0x9e, 0x43, 0xa1, 0x45, 0xbb, 0xb4, 0xc9, 0x3c, 0xa6, 0x82, 0x23, 0xde, 0x17, 0xb1, 0x86, 0xa5, - 0x19, 0x24, 0x77, 0x66, 0x8c, 0x33, 0xd5, 0xd1, 0x43, 0x37, 0x62, 0x5a, 0x9e, 0x8f, 0xe9, 0x36, - 0x83, 0xec, 0xc1, 0xda, 0x19, 0x06, 0x07, 0xae, 0x8f, 0xd8, 0x41, 0xae, 0xcc, 0x95, 0x19, 0x0c, - 0x63, 0x48, 0x52, 0x86, 0x55, 0xea, 0x49, 0xf1, 0x82, 0x8b, 0x4f, 0xfc, 0x40, 0x9a, 0x59, 0xdd, - 0xc9, 0xd1, 0x10, 0xd9, 0x87, 0x65, 0x89, 0x7e, 0x9f, 0xb5, 0xd0, 0x04, 0x4d, 0xfb, 0xfb, 0xd4, - 0xfe, 0xd5, 0x99, 0x73, 0x1c, 0x41, 0xed, 0x41, 0x4e, 0xe5, 0x4f, 0x28, 0x8c, 0x3a, 0xe9, 0x3e, - 0xcb, 0xbd, 0xee, 0x3a, 0x8f, 0x96, 0x7b, 0xb4, 0xdc, 0x03, 0x58, 0x6e, 0xe8, 0xa4, 0x69, 0x96, - 0xdb, 0xfd, 0x9a, 0x86, 0x74, 0x43, 0xba, 0xc4, 0x83, 0xf5, 0xf1, 0x77, 0xa5, 0x3a, 0xef, 0x8b, - 0x57, 0xfc, 0x67, 0x16, 0xf2, 0xee, 0x67, 0xe0, 0x23, 0xac, 0x8d, 0xdd, 0xf9, 0xf3, 0x17, 0xfb, - 0xfb, 0xfe, 0x62, 0x89, 0x7b, 0xdd, 0x81, 0xec, 0xed, 0x1d, 0x3e, 0x7f, 0xa1, 0x9d, 0xfb, 0x0b, - 0x8d, 0x9e, 0xab, 0x03, 0xd9, 0xdb, 0x9f, 0xed, 0x03, 0x55, 0x99, 0xe8, 0xde, 0xd3, 0xc3, 0xcb, - 0xeb, 0x92, 0x71, 0x75, 0x5d, 0x32, 0xbe, 0x5f, 0x97, 0x8c, 0xcf, 0x37, 0xa5, 0x85, 0xab, 0x9b, - 0xd2, 0xc2, 0xb7, 0x9b, 0xd2, 0xc2, 0xfb, 0x2d, 0x97, 0xa9, 0x76, 0xaf, 0x69, 0xb5, 0x44, 0xa7, - 0x16, 0xfd, 0x51, 0xd2, 0x9f, 0x3b, 0x21, 0x63, 0xed, 0x22, 0x0e, 0x85, 0xef, 0xbb, 0x6c, 0x2e, - 0x69, 0x5f, 0xfe, 0xfb, 0x33, 0x00, 0x00, 0xff, 0xff, 0x61, 0x0e, 0xa1, 0x35, 0x95, 0x09, 0x00, - 0x00, + // 712 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcb, 0x6e, 0x1a, 0x3d, + 0x14, 0xce, 0x00, 0xb9, 0x70, 0x72, 0x21, 0xb2, 0x90, 0x32, 0x3f, 0x7f, 0x85, 0x10, 0xad, 0x2a, + 0x92, 0x2a, 0x43, 0x9b, 0x6e, 0xa2, 0xaa, 0xa9, 0x94, 0x86, 0x4a, 0x8d, 0x2a, 0xba, 0x98, 0xf4, + 0xa6, 0x76, 0x51, 0x19, 0xe6, 0x64, 0x70, 0x33, 0x8c, 0x89, 0x6d, 0x68, 0xe6, 0x2d, 0xfa, 0x0e, + 0x5d, 0xf6, 0x45, 0xb2, 0xcc, 0xb2, 0xcb, 0x2a, 0xd9, 0xf7, 0x19, 0x2a, 0x3c, 0xc3, 0x6d, 0x08, + 0x84, 0x45, 0x96, 0xd9, 0x80, 0x7d, 0xfc, 0x9d, 0xef, 0x7c, 0xf6, 0xf9, 0xb0, 0x81, 0xb5, 0x7a, + 0x03, 0x4f, 0x9d, 0xb2, 0x3a, 0xb3, 0x5a, 0x82, 0x2b, 0x4e, 0x36, 0xf4, 0x9c, 0x39, 0x96, 0xfe, + 0xf6, 0xb9, 0x83, 0xe1, 0x28, 0xf7, 0x9f, 0xcb, 0xb9, 0xeb, 0x61, 0x59, 0xc3, 0x6a, 0xed, 0xe3, + 0x32, 0xf5, 0x83, 0x30, 0x27, 0x97, 0x09, 0x39, 0xba, 0x59, 0x3a, 0x50, 0xfc, 0x6b, 0x40, 0xa6, + 0x2a, 0xdd, 0x8f, 0x82, 0x29, 0xb4, 0xf1, 0xb4, 0x8d, 0x52, 0x91, 0x12, 0xa4, 0x1c, 0xaa, 0xa8, + 0x69, 0x14, 0x8c, 0xd2, 0xf2, 0x4e, 0xd6, 0x0a, 0xe9, 0xac, 0x1e, 0x9d, 0xb5, 0xef, 0x07, 0xb6, + 0x46, 0x10, 0x13, 0x16, 0x69, 0x5b, 0x35, 0xb8, 0x90, 0x66, 0xa2, 0x90, 0x2c, 0xa5, 0xed, 0xde, + 0x94, 0x7c, 0x02, 0x90, 0xcc, 0xf5, 0xa9, 0x6a, 0x0b, 0x94, 0x66, 0xb2, 0x90, 0x2c, 0x2d, 0xef, + 0xec, 0x5a, 0x13, 0x14, 0x5b, 0x31, 0x05, 0xd6, 0x51, 0x3f, 0xf5, 0x95, 0xaf, 0x44, 0x60, 0x0f, + 0x71, 0xe5, 0xf6, 0x20, 0x13, 0x5b, 0x26, 0xeb, 0x90, 0x3c, 0xc1, 0x40, 0xeb, 0x4d, 0xdb, 0xdd, + 0x21, 0xc9, 0xc2, 0x7c, 0x87, 0x7a, 0x6d, 0x34, 0x13, 0x3a, 0x16, 0x4e, 0x9e, 0x25, 0x76, 0x8d, + 0xe2, 0x4f, 0x03, 0xd6, 0xab, 0xd2, 0x3d, 0x10, 0x48, 0x15, 0x1e, 0x08, 0x74, 0x2a, 0x78, 0x4c, + 0xd6, 0x20, 0xc1, 0x9c, 0x28, 0x3f, 0xc1, 0x1c, 0xf2, 0x3f, 0xa4, 0x65, 0xbd, 0x81, 0x4d, 0xfa, + 0x95, 0x39, 0x11, 0xc5, 0x52, 0x18, 0x38, 0x74, 0xba, 0xd5, 0x14, 0x75, 0xcd, 0x64, 0x58, 0x4d, + 0x51, 0x97, 0x3c, 0x80, 0xd5, 0xbe, 0xc0, 0x77, 0x41, 0x0b, 0xcd, 0x94, 0x5e, 0x1b, 0x0d, 0x92, + 0xad, 0x9e, 0xa6, 0xf9, 0x29, 0xe7, 0x1a, 0x42, 0x8a, 0x5b, 0x60, 0xc6, 0x45, 0xda, 0x28, 0x5b, + 0xdc, 0x97, 0x18, 0x17, 0x5b, 0x6c, 0xea, 0x0e, 0x86, 0xd8, 0x23, 0x2d, 0x72, 0x6c, 0x3f, 0x04, + 0x52, 0x3e, 0x6d, 0xf6, 0x4e, 0x43, 0x8f, 0xbb, 0xbd, 0xeb, 0xa0, 0x90, 0x8c, 0xfb, 0xd1, 0x56, + 0x7a, 0x53, 0x72, 0x0f, 0xd2, 0x54, 0x29, 0xf1, 0x96, 0x36, 0x51, 0x9a, 0x29, 0xdd, 0xd7, 0x41, + 0xa0, 0xb8, 0x09, 0x1b, 0xb1, 0x72, 0x13, 0x95, 0x9d, 0xa7, 0x60, 0xa5, 0x8f, 0xad, 0x30, 0x67, + 0x4c, 0x57, 0x1e, 0xa0, 0xce, 0x7d, 0x25, 0xb8, 0xe7, 0xa1, 0x88, 0x2c, 0x34, 0x14, 0x21, 0x5f, + 0x80, 0x74, 0x50, 0xb0, 0x63, 0x56, 0xa7, 0x8a, 0x71, 0xbf, 0x8a, 0xaa, 0xc1, 0x9d, 0xc8, 0x4d, + 0x8f, 0x26, 0xba, 0xe9, 0xc3, 0x58, 0x8a, 0x7d, 0x0d, 0x0d, 0x79, 0x0e, 0x6b, 0x5d, 0xb7, 0xa2, + 0xaf, 0xa2, 0xb8, 0xde, 0xeb, 0xa4, 0xc6, 0xc4, 0xb0, 0xe4, 0x05, 0x64, 0xa8, 0x94, 0x28, 0x86, + 0x74, 0xcd, 0x4f, 0x49, 0x8f, 0x83, 0xc9, 0x6b, 0xc8, 0xd6, 0x69, 0x8b, 0xd6, 0x98, 0xc7, 0x54, + 0x70, 0xe8, 0x77, 0x78, 0xa4, 0x61, 0x61, 0x0a, 0xc9, 0xb5, 0x19, 0xa3, 0x4c, 0x15, 0xf4, 0xd0, + 0x0d, 0x99, 0x16, 0x67, 0x63, 0x1a, 0x64, 0x90, 0x5d, 0x58, 0x39, 0xc1, 0x60, 0xdf, 0x15, 0x88, + 0x4d, 0xf4, 0x95, 0xb9, 0x34, 0x85, 0x61, 0x04, 0x49, 0x0a, 0xb0, 0x4c, 0x3d, 0xc9, 0xdf, 0xf8, + 0xfc, 0xbb, 0xbf, 0x2f, 0xcd, 0xb4, 0xee, 0xe4, 0x70, 0x88, 0xec, 0xc1, 0xa2, 0x44, 0xd1, 0x61, + 0x75, 0x34, 0x41, 0xd3, 0xde, 0x9f, 0xd8, 0xbf, 0x0a, 0x73, 0x8e, 0x42, 0xa8, 0xdd, 0xcb, 0x29, + 0x3e, 0x84, 0xec, 0xb0, 0x93, 0x6e, 0xb2, 0xdc, 0xfb, 0x96, 0x73, 0x67, 0xb9, 0x3b, 0xcb, 0xdd, + 0x82, 0xe5, 0xfa, 0x4e, 0x9a, 0x64, 0xb9, 0x9d, 0x5f, 0x49, 0x48, 0x56, 0xa5, 0x4b, 0x3c, 0x58, + 0x1d, 0x7d, 0x55, 0x4a, 0xb3, 0xbe, 0x77, 0xb9, 0x27, 0xd3, 0x90, 0xd7, 0xbf, 0x02, 0xdf, 0x60, + 0x65, 0xe4, 0xca, 0x9f, 0xbd, 0xd8, 0xe3, 0x9b, 0x8b, 0xc5, 0xee, 0x75, 0x07, 0xd2, 0x83, 0x3b, + 0x7c, 0xf6, 0x42, 0xdb, 0x37, 0x17, 0x1a, 0x3e, 0x57, 0x07, 0xd2, 0x83, 0x9f, 0xed, 0x2d, 0x55, + 0x19, 0xeb, 0xde, 0xcb, 0x83, 0xf3, 0xcb, 0xbc, 0x71, 0x71, 0x99, 0x37, 0xfe, 0x5c, 0xe6, 0x8d, + 0x1f, 0x57, 0xf9, 0xb9, 0x8b, 0xab, 0xfc, 0xdc, 0xef, 0xab, 0xfc, 0xdc, 0xe7, 0x4d, 0x97, 0xa9, + 0x46, 0xbb, 0x66, 0xd5, 0x79, 0xb3, 0x1c, 0xfe, 0x4d, 0xd2, 0x9f, 0xdb, 0x5d, 0xc6, 0xf2, 0x59, + 0x14, 0x52, 0x41, 0x0b, 0x65, 0x6d, 0x41, 0xfb, 0xf2, 0xe9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x62, 0xec, 0xeb, 0xb7, 0x93, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From 14513f44bd7ddcb272b772a644e6ca96129b56cb Mon Sep 17 00:00:00 2001 From: Andrew Nikitin Date: Wed, 29 Sep 2021 18:17:23 +0300 Subject: [PATCH 11/74] Make changes in tx module too Signed-off-by: Andrew Nikitin --- proto/cheqd/credDef.proto | 4 +- proto/cheqd/tx.proto | 20 +- x/cheqd/types/credDef.pb.go | 52 ++--- x/cheqd/types/tx.pb.go | 421 +++++++++++++++--------------------- 4 files changed, 213 insertions(+), 284 deletions(-) diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index b82ff99c6..3687c879a 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -13,8 +13,8 @@ message CredDef { string tag = 4; string signatureType = 5; oneof value { - CredDefValue cl_type = 7; - google.protobuf.Any any_type = 6; + CredDefValue cl_type = 6; + google.protobuf.Any any_type = 7; } } diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 1e493082e..e7f99b60a 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -50,11 +50,11 @@ message MsgCreateDid { string id = 1; repeated string controller = 2; repeated VerificationMethod verificationMethod = 3; - repeated google.protobuf.Any authentication = 4; - repeated google.protobuf.Any assertionMethod = 5; - repeated google.protobuf.Any capabilityInvocation = 6; - repeated google.protobuf.Any capabilityDelegation = 7; - repeated google.protobuf.Any keyAgreement = 8; + repeated string authentication = 4; + repeated string assertionMethod = 5; + repeated string capabilityInvocation = 6; + repeated string capabilityDelegation = 7; + repeated string keyAgreement = 8; repeated string alsoKnownAs = 9; repeated DidService service = 10; } @@ -67,11 +67,11 @@ message MsgUpdateDid { string id = 1; repeated string controller = 2; repeated VerificationMethod verificationMethod = 3; - repeated google.protobuf.Any authentication = 4; - repeated google.protobuf.Any assertionMethod = 5; - repeated google.protobuf.Any capabilityInvocation = 6; - repeated google.protobuf.Any capabilityDelegation = 7; - repeated google.protobuf.Any keyAgreement = 8; + repeated string authentication = 4; + repeated string assertionMethod = 5; + repeated string capabilityInvocation = 6; + repeated string capabilityDelegation = 7; + repeated string keyAgreement = 8; repeated string alsoKnownAs = 9; repeated DidService service = 10; } diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index 079405bf6..0ab885858 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -76,10 +76,10 @@ type isCredDef_Value interface { } type CredDef_ClType struct { - ClType *CredDefValue `protobuf:"bytes,7,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` + ClType *CredDefValue `protobuf:"bytes,6,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` } type CredDef_AnyType struct { - AnyType *types.Any `protobuf:"bytes,6,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` + AnyType *types.Any `protobuf:"bytes,7,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` } func (*CredDef_ClType) isCredDef_Value() {} @@ -225,9 +225,9 @@ var fileDescriptor_bc069326307a6009 = []byte{ 0x4a, 0xd7, 0x38, 0x19, 0x76, 0x46, 0xbd, 0x62, 0xfd, 0x89, 0xee, 0x40, 0xaf, 0x2e, 0xa7, 0x7c, 0x4e, 0x4f, 0x05, 0xc3, 0x1d, 0x1f, 0xd8, 0x0d, 0xc6, 0x6b, 0x86, 0x6e, 0x40, 0xc7, 0xd0, 0x0a, 0x5f, 0xf1, 0xb6, 0x93, 0xe8, 0x2e, 0x5c, 0xad, 0x45, 0x25, 0xa9, 0x69, 0x34, 0x7f, 0x67, 0x17, - 0x1c, 0xef, 0xf8, 0xb1, 0xbf, 0x4d, 0xf4, 0x1c, 0xd2, 0x72, 0x76, 0x6a, 0xdc, 0x78, 0x3a, 0x8c, - 0x47, 0xfd, 0xf1, 0x3d, 0x72, 0xc9, 0x31, 0x49, 0xbb, 0xe3, 0x0f, 0x74, 0xd6, 0xf0, 0xe3, 0xa8, - 0xe8, 0x96, 0x33, 0x4f, 0x78, 0x04, 0xbb, 0x54, 0xda, 0x80, 0xe8, 0x7a, 0xc4, 0x3e, 0x09, 0x85, + 0x1c, 0xef, 0xf8, 0xb1, 0xbf, 0x4d, 0xf4, 0x1c, 0xd2, 0x72, 0x76, 0x6a, 0xdc, 0x78, 0x77, 0x18, + 0x8f, 0xfa, 0xe3, 0x7b, 0xe4, 0x92, 0x63, 0x92, 0x76, 0xc7, 0x1f, 0xe8, 0xac, 0xe1, 0xc7, 0x51, + 0xd1, 0x2d, 0x67, 0x9e, 0xf0, 0x08, 0x76, 0xa9, 0xb4, 0x01, 0x91, 0x7a, 0xc4, 0x3e, 0x09, 0x85, 0x90, 0x75, 0x21, 0xe4, 0x85, 0xb4, 0xc7, 0x51, 0x91, 0x52, 0x69, 0x5d, 0xe4, 0x30, 0x85, 0x9d, 0x73, 0x47, 0x39, 0xf8, 0x99, 0xc0, 0xde, 0x26, 0x16, 0xbd, 0x81, 0x74, 0xa1, 0xc5, 0x9c, 0x6a, 0x8b, 0xe3, 0x61, 0x67, 0xd4, 0x1f, 0x8f, 0xb7, 0xda, 0x0e, 0x39, 0x09, 0xa1, 0x57, 0xd2, 0x68, @@ -238,7 +238,7 @@ var fileDescriptor_bc069326307a6009 = []byte{ 0xbe, 0xcc, 0xe2, 0x8b, 0x65, 0x16, 0xff, 0x5a, 0x66, 0xf1, 0xb7, 0x55, 0x16, 0x5d, 0xac, 0xb2, 0xe8, 0xc7, 0x2a, 0x8b, 0x3e, 0xde, 0xaf, 0x84, 0x99, 0x36, 0x13, 0x52, 0xaa, 0x79, 0xde, 0xfe, 0xe9, 0xee, 0xf9, 0xd0, 0x95, 0x91, 0x7f, 0x69, 0x2d, 0x77, 0xa1, 0xf5, 0xa4, 0xeb, 0xe9, 0x8f, - 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xad, 0x74, 0x6c, 0x17, 0x12, 0x03, 0x00, 0x00, + 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x71, 0x6b, 0x15, 0x9c, 0x12, 0x03, 0x00, 0x00, } func (m *CredDef) Marshal() (dAtA []byte, err error) { @@ -310,16 +310,16 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *CredDef_AnyType) MarshalTo(dAtA []byte) (int, error) { +func (m *CredDef_ClType) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *CredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *CredDef_ClType) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) - if m.AnyType != nil { + if m.ClType != nil { { - size, err := m.AnyType.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.ClType.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -331,16 +331,16 @@ func (m *CredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } -func (m *CredDef_ClType) MarshalTo(dAtA []byte) (int, error) { +func (m *CredDef_AnyType) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *CredDef_ClType) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *CredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) - if m.ClType != nil { + if m.AnyType != nil { { - size, err := m.ClType.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.AnyType.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -472,26 +472,26 @@ func (m *CredDef) Size() (n int) { return n } -func (m *CredDef_AnyType) Size() (n int) { +func (m *CredDef_ClType) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.AnyType != nil { - l = m.AnyType.Size() + if m.ClType != nil { + l = m.ClType.Size() n += 1 + l + sovCredDef(uint64(l)) } return n } -func (m *CredDef_ClType) Size() (n int) { +func (m *CredDef_AnyType) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.ClType != nil { - l = m.ClType.Size() + if m.AnyType != nil { + l = m.AnyType.Size() n += 1 + l + sovCredDef(uint64(l)) } return n @@ -728,7 +728,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AnyType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClType", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -755,15 +755,15 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &types.Any{} + v := &CredDefValue{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &CredDef_AnyType{v} + m.Value = &CredDef_ClType{v} iNdEx = postIndex case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AnyType", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -790,11 +790,11 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &CredDefValue{} + v := &types.Any{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &CredDef_ClType{v} + m.Value = &CredDef_AnyType{v} iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 75082286c..41128e0fa 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -325,11 +325,11 @@ type MsgCreateDid struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` - Authentication []*types.Any `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` - AssertionMethod []*types.Any `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` - CapabilityInvocation []*types.Any `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` - CapabilityDelegation []*types.Any `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` - KeyAgreement []*types.Any `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` + Authentication []string `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` + AssertionMethod []string `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` + CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` + CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` + KeyAgreement []string `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` } @@ -388,35 +388,35 @@ func (m *MsgCreateDid) GetVerificationMethod() []*VerificationMethod { return nil } -func (m *MsgCreateDid) GetAuthentication() []*types.Any { +func (m *MsgCreateDid) GetAuthentication() []string { if m != nil { return m.Authentication } return nil } -func (m *MsgCreateDid) GetAssertionMethod() []*types.Any { +func (m *MsgCreateDid) GetAssertionMethod() []string { if m != nil { return m.AssertionMethod } return nil } -func (m *MsgCreateDid) GetCapabilityInvocation() []*types.Any { +func (m *MsgCreateDid) GetCapabilityInvocation() []string { if m != nil { return m.CapabilityInvocation } return nil } -func (m *MsgCreateDid) GetCapabilityDelegation() []*types.Any { +func (m *MsgCreateDid) GetCapabilityDelegation() []string { if m != nil { return m.CapabilityDelegation } return nil } -func (m *MsgCreateDid) GetKeyAgreement() []*types.Any { +func (m *MsgCreateDid) GetKeyAgreement() []string { if m != nil { return m.KeyAgreement } @@ -485,11 +485,11 @@ type MsgUpdateDid struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` - Authentication []*types.Any `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` - AssertionMethod []*types.Any `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` - CapabilityInvocation []*types.Any `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` - CapabilityDelegation []*types.Any `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` - KeyAgreement []*types.Any `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` + Authentication []string `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` + AssertionMethod []string `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` + CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` + CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` + KeyAgreement []string `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` } @@ -548,35 +548,35 @@ func (m *MsgUpdateDid) GetVerificationMethod() []*VerificationMethod { return nil } -func (m *MsgUpdateDid) GetAuthentication() []*types.Any { +func (m *MsgUpdateDid) GetAuthentication() []string { if m != nil { return m.Authentication } return nil } -func (m *MsgUpdateDid) GetAssertionMethod() []*types.Any { +func (m *MsgUpdateDid) GetAssertionMethod() []string { if m != nil { return m.AssertionMethod } return nil } -func (m *MsgUpdateDid) GetCapabilityInvocation() []*types.Any { +func (m *MsgUpdateDid) GetCapabilityInvocation() []string { if m != nil { return m.CapabilityInvocation } return nil } -func (m *MsgUpdateDid) GetCapabilityDelegation() []*types.Any { +func (m *MsgUpdateDid) GetCapabilityDelegation() []string { if m != nil { return m.CapabilityDelegation } return nil } -func (m *MsgUpdateDid) GetKeyAgreement() []*types.Any { +func (m *MsgUpdateDid) GetKeyAgreement() []string { if m != nil { return m.KeyAgreement } @@ -657,52 +657,51 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 712 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcb, 0x6e, 0x1a, 0x3d, - 0x14, 0xce, 0x00, 0xb9, 0x70, 0x72, 0x21, 0xb2, 0x90, 0x32, 0x3f, 0x7f, 0x85, 0x10, 0xad, 0x2a, - 0x92, 0x2a, 0x43, 0x9b, 0x6e, 0xa2, 0xaa, 0xa9, 0x94, 0x86, 0x4a, 0x8d, 0x2a, 0xba, 0x98, 0xf4, - 0xa6, 0x76, 0x51, 0x19, 0xe6, 0x64, 0x70, 0x33, 0x8c, 0x89, 0x6d, 0x68, 0xe6, 0x2d, 0xfa, 0x0e, - 0x5d, 0xf6, 0x45, 0xb2, 0xcc, 0xb2, 0xcb, 0x2a, 0xd9, 0xf7, 0x19, 0x2a, 0x3c, 0xc3, 0x6d, 0x08, - 0x84, 0x45, 0x96, 0xd9, 0x80, 0x7d, 0xfc, 0x9d, 0xef, 0x7c, 0xf6, 0xf9, 0xb0, 0x81, 0xb5, 0x7a, - 0x03, 0x4f, 0x9d, 0xb2, 0x3a, 0xb3, 0x5a, 0x82, 0x2b, 0x4e, 0x36, 0xf4, 0x9c, 0x39, 0x96, 0xfe, - 0xf6, 0xb9, 0x83, 0xe1, 0x28, 0xf7, 0x9f, 0xcb, 0xb9, 0xeb, 0x61, 0x59, 0xc3, 0x6a, 0xed, 0xe3, - 0x32, 0xf5, 0x83, 0x30, 0x27, 0x97, 0x09, 0x39, 0xba, 0x59, 0x3a, 0x50, 0xfc, 0x6b, 0x40, 0xa6, - 0x2a, 0xdd, 0x8f, 0x82, 0x29, 0xb4, 0xf1, 0xb4, 0x8d, 0x52, 0x91, 0x12, 0xa4, 0x1c, 0xaa, 0xa8, - 0x69, 0x14, 0x8c, 0xd2, 0xf2, 0x4e, 0xd6, 0x0a, 0xe9, 0xac, 0x1e, 0x9d, 0xb5, 0xef, 0x07, 0xb6, - 0x46, 0x10, 0x13, 0x16, 0x69, 0x5b, 0x35, 0xb8, 0x90, 0x66, 0xa2, 0x90, 0x2c, 0xa5, 0xed, 0xde, - 0x94, 0x7c, 0x02, 0x90, 0xcc, 0xf5, 0xa9, 0x6a, 0x0b, 0x94, 0x66, 0xb2, 0x90, 0x2c, 0x2d, 0xef, - 0xec, 0x5a, 0x13, 0x14, 0x5b, 0x31, 0x05, 0xd6, 0x51, 0x3f, 0xf5, 0x95, 0xaf, 0x44, 0x60, 0x0f, - 0x71, 0xe5, 0xf6, 0x20, 0x13, 0x5b, 0x26, 0xeb, 0x90, 0x3c, 0xc1, 0x40, 0xeb, 0x4d, 0xdb, 0xdd, - 0x21, 0xc9, 0xc2, 0x7c, 0x87, 0x7a, 0x6d, 0x34, 0x13, 0x3a, 0x16, 0x4e, 0x9e, 0x25, 0x76, 0x8d, - 0xe2, 0x4f, 0x03, 0xd6, 0xab, 0xd2, 0x3d, 0x10, 0x48, 0x15, 0x1e, 0x08, 0x74, 0x2a, 0x78, 0x4c, - 0xd6, 0x20, 0xc1, 0x9c, 0x28, 0x3f, 0xc1, 0x1c, 0xf2, 0x3f, 0xa4, 0x65, 0xbd, 0x81, 0x4d, 0xfa, - 0x95, 0x39, 0x11, 0xc5, 0x52, 0x18, 0x38, 0x74, 0xba, 0xd5, 0x14, 0x75, 0xcd, 0x64, 0x58, 0x4d, - 0x51, 0x97, 0x3c, 0x80, 0xd5, 0xbe, 0xc0, 0x77, 0x41, 0x0b, 0xcd, 0x94, 0x5e, 0x1b, 0x0d, 0x92, - 0xad, 0x9e, 0xa6, 0xf9, 0x29, 0xe7, 0x1a, 0x42, 0x8a, 0x5b, 0x60, 0xc6, 0x45, 0xda, 0x28, 0x5b, - 0xdc, 0x97, 0x18, 0x17, 0x5b, 0x6c, 0xea, 0x0e, 0x86, 0xd8, 0x23, 0x2d, 0x72, 0x6c, 0x3f, 0x04, - 0x52, 0x3e, 0x6d, 0xf6, 0x4e, 0x43, 0x8f, 0xbb, 0xbd, 0xeb, 0xa0, 0x90, 0x8c, 0xfb, 0xd1, 0x56, - 0x7a, 0x53, 0x72, 0x0f, 0xd2, 0x54, 0x29, 0xf1, 0x96, 0x36, 0x51, 0x9a, 0x29, 0xdd, 0xd7, 0x41, - 0xa0, 0xb8, 0x09, 0x1b, 0xb1, 0x72, 0x13, 0x95, 0x9d, 0xa7, 0x60, 0xa5, 0x8f, 0xad, 0x30, 0x67, - 0x4c, 0x57, 0x1e, 0xa0, 0xce, 0x7d, 0x25, 0xb8, 0xe7, 0xa1, 0x88, 0x2c, 0x34, 0x14, 0x21, 0x5f, - 0x80, 0x74, 0x50, 0xb0, 0x63, 0x56, 0xa7, 0x8a, 0x71, 0xbf, 0x8a, 0xaa, 0xc1, 0x9d, 0xc8, 0x4d, - 0x8f, 0x26, 0xba, 0xe9, 0xc3, 0x58, 0x8a, 0x7d, 0x0d, 0x0d, 0x79, 0x0e, 0x6b, 0x5d, 0xb7, 0xa2, - 0xaf, 0xa2, 0xb8, 0xde, 0xeb, 0xa4, 0xc6, 0xc4, 0xb0, 0xe4, 0x05, 0x64, 0xa8, 0x94, 0x28, 0x86, - 0x74, 0xcd, 0x4f, 0x49, 0x8f, 0x83, 0xc9, 0x6b, 0xc8, 0xd6, 0x69, 0x8b, 0xd6, 0x98, 0xc7, 0x54, - 0x70, 0xe8, 0x77, 0x78, 0xa4, 0x61, 0x61, 0x0a, 0xc9, 0xb5, 0x19, 0xa3, 0x4c, 0x15, 0xf4, 0xd0, - 0x0d, 0x99, 0x16, 0x67, 0x63, 0x1a, 0x64, 0x90, 0x5d, 0x58, 0x39, 0xc1, 0x60, 0xdf, 0x15, 0x88, - 0x4d, 0xf4, 0x95, 0xb9, 0x34, 0x85, 0x61, 0x04, 0x49, 0x0a, 0xb0, 0x4c, 0x3d, 0xc9, 0xdf, 0xf8, - 0xfc, 0xbb, 0xbf, 0x2f, 0xcd, 0xb4, 0xee, 0xe4, 0x70, 0x88, 0xec, 0xc1, 0xa2, 0x44, 0xd1, 0x61, - 0x75, 0x34, 0x41, 0xd3, 0xde, 0x9f, 0xd8, 0xbf, 0x0a, 0x73, 0x8e, 0x42, 0xa8, 0xdd, 0xcb, 0x29, - 0x3e, 0x84, 0xec, 0xb0, 0x93, 0x6e, 0xb2, 0xdc, 0xfb, 0x96, 0x73, 0x67, 0xb9, 0x3b, 0xcb, 0xdd, - 0x82, 0xe5, 0xfa, 0x4e, 0x9a, 0x64, 0xb9, 0x9d, 0x5f, 0x49, 0x48, 0x56, 0xa5, 0x4b, 0x3c, 0x58, - 0x1d, 0x7d, 0x55, 0x4a, 0xb3, 0xbe, 0x77, 0xb9, 0x27, 0xd3, 0x90, 0xd7, 0xbf, 0x02, 0xdf, 0x60, - 0x65, 0xe4, 0xca, 0x9f, 0xbd, 0xd8, 0xe3, 0x9b, 0x8b, 0xc5, 0xee, 0x75, 0x07, 0xd2, 0x83, 0x3b, - 0x7c, 0xf6, 0x42, 0xdb, 0x37, 0x17, 0x1a, 0x3e, 0x57, 0x07, 0xd2, 0x83, 0x9f, 0xed, 0x2d, 0x55, - 0x19, 0xeb, 0xde, 0xcb, 0x83, 0xf3, 0xcb, 0xbc, 0x71, 0x71, 0x99, 0x37, 0xfe, 0x5c, 0xe6, 0x8d, - 0x1f, 0x57, 0xf9, 0xb9, 0x8b, 0xab, 0xfc, 0xdc, 0xef, 0xab, 0xfc, 0xdc, 0xe7, 0x4d, 0x97, 0xa9, - 0x46, 0xbb, 0x66, 0xd5, 0x79, 0xb3, 0x1c, 0xfe, 0x4d, 0xd2, 0x9f, 0xdb, 0x5d, 0xc6, 0xf2, 0x59, - 0x14, 0x52, 0x41, 0x0b, 0x65, 0x6d, 0x41, 0xfb, 0xf2, 0xe9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x62, 0xec, 0xeb, 0xb7, 0x93, 0x09, 0x00, 0x00, + // 703 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xbd, 0x6e, 0x13, 0x41, + 0x10, 0xce, 0xf9, 0x9c, 0x1f, 0x4f, 0x7e, 0x1c, 0xad, 0x2c, 0xe5, 0x30, 0xc8, 0xb2, 0x0c, 0x8a, + 0x9c, 0xa0, 0x9c, 0xc1, 0x34, 0x11, 0x52, 0x8a, 0x10, 0x53, 0x44, 0xc8, 0x14, 0x17, 0xfe, 0x04, + 0x05, 0x5a, 0xfb, 0x26, 0xe7, 0x25, 0xe7, 0x5b, 0x67, 0x77, 0x6d, 0x72, 0x6f, 0xc1, 0x3b, 0x50, + 0xf2, 0x22, 0x94, 0x29, 0x11, 0x15, 0x4a, 0x7a, 0x9e, 0x01, 0x79, 0xef, 0xfc, 0x77, 0x8e, 0x93, + 0x14, 0x54, 0x88, 0xc6, 0xde, 0xfd, 0xf6, 0x9b, 0x99, 0x6f, 0x67, 0xc6, 0xb3, 0x86, 0xb5, 0x66, + 0x0b, 0x4f, 0xdd, 0x8a, 0x3a, 0xb3, 0x3b, 0x82, 0x2b, 0x4e, 0x36, 0xf4, 0x9e, 0xb9, 0xb6, 0xfe, + 0x0e, 0xb8, 0x8b, 0xd1, 0x2a, 0x7f, 0xc7, 0xe3, 0xdc, 0xf3, 0xb1, 0xa2, 0x69, 0x8d, 0xee, 0x71, + 0x85, 0x06, 0x61, 0x64, 0x93, 0xcf, 0x46, 0x3e, 0xfa, 0x56, 0x1a, 0x28, 0xfd, 0x36, 0x20, 0x5b, + 0x97, 0xde, 0x5b, 0xc1, 0x14, 0x3a, 0x78, 0xda, 0x45, 0xa9, 0x48, 0x19, 0xd2, 0x2e, 0x55, 0xd4, + 0x32, 0x8a, 0x46, 0x79, 0xb9, 0x9a, 0xb3, 0x23, 0x77, 0xf6, 0xc0, 0x9d, 0xbd, 0x1f, 0x84, 0x8e, + 0x66, 0x10, 0x0b, 0x16, 0x69, 0x57, 0xb5, 0xb8, 0x90, 0x56, 0xaa, 0x68, 0x96, 0x33, 0xce, 0x60, + 0x4b, 0xde, 0x01, 0x48, 0xe6, 0x05, 0x54, 0x75, 0x05, 0x4a, 0xcb, 0x2c, 0x9a, 0xe5, 0xe5, 0xea, + 0xae, 0x3d, 0x43, 0xb1, 0x9d, 0x50, 0x60, 0x1f, 0x0d, 0x4d, 0x9f, 0x07, 0x4a, 0x84, 0xce, 0x98, + 0xaf, 0xfc, 0x1e, 0x64, 0x13, 0xc7, 0x64, 0x1d, 0xcc, 0x13, 0x0c, 0xb5, 0xde, 0x8c, 0xd3, 0x5f, + 0x92, 0x1c, 0xcc, 0xf7, 0xa8, 0xdf, 0x45, 0x2b, 0xa5, 0xb1, 0x68, 0xf3, 0x34, 0xb5, 0x6b, 0x94, + 0xbe, 0x1a, 0xb0, 0x5e, 0x97, 0xde, 0x81, 0x40, 0xaa, 0xf0, 0x40, 0xa0, 0x5b, 0xc3, 0x63, 0xb2, + 0x06, 0x29, 0xe6, 0xc6, 0xf6, 0x29, 0xe6, 0x92, 0xbb, 0x90, 0x91, 0xcd, 0x16, 0xb6, 0xe9, 0x47, + 0xe6, 0xc6, 0x2e, 0x96, 0x22, 0xe0, 0xd0, 0xed, 0x47, 0x53, 0xd4, 0xb3, 0xcc, 0x28, 0x9a, 0xa2, + 0x1e, 0x79, 0x00, 0xab, 0x43, 0x81, 0xaf, 0xc2, 0x0e, 0x5a, 0x69, 0x7d, 0x36, 0x09, 0x92, 0xed, + 0x81, 0xa6, 0xf9, 0x6b, 0xf2, 0x1a, 0x51, 0x4a, 0xdb, 0x60, 0x25, 0x45, 0x3a, 0x28, 0x3b, 0x3c, + 0x90, 0x98, 0x14, 0x5b, 0x6a, 0xeb, 0x0a, 0x46, 0xdc, 0x23, 0x2d, 0x72, 0xea, 0x3e, 0x04, 0xd2, + 0x01, 0x6d, 0x0f, 0xb2, 0xa1, 0xd7, 0xfd, 0xda, 0xf5, 0x50, 0x48, 0xc6, 0x83, 0xf8, 0x2a, 0x83, + 0x2d, 0xb9, 0x07, 0x19, 0xaa, 0x94, 0x78, 0x49, 0xdb, 0x28, 0xad, 0xb4, 0xae, 0xeb, 0x08, 0x28, + 0x6d, 0xc1, 0x46, 0x22, 0xdc, 0x4c, 0x65, 0x3f, 0x4d, 0x58, 0x19, 0x72, 0x6b, 0xcc, 0x9d, 0xd2, + 0x55, 0x00, 0x68, 0xf2, 0x40, 0x09, 0xee, 0xfb, 0x28, 0xe2, 0x16, 0x1a, 0x43, 0xc8, 0x07, 0x20, + 0x3d, 0x14, 0xec, 0x98, 0x35, 0xa9, 0x62, 0x3c, 0xa8, 0xa3, 0x6a, 0x71, 0x37, 0xee, 0xa6, 0x87, + 0x33, 0xbb, 0xe9, 0xcd, 0x94, 0x89, 0x73, 0x85, 0x1b, 0xb2, 0x09, 0x6b, 0xfd, 0x6e, 0xc5, 0x40, + 0xc5, 0x78, 0x7c, 0xd7, 0x04, 0x4a, 0xca, 0x90, 0xa5, 0x52, 0xa2, 0x18, 0x53, 0x30, 0xaf, 0x89, + 0x49, 0x98, 0x54, 0x21, 0xd7, 0xa4, 0x1d, 0xda, 0x60, 0x3e, 0x53, 0xe1, 0x61, 0xd0, 0xe3, 0xb1, + 0xdf, 0x05, 0x4d, 0xbf, 0xf2, 0x6c, 0xd2, 0xa6, 0x86, 0x3e, 0x7a, 0x91, 0xcd, 0x62, 0xd2, 0x66, + 0x74, 0x46, 0x4a, 0xb0, 0x72, 0x82, 0xe1, 0xbe, 0x27, 0x10, 0xdb, 0x18, 0x28, 0x6b, 0x49, 0x73, + 0x27, 0x30, 0x52, 0x84, 0x65, 0xea, 0x4b, 0xfe, 0x22, 0xe0, 0x9f, 0x83, 0x7d, 0x69, 0x65, 0x34, + 0x65, 0x1c, 0x22, 0x7b, 0xb0, 0x28, 0x51, 0xf4, 0x58, 0x13, 0x2d, 0xd0, 0x19, 0xbd, 0x3f, 0x33, + 0xa3, 0x35, 0xe6, 0x1e, 0x45, 0x54, 0x67, 0x60, 0x53, 0xda, 0x84, 0xdc, 0x78, 0x6d, 0x6f, 0x6a, + 0x82, 0xd7, 0x1d, 0xf7, 0x7f, 0x13, 0xfc, 0xa3, 0x4d, 0x30, 0xac, 0xed, 0xac, 0x26, 0xa8, 0x7e, + 0x33, 0xc1, 0xac, 0x4b, 0x8f, 0xf8, 0xb0, 0x3a, 0x39, 0x79, 0xcb, 0xb7, 0x7d, 0x13, 0xf2, 0x8f, + 0xaf, 0x63, 0x5e, 0x3d, 0x29, 0x3f, 0xc1, 0xca, 0xc4, 0x58, 0xbc, 0x7d, 0xb0, 0x47, 0x37, 0x07, + 0x4b, 0xcc, 0x3e, 0x17, 0x32, 0xa3, 0x39, 0x77, 0xfb, 0x40, 0x3b, 0x37, 0x07, 0x1a, 0xcf, 0xab, + 0x0b, 0x99, 0xd1, 0x0f, 0xe9, 0x2f, 0x45, 0x99, 0xaa, 0xde, 0xb3, 0x83, 0xef, 0x17, 0x05, 0xe3, + 0xfc, 0xa2, 0x60, 0xfc, 0xba, 0x28, 0x18, 0x5f, 0x2e, 0x0b, 0x73, 0xe7, 0x97, 0x85, 0xb9, 0x1f, + 0x97, 0x85, 0xb9, 0xf7, 0x5b, 0x1e, 0x53, 0xad, 0x6e, 0xc3, 0x6e, 0xf2, 0x76, 0x25, 0xfa, 0x2b, + 0xa1, 0x3f, 0x77, 0xfa, 0x1e, 0x2b, 0x67, 0x31, 0xa4, 0xc2, 0x0e, 0xca, 0xc6, 0x82, 0x7e, 0xd7, + 0x9e, 0xfc, 0x09, 0x00, 0x00, 0xff, 0xff, 0x8a, 0xa8, 0x26, 0xc3, 0xb7, 0x08, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1179,70 +1178,45 @@ func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { } if len(m.KeyAgreement) > 0 { for iNdEx := len(m.KeyAgreement) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.KeyAgreement[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.KeyAgreement[iNdEx]) + copy(dAtA[i:], m.KeyAgreement[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.KeyAgreement[iNdEx]))) i-- dAtA[i] = 0x42 } } if len(m.CapabilityDelegation) > 0 { for iNdEx := len(m.CapabilityDelegation) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.CapabilityDelegation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.CapabilityDelegation[iNdEx]) + copy(dAtA[i:], m.CapabilityDelegation[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.CapabilityDelegation[iNdEx]))) i-- dAtA[i] = 0x3a } } if len(m.CapabilityInvocation) > 0 { for iNdEx := len(m.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.CapabilityInvocation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.CapabilityInvocation[iNdEx]) + copy(dAtA[i:], m.CapabilityInvocation[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.CapabilityInvocation[iNdEx]))) i-- dAtA[i] = 0x32 } } if len(m.AssertionMethod) > 0 { for iNdEx := len(m.AssertionMethod) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.AssertionMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.AssertionMethod[iNdEx]) + copy(dAtA[i:], m.AssertionMethod[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AssertionMethod[iNdEx]))) i-- dAtA[i] = 0x2a } } if len(m.Authentication) > 0 { for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Authentication[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.Authentication[iNdEx]) + copy(dAtA[i:], m.Authentication[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authentication[iNdEx]))) i-- dAtA[i] = 0x22 } @@ -1355,70 +1329,45 @@ func (m *MsgUpdateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { } if len(m.KeyAgreement) > 0 { for iNdEx := len(m.KeyAgreement) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.KeyAgreement[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.KeyAgreement[iNdEx]) + copy(dAtA[i:], m.KeyAgreement[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.KeyAgreement[iNdEx]))) i-- dAtA[i] = 0x42 } } if len(m.CapabilityDelegation) > 0 { for iNdEx := len(m.CapabilityDelegation) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.CapabilityDelegation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.CapabilityDelegation[iNdEx]) + copy(dAtA[i:], m.CapabilityDelegation[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.CapabilityDelegation[iNdEx]))) i-- dAtA[i] = 0x3a } } if len(m.CapabilityInvocation) > 0 { for iNdEx := len(m.CapabilityInvocation) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.CapabilityInvocation[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.CapabilityInvocation[iNdEx]) + copy(dAtA[i:], m.CapabilityInvocation[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.CapabilityInvocation[iNdEx]))) i-- dAtA[i] = 0x32 } } if len(m.AssertionMethod) > 0 { for iNdEx := len(m.AssertionMethod) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.AssertionMethod[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.AssertionMethod[iNdEx]) + copy(dAtA[i:], m.AssertionMethod[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AssertionMethod[iNdEx]))) i-- dAtA[i] = 0x2a } } if len(m.Authentication) > 0 { for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Authentication[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } + i -= len(m.Authentication[iNdEx]) + copy(dAtA[i:], m.Authentication[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authentication[iNdEx]))) i-- dAtA[i] = 0x22 } @@ -1629,32 +1578,32 @@ func (m *MsgCreateDid) Size() (n int) { } } if len(m.Authentication) > 0 { - for _, e := range m.Authentication { - l = e.Size() + for _, s := range m.Authentication { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } if len(m.AssertionMethod) > 0 { - for _, e := range m.AssertionMethod { - l = e.Size() + for _, s := range m.AssertionMethod { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } if len(m.CapabilityInvocation) > 0 { - for _, e := range m.CapabilityInvocation { - l = e.Size() + for _, s := range m.CapabilityInvocation { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } if len(m.CapabilityDelegation) > 0 { - for _, e := range m.CapabilityDelegation { - l = e.Size() + for _, s := range m.CapabilityDelegation { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } if len(m.KeyAgreement) > 0 { - for _, e := range m.KeyAgreement { - l = e.Size() + for _, s := range m.KeyAgreement { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } @@ -1709,32 +1658,32 @@ func (m *MsgUpdateDid) Size() (n int) { } } if len(m.Authentication) > 0 { - for _, e := range m.Authentication { - l = e.Size() + for _, s := range m.Authentication { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } if len(m.AssertionMethod) > 0 { - for _, e := range m.AssertionMethod { - l = e.Size() + for _, s := range m.AssertionMethod { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } if len(m.CapabilityInvocation) > 0 { - for _, e := range m.CapabilityInvocation { - l = e.Size() + for _, s := range m.CapabilityInvocation { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } if len(m.CapabilityDelegation) > 0 { - for _, e := range m.CapabilityDelegation { - l = e.Size() + for _, s := range m.CapabilityDelegation { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } if len(m.KeyAgreement) > 0 { - for _, e := range m.KeyAgreement { - l = e.Size() + for _, s := range m.KeyAgreement { + l = len(s) n += 1 + l + sovTx(uint64(l)) } } @@ -2704,7 +2653,7 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2714,31 +2663,29 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Authentication = append(m.Authentication, &types.Any{}) - if err := m.Authentication[len(m.Authentication)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Authentication = append(m.Authentication, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AssertionMethod", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2748,31 +2695,29 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.AssertionMethod = append(m.AssertionMethod, &types.Any{}) - if err := m.AssertionMethod[len(m.AssertionMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AssertionMethod = append(m.AssertionMethod, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CapabilityInvocation", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2782,31 +2727,29 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.CapabilityInvocation = append(m.CapabilityInvocation, &types.Any{}) - if err := m.CapabilityInvocation[len(m.CapabilityInvocation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.CapabilityInvocation = append(m.CapabilityInvocation, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CapabilityDelegation", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2816,31 +2759,29 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.CapabilityDelegation = append(m.CapabilityDelegation, &types.Any{}) - if err := m.CapabilityDelegation[len(m.CapabilityDelegation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.CapabilityDelegation = append(m.CapabilityDelegation, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field KeyAgreement", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2850,25 +2791,23 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.KeyAgreement = append(m.KeyAgreement, &types.Any{}) - if err := m.KeyAgreement[len(m.KeyAgreement)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.KeyAgreement = append(m.KeyAgreement, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 9: if wireType != 2 { @@ -3170,7 +3109,7 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3180,31 +3119,29 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.Authentication = append(m.Authentication, &types.Any{}) - if err := m.Authentication[len(m.Authentication)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Authentication = append(m.Authentication, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AssertionMethod", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3214,31 +3151,29 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.AssertionMethod = append(m.AssertionMethod, &types.Any{}) - if err := m.AssertionMethod[len(m.AssertionMethod)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AssertionMethod = append(m.AssertionMethod, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CapabilityInvocation", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3248,31 +3183,29 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.CapabilityInvocation = append(m.CapabilityInvocation, &types.Any{}) - if err := m.CapabilityInvocation[len(m.CapabilityInvocation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.CapabilityInvocation = append(m.CapabilityInvocation, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CapabilityDelegation", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3282,31 +3215,29 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.CapabilityDelegation = append(m.CapabilityDelegation, &types.Any{}) - if err := m.CapabilityDelegation[len(m.CapabilityDelegation)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.CapabilityDelegation = append(m.CapabilityDelegation, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field KeyAgreement", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3316,25 +3247,23 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - m.KeyAgreement = append(m.KeyAgreement, &types.Any{}) - if err := m.KeyAgreement[len(m.KeyAgreement)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.KeyAgreement = append(m.KeyAgreement, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 9: if wireType != 2 { From 382e12fb3ba522028d554cf3eb71b26945171ebd Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 30 Sep 2021 09:54:27 +0300 Subject: [PATCH 12/74] fixed integration tests and build --- go.mod | 5 - go.sum | 366 -------------------------- x/cheqd/client/cli/txDid.go | 14 +- x/cheqd/client/cli/txSchema.go | 72 +---- x/cheqd/client/rest/rest.go | 4 - x/cheqd/client/rest/txCredDef.go | 100 +------ x/cheqd/client/rest/txDid.go | 134 +++++----- x/cheqd/client/rest/txSchema.go | 92 +------ x/cheqd/handler_test.go | 86 ++---- x/cheqd/handler_test_setup.go | 77 +++--- x/cheqd/keeper/cred_def.go | 6 +- x/cheqd/keeper/did.go | 11 +- x/cheqd/keeper/msg_server_cred_def.go | 3 +- x/cheqd/keeper/msg_server_did.go | 4 + x/cheqd/keeper/msg_server_schema.go | 2 + x/cheqd/keeper/query_did.go | 1 - x/cheqd/types/messages_cred_def.go | 5 +- x/cheqd/types/messages_did.go | 21 +- 18 files changed, 151 insertions(+), 852 deletions(-) diff --git a/go.mod b/go.mod index bd89e1504..7ad57b9ce 100644 --- a/go.mod +++ b/go.mod @@ -14,14 +14,12 @@ require ( github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 // indirect github.com/magiconair/properties v1.8.5 // indirect github.com/mitchellh/mapstructure v1.3.3 // indirect github.com/otiai10/copy v1.6.0 // indirect github.com/pelletier/go-toml v1.8.1 // indirect github.com/prometheus/client_golang v1.10.0 // indirect github.com/prometheus/common v0.23.0 // indirect - github.com/regen-network/cosmos-proto v0.3.1 // indirect github.com/rs/zerolog v1.21.0 // indirect github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.1.3 @@ -29,11 +27,8 @@ require ( github.com/stretchr/testify v1.7.0 github.com/tendermint/tendermint v0.34.10 github.com/tendermint/tm-db v0.6.4 - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/text v0.3.5 // indirect google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 google.golang.org/grpc v1.40.0 - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0 // indirect gopkg.in/ini.v1 v1.61.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 8bf8359aa..bb9553271 100644 --- a/go.sum +++ b/go.sum @@ -4,98 +4,51 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.52 h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI= github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= -github.com/aead/siphash v1.0.1 h1:FwHfE/T45KPKYuuSAKyyvE+oPWcaQ+CUmFW0bPlM+kg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0 h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.6/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.8 h1:oOxq3KPj0WhCuy50EhzwiyMyG2ovRQZpZLXQuOh2a/M= github.com/armon/go-metrics v0.3.8/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0 h1:0xphMHGMLBrPMfxR2AmVjZKcMEESEgWF8Kru94BNByk= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0 h1:qZ+woO4SamnH/eEbjM2IDLhRNwIwND/RQyVlBLp3Jqg= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -103,82 +56,52 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M= github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd h1:R/opQEbFEy9JGkIguV40SvRY1uliPX8ifOvi6ICsFCw= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0 h1:Tvd0BfvqX9o823q1j2UZ/epQo09eJh6dTcRp79ilIN4= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0 h1:ZxaA6lo2EpxGddsA8JwWOcxlzRybb444sgmeJQMJGQE= github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3SkEwmHoWBmX1DNXhXZqlTpq6s4tyJGc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0 h1:J9B4L7e3oqhXOcm+2IuNApwzQec85lE+QaikUcCs+dk= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/casbin/casbin/v2 v2.1.2 h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f h1:WBZRG4aNOuI15bLRrCgN8fCq8E5Xuty6jGbmSNEvSsU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= -github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/cosmos-sdk v0.42.4 h1:yaD4PyOx0LnyfiWasC5egg1U76lT83GRxjJjupPo7Gk= github.com/cosmos/cosmos-sdk v0.42.4/go.mod h1:I1Zw1zmU4rA/NITaakTb71pXQnQrWyFBhqo3WSeg0vA= -github.com/cosmos/cosmos-sdk v0.42.5 h1:tXttRklrAUUrFopfe9aMXpfiArF6MH2QRRqq0Lxyd5w= -github.com/cosmos/cosmos-sdk v0.42.5/go.mod h1:3JyT+Ud7QRTO1/ikncNqVhaF526ZKNqh2HGMqXn+QHE= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -186,18 +109,13 @@ github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIa github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= github.com/cosmos/iavl v0.15.3 h1:xE9r6HW8GeKeoYJN4zefpljZ1oukVScP/7M8oj6SUts= github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= -github.com/cosmos/iavl v0.16.0 h1:ICIOB8xysirTX27GmVAaoeSpeozzgSu9d49w36xkVJA= -github.com/cosmos/iavl v0.16.0/go.mod h1:2A8O/Jz9YwtjqXMO0CjnnbTYEEaovE8jWcwrakH3PoE= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= @@ -205,7 +123,6 @@ github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decred/dcrd/lru v1.0.0 h1:Kbsb1SFDsIlaupWPwsPp+dkxiBY1frcS07PCPgotKz8= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= @@ -213,31 +130,23 @@ github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDm github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4pn2T/hjXMbvwTr1Cvy5THHrQkbeY9HRk= github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= -github.com/envoyproxy/go-control-plane v0.9.4 h1:rEvIZUSZ3fx39WIi3JkQqQBitGwpELBIYWeBVh6wn+E= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= @@ -245,25 +154,18 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojt github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -273,7 +175,6 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -281,21 +182,12 @@ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -303,7 +195,6 @@ github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -312,7 +203,6 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= @@ -329,9 +219,7 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= @@ -340,31 +228,18 @@ github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= @@ -382,7 +257,6 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaD github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -390,10 +264,6 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0 h1:HlJcTiqGHvaWDG7/s85d68Kw7G7FqMz+9LlcyVauOAw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0/go.mod h1:gRq9gZWcIFvz68EgWqy2qQpRbmtn5j2qLZ4zHjqiLpg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 h1:rgxjzoDmDXw5q8HONgyHhBas4to0/XWRo/gPpJhsUNQ= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0/go.mod h1:qrJPVzv9YlhsrxJc3P/Q85nr0w1lIRikTl4JlhdDH5w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -402,36 +272,24 @@ github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/b github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-retryablehttp v0.5.3 h1:QlWt0KvWT0lq8MFppF9tsJGF+ynG7ztc2KIPhzRGk7s= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -439,149 +297,102 @@ github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+l github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 h1:UDMh68UUwekSh5iP2OMhRRZJiiBccgV7axzUG8vi56c= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0 h1:lQ1bL/n9mBNeIXoTUoYRlK4dHuNJVofX9oWqBtPnSzI= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= -github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/kkdai/bstream v1.0.0 h1:Se5gHwgp2VT2uHfDrkbbgbgEvV9cimLELwrPJctSjg8= github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5 h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -593,20 +404,14 @@ github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/otiai10/copy v1.4.2/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= @@ -617,35 +422,28 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -685,7 +483,6 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= @@ -697,45 +494,32 @@ github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNw github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxrTy6/VgfVoLuVLFJcURKLH49ie0zSch7gh4= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa h1:YJfZp12Z3AFhSBeXOlv4BO55RMwPn2NoQeDsrdWnBtY= github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= @@ -765,9 +549,7 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -802,26 +584,16 @@ github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFN github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ugorji/go v1.1.4 h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8 h1:3SVOIvH7Ae1KRYyQWRjXWJEA9sS/c/pjvH++55Gr648= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5 h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= @@ -829,27 +601,19 @@ go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -877,15 +641,8 @@ golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5 h1:FR+oGxGfbQu1d+jglI3rCkjAjUnhRSZcUxr+DqlDLNo= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -893,13 +650,8 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= @@ -907,7 +659,6 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -927,25 +678,13 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -954,23 +693,15 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c h1:HiAZXo96zOhVhtFHchj/ojzoxCFiPrp9/j0GtS38V3g= -golang.org/x/oauth2 v0.0.0-20210201163806-010130855d6c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -998,28 +729,16 @@ golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1033,7 +752,6 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -1043,7 +761,6 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1064,38 +781,13 @@ golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.3 h1:L69ShwSZEyCsLKoAxDKeMvLDZkumEe8gXUZAjab0tX8= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1108,25 +800,10 @@ google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1138,42 +815,18 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201111145450-ac7456db90a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea h1:N98SvVh7Hdle2lgUVFuIkf0B3u29CUakMUQa7Hwz8Wc= -google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced h1:c5geK1iMU3cDKtFrCVQIcjR3W+JOZMuhIyICMCTbtus= -google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 h1:3V2dxSZpz4zozWWUq36vUxXEKnSYitEH2LdsAx+RUmg= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0 h1:lQ+dE99pFsb8osbJB3oRfE5eW4Hx6a/lZQr8Jh+eoT4= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1184,13 +837,10 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS0A+VXQ= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1198,22 +848,16 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25 h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.61.0 h1:LBCdW4FmFYL4s/vDZD1RQYX7oAR6IjujCYgMdbHBR10= gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1233,16 +877,6 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/x/cheqd/client/cli/txDid.go b/x/cheqd/client/cli/txDid.go index 1899f6729..387810d07 100644 --- a/x/cheqd/client/cli/txDid.go +++ b/x/cheqd/client/cli/txDid.go @@ -14,16 +14,13 @@ func CmdCreateDid() *cobra.Command { Short: "Creates a new did", Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { - id := string(args[0]) - argsVerkey := string(args[1]) - argsAlias := string(args[2]) - clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - msg := types.NewMsgCreateDid(string(id), string(argsVerkey), string(argsAlias)) + // TODO pass arguments + msg := types.NewMsgCreateDid("nil", nil, nil, nil, nil, nil, nil, nil, nil, nil) if err := msg.ValidateBasic(); err != nil { return err } @@ -42,16 +39,13 @@ func CmdUpdateDid() *cobra.Command { Short: "Update a did", Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { - id := string(args[0]) - argsVerkey := string(args[1]) - argsAlias := string(args[2]) - clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - msg := types.NewMsgUpdateDid(string(id), string(argsVerkey), string(argsAlias)) + // TODO pass arguments + msg := types.NewMsgUpdateDid("nil", nil, nil, nil, nil, nil, nil, nil, nil, nil) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/cheqd/client/cli/txSchema.go b/x/cheqd/client/cli/txSchema.go index f1d15318a..b8671520f 100644 --- a/x/cheqd/client/cli/txSchema.go +++ b/x/cheqd/client/cli/txSchema.go @@ -2,7 +2,7 @@ package cli import ( "github.com/spf13/cobra" - "strconv" + "strings" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" @@ -16,78 +16,16 @@ func CmdCreateSchema() *cobra.Command { Short: "Creates a new schema", Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { - argsName := string(args[0]) - argsVersion := string(args[1]) - argsAttrNames := string(args[2]) + argsName := args[0] + argsVersion := args[1] + argsAttrNames := strings.Split(args[2], ",") clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - msg := types.NewMsgCreateSchema(clientCtx.GetFromAddress().String(), string(argsName), string(argsVersion), string(argsAttrNames)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdUpdateSchema() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-schema [id] [name] [version] [attrNames]", - Short: "Update a schema", - Args: cobra.ExactArgs(4), - RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - argsName := string(args[1]) - argsVersion := string(args[2]) - argsAttrNames := string(args[3]) - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdateSchema(clientCtx.GetFromAddress().String(), id, string(argsName), string(argsVersion), string(argsAttrNames)) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdDeleteSchema() *cobra.Command { - cmd := &cobra.Command{ - Use: "delete-schema [id] [name] [version] [attrNames]", - Short: "Delete a schema by id", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgDeleteSchema(clientCtx.GetFromAddress().String(), id) + msg := types.NewMsgCreateSchema(clientCtx.GetFromAddress().String(), argsName, argsVersion, argsAttrNames) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/cheqd/client/rest/rest.go b/x/cheqd/client/rest/rest.go index cc9a341d1..153b1b5c2 100644 --- a/x/cheqd/client/rest/rest.go +++ b/x/cheqd/client/rest/rest.go @@ -40,10 +40,6 @@ func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { r.HandleFunc("/cheqd/dids/{id}", getDidHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/dids", listDidHandler(clientCtx)).Methods("GET") - - r.HandleFunc("/cheqd/nyms/{id}", getNymHandler(clientCtx)).Methods("GET") - r.HandleFunc("/cheqd/nyms", listNymHandler(clientCtx)).Methods("GET") - } func registerTxHandlers(clientCtx client.Context, r *mux.Router) { diff --git a/x/cheqd/client/rest/txCredDef.go b/x/cheqd/client/rest/txCredDef.go index eef0fed5f..800231fae 100644 --- a/x/cheqd/client/rest/txCredDef.go +++ b/x/cheqd/client/rest/txCredDef.go @@ -1,15 +1,12 @@ package rest import ( - "net/http" - "strconv" - "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" + "net/http" ) type createCredDefRequest struct { @@ -46,106 +43,11 @@ func createCredDefHandler(clientCtx client.Context) http.HandlerFunc { parsedSignature_type := req.SignatureType - parsedValue := req.Value - msg := types.NewMsgCreateCredDef( req.Creator, parsedSchema_id, parsedTag, parsedSignature_type, - parsedValue, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type updateCredDefRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Schema_id string `json:"schema_id"` - Tag string `json:"tag"` - SignatureType string `json:"signatureType"` - Value string `json:"value"` -} - -func updateCredDefHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req updateCredDefRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedSchema_id := req.Schema_id - - parsedTag := req.Tag - - parsedSignature_type := req.SignatureType - - parsedValue := req.Value - - msg := types.NewMsgUpdateCredDef( - req.Creator, - id, - parsedSchema_id, - parsedTag, - parsedSignature_type, - parsedValue, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type deleteCredDefRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` -} - -func deleteCredDefHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req deleteCredDefRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - msg := types.NewMsgDeleteCredDef( - req.Creator, - id, ) tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) diff --git a/x/cheqd/client/rest/txDid.go b/x/cheqd/client/rest/txDid.go index e94369031..d22461ec1 100644 --- a/x/cheqd/client/rest/txDid.go +++ b/x/cheqd/client/rest/txDid.go @@ -7,16 +7,36 @@ import ( "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/rest" "github.com/gorilla/mux" ) +type DidService struct { + Id string `json:"id""` + Type string `json:"type"` + ServiceEndpoint string `json:"serviceEndpoint"` +} + +type VerificationMethod struct { + Id string `json:"id"` + Type string `json:"type"` + Controller string `json:"controller"` + PublicKeyJwk map[string]string `json:"publicKeyJwk"` + PublicKeyMultibase string `json:"publicKeyMultibase"` +} + type createDidRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Verkey string `json:"verkey"` - Alias string `json:"alias"` + BaseReq rest.BaseReq `json:"base_req"` + Id string `json:"id"` + Controller []string `json:"controller"` + VerificationMethod []*VerificationMethod `json:"alias"` + Authentication []string `json:"authentication"` + AssertionMethod []string `json:"assertionMethod"` + CapabilityInvocation []string `json:"capabilityInvocation"` + CapabilityDelegation []string `json:"capabilityDelegation"` + KeyAgreement []string `json:"keyAgreement"` + AlsoKnownAs []string `json:"alsoKnownAs"` + Service []*DidService `json:"service"` } func createDidHandler(clientCtx client.Context) http.HandlerFunc { @@ -32,20 +52,18 @@ func createDidHandler(clientCtx client.Context) http.HandlerFunc { return } - _, err := sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedVerkey := req.Verkey - - parsedAlias := req.Alias - + // TODO add verifificationMethod and Service msg := types.NewMsgCreateDid( - req.Creator, - parsedVerkey, - parsedAlias, + req.Id, + req.Controller, + nil, + req.Authentication, + req.AssertionMethod, + req.CapabilityInvocation, + req.CapabilityDelegation, + req.KeyAgreement, + req.AlsoKnownAs, + nil, ) tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) @@ -53,15 +71,22 @@ func createDidHandler(clientCtx client.Context) http.HandlerFunc { } type updateDidRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Verkey string `json:"verkey"` - Alias string `json:"alias"` + BaseReq rest.BaseReq `json:"base_req"` + Id string `json:"id"` + Controller []string `json:"controller"` + VerificationMethod []*VerificationMethod `json:"alias"` + Authentication []string `json:"authentication"` + AssertionMethod []string `json:"assertionMethod"` + CapabilityInvocation []string `json:"capabilityInvocation"` + CapabilityDelegation []string `json:"capabilityDelegation"` + KeyAgreement []string `json:"keyAgreement"` + AlsoKnownAs []string `json:"alsoKnownAs"` + Service []*DidService `json:"service"` } func updateDidHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) + _, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) if err != nil { return } @@ -77,59 +102,18 @@ func updateDidHandler(clientCtx client.Context) http.HandlerFunc { return } - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedVerkey := req.Verkey - - parsedAlias := req.Alias - + // TODO add verifificationMethod and Service msg := types.NewMsgUpdateDid( - req.Creator, - id, - parsedVerkey, - parsedAlias, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type deleteDidRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` -} - -func deleteDidHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req deleteDidRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - msg := types.NewMsgDeleteDid( - req.Creator, - id, + req.Id, + req.Controller, + nil, + req.Authentication, + req.AssertionMethod, + req.CapabilityInvocation, + req.CapabilityDelegation, + req.KeyAgreement, + req.AlsoKnownAs, + nil, ) tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) diff --git a/x/cheqd/client/rest/txSchema.go b/x/cheqd/client/rest/txSchema.go index 257e25f37..460e5f806 100644 --- a/x/cheqd/client/rest/txSchema.go +++ b/x/cheqd/client/rest/txSchema.go @@ -2,14 +2,12 @@ package rest import ( "net/http" - "strconv" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" ) type createSchemaRequest struct { @@ -17,7 +15,7 @@ type createSchemaRequest struct { Creator string `json:"creator"` Name string `json:"name"` Version string `json:"version"` - AttrNames string `json:"attrNames"` + AttrNames []string `json:"attrNames"` } func createSchemaHandler(clientCtx client.Context) http.HandlerFunc { @@ -55,91 +53,3 @@ func createSchemaHandler(clientCtx client.Context) http.HandlerFunc { tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) } } - -type updateSchemaRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Name string `json:"name"` - Version string `json:"version"` - AttrNames string `json:"attrNames"` -} - -func updateSchemaHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req updateSchemaRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedName := req.Name - - parsedVersion := req.Version - - parsedAttrNames := req.AttrNames - - msg := types.NewMsgUpdateSchema( - req.Creator, - id, - parsedName, - parsedVersion, - parsedAttrNames, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type deleteSchemaRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` -} - -func deleteSchemaHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req deleteSchemaRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err = sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - msg := types.NewMsgDeleteSchema( - req.Creator, - id, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index c7ada9350..7104caec1 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -8,81 +8,31 @@ import ( "github.com/stretchr/testify/require" ) -func TestHandler_CreateNym(t *testing.T) { +func TestHandler_CreateDid(t *testing.T) { setup := Setup() - // add new NYM - nymMsg := TestMsgCreateNym() - result, _ := setup.Handler(setup.Ctx, nymMsg) - nym := types.MsgCreateNymResponse{} - err := nym.Unmarshal(result.Data) - if err != nil { - log.Fatal(err) - } - - // query NYM - receivedNym := setup.NymKeeper.GetNym(setup.Ctx, nym.Id) - - //// check - require.Equal(t, receivedNym.Id, nym.Id) - require.Equal(t, nymMsg.GetCreator(), receivedNym.GetCreator()) - require.Equal(t, nymMsg.GetAlias(), receivedNym.GetAlias()) - require.Equal(t, nymMsg.GetDid(), receivedNym.GetDid()) - require.Equal(t, nymMsg.GetVerkey(), receivedNym.GetVerkey()) - require.Equal(t, nymMsg.GetRole(), receivedNym.GetRole()) -} -func TestHandler_UpdateNym(t *testing.T) { - setup := Setup() - - // add new NYM - nymMsg := TestMsgCreateNym() - result, _ := setup.Handler(setup.Ctx, nymMsg) - nym := types.MsgCreateNymResponse{} - err := nym.Unmarshal(result.Data) - if err != nil { - log.Fatal(err) - } - - // update NYM - updateNymMsg := TestMsgUpdateNym(nym.GetId()) - _, _ = setup.Handler(setup.Ctx, updateNymMsg) - - // query NYM - receivedNym := setup.NymKeeper.GetNym(setup.Ctx, nym.Id) - - //// check - require.Equal(t, receivedNym.Id, nym.Id) - require.Equal(t, updateNymMsg.GetCreator(), receivedNym.GetCreator()) - require.Equal(t, updateNymMsg.GetAlias(), receivedNym.GetAlias()) - require.Equal(t, updateNymMsg.GetDid(), receivedNym.GetDid()) - require.Equal(t, updateNymMsg.GetVerkey(), receivedNym.GetVerkey()) - require.Equal(t, updateNymMsg.GetRole(), receivedNym.GetRole()) -} + // add new Did + didMsg := setup.CreateDid() + result, _ := setup.Handler(setup.Ctx, didMsg) + did := types.MsgCreateDidResponse{} + err := did.Unmarshal(result.Data) -func TestHandler_DeleteNym(t *testing.T) { - setup := Setup() - - // add new NYM - nymMsg := TestMsgCreateNym() - result, _ := setup.Handler(setup.Ctx, nymMsg) - nym := types.MsgCreateNymResponse{} - err := nym.Unmarshal(result.Data) if err != nil { log.Fatal(err) } - // delete NYM - updateNymMsg := TestMsgDeleteNym(nym.GetId()) - _, _ = setup.Handler(setup.Ctx, updateNymMsg) - - // query NYM - receivedNym := setup.NymKeeper.GetNym(setup.Ctx, nym.Id) + // query Did + receivedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) //// check - require.Equal(t, receivedNym.Id, nym.Id) - require.Equal(t, "", receivedNym.GetCreator()) - require.Equal(t, "", receivedNym.GetAlias()) - require.Equal(t, "", receivedNym.GetDid()) - require.Equal(t, "", receivedNym.GetVerkey()) - require.Equal(t, "", receivedNym.GetRole()) + require.Equal(t, did.Id, receivedDid.Id) + require.Equal(t, didMsg.GetController(), receivedDid.GetController()) + require.Equal(t, didMsg.GetVerificationMethod(), receivedDid.GetVerificationMethod()) + require.Equal(t, didMsg.GetAuthentication(), receivedDid.GetAuthentication()) + require.Equal(t, didMsg.GetAssertionMethod(), receivedDid.GetAssertionMethod()) + require.Equal(t, didMsg.GetCapabilityInvocation(), receivedDid.GetCapabilityInvocation()) + require.Equal(t, didMsg.GetCapabilityDelegation(), receivedDid.GetCapabilityDelegation()) + require.Equal(t, didMsg.GetKeyAgreement(), receivedDid.GetKeyAgreement()) + require.Equal(t, didMsg.GetAlsoKnownAs(), receivedDid.GetAlsoKnownAs()) + require.Equal(t, didMsg.GetService(), receivedDid.GetService()) } diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index a5287da68..da6d8052f 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -13,13 +13,14 @@ import ( "github.com/cheqd/cheqd-node/x/cheqd/keeper" "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" + // ptypes "github.com/cosmos/cosmos-sdk/codec/types" ) type TestSetup struct { - Cdc codec.Marshaler - Ctx sdk.Context - NymKeeper keeper.Keeper - Handler sdk.Handler + Cdc codec.Marshaler + Ctx sdk.Context + Keeper keeper.Keeper + Handler sdk.Handler } func Setup() TestSetup { @@ -31,14 +32,14 @@ func Setup() TestSetup { db := dbm.NewMemDB() dbStore := store.NewCommitMultiStore(db) - nymKey := sdk.NewKVStoreKey(types.StoreKey) + storeKey := sdk.NewKVStoreKey(types.StoreKey) memStoreKey := sdk.NewKVStoreKey(types.MemStoreKey) - dbStore.MountStoreWithDB(nymKey, sdk.StoreTypeIAVL, nil) + dbStore.MountStoreWithDB(storeKey, sdk.StoreTypeIAVL, nil) _ = dbStore.LoadLatestVersion() // Init Keepers - nymKeeper := keeper.NewKeeper(cdc, nymKey, memStoreKey) + keeper := keeper.NewKeeper(cdc, storeKey, memStoreKey) // Create context blockTime, _ := time.Parse(time.RFC3339, "2021-01-01T00:00:00.000Z") @@ -46,48 +47,42 @@ func Setup() TestSetup { tmproto.Header{ChainID: "cheqd-node", Time: blockTime}, false, log.NewNopLogger()) - handler := NewHandler(*nymKeeper) + handler := NewHandler(*keeper) setup := TestSetup{ - Cdc: cdc, - Ctx: ctx, - NymKeeper: *nymKeeper, - Handler: handler, + Cdc: cdc, + Ctx: ctx, + Keeper: *keeper, + Handler: handler, } return setup } -func TestMsgCreateNym() *types.MsgCreateNym { - return types.NewMsgCreateNym( - "creator_address", - "test_alias", - "test_verkey", - "test_did", - "test_role", - ) -} - -func TestMsgUpdateNym(id uint64) *types.MsgUpdateNym { - return types.NewMsgUpdateNym( - "creator_address", - id, - "test_alias_new", - "test_verkey_new", - "test_did_new", - "test_role_new", - ) -} +func (s *TestSetup) CreateDid() *types.MsgCreateDid { + VerificationMethod := types.VerificationMethod{ + Id: "12", + Type: "Ed25519VerificationKey2020", + Controller: "Controller", + PublicKeyMultibase: "21312", + } -func TestMsgDeleteNym(id uint64) *types.MsgDeleteNym { - return types.NewMsgDeleteNym( - "creator_address", - id, - ) -} + Service := types.DidService{ + Id: "1", + Type: "type", + ServiceEndpoint: "endpoint", + } -func TestQueryGetNym(id uint64) types.QueryGetNymRequest { - return types.QueryGetNymRequest{ - Id: id, + return &types.MsgCreateDid{ + Id: "1", + Controller: []string{"controller"}, + VerificationMethod: []*types.VerificationMethod{&VerificationMethod}, + Authentication: []string{"Authentication"}, + AssertionMethod: []string{"AssertionMethod"}, + CapabilityInvocation: []string{"CapabilityInvocation"}, + CapabilityDelegation: []string{"CapabilityDelegation"}, + KeyAgreement: []string{"KeyAgreement"}, + AlsoKnownAs: []string{"AlsoKnownAs"}, + Service: []*types.DidService{&Service}, } } diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 83151cc13..1c6c5e13d 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -1,9 +1,7 @@ package keeper import ( - "encoding/binary" "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cheqd/cheqd-node/x/cheqd/utils" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "strconv" @@ -38,6 +36,7 @@ func (k Keeper) SetCredDefCount(ctx sdk.Context, count uint64) { store.Set(byteKey, bz) } +// AppendCredDef TODO add Value // AppendCredDef appends a credDef in the store with a new id and update the count func (k Keeper) AppendCredDef( ctx sdk.Context, @@ -45,16 +44,15 @@ func (k Keeper) AppendCredDef( schemaId string, tag string, signatureType string, - credDefValue *types.Any, ) string { // Create the credDef count := k.GetCredDefCount(ctx) + var credDef = types.CredDef{ Id: id, SchemaId: schemaId, Tag: tag, SignatureType: signatureType, - Value: credDefValue, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index c0680dcc1..b60b33435 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -1,7 +1,6 @@ package keeper import ( - "encoding/binary" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cheqd/cheqd-node/x/cheqd/utils" "github.com/cosmos/cosmos-sdk/store/prefix" @@ -44,11 +43,11 @@ func (k Keeper) AppendDid( id string, controller []string, verificationMethod []*types.VerificationMethod, - authentication []*types.Any, - assertionMethod []*types.Any, - capabilityInvocation []*types.Any, - capabilityDelegation []*types.Any, - keyAgreement []*types.Any, + authentication []string, + assertionMethod []string, + capabilityInvocation []string, + capabilityDelegation []string, + keyAgreement []string, alsoKnownAs []string, service []*types.DidService, ) string { diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index b9cd4f77b..06efb4bf1 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -12,17 +12,18 @@ import ( func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateCredDefResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) credDefMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateCredDef) + if !isMsgIdentity { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + k.AppendCredDef( ctx, credDefMsg.Id, credDefMsg.SchemaId, credDefMsg.Tag, credDefMsg.SignatureType, - credDefMsg.Value, ) return &types.MsgCreateCredDefResponse{ diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 871915cf4..cadaa0970 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -12,10 +12,12 @@ import ( func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateDidResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateDid) + if !isMsgIdentity { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + k.AppendDid( ctx, didMsg.Id, @@ -38,10 +40,12 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgUpdateDidResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgUpdateDid) + if !isMsgIdentity { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + var did = types.Did{ Id: didMsg.Id, Controller: didMsg.Controller, diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 1add87d0e..9690a3101 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -12,10 +12,12 @@ import ( func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateSchemaResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) schemaMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateSchema) + if !isMsgIdentity { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + k.AppendSchema( ctx, schemaMsg.Id, diff --git a/x/cheqd/keeper/query_did.go b/x/cheqd/keeper/query_did.go index 14140f944..313ce5c99 100644 --- a/x/cheqd/keeper/query_did.go +++ b/x/cheqd/keeper/query_did.go @@ -7,7 +7,6 @@ import ( ) func getDid(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - if !keeper.HasDid(ctx, id) { return nil, sdkerrors.ErrKeyNotFound } diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index aab70a6c1..dd33b3462 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -1,19 +1,18 @@ package types import ( - "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" ) var _ sdk.Msg = &MsgCreateCredDef{} -func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, value *types.Any) *MsgCreateCredDef { +// NewMsgCreateCredDef todo add value +func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string) *MsgCreateCredDef { return &MsgCreateCredDef{ Id: id, SchemaId: schemaId, Tag: tag, SignatureType: signatureType, - Value: value, } } diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 7115b5d6a..5f6d33588 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -1,7 +1,6 @@ package types import ( - "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -11,11 +10,11 @@ func NewMsgCreateDid( id string, controller []string, verificationMethod []*VerificationMethod, - authentication []*types.Any, - assertionMethod []*types.Any, - capabilityInvocation []*types.Any, - capabilityDelegation []*types.Any, - keyAgreement []*types.Any, + authentication []string, + assertionMethod []string, + capabilityInvocation []string, + capabilityDelegation []string, + keyAgreement []string, alsoKnownAs []string, service []*DidService, ) *MsgCreateDid { @@ -59,11 +58,11 @@ func NewMsgUpdateDid( id string, controller []string, verificationMethod []*VerificationMethod, - authentication []*types.Any, - assertionMethod []*types.Any, - capabilityInvocation []*types.Any, - capabilityDelegation []*types.Any, - keyAgreement []*types.Any, + authentication []string, + assertionMethod []string, + capabilityInvocation []string, + capabilityDelegation []string, + keyAgreement []string, alsoKnownAs []string, service []*DidService, ) *MsgUpdateDid { From b128396fd9861415a240433f45024b70fdaabba8 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 30 Sep 2021 10:32:23 +0300 Subject: [PATCH 13/74] fixed namespace in handling request --- x/cheqd/handler.go | 10 ++++------ x/cheqd/handler_test.go | 4 +++- x/cheqd/handler_test_setup.go | 8 +++++++- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index 335641268..33b301617 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -2,8 +2,6 @@ package cheqd import ( "fmt" - "reflect" - "github.com/cheqd/cheqd-node/x/cheqd/keeper" "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -23,19 +21,19 @@ func NewHandler(k keeper.Keeper) sdk.Handler { } switch parsed_msg.Data.TypeUrl { // this line is used by starport scaffolding # 1 - case reflect.TypeOf(types.MsgCreateCredDef{}).Name(): + case "/cheqdid.cheqdnode.cheqd.MsgCreateCredDef": res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), parsed_msg) return sdk.WrapServiceResult(ctx, res, err) - case reflect.TypeOf(types.MsgCreateSchema{}).Name(): + case "/cheqdid.cheqdnode.cheqd.MsgCreateSchema": res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), parsed_msg) return sdk.WrapServiceResult(ctx, res, err) - case reflect.TypeOf(types.MsgCreateDid{}).Name(): + case "/cheqdid.cheqdnode.cheqd.MsgCreateDid": res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), parsed_msg) return sdk.WrapServiceResult(ctx, res, err) - case reflect.TypeOf(types.MsgUpdateDid{}).Name(): + case "/cheqdid.cheqdnode.cheqd.MsgUpdateDid": res, err := msgServer.UpdateDid(sdk.WrapSDKContext(ctx), parsed_msg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index 7104caec1..8c73cf05d 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/cheqd/cheqd-node/x/cheqd/types" + ptypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/stretchr/testify/require" ) @@ -13,7 +14,8 @@ func TestHandler_CreateDid(t *testing.T) { // add new Did didMsg := setup.CreateDid() - result, _ := setup.Handler(setup.Ctx, didMsg) + data, _ := ptypes.NewAnyWithValue(didMsg) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data)) did := types.MsgCreateDidResponse{} err := did.Unmarshal(result.Data) diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index da6d8052f..93a87db22 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -12,8 +12,8 @@ import ( "github.com/cheqd/cheqd-node/x/cheqd/keeper" "github.com/cheqd/cheqd-node/x/cheqd/types" + ptypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" - // ptypes "github.com/cosmos/cosmos-sdk/codec/types" ) type TestSetup struct { @@ -86,3 +86,9 @@ func (s *TestSetup) CreateDid() *types.MsgCreateDid { Service: []*types.DidService{&Service}, } } + +func (s *TestSetup) WrapRequest(Data *ptypes.Any) *types.MsgWriteRequest { + return &types.MsgWriteRequest{ + Data: Data, + } +} From 4c678cc7a197cc6cd3598a930dfc1a530158f766 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 30 Sep 2021 15:07:32 +0300 Subject: [PATCH 14/74] implemented signature verification --- go.mod | 1 + proto/cheqd/tx.proto | 1 + x/cheqd/handler_test.go | 9 +- x/cheqd/handler_test_setup.go | 35 +++-- x/cheqd/keeper/msg_server_did.go | 5 + x/cheqd/keeper/verify.go | 70 +++++++++ x/cheqd/types/errors.go | 2 +- x/cheqd/types/tx.pb.go | 255 +++++++++++++++++++++++++------ x/cheqd/utils/utils.go | 7 + 9 files changed, 327 insertions(+), 58 deletions(-) create mode 100644 x/cheqd/keeper/verify.go diff --git a/go.mod b/go.mod index 7ad57b9ce..1c73cd006 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.15 require ( github.com/armon/go-metrics v0.3.8 // indirect + github.com/btcsuite/btcutil v1.0.2 // indirect github.com/confio/ics23/go v0.6.6 // indirect github.com/cosmos/cosmos-sdk v0.42.4 github.com/gogo/protobuf v1.3.3 diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index e7f99b60a..dd74890b6 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -21,6 +21,7 @@ message MsgWriteRequest { google.protobuf.Any data = 1; repeated string authors = 2; map signatures = 3; + map metadata = 4; } message MsgCreateCredDef { diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index 8c73cf05d..5fa65d89d 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -1,9 +1,11 @@ package cheqd import ( + "crypto/ed25519" "log" "testing" + "crypto/rand" "github.com/cheqd/cheqd-node/x/cheqd/types" ptypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/stretchr/testify/require" @@ -12,10 +14,13 @@ import ( func TestHandler_CreateDid(t *testing.T) { setup := Setup() + //Init priv key + pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) + // add new Did - didMsg := setup.CreateDid() + didMsg := setup.CreateDid(pubKey) data, _ := ptypes.NewAnyWithValue(didMsg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data)) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string, 0))) did := types.MsgCreateDidResponse{} err := did.Unmarshal(result.Data) diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index 93a87db22..901219a44 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -1,6 +1,10 @@ package cheqd import ( + "crypto/ed25519" + "encoding/base64" + "encoding/json" + "github.com/btcsuite/btcutil/base58" "time" "github.com/cheqd/cheqd-node/app/params" @@ -39,7 +43,7 @@ func Setup() TestSetup { _ = dbStore.LoadLatestVersion() // Init Keepers - keeper := keeper.NewKeeper(cdc, storeKey, memStoreKey) + newKeeper := keeper.NewKeeper(cdc, storeKey, memStoreKey) // Create context blockTime, _ := time.Parse(time.RFC3339, "2021-01-01T00:00:00.000Z") @@ -47,24 +51,26 @@ func Setup() TestSetup { tmproto.Header{ChainID: "cheqd-node", Time: blockTime}, false, log.NewNopLogger()) - handler := NewHandler(*keeper) + handler := NewHandler(*newKeeper) setup := TestSetup{ Cdc: cdc, Ctx: ctx, - Keeper: *keeper, + Keeper: *newKeeper, Handler: handler, } return setup } -func (s *TestSetup) CreateDid() *types.MsgCreateDid { +func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey) *types.MsgCreateDid { + PublicKeyMultibase := "z" + base58.Encode(pubKey) + VerificationMethod := types.VerificationMethod{ - Id: "12", + Id: "did:cheqd:test:alice#key-1", Type: "Ed25519VerificationKey2020", Controller: "Controller", - PublicKeyMultibase: "21312", + PublicKeyMultibase: PublicKeyMultibase, } Service := types.DidService{ @@ -74,10 +80,10 @@ func (s *TestSetup) CreateDid() *types.MsgCreateDid { } return &types.MsgCreateDid{ - Id: "1", + Id: "did:cheqd:test:alice", Controller: []string{"controller"}, VerificationMethod: []*types.VerificationMethod{&VerificationMethod}, - Authentication: []string{"Authentication"}, + Authentication: []string{"did:cheqd:test:alice#key-1"}, AssertionMethod: []string{"AssertionMethod"}, CapabilityInvocation: []string{"CapabilityInvocation"}, CapabilityDelegation: []string{"CapabilityDelegation"}, @@ -87,8 +93,17 @@ func (s *TestSetup) CreateDid() *types.MsgCreateDid { } } -func (s *TestSetup) WrapRequest(Data *ptypes.Any) *types.MsgWriteRequest { +func (s *TestSetup) WrapRequest(privKey ed25519.PrivateKey, data *ptypes.Any, metadata map[string]string) *types.MsgWriteRequest { + metadataBytes, _ := json.Marshal(&metadata) + dataBytes := data.Value + + signingInput := base64.StdEncoding.EncodeToString(metadataBytes) + "." + base64.StdEncoding.EncodeToString(dataBytes) + signingInputBytes := []byte(base64.StdEncoding.EncodeToString([]byte(signingInput))) + signature := base64.StdEncoding.EncodeToString(ed25519.Sign(privKey, signingInputBytes)) + return &types.MsgWriteRequest{ - Data: Data, + Data: data, + Metadata: metadata, + Signatures: map[string]string{"did:cheqd:test:alice#key-1": signature}, } } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index cadaa0970..8e7f39e45 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -13,6 +13,11 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) ctx := sdk.UnwrapSDKContext(goCtx) didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateDid) + if !k.VerifyMsgCreateDid(msg, didMsg) { + errMsg := "Invalid signature detected" + return nil, sdkerrors.Wrap(types.ErrInvalidSignature, errMsg) + } + if !isMsgIdentity { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go new file mode 100644 index 000000000..29bbd6844 --- /dev/null +++ b/x/cheqd/keeper/verify.go @@ -0,0 +1,70 @@ +package keeper + +import ( + "crypto/ed25519" + "encoding/base64" + "encoding/json" + "github.com/btcsuite/btcutil/base58" + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cheqd/cheqd-node/x/cheqd/utils" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type DidDoc = struct { + Authentication []string + VerificationMethod []*types.VerificationMethod +} + +func (k Keeper) Verify(context sdk.Context, request *types.MsgWriteRequest) bool { + metadataBytes, _ := json.Marshal(&request.Metadata) + dataBytes := request.Data.Value + + signingInput := base64.StdEncoding.EncodeToString(metadataBytes) + "." + base64.StdEncoding.EncodeToString(dataBytes) + signingInputBytes, _ := base64.StdEncoding.DecodeString(signingInput) + + result := true + + for didUrl := range request.Signatures { + did, _ := utils.SplitDidUrlIntoDidAndFragment(didUrl) + didDoc := k.GetDid(context, did) + + pubKey := FindPublicKey(didDoc.Authentication, didDoc.VerificationMethod, didUrl) + signature, _ := base64.StdEncoding.DecodeString(request.Signatures[didUrl]) + result = result && ed25519.Verify(pubKey, signingInputBytes, signature) + } + + return result +} + +func (k Keeper) VerifyMsgCreateDid(request *types.MsgWriteRequest, didDoc *types.MsgCreateDid) bool { + metadataBytes, _ := json.Marshal(&request.Metadata) + dataBytes := request.Data.Value + + signingInput := base64.StdEncoding.EncodeToString(metadataBytes) + "." + base64.StdEncoding.EncodeToString(dataBytes) + signingInputBytes := []byte(base64.StdEncoding.EncodeToString([]byte(signingInput))) + + result := true + + for did := range request.Signatures { + pubKey := FindPublicKey(didDoc.Authentication, didDoc.VerificationMethod, did) + signature, _ := base64.StdEncoding.DecodeString(request.Signatures[did]) + result = result && ed25519.Verify(pubKey, signingInputBytes, signature) + } + + return result +} + +// FindAuthentication improve error handling +func FindPublicKey(authentication []string, verificationMethods []*types.VerificationMethod, id string) ed25519.PublicKey { + for _, authentication := range authentication { + if authentication == id { + for _, vm := range verificationMethods { + if vm.Id == id { + return base58.Decode(vm.PublicKeyMultibase[1:]) + } + } + } + } + + return nil +} diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index 20213b8bb..cf538e509 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -8,5 +8,5 @@ import ( // x/cheqd module sentinel errors var ( - ErrSample = sdkerrors.Register(ModuleName, 1100, "sample error") + ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") ) diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 41128e0fa..d1f925393 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -33,6 +33,7 @@ type MsgWriteRequest struct { Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` Signatures map[string]string `protobuf:"bytes,3,rep,name=signatures,proto3" json:"signatures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *MsgWriteRequest) Reset() { *m = MsgWriteRequest{} } @@ -89,6 +90,13 @@ func (m *MsgWriteRequest) GetSignatures() map[string]string { return nil } +func (m *MsgWriteRequest) GetMetadata() map[string]string { + if m != nil { + return m.Metadata + } + return nil +} + type MsgCreateCredDef struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` @@ -643,6 +651,7 @@ func (m *MsgUpdateDidResponse) GetId() string { func init() { proto.RegisterType((*MsgWriteRequest)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest") + proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest.MetadataEntry") proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest.SignaturesEntry") proto.RegisterType((*MsgCreateCredDef)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDef") proto.RegisterType((*MsgCreateCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDefResponse") @@ -657,51 +666,53 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 703 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xbd, 0x6e, 0x13, 0x41, - 0x10, 0xce, 0xf9, 0x9c, 0x1f, 0x4f, 0x7e, 0x1c, 0xad, 0x2c, 0xe5, 0x30, 0xc8, 0xb2, 0x0c, 0x8a, - 0x9c, 0xa0, 0x9c, 0xc1, 0x34, 0x11, 0x52, 0x8a, 0x10, 0x53, 0x44, 0xc8, 0x14, 0x17, 0xfe, 0x04, - 0x05, 0x5a, 0xfb, 0x26, 0xe7, 0x25, 0xe7, 0x5b, 0x67, 0x77, 0x6d, 0x72, 0x6f, 0xc1, 0x3b, 0x50, - 0xf2, 0x22, 0x94, 0x29, 0x11, 0x15, 0x4a, 0x7a, 0x9e, 0x01, 0x79, 0xef, 0xfc, 0x77, 0x8e, 0x93, - 0x14, 0x54, 0x88, 0xc6, 0xde, 0xfd, 0xf6, 0x9b, 0x99, 0x6f, 0x67, 0xc6, 0xb3, 0x86, 0xb5, 0x66, - 0x0b, 0x4f, 0xdd, 0x8a, 0x3a, 0xb3, 0x3b, 0x82, 0x2b, 0x4e, 0x36, 0xf4, 0x9e, 0xb9, 0xb6, 0xfe, - 0x0e, 0xb8, 0x8b, 0xd1, 0x2a, 0x7f, 0xc7, 0xe3, 0xdc, 0xf3, 0xb1, 0xa2, 0x69, 0x8d, 0xee, 0x71, - 0x85, 0x06, 0x61, 0x64, 0x93, 0xcf, 0x46, 0x3e, 0xfa, 0x56, 0x1a, 0x28, 0xfd, 0x36, 0x20, 0x5b, - 0x97, 0xde, 0x5b, 0xc1, 0x14, 0x3a, 0x78, 0xda, 0x45, 0xa9, 0x48, 0x19, 0xd2, 0x2e, 0x55, 0xd4, - 0x32, 0x8a, 0x46, 0x79, 0xb9, 0x9a, 0xb3, 0x23, 0x77, 0xf6, 0xc0, 0x9d, 0xbd, 0x1f, 0x84, 0x8e, - 0x66, 0x10, 0x0b, 0x16, 0x69, 0x57, 0xb5, 0xb8, 0x90, 0x56, 0xaa, 0x68, 0x96, 0x33, 0xce, 0x60, - 0x4b, 0xde, 0x01, 0x48, 0xe6, 0x05, 0x54, 0x75, 0x05, 0x4a, 0xcb, 0x2c, 0x9a, 0xe5, 0xe5, 0xea, - 0xae, 0x3d, 0x43, 0xb1, 0x9d, 0x50, 0x60, 0x1f, 0x0d, 0x4d, 0x9f, 0x07, 0x4a, 0x84, 0xce, 0x98, - 0xaf, 0xfc, 0x1e, 0x64, 0x13, 0xc7, 0x64, 0x1d, 0xcc, 0x13, 0x0c, 0xb5, 0xde, 0x8c, 0xd3, 0x5f, - 0x92, 0x1c, 0xcc, 0xf7, 0xa8, 0xdf, 0x45, 0x2b, 0xa5, 0xb1, 0x68, 0xf3, 0x34, 0xb5, 0x6b, 0x94, - 0xbe, 0x1a, 0xb0, 0x5e, 0x97, 0xde, 0x81, 0x40, 0xaa, 0xf0, 0x40, 0xa0, 0x5b, 0xc3, 0x63, 0xb2, - 0x06, 0x29, 0xe6, 0xc6, 0xf6, 0x29, 0xe6, 0x92, 0xbb, 0x90, 0x91, 0xcd, 0x16, 0xb6, 0xe9, 0x47, - 0xe6, 0xc6, 0x2e, 0x96, 0x22, 0xe0, 0xd0, 0xed, 0x47, 0x53, 0xd4, 0xb3, 0xcc, 0x28, 0x9a, 0xa2, - 0x1e, 0x79, 0x00, 0xab, 0x43, 0x81, 0xaf, 0xc2, 0x0e, 0x5a, 0x69, 0x7d, 0x36, 0x09, 0x92, 0xed, - 0x81, 0xa6, 0xf9, 0x6b, 0xf2, 0x1a, 0x51, 0x4a, 0xdb, 0x60, 0x25, 0x45, 0x3a, 0x28, 0x3b, 0x3c, - 0x90, 0x98, 0x14, 0x5b, 0x6a, 0xeb, 0x0a, 0x46, 0xdc, 0x23, 0x2d, 0x72, 0xea, 0x3e, 0x04, 0xd2, - 0x01, 0x6d, 0x0f, 0xb2, 0xa1, 0xd7, 0xfd, 0xda, 0xf5, 0x50, 0x48, 0xc6, 0x83, 0xf8, 0x2a, 0x83, - 0x2d, 0xb9, 0x07, 0x19, 0xaa, 0x94, 0x78, 0x49, 0xdb, 0x28, 0xad, 0xb4, 0xae, 0xeb, 0x08, 0x28, - 0x6d, 0xc1, 0x46, 0x22, 0xdc, 0x4c, 0x65, 0x3f, 0x4d, 0x58, 0x19, 0x72, 0x6b, 0xcc, 0x9d, 0xd2, - 0x55, 0x00, 0x68, 0xf2, 0x40, 0x09, 0xee, 0xfb, 0x28, 0xe2, 0x16, 0x1a, 0x43, 0xc8, 0x07, 0x20, - 0x3d, 0x14, 0xec, 0x98, 0x35, 0xa9, 0x62, 0x3c, 0xa8, 0xa3, 0x6a, 0x71, 0x37, 0xee, 0xa6, 0x87, - 0x33, 0xbb, 0xe9, 0xcd, 0x94, 0x89, 0x73, 0x85, 0x1b, 0xb2, 0x09, 0x6b, 0xfd, 0x6e, 0xc5, 0x40, - 0xc5, 0x78, 0x7c, 0xd7, 0x04, 0x4a, 0xca, 0x90, 0xa5, 0x52, 0xa2, 0x18, 0x53, 0x30, 0xaf, 0x89, - 0x49, 0x98, 0x54, 0x21, 0xd7, 0xa4, 0x1d, 0xda, 0x60, 0x3e, 0x53, 0xe1, 0x61, 0xd0, 0xe3, 0xb1, - 0xdf, 0x05, 0x4d, 0xbf, 0xf2, 0x6c, 0xd2, 0xa6, 0x86, 0x3e, 0x7a, 0x91, 0xcd, 0x62, 0xd2, 0x66, - 0x74, 0x46, 0x4a, 0xb0, 0x72, 0x82, 0xe1, 0xbe, 0x27, 0x10, 0xdb, 0x18, 0x28, 0x6b, 0x49, 0x73, - 0x27, 0x30, 0x52, 0x84, 0x65, 0xea, 0x4b, 0xfe, 0x22, 0xe0, 0x9f, 0x83, 0x7d, 0x69, 0x65, 0x34, - 0x65, 0x1c, 0x22, 0x7b, 0xb0, 0x28, 0x51, 0xf4, 0x58, 0x13, 0x2d, 0xd0, 0x19, 0xbd, 0x3f, 0x33, - 0xa3, 0x35, 0xe6, 0x1e, 0x45, 0x54, 0x67, 0x60, 0x53, 0xda, 0x84, 0xdc, 0x78, 0x6d, 0x6f, 0x6a, - 0x82, 0xd7, 0x1d, 0xf7, 0x7f, 0x13, 0xfc, 0xa3, 0x4d, 0x30, 0xac, 0xed, 0xac, 0x26, 0xa8, 0x7e, - 0x33, 0xc1, 0xac, 0x4b, 0x8f, 0xf8, 0xb0, 0x3a, 0x39, 0x79, 0xcb, 0xb7, 0x7d, 0x13, 0xf2, 0x8f, - 0xaf, 0x63, 0x5e, 0x3d, 0x29, 0x3f, 0xc1, 0xca, 0xc4, 0x58, 0xbc, 0x7d, 0xb0, 0x47, 0x37, 0x07, - 0x4b, 0xcc, 0x3e, 0x17, 0x32, 0xa3, 0x39, 0x77, 0xfb, 0x40, 0x3b, 0x37, 0x07, 0x1a, 0xcf, 0xab, - 0x0b, 0x99, 0xd1, 0x0f, 0xe9, 0x2f, 0x45, 0x99, 0xaa, 0xde, 0xb3, 0x83, 0xef, 0x17, 0x05, 0xe3, - 0xfc, 0xa2, 0x60, 0xfc, 0xba, 0x28, 0x18, 0x5f, 0x2e, 0x0b, 0x73, 0xe7, 0x97, 0x85, 0xb9, 0x1f, - 0x97, 0x85, 0xb9, 0xf7, 0x5b, 0x1e, 0x53, 0xad, 0x6e, 0xc3, 0x6e, 0xf2, 0x76, 0x25, 0xfa, 0x2b, - 0xa1, 0x3f, 0x77, 0xfa, 0x1e, 0x2b, 0x67, 0x31, 0xa4, 0xc2, 0x0e, 0xca, 0xc6, 0x82, 0x7e, 0xd7, - 0x9e, 0xfc, 0x09, 0x00, 0x00, 0xff, 0xff, 0x8a, 0xa8, 0x26, 0xc3, 0xb7, 0x08, 0x00, 0x00, + // 736 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcb, 0x6e, 0xdb, 0x38, + 0x14, 0x8d, 0x2d, 0xe7, 0xa1, 0x9b, 0x87, 0x03, 0xc2, 0x40, 0x34, 0x9e, 0x81, 0x61, 0x78, 0x06, + 0x81, 0x93, 0x41, 0xe4, 0x19, 0x0f, 0x30, 0x08, 0x5a, 0x64, 0x91, 0xc6, 0x5d, 0x04, 0x85, 0xbb, + 0x50, 0xfa, 0x42, 0xbb, 0x28, 0x68, 0xeb, 0x46, 0x66, 0x23, 0x8b, 0x0e, 0x49, 0xbb, 0xd1, 0x5f, + 0xf4, 0x1f, 0xba, 0xec, 0x8f, 0x74, 0x99, 0x65, 0xd1, 0x55, 0x91, 0x7c, 0x48, 0x0b, 0x53, 0xf2, + 0x4b, 0x8e, 0x13, 0x17, 0xe8, 0xaa, 0xe8, 0xc6, 0x26, 0x0f, 0xcf, 0x39, 0xf7, 0xf2, 0xf2, 0x8a, + 0x12, 0x6c, 0x34, 0x5b, 0x78, 0xee, 0x56, 0xd4, 0x85, 0xdd, 0x11, 0x5c, 0x71, 0xb2, 0xa5, 0xe7, + 0xcc, 0xb5, 0xf5, 0x7f, 0xc0, 0x5d, 0x8c, 0x46, 0xf9, 0xdf, 0x3c, 0xce, 0x3d, 0x1f, 0x2b, 0x9a, + 0xd6, 0xe8, 0x9e, 0x56, 0x68, 0x10, 0x46, 0x9a, 0x7c, 0x36, 0xf2, 0xe8, 0xab, 0x34, 0x50, 0xfa, + 0x9a, 0x86, 0x6c, 0x5d, 0x7a, 0xcf, 0x05, 0x53, 0xe8, 0xe0, 0x79, 0x17, 0xa5, 0x22, 0x65, 0xc8, + 0xb8, 0x54, 0x51, 0x2b, 0x55, 0x4c, 0x95, 0x57, 0xab, 0x39, 0x3b, 0xb2, 0xb3, 0x07, 0x76, 0xf6, + 0x61, 0x10, 0x3a, 0x9a, 0x41, 0x2c, 0x58, 0xa6, 0x5d, 0xd5, 0xe2, 0x42, 0x5a, 0xe9, 0xa2, 0x51, + 0x36, 0x9d, 0xc1, 0x94, 0xbc, 0x00, 0x90, 0xcc, 0x0b, 0xa8, 0xea, 0x0a, 0x94, 0x96, 0x51, 0x34, + 0xca, 0xab, 0xd5, 0x7d, 0x7b, 0x46, 0xc6, 0x76, 0x22, 0x03, 0xfb, 0x64, 0x28, 0x7d, 0x18, 0x28, + 0x11, 0x3a, 0x63, 0x5e, 0xc4, 0x81, 0x95, 0x36, 0x2a, 0xaa, 0x33, 0xcc, 0x68, 0xdf, 0xff, 0xe7, + 0xf6, 0xad, 0xc7, 0xc2, 0xc8, 0x75, 0xe8, 0x93, 0x3f, 0x80, 0x6c, 0x22, 0x24, 0xd9, 0x04, 0xe3, + 0x0c, 0x43, 0x5d, 0x03, 0xd3, 0xe9, 0x0f, 0x49, 0x0e, 0x16, 0x7b, 0xd4, 0xef, 0xa2, 0x95, 0xd6, + 0x58, 0x34, 0xb9, 0x97, 0xde, 0x4f, 0xe5, 0xef, 0xc3, 0xfa, 0x84, 0xf3, 0xf7, 0x88, 0x4b, 0xef, + 0x53, 0xb0, 0x59, 0x97, 0xde, 0x91, 0x40, 0xaa, 0xf0, 0x48, 0xa0, 0x5b, 0xc3, 0x53, 0xb2, 0x01, + 0x69, 0xe6, 0xc6, 0xfa, 0x34, 0x73, 0xc9, 0xef, 0x60, 0xca, 0x66, 0x0b, 0xdb, 0xf4, 0x35, 0x73, + 0x63, 0x8b, 0x95, 0x08, 0x38, 0x76, 0xfb, 0xd1, 0x14, 0xf5, 0x2c, 0x23, 0x8a, 0xa6, 0xa8, 0x47, + 0xfe, 0x82, 0xf5, 0x61, 0xc5, 0x9e, 0x84, 0x1d, 0xb4, 0x32, 0x7a, 0x6d, 0x12, 0x24, 0xbb, 0x83, + 0x9c, 0x16, 0x6f, 0x39, 0xe8, 0x88, 0x52, 0xda, 0x05, 0x2b, 0x99, 0xa4, 0x83, 0xb2, 0xc3, 0x03, + 0x89, 0xc9, 0x64, 0x4b, 0x6d, 0xdd, 0x52, 0x11, 0xf7, 0x44, 0x27, 0x39, 0xb5, 0x1f, 0x02, 0x99, + 0x80, 0xb6, 0x07, 0xd5, 0xd0, 0xe3, 0x7e, 0x33, 0xf5, 0x50, 0x48, 0xc6, 0x83, 0x78, 0x2b, 0x83, + 0x29, 0xf9, 0x03, 0x4c, 0xaa, 0x94, 0x78, 0x4c, 0xdb, 0x28, 0xf5, 0x99, 0x9b, 0xce, 0x08, 0x28, + 0xed, 0xc0, 0x56, 0x22, 0xdc, 0xcc, 0xcc, 0x3e, 0x1b, 0xb0, 0x36, 0xe4, 0xd6, 0x98, 0x3b, 0x95, + 0x57, 0x01, 0xa0, 0xc9, 0x03, 0x25, 0xb8, 0xef, 0xa3, 0x88, 0x7b, 0x7a, 0x0c, 0x21, 0xaf, 0x80, + 0xf4, 0x50, 0xb0, 0x53, 0xd6, 0xa4, 0x8a, 0xf1, 0xa0, 0x8e, 0xaa, 0xc5, 0xdd, 0xb8, 0xbd, 0xff, + 0x9e, 0xd9, 0x86, 0xcf, 0xa6, 0x24, 0xce, 0x0d, 0x36, 0x64, 0x1b, 0x36, 0xfa, 0x8f, 0x0f, 0x06, + 0x2a, 0xc6, 0xe3, 0xbd, 0x26, 0x50, 0x52, 0x86, 0x2c, 0x95, 0x12, 0xc5, 0x58, 0x06, 0x8b, 0x9a, + 0x98, 0x84, 0x49, 0x15, 0x72, 0x4d, 0xda, 0xa1, 0x0d, 0xe6, 0x33, 0x15, 0x1e, 0x07, 0x3d, 0x1e, + 0xfb, 0x2e, 0x69, 0xfa, 0x8d, 0x6b, 0x93, 0x9a, 0x1a, 0xfa, 0xe8, 0x45, 0x9a, 0xe5, 0xa4, 0x66, + 0xb4, 0x46, 0x4a, 0xb0, 0x76, 0x86, 0xe1, 0xa1, 0x27, 0x10, 0xdb, 0x18, 0x28, 0x6b, 0x45, 0x73, + 0x27, 0x30, 0x52, 0x84, 0x55, 0xea, 0x4b, 0xfe, 0x28, 0xe0, 0x6f, 0x83, 0x43, 0x69, 0x99, 0x9a, + 0x32, 0x0e, 0x91, 0x03, 0x58, 0x96, 0x28, 0x7a, 0xac, 0x89, 0x16, 0xe8, 0x8a, 0xfe, 0x39, 0xb3, + 0xa2, 0x35, 0xe6, 0x9e, 0x44, 0x54, 0x67, 0xa0, 0x29, 0x6d, 0x43, 0x6e, 0xfc, 0x6c, 0xef, 0x6a, + 0x82, 0xa7, 0x1d, 0xf7, 0x57, 0x13, 0xfc, 0xa4, 0x4d, 0x30, 0x3c, 0xdb, 0x59, 0x4d, 0x50, 0xfd, + 0x60, 0x80, 0x51, 0x97, 0x1e, 0xf1, 0x61, 0x7d, 0xf2, 0xe6, 0x2d, 0xcf, 0xfb, 0x32, 0xc9, 0xff, + 0x7b, 0x1b, 0xf3, 0xe6, 0x9b, 0xf2, 0x0d, 0xac, 0x4d, 0x5c, 0x8b, 0xf3, 0x07, 0xfb, 0xe7, 0xee, + 0x60, 0x89, 0xbb, 0xcf, 0x05, 0x73, 0x74, 0xcf, 0xcd, 0x1f, 0x68, 0xef, 0xee, 0x40, 0xe3, 0x75, + 0x75, 0xc1, 0x1c, 0x3d, 0x48, 0x3f, 0x28, 0xca, 0xd4, 0xe9, 0x3d, 0x38, 0xfa, 0x78, 0x55, 0x48, + 0x5d, 0x5e, 0x15, 0x52, 0x5f, 0xae, 0x0a, 0xa9, 0x77, 0xd7, 0x85, 0x85, 0xcb, 0xeb, 0xc2, 0xc2, + 0xa7, 0xeb, 0xc2, 0xc2, 0xcb, 0x1d, 0x8f, 0xa9, 0x56, 0xb7, 0x61, 0x37, 0x79, 0xbb, 0x12, 0x7d, + 0xdb, 0xe8, 0xdf, 0xbd, 0xbe, 0x63, 0xe5, 0x22, 0x86, 0x54, 0xd8, 0x41, 0xd9, 0x58, 0xd2, 0xef, + 0xb5, 0xff, 0xbe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x30, 0xa7, 0x66, 0xb1, 0x48, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -914,6 +925,25 @@ func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Metadata) > 0 { + for k := range m.Metadata { + v := m.Metadata[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintTx(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintTx(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintTx(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x22 + } + } if len(m.Signatures) > 0 { for k := range m.Signatures { v := m.Signatures[k] @@ -1470,6 +1500,14 @@ func (m *MsgWriteRequest) Size() (n int) { n += mapEntrySize + 1 + sovTx(uint64(mapEntrySize)) } } + if len(m.Metadata) > 0 { + for k, v := range m.Metadata { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovTx(uint64(len(k))) + 1 + len(v) + sovTx(uint64(len(v))) + n += mapEntrySize + 1 + sovTx(uint64(mapEntrySize)) + } + } return n } @@ -1945,6 +1983,133 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { } m.Signatures[mapkey] = mapvalue iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthTx + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthTx + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthTx + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthTx + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Metadata[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/cheqd/utils/utils.go b/x/cheqd/utils/utils.go index a6472da32..fb114e798 100644 --- a/x/cheqd/utils/utils.go +++ b/x/cheqd/utils/utils.go @@ -1,5 +1,7 @@ package utils +import "strings" + func CompareOwners(authors []string, controllers []string) bool { type void struct{} var member void @@ -16,3 +18,8 @@ func CompareOwners(authors []string, controllers []string) bool { return result } + +func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { + fragments := strings.Split(didUrl, "#") + return fragments[0], fragments[1] +} From 18b884088603b8fe6346956228460f922d258934 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Mon, 4 Oct 2021 21:20:21 +0300 Subject: [PATCH 15/74] move to cosmos 44 --- go.mod | 2 ++ x/cheqd/handler_test_setup.go | 4 ++-- x/cheqd/keeper/cred_def.go | 8 ++++---- x/cheqd/keeper/did.go | 8 ++++---- x/cheqd/keeper/grpc_query_cred_def.go | 2 +- x/cheqd/keeper/grpc_query_did.go | 2 +- x/cheqd/keeper/grpc_query_schema.go | 2 +- x/cheqd/keeper/schema.go | 13 ++++--------- 8 files changed, 19 insertions(+), 22 deletions(-) diff --git a/go.mod b/go.mod index 8ecdc21ee..b1b767c08 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/cheqd/cheqd-node go 1.15 require ( + github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce github.com/cosmos/cosmos-sdk v0.44.0 github.com/cosmos/ibc-go v1.0.1 github.com/gogo/protobuf v1.3.3 @@ -14,6 +15,7 @@ require ( github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 + github.com/stretchr/testify v1.7.0 github.com/tendermint/tendermint v0.34.12 github.com/tendermint/tm-db v0.6.4 google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index 901219a44..f0f6b80d3 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -21,7 +21,7 @@ import ( ) type TestSetup struct { - Cdc codec.Marshaler + Cdc codec.Codec Ctx sdk.Context Keeper keeper.Keeper Handler sdk.Handler @@ -30,7 +30,7 @@ type TestSetup struct { func Setup() TestSetup { // Init Codec encodingConfig := params.MakeEncodingConfig() - cdc := encodingConfig.Marshaler + cdc := encodingConfig.Codec // Init KVSore db := dbm.NewMemDB() diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 1c6c5e13d..ea386a3a0 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -56,7 +56,7 @@ func (k Keeper) AppendCredDef( } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - value := k.cdc.MustMarshalBinaryBare(&credDef) + value := k.cdc.MustMarshal(&credDef) store.Set(GetCredDefIDBytes(credDef.Id), value) // Update credDef count @@ -68,7 +68,7 @@ func (k Keeper) AppendCredDef( // SetCredDef set a specific credDef in the store func (k Keeper) SetCredDef(ctx sdk.Context, credDef types.CredDef) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - b := k.cdc.MustMarshalBinaryBare(&credDef) + b := k.cdc.MustMarshal(&credDef) store.Set(GetCredDefIDBytes(credDef.Id), b) } @@ -76,7 +76,7 @@ func (k Keeper) SetCredDef(ctx sdk.Context, credDef types.CredDef) { func (k Keeper) GetCredDef(ctx sdk.Context, id string) types.CredDef { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) var credDef types.CredDef - k.cdc.MustUnmarshalBinaryBare(store.Get(GetCredDefIDBytes(id)), &credDef) + k.cdc.MustUnmarshal(store.Get(GetCredDefIDBytes(id)), &credDef) return credDef } @@ -101,7 +101,7 @@ func (k Keeper) GetAllCredDef(ctx sdk.Context) (list []types.CredDef) { for ; iterator.Valid(); iterator.Next() { var val types.CredDef - k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) + k.cdc.MustUnmarshal(iterator.Value(), &val) list = append(list, val) } diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index b60b33435..91a68352f 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -67,7 +67,7 @@ func (k Keeper) AppendDid( } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - value := k.cdc.MustMarshalBinaryBare(&did) + value := k.cdc.MustMarshal(&did) store.Set(GetDidIDBytes(did.Id), value) // Update did count @@ -79,7 +79,7 @@ func (k Keeper) AppendDid( // SetDid set a specific did in the store func (k Keeper) SetDid(ctx sdk.Context, did types.Did) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - b := k.cdc.MustMarshalBinaryBare(&did) + b := k.cdc.MustMarshal(&did) store.Set(GetDidIDBytes(did.Id), b) } @@ -87,7 +87,7 @@ func (k Keeper) SetDid(ctx sdk.Context, did types.Did) { func (k Keeper) GetDid(ctx sdk.Context, id string) types.Did { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) var did types.Did - k.cdc.MustUnmarshalBinaryBare(store.Get(GetDidIDBytes(id)), &did) + k.cdc.MustUnmarshal(store.Get(GetDidIDBytes(id)), &did) return did } @@ -117,7 +117,7 @@ func (k Keeper) GetAllDid(ctx sdk.Context) (list []types.Did) { for ; iterator.Valid(); iterator.Next() { var val types.Did - k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) + k.cdc.MustUnmarshal(iterator.Value(), &val) list = append(list, val) } diff --git a/x/cheqd/keeper/grpc_query_cred_def.go b/x/cheqd/keeper/grpc_query_cred_def.go index 954bf6f79..de2b878cd 100644 --- a/x/cheqd/keeper/grpc_query_cred_def.go +++ b/x/cheqd/keeper/grpc_query_cred_def.go @@ -24,7 +24,7 @@ func (k Keeper) CredDef(c context.Context, req *types.QueryGetCredDefRequest) (* } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - k.cdc.MustUnmarshalBinaryBare(store.Get(GetCredDefIDBytes(req.Id)), &credDef) + k.cdc.MustUnmarshal(store.Get(GetCredDefIDBytes(req.Id)), &credDef) return &types.QueryGetCredDefResponse{CredDef: &credDef}, nil } diff --git a/x/cheqd/keeper/grpc_query_did.go b/x/cheqd/keeper/grpc_query_did.go index 35fa297c2..27f8bc802 100644 --- a/x/cheqd/keeper/grpc_query_did.go +++ b/x/cheqd/keeper/grpc_query_did.go @@ -24,7 +24,7 @@ func (k Keeper) Did(c context.Context, req *types.QueryGetDidRequest) (*types.Qu } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - k.cdc.MustUnmarshalBinaryBare(store.Get(GetDidIDBytes(req.Id)), &did) + k.cdc.MustUnmarshal(store.Get(GetDidIDBytes(req.Id)), &did) return &types.QueryGetDidResponse{Did: &did}, nil } diff --git a/x/cheqd/keeper/grpc_query_schema.go b/x/cheqd/keeper/grpc_query_schema.go index a840b6c49..2fb8bba6e 100644 --- a/x/cheqd/keeper/grpc_query_schema.go +++ b/x/cheqd/keeper/grpc_query_schema.go @@ -24,7 +24,7 @@ func (k Keeper) Schema(c context.Context, req *types.QueryGetSchemaRequest) (*ty } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - k.cdc.MustUnmarshalBinaryBare(store.Get(GetSchemaIDBytes(req.Id)), &schema) + k.cdc.MustUnmarshal(store.Get(GetSchemaIDBytes(req.Id)), &schema) return &types.QueryGetSchemaResponse{Schema: &schema}, nil } diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index ef9ba6aac..7d0ed1fa3 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -54,7 +54,7 @@ func (k Keeper) AppendSchema( } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - value := k.cdc.MustMarshalBinaryBare(&schema) + value := k.cdc.MustMarshal(&schema) store.Set(GetSchemaIDBytes(schema.Id), value) // Update schema count @@ -66,7 +66,7 @@ func (k Keeper) AppendSchema( // SetSchema set a specific schema in the store func (k Keeper) SetSchema(ctx sdk.Context, schema types.Schema) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - b := k.cdc.MustMarshalBinaryBare(&schema) + b := k.cdc.MustMarshal(&schema) store.Set(GetSchemaIDBytes(schema.Id), b) } @@ -74,7 +74,7 @@ func (k Keeper) SetSchema(ctx sdk.Context, schema types.Schema) { func (k Keeper) GetSchema(ctx sdk.Context, id string) types.Schema { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) var schema types.Schema - k.cdc.MustUnmarshalBinaryBare(store.Get(GetSchemaIDBytes(id)), &schema) + k.cdc.MustUnmarshal(store.Get(GetSchemaIDBytes(id)), &schema) return schema } @@ -99,7 +99,7 @@ func (k Keeper) GetAllSchema(ctx sdk.Context) (list []types.Schema) { for ; iterator.Valid(); iterator.Next() { var val types.Schema - k.cdc.MustUnmarshalBinaryBare(iterator.Value(), &val) + k.cdc.MustUnmarshal(iterator.Value(), &val) list = append(list, val) } @@ -110,8 +110,3 @@ func (k Keeper) GetAllSchema(ctx sdk.Context) (list []types.Schema) { func GetSchemaIDBytes(id string) []byte { return []byte(id) } - -// GetSchemaIDFromBytes returns ID in uint64 format from a byte array -func GetSchemaIDFromBytes(bz []byte) string { - return string(bz) -} From ff3304b8aa7b6de578f6de9aee680712ed665092 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Mon, 4 Oct 2021 21:39:43 +0300 Subject: [PATCH 16/74] fixed go lint --- x/cheqd/client/rest/querySchema.go | 13 ------------- x/cheqd/client/rest/txDid.go | 2 +- x/cheqd/handler_test.go | 2 +- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/x/cheqd/client/rest/querySchema.go b/x/cheqd/client/rest/querySchema.go index 46842effc..babef1779 100644 --- a/x/cheqd/client/rest/querySchema.go +++ b/x/cheqd/client/rest/querySchema.go @@ -10,19 +10,6 @@ import ( "github.com/gorilla/mux" ) -func listSchemaHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-schema", types.QuerierRoute), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} - func getSchemaHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id := mux.Vars(r)["id"] diff --git a/x/cheqd/client/rest/txDid.go b/x/cheqd/client/rest/txDid.go index d22461ec1..8d71a151f 100644 --- a/x/cheqd/client/rest/txDid.go +++ b/x/cheqd/client/rest/txDid.go @@ -12,7 +12,7 @@ import ( ) type DidService struct { - Id string `json:"id""` + Id string `json:"id"` Type string `json:"type"` ServiceEndpoint string `json:"serviceEndpoint"` } diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index 5fa65d89d..c6fc0f466 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -20,7 +20,7 @@ func TestHandler_CreateDid(t *testing.T) { // add new Did didMsg := setup.CreateDid(pubKey) data, _ := ptypes.NewAnyWithValue(didMsg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string, 0))) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) did := types.MsgCreateDidResponse{} err := did.Unmarshal(result.Data) From 4c9e8e1e36ba18492295cc4efb79639427f329de Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 5 Oct 2021 02:51:05 +0300 Subject: [PATCH 17/74] fixed proto added more integration tests fixed cred_def --- proto/cheqd/tx.proto | 6 +- x/cheqd/handler.go | 18 +- x/cheqd/handler_test.go | 159 +++++++++++++-- x/cheqd/handler_test_setup.go | 56 +++++- x/cheqd/keeper/cred_def.go | 2 + x/cheqd/keeper/msg_server_cred_def.go | 26 ++- x/cheqd/keeper/msg_server_did.go | 9 +- x/cheqd/keeper/verify.go | 64 +++--- x/cheqd/types/credDef.pb.go | 4 + x/cheqd/types/errors.go | 3 +- x/cheqd/types/tx.pb.go | 275 +++++++++++++++++++------- x/cheqd/utils/utils.go | 27 ++- 12 files changed, 503 insertions(+), 146 deletions(-) diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index dd74890b6..0997f4e81 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; import "google/protobuf/any.proto"; import "cheqd/did.proto"; +import "cheqd/credDef.proto"; // this line is used by starport scaffolding # proto/tx/import @@ -29,7 +30,10 @@ message MsgCreateCredDef { string schema_id = 2; string tag = 3; string signatureType = 4; - google.protobuf.Any value = 5; + oneof value { + CredDefValue cl_type = 5; + google.protobuf.Any any_type = 6; + } } message MsgCreateCredDefResponse { diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index 33b301617..20d0e4187 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -14,27 +14,33 @@ func NewHandler(k keeper.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { ctx = ctx.WithEventManager(sdk.NewEventManager()) - parsed_msg, isMsgIdentity := msg.(*types.MsgWriteRequest) + parsedMsg, isMsgIdentity := msg.(*types.MsgWriteRequest) if !isMsgIdentity { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } - switch parsed_msg.Data.TypeUrl { + + if !k.Verify(ctx, parsedMsg) { + errMsg := "Invalid signature" + return nil, sdkerrors.Wrap(types.ErrInvalidSignature, errMsg) + } + + switch parsedMsg.Data.TypeUrl { // this line is used by starport scaffolding # 1 case "/cheqdid.cheqdnode.cheqd.MsgCreateCredDef": - res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), parsed_msg) + res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) case "/cheqdid.cheqdnode.cheqd.MsgCreateSchema": - res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), parsed_msg) + res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) case "/cheqdid.cheqdnode.cheqd.MsgCreateDid": - res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), parsed_msg) + res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) case "/cheqdid.cheqdnode.cheqd.MsgUpdateDid": - res, err := msgServer.UpdateDid(sdk.WrapSDKContext(ctx), parsed_msg) + res, err := msgServer.UpdateDid(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) default: diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index c6fc0f466..b1c543f7d 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -14,7 +14,151 @@ import ( func TestHandler_CreateDid(t *testing.T) { setup := Setup() + _, did := InitDid(setup) + + // query Did + receivedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) + + // check + require.Equal(t, did.Id, receivedDid.Id) + require.Equal(t, did.Controller, receivedDid.Controller) + require.Equal(t, did.VerificationMethod, receivedDid.VerificationMethod) + require.Equal(t, did.Authentication, receivedDid.Authentication) + require.Equal(t, did.AssertionMethod, receivedDid.AssertionMethod) + require.Equal(t, did.CapabilityInvocation, receivedDid.CapabilityInvocation) + require.Equal(t, did.CapabilityDelegation, receivedDid.CapabilityDelegation) + require.Equal(t, did.KeyAgreement, receivedDid.KeyAgreement) + require.Equal(t, did.AlsoKnownAs, receivedDid.AlsoKnownAs) + require.Equal(t, did.Service, receivedDid.Service) +} + +func TestHandler_UpdateDid(t *testing.T) { + setup := Setup() + + //Init did + privKey, did := InitDid(setup) + + // query Did + receivedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) + + //Init priv key + newPubKey, _, _ := ed25519.GenerateKey(rand.Reader) + + // add new Did + didMsgUpdate := setup.UpdateDid(&receivedDid, newPubKey) + dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) + resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, dataUpdate, make(map[string]string))) + didUpdated := types.MsgUpdateDidResponse{} + errUpdate := didUpdated.Unmarshal(resultUpdate.Data) + + if errUpdate != nil { + log.Fatal(errUpdate) + } + + // query Did + receivedUpdatedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) + + // check + require.Equal(t, didUpdated.Id, receivedUpdatedDid.Id) + require.Equal(t, didMsgUpdate.Controller, receivedUpdatedDid.Controller) + require.Equal(t, didMsgUpdate.VerificationMethod, receivedUpdatedDid.VerificationMethod) + require.Equal(t, didMsgUpdate.Authentication, receivedUpdatedDid.Authentication) + require.Equal(t, didMsgUpdate.AssertionMethod, receivedUpdatedDid.AssertionMethod) + require.Equal(t, didMsgUpdate.CapabilityInvocation, receivedUpdatedDid.CapabilityInvocation) + require.Equal(t, didMsgUpdate.CapabilityDelegation, receivedUpdatedDid.CapabilityDelegation) + require.Equal(t, didMsgUpdate.KeyAgreement, receivedUpdatedDid.KeyAgreement) + require.Equal(t, didMsgUpdate.AlsoKnownAs, receivedUpdatedDid.AlsoKnownAs) + require.Equal(t, didMsgUpdate.Service, receivedUpdatedDid.Service) + require.NotEqual(t, receivedDid.VerificationMethod, receivedUpdatedDid.VerificationMethod) +} + +func TestHandler_UpdateDidInvalidSignature(t *testing.T) { + setup := Setup() + + _, did := InitDid(setup) + + // query Did + receivedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) + //Init priv key + newPubKey, newPrivKey, _ := ed25519.GenerateKey(rand.Reader) + + // add new Did + didMsgUpdate := setup.UpdateDid(&receivedDid, newPubKey) + dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) + _, err := setup.Handler(setup.Ctx, setup.WrapRequest(newPrivKey, dataUpdate, make(map[string]string))) + require.Error(t, err) + require.Equal(t, "Invalid signature: invalid signature detected", err.Error()) +} + +func TestHandler_CreateSchema(t *testing.T) { + setup := Setup() + + privKey, _ := InitDid(setup) + msg := setup.CreateSchema() + + data, _ := ptypes.NewAnyWithValue(msg) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + + schema := types.MsgCreateSchemaResponse{} + err := schema.Unmarshal(result.Data) + + if err != nil { + log.Fatal(err) + } + + // query Did + receivedSchema := setup.Keeper.GetSchema(setup.Ctx, schema.Id) + + require.Equal(t, schema.Id, receivedSchema.Id) + require.Equal(t, msg.Name, receivedSchema.Name) + require.Equal(t, msg.Version, receivedSchema.Version) + require.Equal(t, msg.AttrNames, receivedSchema.AttrNames) +} + +func TestHandler_CreateCredDef(t *testing.T) { + setup := Setup() + + privKey, _ := InitDid(setup) + msg := setup.CreateCredDef() + + data, _ := ptypes.NewAnyWithValue(msg) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + + credDef := types.MsgCreateCredDefResponse{} + err := credDef.Unmarshal(result.Data) + + if err != nil { + log.Fatal(err) + } + + // query Cred Def + receivedCredDef := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) + + expectedValue := msg.Value.(*types.MsgCreateCredDef_ClType) + actualValue := receivedCredDef.Value.(*types.CredDef_ClType) + + require.Equal(t, credDef.Id, receivedCredDef.Id) + require.Equal(t, expectedValue.ClType, actualValue.ClType) + require.Equal(t, msg.SchemaId, receivedCredDef.SchemaId) + require.Equal(t, msg.Tag, receivedCredDef.Tag) + require.Equal(t, msg.SignatureType, receivedCredDef.SignatureType) +} + +func TestHandler_CreateSchemaInvalidSignature(t *testing.T) { + setup := Setup() + + _, privKey, _ := ed25519.GenerateKey(rand.Reader) + msg := setup.CreateSchema() + + data, _ := ptypes.NewAnyWithValue(msg) + _, err := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + + require.Error(t, err) + require.Equal(t, "Invalid signature: invalid signature detected", err.Error()) +} + +func InitDid(setup TestSetup) (ed25519.PrivateKey, *types.MsgCreateDid) { pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) // add new Did @@ -28,18 +172,5 @@ func TestHandler_CreateDid(t *testing.T) { log.Fatal(err) } - // query Did - receivedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) - - //// check - require.Equal(t, did.Id, receivedDid.Id) - require.Equal(t, didMsg.GetController(), receivedDid.GetController()) - require.Equal(t, didMsg.GetVerificationMethod(), receivedDid.GetVerificationMethod()) - require.Equal(t, didMsg.GetAuthentication(), receivedDid.GetAuthentication()) - require.Equal(t, didMsg.GetAssertionMethod(), receivedDid.GetAssertionMethod()) - require.Equal(t, didMsg.GetCapabilityInvocation(), receivedDid.GetCapabilityInvocation()) - require.Equal(t, didMsg.GetCapabilityDelegation(), receivedDid.GetCapabilityDelegation()) - require.Equal(t, didMsg.GetKeyAgreement(), receivedDid.GetKeyAgreement()) - require.Equal(t, didMsg.GetAlsoKnownAs(), receivedDid.GetAlsoKnownAs()) - require.Equal(t, didMsg.GetService(), receivedDid.GetService()) + return privKey, didMsg } diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index f0f6b80d3..8366b2c94 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -93,17 +93,67 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey) *types.MsgCreateDid { } } +func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey) *types.MsgUpdateDid { + PublicKeyMultibase := "z" + base58.Encode(pubKey) + + VerificationMethod := types.VerificationMethod{ + Id: "did:cheqd:test:alice#key-2", + Type: "Ed25519VerificationKey2020", + Controller: "Controller", + PublicKeyMultibase: PublicKeyMultibase, + } + + return &types.MsgUpdateDid{ + Id: did.Id, + Controller: did.Controller, + VerificationMethod: []*types.VerificationMethod{&VerificationMethod}, + Authentication: did.Authentication, + AssertionMethod: did.AssertionMethod, + CapabilityInvocation: did.CapabilityInvocation, + CapabilityDelegation: did.CapabilityDelegation, + KeyAgreement: did.KeyAgreement, + AlsoKnownAs: did.AlsoKnownAs, + Service: did.Service, + } +} + +func (s *TestSetup) CreateSchema() *types.MsgCreateSchema { + return &types.MsgCreateSchema{ + Id: "schema-1", + Name: "name", + Version: "version", + AttrNames: []string{"attr1", "attr2"}, + } +} + +func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { + Value := types.MsgCreateCredDef_ClType{ + ClType: &types.CredDefValue{ + Primary: map[string]*ptypes.Any{"first": nil}, + Revocation: map[string]*ptypes.Any{"second": nil}, + }, + } + + return &types.MsgCreateCredDef{ + Id: "cred-def-1", + SchemaId: "schema-1", + Tag: "tag", + SignatureType: "signature-type", + Value: &Value, + } +} + func (s *TestSetup) WrapRequest(privKey ed25519.PrivateKey, data *ptypes.Any, metadata map[string]string) *types.MsgWriteRequest { metadataBytes, _ := json.Marshal(&metadata) dataBytes := data.Value - signingInput := base64.StdEncoding.EncodeToString(metadataBytes) + "." + base64.StdEncoding.EncodeToString(dataBytes) - signingInputBytes := []byte(base64.StdEncoding.EncodeToString([]byte(signingInput))) - signature := base64.StdEncoding.EncodeToString(ed25519.Sign(privKey, signingInputBytes)) + signingInput := []byte(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) + signature := base64.StdEncoding.EncodeToString(ed25519.Sign(privKey, signingInput)) return &types.MsgWriteRequest{ Data: data, Metadata: metadata, Signatures: map[string]string{"did:cheqd:test:alice#key-1": signature}, + Authors: []string{"controller"}, } } diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index ea386a3a0..9e4af3815 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -44,6 +44,7 @@ func (k Keeper) AppendCredDef( schemaId string, tag string, signatureType string, + clValue *types.CredDef_ClType, ) string { // Create the credDef count := k.GetCredDefCount(ctx) @@ -53,6 +54,7 @@ func (k Keeper) AppendCredDef( SchemaId: schemaId, Tag: tag, SignatureType: signatureType, + Value: clValue, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 06efb4bf1..0a59e8961 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -18,15 +18,21 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } - k.AppendCredDef( - ctx, - credDefMsg.Id, - credDefMsg.SchemaId, - credDefMsg.Tag, - credDefMsg.SignatureType, - ) + switch value := credDefMsg.Value.(type) { + case *types.MsgCreateCredDef_ClType: + k.AppendCredDef( + ctx, + credDefMsg.Id, + credDefMsg.SchemaId, + credDefMsg.Tag, + credDefMsg.SignatureType, + (*types.CredDef_ClType)(value), + ) - return &types.MsgCreateCredDefResponse{ - Id: credDefMsg.Id, - }, nil + return &types.MsgCreateCredDefResponse{ + Id: credDefMsg.Id, + }, nil + default: + return nil, sdkerrors.Wrap(types.ErrInvalidCredDefValue, "unsupported cred def value") + } } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 8e7f39e45..e9c4ce487 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -13,11 +13,6 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) ctx := sdk.UnwrapSDKContext(goCtx) didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateDid) - if !k.VerifyMsgCreateDid(msg, didMsg) { - errMsg := "Invalid signature detected" - return nil, sdkerrors.Wrap(types.ErrInvalidSignature, errMsg) - } - if !isMsgIdentity { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) @@ -77,5 +72,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) k.SetDid(ctx, did) - return &types.MsgUpdateDidResponse{}, nil + return &types.MsgUpdateDidResponse{ + Id: didMsg.Id, + }, nil } diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index 29bbd6844..a4b023a22 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -4,67 +4,57 @@ import ( "crypto/ed25519" "encoding/base64" "encoding/json" - "github.com/btcsuite/btcutil/base58" + "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cheqd/cheqd-node/x/cheqd/utils" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -type DidDoc = struct { - Authentication []string - VerificationMethod []*types.VerificationMethod -} - func (k Keeper) Verify(context sdk.Context, request *types.MsgWriteRequest) bool { metadataBytes, _ := json.Marshal(&request.Metadata) dataBytes := request.Data.Value - signingInput := base64.StdEncoding.EncodeToString(metadataBytes) + "." + base64.StdEncoding.EncodeToString(dataBytes) - signingInputBytes, _ := base64.StdEncoding.DecodeString(signingInput) + signingInput := ([]byte)(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) result := true for didUrl := range request.Signatures { - did, _ := utils.SplitDidUrlIntoDidAndFragment(didUrl) - didDoc := k.GetDid(context, did) + pubKey, err := k.FindPublicKey(context, request, didUrl) + if err != nil { + errMsg := fmt.Sprintf("Cannot get public key. Cause: %T", err) + k.Logger(context).Error(errMsg) + return false + } - pubKey := FindPublicKey(didDoc.Authentication, didDoc.VerificationMethod, didUrl) signature, _ := base64.StdEncoding.DecodeString(request.Signatures[didUrl]) - result = result && ed25519.Verify(pubKey, signingInputBytes, signature) + result = result && ed25519.Verify(pubKey, signingInput, signature) } return result } -func (k Keeper) VerifyMsgCreateDid(request *types.MsgWriteRequest, didDoc *types.MsgCreateDid) bool { - metadataBytes, _ := json.Marshal(&request.Metadata) - dataBytes := request.Data.Value - - signingInput := base64.StdEncoding.EncodeToString(metadataBytes) + "." + base64.StdEncoding.EncodeToString(dataBytes) - signingInputBytes := []byte(base64.StdEncoding.EncodeToString([]byte(signingInput))) +func (k Keeper) FindPublicKey(context sdk.Context, request *types.MsgWriteRequest, didUrl string) (ed25519.PublicKey, error) { + did, _ := utils.SplitDidUrlIntoDidAndFragment(didUrl) - result := true + var authentication []string + var verificationMethod []*types.VerificationMethod - for did := range request.Signatures { - pubKey := FindPublicKey(didDoc.Authentication, didDoc.VerificationMethod, did) - signature, _ := base64.StdEncoding.DecodeString(request.Signatures[did]) - result = result && ed25519.Verify(pubKey, signingInputBytes, signature) - } + if request.Data.TypeUrl == "/cheqdid.cheqdnode.cheqd.MsgCreateDid" { + didDoc, isMsgIdentity := request.Data.GetCachedValue().(*types.MsgCreateDid) - return result -} - -// FindAuthentication improve error handling -func FindPublicKey(authentication []string, verificationMethods []*types.VerificationMethod, id string) ed25519.PublicKey { - for _, authentication := range authentication { - if authentication == id { - for _, vm := range verificationMethods { - if vm.Id == id { - return base58.Decode(vm.PublicKeyMultibase[1:]) - } - } + if !isMsgIdentity { + errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, didDoc) + return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + + authentication = didDoc.Authentication + verificationMethod = didDoc.VerificationMethod + } else { + didDoc := k.GetDid(context, did) + authentication = didDoc.Authentication + verificationMethod = didDoc.VerificationMethod } - return nil + return utils.FindPublicKey(authentication, verificationMethod, didUrl) } diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index 0ab885858..92d095338 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -154,6 +154,10 @@ type CredDefValue struct { Revocation map[string]*types.Any `protobuf:"bytes,2,rep,name=revocation,proto3" json:"revocation,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } +func (m *CredDefValue) isMsgCreateCredDef_Value() { + panic("implement me") +} + func (m *CredDefValue) Reset() { *m = CredDefValue{} } func (m *CredDefValue) String() string { return proto.CompactTextString(m) } func (*CredDefValue) ProtoMessage() {} diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index cf538e509..54472be9c 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -8,5 +8,6 @@ import ( // x/cheqd module sentinel errors var ( - ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") + ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") + ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1200, "invalid cred def value") ) diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index d1f925393..721acd6cd 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -98,11 +98,14 @@ func (m *MsgWriteRequest) GetMetadata() map[string]string { } type MsgCreateCredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,4,opt,name=signatureType,proto3" json:"signatureType,omitempty"` - Value *types.Any `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,4,opt,name=signatureType,proto3" json:"signatureType,omitempty"` + // Types that are valid to be assigned to Value: + // *MsgCreateCredDef_ClType + // *MsgCreateCredDef_AnyType + Value isMsgCreateCredDef_Value `protobuf_oneof:"value"` } func (m *MsgCreateCredDef) Reset() { *m = MsgCreateCredDef{} } @@ -138,6 +141,29 @@ func (m *MsgCreateCredDef) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCreateCredDef proto.InternalMessageInfo +type isMsgCreateCredDef_Value interface { + isMsgCreateCredDef_Value() + MarshalTo([]byte) (int, error) + Size() int +} + +type MsgCreateCredDef_ClType struct { + ClType *CredDefValue `protobuf:"bytes,5,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` +} +type MsgCreateCredDef_AnyType struct { + AnyType *types.Any `protobuf:"bytes,6,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` +} + +func (*MsgCreateCredDef_ClType) isMsgCreateCredDef_Value() {} +func (*MsgCreateCredDef_AnyType) isMsgCreateCredDef_Value() {} + +func (m *MsgCreateCredDef) GetValue() isMsgCreateCredDef_Value { + if m != nil { + return m.Value + } + return nil +} + func (m *MsgCreateCredDef) GetId() string { if m != nil { return m.Id @@ -166,13 +192,28 @@ func (m *MsgCreateCredDef) GetSignatureType() string { return "" } -func (m *MsgCreateCredDef) GetValue() *types.Any { - if m != nil { - return m.Value +func (m *MsgCreateCredDef) GetClType() *CredDefValue { + if x, ok := m.GetValue().(*MsgCreateCredDef_ClType); ok { + return x.ClType } return nil } +func (m *MsgCreateCredDef) GetAnyType() *types.Any { + if x, ok := m.GetValue().(*MsgCreateCredDef_AnyType); ok { + return x.AnyType + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*MsgCreateCredDef) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*MsgCreateCredDef_ClType)(nil), + (*MsgCreateCredDef_AnyType)(nil), + } +} + type MsgCreateCredDefResponse struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -666,53 +707,57 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 736 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcb, 0x6e, 0xdb, 0x38, - 0x14, 0x8d, 0x2d, 0xe7, 0xa1, 0x9b, 0x87, 0x03, 0xc2, 0x40, 0x34, 0x9e, 0x81, 0x61, 0x78, 0x06, - 0x81, 0x93, 0x41, 0xe4, 0x19, 0x0f, 0x30, 0x08, 0x5a, 0x64, 0x91, 0xc6, 0x5d, 0x04, 0x85, 0xbb, - 0x50, 0xfa, 0x42, 0xbb, 0x28, 0x68, 0xeb, 0x46, 0x66, 0x23, 0x8b, 0x0e, 0x49, 0xbb, 0xd1, 0x5f, - 0xf4, 0x1f, 0xba, 0xec, 0x8f, 0x74, 0x99, 0x65, 0xd1, 0x55, 0x91, 0x7c, 0x48, 0x0b, 0x53, 0xf2, - 0x4b, 0x8e, 0x13, 0x17, 0xe8, 0xaa, 0xe8, 0xc6, 0x26, 0x0f, 0xcf, 0x39, 0xf7, 0xf2, 0xf2, 0x8a, - 0x12, 0x6c, 0x34, 0x5b, 0x78, 0xee, 0x56, 0xd4, 0x85, 0xdd, 0x11, 0x5c, 0x71, 0xb2, 0xa5, 0xe7, - 0xcc, 0xb5, 0xf5, 0x7f, 0xc0, 0x5d, 0x8c, 0x46, 0xf9, 0xdf, 0x3c, 0xce, 0x3d, 0x1f, 0x2b, 0x9a, - 0xd6, 0xe8, 0x9e, 0x56, 0x68, 0x10, 0x46, 0x9a, 0x7c, 0x36, 0xf2, 0xe8, 0xab, 0x34, 0x50, 0xfa, - 0x9a, 0x86, 0x6c, 0x5d, 0x7a, 0xcf, 0x05, 0x53, 0xe8, 0xe0, 0x79, 0x17, 0xa5, 0x22, 0x65, 0xc8, - 0xb8, 0x54, 0x51, 0x2b, 0x55, 0x4c, 0x95, 0x57, 0xab, 0x39, 0x3b, 0xb2, 0xb3, 0x07, 0x76, 0xf6, - 0x61, 0x10, 0x3a, 0x9a, 0x41, 0x2c, 0x58, 0xa6, 0x5d, 0xd5, 0xe2, 0x42, 0x5a, 0xe9, 0xa2, 0x51, - 0x36, 0x9d, 0xc1, 0x94, 0xbc, 0x00, 0x90, 0xcc, 0x0b, 0xa8, 0xea, 0x0a, 0x94, 0x96, 0x51, 0x34, - 0xca, 0xab, 0xd5, 0x7d, 0x7b, 0x46, 0xc6, 0x76, 0x22, 0x03, 0xfb, 0x64, 0x28, 0x7d, 0x18, 0x28, - 0x11, 0x3a, 0x63, 0x5e, 0xc4, 0x81, 0x95, 0x36, 0x2a, 0xaa, 0x33, 0xcc, 0x68, 0xdf, 0xff, 0xe7, - 0xf6, 0xad, 0xc7, 0xc2, 0xc8, 0x75, 0xe8, 0x93, 0x3f, 0x80, 0x6c, 0x22, 0x24, 0xd9, 0x04, 0xe3, - 0x0c, 0x43, 0x5d, 0x03, 0xd3, 0xe9, 0x0f, 0x49, 0x0e, 0x16, 0x7b, 0xd4, 0xef, 0xa2, 0x95, 0xd6, - 0x58, 0x34, 0xb9, 0x97, 0xde, 0x4f, 0xe5, 0xef, 0xc3, 0xfa, 0x84, 0xf3, 0xf7, 0x88, 0x4b, 0xef, - 0x53, 0xb0, 0x59, 0x97, 0xde, 0x91, 0x40, 0xaa, 0xf0, 0x48, 0xa0, 0x5b, 0xc3, 0x53, 0xb2, 0x01, - 0x69, 0xe6, 0xc6, 0xfa, 0x34, 0x73, 0xc9, 0xef, 0x60, 0xca, 0x66, 0x0b, 0xdb, 0xf4, 0x35, 0x73, - 0x63, 0x8b, 0x95, 0x08, 0x38, 0x76, 0xfb, 0xd1, 0x14, 0xf5, 0x2c, 0x23, 0x8a, 0xa6, 0xa8, 0x47, - 0xfe, 0x82, 0xf5, 0x61, 0xc5, 0x9e, 0x84, 0x1d, 0xb4, 0x32, 0x7a, 0x6d, 0x12, 0x24, 0xbb, 0x83, - 0x9c, 0x16, 0x6f, 0x39, 0xe8, 0x88, 0x52, 0xda, 0x05, 0x2b, 0x99, 0xa4, 0x83, 0xb2, 0xc3, 0x03, - 0x89, 0xc9, 0x64, 0x4b, 0x6d, 0xdd, 0x52, 0x11, 0xf7, 0x44, 0x27, 0x39, 0xb5, 0x1f, 0x02, 0x99, - 0x80, 0xb6, 0x07, 0xd5, 0xd0, 0xe3, 0x7e, 0x33, 0xf5, 0x50, 0x48, 0xc6, 0x83, 0x78, 0x2b, 0x83, - 0x29, 0xf9, 0x03, 0x4c, 0xaa, 0x94, 0x78, 0x4c, 0xdb, 0x28, 0xf5, 0x99, 0x9b, 0xce, 0x08, 0x28, - 0xed, 0xc0, 0x56, 0x22, 0xdc, 0xcc, 0xcc, 0x3e, 0x1b, 0xb0, 0x36, 0xe4, 0xd6, 0x98, 0x3b, 0x95, - 0x57, 0x01, 0xa0, 0xc9, 0x03, 0x25, 0xb8, 0xef, 0xa3, 0x88, 0x7b, 0x7a, 0x0c, 0x21, 0xaf, 0x80, - 0xf4, 0x50, 0xb0, 0x53, 0xd6, 0xa4, 0x8a, 0xf1, 0xa0, 0x8e, 0xaa, 0xc5, 0xdd, 0xb8, 0xbd, 0xff, - 0x9e, 0xd9, 0x86, 0xcf, 0xa6, 0x24, 0xce, 0x0d, 0x36, 0x64, 0x1b, 0x36, 0xfa, 0x8f, 0x0f, 0x06, - 0x2a, 0xc6, 0xe3, 0xbd, 0x26, 0x50, 0x52, 0x86, 0x2c, 0x95, 0x12, 0xc5, 0x58, 0x06, 0x8b, 0x9a, - 0x98, 0x84, 0x49, 0x15, 0x72, 0x4d, 0xda, 0xa1, 0x0d, 0xe6, 0x33, 0x15, 0x1e, 0x07, 0x3d, 0x1e, - 0xfb, 0x2e, 0x69, 0xfa, 0x8d, 0x6b, 0x93, 0x9a, 0x1a, 0xfa, 0xe8, 0x45, 0x9a, 0xe5, 0xa4, 0x66, - 0xb4, 0x46, 0x4a, 0xb0, 0x76, 0x86, 0xe1, 0xa1, 0x27, 0x10, 0xdb, 0x18, 0x28, 0x6b, 0x45, 0x73, - 0x27, 0x30, 0x52, 0x84, 0x55, 0xea, 0x4b, 0xfe, 0x28, 0xe0, 0x6f, 0x83, 0x43, 0x69, 0x99, 0x9a, - 0x32, 0x0e, 0x91, 0x03, 0x58, 0x96, 0x28, 0x7a, 0xac, 0x89, 0x16, 0xe8, 0x8a, 0xfe, 0x39, 0xb3, - 0xa2, 0x35, 0xe6, 0x9e, 0x44, 0x54, 0x67, 0xa0, 0x29, 0x6d, 0x43, 0x6e, 0xfc, 0x6c, 0xef, 0x6a, - 0x82, 0xa7, 0x1d, 0xf7, 0x57, 0x13, 0xfc, 0xa4, 0x4d, 0x30, 0x3c, 0xdb, 0x59, 0x4d, 0x50, 0xfd, - 0x60, 0x80, 0x51, 0x97, 0x1e, 0xf1, 0x61, 0x7d, 0xf2, 0xe6, 0x2d, 0xcf, 0xfb, 0x32, 0xc9, 0xff, - 0x7b, 0x1b, 0xf3, 0xe6, 0x9b, 0xf2, 0x0d, 0xac, 0x4d, 0x5c, 0x8b, 0xf3, 0x07, 0xfb, 0xe7, 0xee, - 0x60, 0x89, 0xbb, 0xcf, 0x05, 0x73, 0x74, 0xcf, 0xcd, 0x1f, 0x68, 0xef, 0xee, 0x40, 0xe3, 0x75, - 0x75, 0xc1, 0x1c, 0x3d, 0x48, 0x3f, 0x28, 0xca, 0xd4, 0xe9, 0x3d, 0x38, 0xfa, 0x78, 0x55, 0x48, - 0x5d, 0x5e, 0x15, 0x52, 0x5f, 0xae, 0x0a, 0xa9, 0x77, 0xd7, 0x85, 0x85, 0xcb, 0xeb, 0xc2, 0xc2, - 0xa7, 0xeb, 0xc2, 0xc2, 0xcb, 0x1d, 0x8f, 0xa9, 0x56, 0xb7, 0x61, 0x37, 0x79, 0xbb, 0x12, 0x7d, - 0xdb, 0xe8, 0xdf, 0xbd, 0xbe, 0x63, 0xe5, 0x22, 0x86, 0x54, 0xd8, 0x41, 0xd9, 0x58, 0xd2, 0xef, - 0xb5, 0xff, 0xbe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x30, 0xa7, 0x66, 0xb1, 0x48, 0x09, 0x00, 0x00, + // 785 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xdd, 0x8e, 0x1b, 0x35, + 0x14, 0x4e, 0x32, 0xd9, 0x24, 0x73, 0xf6, 0x27, 0x95, 0x89, 0xd4, 0x21, 0xa0, 0x28, 0x0a, 0x50, + 0xa5, 0xa0, 0x4e, 0x68, 0x90, 0x50, 0x05, 0xaa, 0xc4, 0x76, 0x83, 0xd4, 0x0a, 0x85, 0x8b, 0x59, + 0x28, 0x08, 0x2e, 0x2a, 0x67, 0xe6, 0xec, 0xc4, 0x74, 0x62, 0xa7, 0x63, 0x27, 0x74, 0xde, 0x82, + 0xf7, 0xe0, 0x45, 0xb8, 0xdc, 0x4b, 0xc4, 0x15, 0xda, 0x7d, 0x06, 0xae, 0x41, 0x63, 0x4f, 0xfe, + 0x26, 0x1b, 0x36, 0x48, 0x5c, 0x21, 0x6e, 0x12, 0xfb, 0xf3, 0xf9, 0xbe, 0x73, 0x7c, 0xce, 0xb1, + 0x3d, 0x70, 0xe2, 0x8f, 0xf1, 0x55, 0xd0, 0x53, 0xaf, 0xdd, 0x69, 0x2c, 0x94, 0x20, 0x77, 0xf5, + 0x9c, 0x05, 0xae, 0xfe, 0xe7, 0x22, 0x40, 0x33, 0x6a, 0xbe, 0x19, 0x0a, 0x11, 0x46, 0xd8, 0xd3, + 0x66, 0xa3, 0xd9, 0x45, 0x8f, 0xf2, 0xc4, 0x70, 0x9a, 0x75, 0xa3, 0x91, 0xb2, 0x0c, 0xf0, 0x86, + 0x01, 0xfc, 0x18, 0x83, 0x01, 0x5e, 0x18, 0xb0, 0xf3, 0x67, 0x09, 0xea, 0x43, 0x19, 0x7e, 0x13, + 0x33, 0x85, 0x1e, 0xbe, 0x9a, 0xa1, 0x54, 0xa4, 0x0b, 0xe5, 0x80, 0x2a, 0xea, 0x14, 0xdb, 0xc5, + 0xee, 0x61, 0xbf, 0xe1, 0x1a, 0x1f, 0xee, 0xc2, 0x87, 0x7b, 0xca, 0x13, 0x4f, 0x5b, 0x10, 0x07, + 0xaa, 0x74, 0xa6, 0xc6, 0x22, 0x96, 0x4e, 0xa9, 0x6d, 0x75, 0x6d, 0x6f, 0x31, 0x25, 0xdf, 0x02, + 0x48, 0x16, 0x72, 0xaa, 0x66, 0x31, 0x4a, 0xc7, 0x6a, 0x5b, 0xdd, 0xc3, 0xfe, 0x23, 0x77, 0xc7, + 0x36, 0xdc, 0x5c, 0x04, 0xee, 0xf9, 0x92, 0xfa, 0x39, 0x57, 0x71, 0xe2, 0xad, 0x69, 0x11, 0x0f, + 0x6a, 0x13, 0x54, 0x54, 0x47, 0x58, 0xd6, 0xba, 0x1f, 0xef, 0xad, 0x3b, 0xcc, 0x88, 0x46, 0x75, + 0xa9, 0xd3, 0x7c, 0x0c, 0xf5, 0x9c, 0x4b, 0x72, 0x07, 0xac, 0x97, 0x98, 0xe8, 0x1c, 0xd8, 0x5e, + 0x3a, 0x24, 0x0d, 0x38, 0x98, 0xd3, 0x68, 0x86, 0x4e, 0x49, 0x63, 0x66, 0xf2, 0x49, 0xe9, 0x51, + 0xb1, 0xf9, 0x29, 0x1c, 0x6f, 0x28, 0xff, 0x13, 0x72, 0xe7, 0x8f, 0x22, 0xdc, 0x19, 0xca, 0xf0, + 0x2c, 0x46, 0xaa, 0xf0, 0xcc, 0x14, 0x87, 0x9c, 0x40, 0x89, 0x05, 0x19, 0xbf, 0xc4, 0x02, 0xf2, + 0x16, 0xd8, 0xd2, 0x1f, 0xe3, 0x84, 0xbe, 0x60, 0x41, 0x26, 0x51, 0x33, 0xc0, 0xb3, 0x20, 0xf5, + 0xa6, 0x68, 0xe8, 0x58, 0xc6, 0x9b, 0xa2, 0x21, 0x79, 0x17, 0x8e, 0x97, 0x19, 0xfb, 0x2a, 0x99, + 0xa2, 0x53, 0xd6, 0x6b, 0x9b, 0x20, 0xf9, 0x0c, 0xaa, 0x7e, 0xf4, 0x42, 0xa5, 0xeb, 0x07, 0xba, + 0xd4, 0xef, 0xed, 0x4c, 0x64, 0x16, 0xd7, 0xf3, 0x34, 0xea, 0xa7, 0x05, 0xaf, 0xe2, 0x47, 0x5a, + 0xe1, 0x21, 0xd4, 0x28, 0x4f, 0x8c, 0x44, 0x65, 0x77, 0xb7, 0x3c, 0x2d, 0x78, 0x55, 0xca, 0x93, + 0x94, 0xf2, 0xa4, 0x9a, 0x25, 0xa2, 0xf3, 0x3e, 0x38, 0xf9, 0x6d, 0x7b, 0x28, 0xa7, 0x82, 0x4b, + 0xcc, 0x6f, 0xbf, 0x33, 0xd1, 0x4d, 0x6a, 0x6c, 0xcf, 0xf5, 0xb6, 0xb7, 0x32, 0x44, 0xa0, 0xcc, + 0xe9, 0x64, 0x91, 0x5f, 0x3d, 0x4e, 0xdb, 0x73, 0x8e, 0xb1, 0x64, 0x82, 0x67, 0xc9, 0x59, 0x4c, + 0xc9, 0xdb, 0x60, 0x53, 0xa5, 0xe2, 0x2f, 0xe9, 0x04, 0xa5, 0xee, 0x22, 0xdb, 0x5b, 0x01, 0x9d, + 0xfb, 0x70, 0x37, 0xe7, 0x6e, 0x67, 0x64, 0xbf, 0x59, 0x70, 0xb4, 0xb4, 0x1d, 0xb0, 0x60, 0x2b, + 0xae, 0x16, 0x80, 0x2f, 0xb8, 0x8a, 0x45, 0x14, 0x61, 0x9c, 0x9d, 0x92, 0x35, 0x84, 0x7c, 0x0f, + 0x64, 0x8e, 0x31, 0xbb, 0x60, 0x3e, 0x55, 0x4c, 0xf0, 0x21, 0xaa, 0xb1, 0x08, 0xb2, 0x03, 0xf3, + 0xc1, 0xce, 0x7a, 0x3c, 0xdf, 0xa2, 0x78, 0x37, 0xc8, 0x90, 0x7b, 0x70, 0x92, 0x1e, 0x48, 0xe4, + 0x2a, 0xc3, 0xb3, 0xbd, 0xe6, 0x50, 0xd2, 0x85, 0x3a, 0x95, 0x12, 0xe3, 0xb5, 0x08, 0x0e, 0xb4, + 0x61, 0x1e, 0x26, 0x7d, 0x68, 0xf8, 0x74, 0x4a, 0x47, 0x2c, 0x62, 0x2a, 0x79, 0xc6, 0xe7, 0x22, + 0xd3, 0xad, 0x68, 0xf3, 0x1b, 0xd7, 0x36, 0x39, 0x03, 0x8c, 0x30, 0x34, 0x9c, 0x6a, 0x9e, 0xb3, + 0x5a, 0x23, 0x1d, 0x38, 0x7a, 0x89, 0xc9, 0x69, 0x18, 0x23, 0x4e, 0x90, 0x2b, 0xa7, 0xa6, 0x6d, + 0x37, 0x30, 0xd2, 0x86, 0x43, 0x1a, 0x49, 0xf1, 0x05, 0x17, 0x3f, 0xf2, 0x53, 0xe9, 0xd8, 0xda, + 0x64, 0x1d, 0x22, 0x8f, 0xa1, 0x2a, 0x31, 0x9e, 0x33, 0x1f, 0x1d, 0xd0, 0x19, 0x7d, 0x67, 0x67, + 0x46, 0x07, 0x2c, 0x38, 0x37, 0xa6, 0xde, 0x82, 0xd3, 0xb9, 0x07, 0x8d, 0xf5, 0xda, 0xde, 0xd6, + 0x04, 0x5f, 0x4f, 0x83, 0xff, 0x9b, 0xe0, 0x3f, 0xda, 0x04, 0xcb, 0xda, 0xee, 0x6a, 0x82, 0xfe, + 0xcf, 0x16, 0x58, 0x43, 0x19, 0x92, 0x08, 0x8e, 0x37, 0xef, 0xf2, 0xee, 0xbe, 0xcf, 0x53, 0xf3, + 0xe1, 0xdf, 0x59, 0xde, 0x7c, 0x53, 0xfe, 0x00, 0x47, 0x1b, 0xd7, 0xe2, 0xfe, 0xce, 0x3e, 0xbc, + 0xdd, 0x59, 0xee, 0xee, 0x0b, 0xc0, 0x5e, 0xdd, 0x73, 0xfb, 0x3b, 0x7a, 0x70, 0xbb, 0xa3, 0xf5, + 0xbc, 0x06, 0x60, 0xaf, 0x0e, 0xd2, 0xbf, 0xe4, 0x65, 0xab, 0x7a, 0x4f, 0xce, 0x7e, 0xb9, 0x6a, + 0x15, 0x2f, 0xaf, 0x5a, 0xc5, 0xdf, 0xaf, 0x5a, 0xc5, 0x9f, 0xae, 0x5b, 0x85, 0xcb, 0xeb, 0x56, + 0xe1, 0xd7, 0xeb, 0x56, 0xe1, 0xbb, 0xfb, 0x21, 0x53, 0xe3, 0xd9, 0xc8, 0xf5, 0xc5, 0xa4, 0x97, + 0x7d, 0x31, 0xa5, 0xbf, 0x0f, 0x52, 0xc5, 0xde, 0xeb, 0x0c, 0x4a, 0x5f, 0x3c, 0x39, 0xaa, 0xe8, + 0x47, 0xee, 0xa3, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xfa, 0xd8, 0x00, 0xaf, 0x09, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1009,15 +1054,12 @@ func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = l if m.Value != nil { { - size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { + size := m.Value.Size() + i -= size + if _, err := m.Value.MarshalTo(dAtA[i:]); err != nil { return 0, err } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) } - i-- - dAtA[i] = 0x2a } if len(m.SignatureType) > 0 { i -= len(m.SignatureType) @@ -1050,6 +1092,48 @@ func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgCreateCredDef_ClType) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateCredDef_ClType) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ClType != nil { + { + size, err := m.ClType.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + return len(dAtA) - i, nil +} +func (m *MsgCreateCredDef_AnyType) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateCredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.AnyType != nil { + { + size, err := m.AnyType.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + return len(dAtA) - i, nil +} func (m *MsgCreateCredDefResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1534,12 +1618,35 @@ func (m *MsgCreateCredDef) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } if m.Value != nil { - l = m.Value.Size() - n += 1 + l + sovTx(uint64(l)) + n += m.Value.Size() } return n } +func (m *MsgCreateCredDef_ClType) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ClType != nil { + l = m.ClType.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} +func (m *MsgCreateCredDef_AnyType) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AnyType != nil { + l = m.AnyType.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} func (m *MsgCreateCredDefResponse) Size() (n int) { if m == nil { return 0 @@ -2290,7 +2397,7 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClType", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2317,12 +2424,46 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Value == nil { - m.Value = &types.Any{} + v := &CredDefValue{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &MsgCreateCredDef_ClType{v} + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AnyType", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF } - if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &types.Any{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.Value = &MsgCreateCredDef_AnyType{v} iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/cheqd/utils/utils.go b/x/cheqd/utils/utils.go index fb114e798..9862594dd 100644 --- a/x/cheqd/utils/utils.go +++ b/x/cheqd/utils/utils.go @@ -1,6 +1,13 @@ package utils -import "strings" +import ( + "crypto/ed25519" + "errors" + "fmt" + "github.com/btcsuite/btcutil/base58" + "github.com/cheqd/cheqd-node/x/cheqd/types" + "strings" +) func CompareOwners(authors []string, controllers []string) bool { type void struct{} @@ -23,3 +30,21 @@ func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { fragments := strings.Split(didUrl, "#") return fragments[0], fragments[1] } + +func FindPublicKey(authentication []string, verificationMethods []*types.VerificationMethod, id string) (ed25519.PublicKey, error) { + for _, authentication := range authentication { + if authentication == id { + for _, vm := range verificationMethods { + if vm.Id == id { + return base58.Decode(vm.PublicKeyMultibase[1:]), nil + } + } + + msg := fmt.Sprintf("Verification Method %s not found", id) + return nil, errors.New(msg) + } + } + + msg := fmt.Sprintf("Authentication %s not found", id) + return nil, errors.New(msg) +} From 2fb8a2199e5623d87abd6b15a3f91f6b4ffeb7f5 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 5 Oct 2021 16:42:09 +0300 Subject: [PATCH 18/74] improved CLI --- x/cheqd/client/cli/queryCredDef.go | 2 +- x/cheqd/client/cli/txCredDef.go | 21 +++++++++++++------- x/cheqd/client/cli/txDid.go | 31 ++++++++++++++++++++---------- x/cheqd/client/rest/rest.go | 15 +-------------- x/cheqd/client/rest/txCredDef.go | 1 + x/cheqd/types/credDef.pb.go | 4 ---- x/cheqd/types/messages_cred_def.go | 3 ++- 7 files changed, 40 insertions(+), 37 deletions(-) diff --git a/x/cheqd/client/cli/queryCredDef.go b/x/cheqd/client/cli/queryCredDef.go index 92dadb005..171d7e226 100644 --- a/x/cheqd/client/cli/queryCredDef.go +++ b/x/cheqd/client/cli/queryCredDef.go @@ -10,7 +10,7 @@ import ( func CmdShowCredDef() *cobra.Command { cmd := &cobra.Command{ - Use: "show-credDef [id]", + Use: "show-cred-def [id]", Short: "shows a credDef", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { diff --git a/x/cheqd/client/cli/txCredDef.go b/x/cheqd/client/cli/txCredDef.go index ba0017899..d7cd93a59 100644 --- a/x/cheqd/client/cli/txCredDef.go +++ b/x/cheqd/client/cli/txCredDef.go @@ -1,6 +1,7 @@ package cli import ( + "encoding/json" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -10,21 +11,27 @@ import ( func CmdCreateCredDef() *cobra.Command { cmd := &cobra.Command{ - Use: "create-credDef [schema_id] [tag] [signatureType] [value]", + Use: "create-cred-def [id] [schema_id] [tag] [signature_type] [value]", Short: "Creates a new credDef", - Args: cobra.ExactArgs(4), + Args: cobra.ExactArgs(5), RunE: func(cmd *cobra.Command, args []string) error { - argsSchema_id := string(args[0]) - argsTag := string(args[1]) - argsSignature_type := string(args[2]) - argsValue := string(args[3]) + argsId := args[0] + argsSchemaId := args[1] + argsTag := args[2] + argsSignatureType := args[3] + argsValue := args[4] + + var value types.MsgCreateCredDef_ClType + if err := json.Unmarshal([]byte(argsValue), &value); err != nil { + return err + } clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - msg := types.NewMsgCreateCredDef(string(argsSchema_id), string(argsTag), string(argsSignature_type), string(argsValue)) + msg := types.NewMsgCreateCredDef(argsId, argsSchemaId, argsTag, argsSignatureType, &value) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/cheqd/client/cli/txDid.go b/x/cheqd/client/cli/txDid.go index 387810d07..2bdf98f45 100644 --- a/x/cheqd/client/cli/txDid.go +++ b/x/cheqd/client/cli/txDid.go @@ -1,6 +1,7 @@ package cli import ( + "encoding/json" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -10,21 +11,26 @@ import ( func CmdCreateDid() *cobra.Command { cmd := &cobra.Command{ - Use: "create-did [id] [verkey] [alias]", + Use: "create-did [did]", Short: "Creates a new did", - Args: cobra.ExactArgs(3), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { + argsDidJson := args[0] + clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - // TODO pass arguments - msg := types.NewMsgCreateDid("nil", nil, nil, nil, nil, nil, nil, nil, nil, nil) + var msg types.MsgCreateDid + if err := json.Unmarshal([]byte(argsDidJson), &msg); err != nil { + return err + } + if err := msg.ValidateBasic(); err != nil { return err } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) }, } @@ -35,21 +41,26 @@ func CmdCreateDid() *cobra.Command { func CmdUpdateDid() *cobra.Command { cmd := &cobra.Command{ - Use: "update-did [id] [verkey] [alias]", + Use: "update-did [did]", Short: "Update a did", - Args: cobra.ExactArgs(3), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { + argsDidJson := args[0] + clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } - // TODO pass arguments - msg := types.NewMsgUpdateDid("nil", nil, nil, nil, nil, nil, nil, nil, nil, nil) + var msg types.MsgUpdateDid + if err := json.Unmarshal([]byte(argsDidJson), &msg); err != nil { + return err + } + if err := msg.ValidateBasic(); err != nil { return err } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) }, } diff --git a/x/cheqd/client/rest/rest.go b/x/cheqd/client/rest/rest.go index 153b1b5c2..8b05a46bb 100644 --- a/x/cheqd/client/rest/rest.go +++ b/x/cheqd/client/rest/rest.go @@ -16,19 +16,6 @@ func RegisterRoutes(clientCtx client.Context, r *mux.Router) { // this line is used by starport scaffolding # 2 registerQueryRoutes(clientCtx, r) registerTxHandlers(clientCtx, r) - - registerQueryRoutes(clientCtx, r) - registerTxHandlers(clientCtx, r) - - registerQueryRoutes(clientCtx, r) - registerTxHandlers(clientCtx, r) - - registerQueryRoutes(clientCtx, r) - registerTxHandlers(clientCtx, r) - - registerQueryRoutes(clientCtx, r) - registerTxHandlers(clientCtx, r) - } func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { @@ -36,7 +23,7 @@ func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { r.HandleFunc("/cheqd/credDefs/{id}", getCredDefHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/credDefs", listCredDefHandler(clientCtx)).Methods("GET") - r.HandleFunc("/cheqd/schemata/{id}", getSchemaHandler(clientCtx)).Methods("GET") + r.HandleFunc("dock", getSchemaHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/dids/{id}", getDidHandler(clientCtx)).Methods("GET") r.HandleFunc("/cheqd/dids", listDidHandler(clientCtx)).Methods("GET") diff --git a/x/cheqd/client/rest/txCredDef.go b/x/cheqd/client/rest/txCredDef.go index 800231fae..cd8ca0758 100644 --- a/x/cheqd/client/rest/txCredDef.go +++ b/x/cheqd/client/rest/txCredDef.go @@ -48,6 +48,7 @@ func createCredDefHandler(clientCtx client.Context) http.HandlerFunc { parsedSchema_id, parsedTag, parsedSignature_type, + nil, ) tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index 92d095338..0ab885858 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -154,10 +154,6 @@ type CredDefValue struct { Revocation map[string]*types.Any `protobuf:"bytes,2,rep,name=revocation,proto3" json:"revocation,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *CredDefValue) isMsgCreateCredDef_Value() { - panic("implement me") -} - func (m *CredDefValue) Reset() { *m = CredDefValue{} } func (m *CredDefValue) String() string { return proto.CompactTextString(m) } func (*CredDefValue) ProtoMessage() {} diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index dd33b3462..07f40038e 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -7,12 +7,13 @@ import ( var _ sdk.Msg = &MsgCreateCredDef{} // NewMsgCreateCredDef todo add value -func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string) *MsgCreateCredDef { +func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, value *MsgCreateCredDef_ClType) *MsgCreateCredDef { return &MsgCreateCredDef{ Id: id, SchemaId: schemaId, Tag: tag, SignatureType: signatureType, + Value: value, } } From c99566538d54059bec62ce5dfa74763cf22aca71 Mon Sep 17 00:00:00 2001 From: Ankur Banerjee Date: Sat, 9 Oct 2021 04:02:27 +0100 Subject: [PATCH 19/74] gitbook purge --- .gitbook/assets/adr001-payment-flow.png | Bin 24918 -> 0 bytes .../assets/adr003-cli-components-cosmos.png | Bin 69100 -> 0 bytes .../adr003-cli-compononents-vdr (1).png | Bin 100800 -> 0 bytes .../assets/adr003-cli-compononents-vdr.png | Bin 100800 -> 0 bytes .gitbook/assets/cheqd-article-pt-2-image.jpg | Bin 311388 -> 0 bytes .gitbook/assets/entropy-sandcastle.png | Bin 2682575 -> 0 bytes .gitbook/assets/image (1).png | Bin 168743 -> 0 bytes .gitbook/assets/image.png | Bin 85634 -> 0 bytes .gitbook/assets/liability-graph-2.png | Bin 97753 -> 0 bytes .gitbook/assets/liability-graph.png | Bin 79633 -> 0 bytes ...on-chain-vs-off-chain-decision-tree-1-.jpg | Bin 139007 -> 0 bytes ...-shot-2021-09-09-at-1.50.07-pm (2) (1).png | Bin 69064 -> 0 bytes ...-shot-2021-09-09-at-1.50.07-pm (2) (2).png | Bin 69064 -> 0 bytes ...yment-mechanism-for-issuing-credentials.md | 2 +- architecture/adr-list/adr-003-cli-tools.md | 4 +--- 15 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 .gitbook/assets/adr001-payment-flow.png delete mode 100644 .gitbook/assets/adr003-cli-components-cosmos.png delete mode 100644 .gitbook/assets/adr003-cli-compononents-vdr (1).png delete mode 100644 .gitbook/assets/adr003-cli-compononents-vdr.png delete mode 100644 .gitbook/assets/cheqd-article-pt-2-image.jpg delete mode 100644 .gitbook/assets/entropy-sandcastle.png delete mode 100644 .gitbook/assets/image (1).png delete mode 100644 .gitbook/assets/image.png delete mode 100644 .gitbook/assets/liability-graph-2.png delete mode 100644 .gitbook/assets/liability-graph.png delete mode 100644 .gitbook/assets/on-chain-vs-off-chain-decision-tree-1-.jpg delete mode 100644 .gitbook/assets/screen-shot-2021-09-09-at-1.50.07-pm (2) (1).png delete mode 100644 .gitbook/assets/screen-shot-2021-09-09-at-1.50.07-pm (2) (2).png diff --git a/.gitbook/assets/adr001-payment-flow.png b/.gitbook/assets/adr001-payment-flow.png deleted file mode 100644 index c5838654907837de5c1540ddc763b56cdb285a22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24918 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 diff --git a/.gitbook/assets/adr003-cli-components-cosmos.png b/.gitbook/assets/adr003-cli-components-cosmos.png deleted file mode 100644 index 70e064a46e5415cebb7eeb160aba95c078d478a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69100 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 z%0AX$nC0Q1(1$ILTfSnNcxxv-5^q-)y%P~ec#1KazbI|Lk<@VGvCRLt9Lsa@!A37M z=%y!hYv}yB_CsE@(21I4rQN_?xUd$|FSmD4D#ZfieF_CANVD(zoK}dDuNW7KFYoJk zQK(lh?$}VDqZ*@lzsESm{fLu_5fSHt`MM8t6iSwrvIb(0+PUU;_d^og~ke_uNIeX}vplJ^kP*{3xoFEG0C%68frv^Mys(J?KU^LHl!b zw;7~RS8JQ$K&6oXfqT?aR&)DSS3qFli|>XKQ)i#FX2l2KB&N^ExBJzmzH^4f7+-eJ zJ*FcYt17KxCsMp6O6W)Lc$ZV??t|uF#!LY|k7z-YkePFA@Py%9Jk1fjiWE5reL|Qj zpR|y3ad<)j+!A2AP6R@~a!74B)0voq$2#sAL%_--0cAB7-b%H+LA`(-NKcx4ymtJG zT7Xo%%3>Ku1PbQfJajIX%i?vVaNP=cJ+|qRR6ovS*$r#?uD_A4n%kW3Z5(9l9k1C@3%1B#{m?gXzbslm4tR}$ zN@L8?b5EP4u$*Z8I*#shz?wNn9NlEVYo(EQ){Kfong~gaq|&f!!ZlTEF6(*z-HrNI zos$+5h8c&)Bu`ZE^@$6?fN=WQ>7^y34+Ue&`2fn>+Shp&dx__c?^jkoh!$}|KDNBb z@dMMyQ@~mV613?*0{gN&kje`hgu9^7@&GzGjyN?AZy(HY>D&wW)FbhG1Kl;x$Z zAY`liZFI`;CyNhA#+J-Kx~E)5Wez?;N4}3LM4Q;-$HT3TyfKBAB0|D$pD>j+Af60_ zSH5`p3HTE370Fgm_!L?J2nE)1V%WEne{?4sVtP&H`vS8Tdc{>WD*Oh_0fVyW(SzDU zmj#*?cKS*LDxkVVx|)gke&YhD-6F>o?3Zi-dQ^bp{}qQb6J@DFhkzA823m8hy2mc* zC!n=Ht6C>O7uvbZo-9y8rwQbW^C?G2s7cGAcRlB`iMH5D2Z0Y@H}H)8j`?>pZo*u! z;zxb^4(GqySG_A+Nf^@YLsJNcL!&YH6;MF2#y>nQtwl8F_>~mF&_)i#L<|dj+j#b! zr|lbMJlkZj6?}pOmymt=Mrywe*=fD6_B!F-%1s2<1;@tKN~S%eWS_4mx$0$HqtZ75 z<*XZy3hDE6AFLkU(lpHitU=;+_{!2R?NJ+Ti@B?253qGy%Jti_T47prGtTw-sk0oVb{^wpCL~!Hn@FWI>dPuxbo%*uKyd zl|W|5g3xA-+~#|n>mr9DCLW1kyK&3JkL$P9Xpc0_`(w+oAXd(lc&lUM^C}<31y;Pm z1pR%!^0f5~H=9Ic|1m7j_sM~UqfT|}+S=v#WgnxJ>kRE+7Of)2JXj0{Q{hKsMs9wv zqkz@@Rx3(atkV~rvsRKIdrMA1aee|FuN~$EcC)yMq&2%WVKlp$i%!bxqz|(JN@t8VVB;E1BlFy~hIV%GE;5jJ6hc0LX^FH7iI-G6Ou{Xi zDQ`B?OYEl`at_bEeW5GBzE>LF=17sU&HCDAoM9o+5>@(|i&`}8S5!5nmdJQEvg_gE zYdU*`4j)i7Uf{i9(#S?0jq_gXIkDsnaNr(CIJfTh>Vf$(xKV4JJj%gDK6$cOmr%JG z(%au&n9UrvNDNur@;9L!1n(@{5o#WA$qUYcl{E>POElBQgt9MW_AC9HM_zqyDLqWR z$YIj@Ww`rY4%?|A({(qE%{8GYF6@Zg4UHa>r`!1LS+=#`SiMPulk7)9QrEQ^lf~e# z25h(1+Ao_aV-d2UO``pv=nwd+$Pe>Ji6YzIV=;Az@}(n)^Vc{Hb~86{mDTflb7JkI z#8PGJm|!vQryi3KNk!pLOckBIOxYH{sLA1&PlqXfDLptkyi#p_@AMA_Bn~QK4r+V57AEM#FkgfTK zAHmjL%U63^Gj#PodH46UfG^0DG2i$TZtie{Q?1)~+1j8ABo;sFSuf1&L`*YiG8wd= z3$45fcmT*I?zmkjGC0_Bv-J7*){XKBDcoB<>qalIrCPVAS1fYbNGl#1%^x&I3$oDk zt+dd>8@?37QWMa5%S!dLsW`b%k)>o{7{h*gZ6jCrGAJY3x|#ZQY1v3Dh>+xZZ2Cry zn1aO>m%L4-xZvD8zn~%{_$+Th4K?1K2w7b;=iH7>~ z+$qZLMSMdeMjTJ-q`-;nM)_9TDj&Lzn}C(`n|wcM{@ZyOA?(BtO!zOgc4Sp2*4|#X zHjr;1Pvmrd8q=jEo%JTOLMj~)H(;&c3wyoC+-si>!tb82>Nvu66wYB!>mgeWMdyZ5 z=HRElXYPx?39tKp)AhA|zC$D5hwju|oR~TqG2Ei|Y|{LI#dTG1^ZVeSOuB(MV|+#3 zRDJU6i~)D%%9nJk8H?6uCZq7F1j_OZo7p*FxN9*o##vno0?gn^6BnvJ!UC+08{|ur z3?$6Y=7lp*V|IS?2_l1U`lew+*%jESMzRO5e!fO`!nU%oQIB=IQRZuk4%TAq}_q!+OoO|oL#g9}` z6PRJ|+WmI-TF(Odf%^Lv)sN>EsxsN4I=0Wd5(Q%+o6MpsOEGJAz|9eNNh3b_8MVxG zg=9Y{)`A}zG(ImcjO+BZ_m3$nwt8}bX;5&e6#Dmz5hK6ilR>I@Tkj*SG^zPP@|-qw zQf}S{rA295@^`=03DsfatOVAj$VODi^T+)M9T1Ml;5$6S&umCRp(ST^ah!^JVlrtK zL(NXxK~*(!mw$djkT`_$bq9_vFjMQvz#=94t)9Vu1m8^ z8A-A(HzU@H&9|n_9G0l3HEeIh>PBh<^*ynwYt}WW{^X=*Uq~v&{ff6~o*j;pcMWZN zRbZK!xV9{nEaMIIZN<^kp3ppKq|btLcnO~PWd^bW)=f~wL{SB0HtIqCq;y`24yduJ zS1MEmK{2iJ{=;SjTb{O*!-yCombDZ$ifKS2ORE3O+E7oI{rROMu4cg|ed|GBqRc&z zrO)k5!z9yOlHc}};|%YP=KekL1XTdYn@uXe+9>auc1nA3sA&0*w9hG_O;GOk)Tt-k z%dZ5FIxS%0jG|ZTZ;i~1Bj_U)D@R0L)dD!dRr4di9Ld& zso>08vnCUJ1MVuHNAH{W1D)RZM}`so@+uNiiJ)Jzue)p`6*ckkOr>FC8ko@3%Cu}E z5zB7Xsq@^10aITOc40D}$v>!fRm}QVoDNN}Xz?`*|5f08HLG5CFlbJ?N48fBdAt?= z9lH(v=kg>5V;8>YwUc#3T+GWZT%j@4qr4Bw2i7dZQoa4dZWjDpWc)j?YkO;@r)TvN zE8~S}Vw&Q@F`X>|>#t>(g;wodzYetCU*24E5FJQiTX3e9~(%L-wO9M1}5PhkaKGZUir735J9EA<>y%r#aa= zUUodD`2?AfJoRwc#h+T6$QxEh=3Lyy!+}|wzxH)kM-plHg)EAPiig2;8qO3=F+8Gc ztY;2*8G{!SNN_70I4R$r_FsyN-f}YWj4j?lY)3>u8EQ&>DOF)(x!N)%75mi0eVjl) zSk_D5L@rHAQ6XCOaV3DDR@d%_KI!(Ej%A#9&I6rx7=e>4vX)NqWoXg=H28DY# z@0Rd-yONmh8Ty&WNj+TH$8HTRPUGSxjKrs5KBW*l@&o!7`lNdQ<7NpM+~h06DNLpm zPXrvu5K1T7=Z$r(<)1Phs-$Jy=Hvmw)=N*Lv<&gGqNnI*0?+fb5oK(vT zaW%|VX5qAph8;MS#y|Asal$Hh9H>1m>MHy`(G#!g-eBklbd-RuT zR3~U}8cXX33qc&c@27H@SuR)Q3V&9SF;I@0UlpYN$W5RGLOrEOCS%}9ruu{OL9RcL zrwcyKjgPHJx&C68;Ood6o;tXD(MHim;HoYfR3FbZIITgnpyxCTJ)e$F*H4&zH+U@nuEpTN zbG%tJH2n~Ml3A}X1{$(ssnTdGrIcudY{AAtuHJ4_!UvMSWw!!X43enNyFL|k@cBDW znrbK%#CVPD69efaM%teW>LsFrmUlm6+st~{ARGpS+L@sxd<+g{BHJNs-aHyQ%iMw8 zSmk24qHBEe8W@Pd2fZb2>~Gifs07GDT=qI>(Ki=<&~i5`rdQPq%p@cG+$;T{uHQDy z@dy*aNay=N*ri0gvngYIReGz~kWcYIwDHXbkn1Z^TVMWQKPUM~-??n`iEjB@%SJma zQhOd8#SJQ3L!3%0*646OCqc>!0-SOlLfdvgrsbJLe#|U#>?5JCl{emL*~}xqT->ZC zEOgkMp10W*sUq=2`IvM)e&WZSsMwTO2J4AeyX5x#POLul4jXDclWL3Z`qAOhhVT6A z=-WcLZ%fAV_O)p0H_``% z0(WzX+I2hE$PL@?-G@@>Q}{{D5#6Pf{u!dMRPkv&Y|h`#-&Qld{NAC{3>$c&LlV8; zOX1Yrtx_!herfxPb6Sak#`r02sq0y0@#ai~b~gAWBfWc`vO9f5(bxLqts9?;?ol5t zC|f4^$t#B)qbrNFH?GQJNQMU&ouxVHJp~jm?k(f@3LYmVO%GzJKzkAmzIW3XCs2znFJbz7CiGC7dDWNU9I5SC1F|4; zI;CzTs_yKb*n^R<&fOf01%h86Zi;QGWu2OxwL7RsoRMQv64QmXEuM@X%Fd|BvMQ%g z67tzZ+dc*@(BC1xJ7}i&7RBwT<01{2cZg~y`>TFH%|@Yp7lUdoO*671m3&9QSa}+c z_j<$c=2Ms9lasjJaG7MTG=9leFe*JXMmie5G^+2D?K+Q1KU0i%Krxzs{YOTszo&NQ zOKP9#Fz(zx{r)5(R9NobWcH8>XN(laAs+m@2En#{gCTdO{{D}Y4FTD)whI%pw*vTuc7TsP?n_#oU*#H&!Z>3 zOtN_q)N39cJ*gaNfU{MwgO15dUo?P0{dIw#w| zOjwAMJuP(GkXKw6C|?%)n#w-XQ{@ZW712xt?Ae@tTixg#s_BQR;9b2rak)%-)3mHe zTGI5P->pjcDWK0^O9qEehf;4eZMPG#_D`;w8VZkFG&ZsJ#gFP7->5*vLKkiqcj|~L zh`p5Nz4MB>)+ELdfz-gB%b5SEKH<9yZlQpnGWa9&Me%F~^RPhEBfE$4rL(f)F?EQY zk;+*>vYUVuw=1x)5tm>r8Fr$vCyQMR)ytDzQ9D{*3uy; z>pINV7QYnc@AJsv6f>g>KZ=)CR(7Y};m}H!U9;v|D*)|4^AWTw4J!}pK2;E@T5c~z z2Ew-CC2pnzI=p>Jn8?7^5wSsf;~Byk#cIf1{#u z1$F+HSN&RZa=k#7dNP-GP5b2svotdX6U9AfTa#R@QH!fzZ<&d0R%jt8NTpa%swW;B z)Z>Ec{AZ7$TsL#GZ?@vyrZ^e6*5=!?W}=1iO!Pb0iu1eZe?G z!49FB$zu!U>tv_=l#5+z+ObxhU$9f~;-!3678v?WzagsI8)R(cW4|3x=*bNI9C{h} zA0kfQ4QBMidrIz6;{=lZgz~;0?S7rOWSw_Qv`~UpuUk@%eA~aj`Jpu8UgmF}Z{b)= z!9dW7s17`@N){sfB)#`lXkkct=+oad=OU9 za?xAYamxQ_bN+ zZ*Rgtp@3;jz^d+(!+$>R zf8S?kuQ-63?6qF{rSX5hFGNf>sb)Xfr{GfN_43`%JJb{Nzr-wkDAM!is|mIIsGvw& zm=^o=^ZN>eM4Nn)Ni`Vn_J`e4RltHWY_t47k^V(MCjj13Mlj(7&{D|Qv>}}M&y~$6 zLHi!I5{nkE*!Zr{gBasRufK0@moA;c9wr04@5=VQHm+ zskmyiQ8drb$73_W46NWE(YzK_^gVGZy>5W9tTGuey>uOAyf6cQA+;}X*X@I35!-6D zcgaWU0ysKOQx*?9DNK6K&*SkefN3a5yxxdnfDtkrKWO6VtA9WyAhw<9$G6ok2PEyH zI@oIpb}(SC0Icv_KfC5E+3Q~0Uv(-s-|$1gr`ZW3+_`|-R!7E(gc1KT?)sbj422iC z3Z-D))7qi>379>l2{3@t@WIo)CPz=tyIyQSAt=n+Jtg# z>Gx3t?)7gk*w#b-ds9X-!KfF+T>z452QMso84P$QJV-jxL?b$Nz|>HQnmYARsn+bo zvSRauwekb7#>eKIKEPGCrDcZy5d zjS}x>0Dd)K?O@hGTYq{1C|3i#sW&nN1QBHMzR@S_Qwd*N_b(<$vvbv2P* zRHWdaaFVKPz7cc@mucsm7TCs70(M>oz@G~@=Fg8)jl_pOiHjY4Bl6kLI|N8z$Lwi< zWn&*7#t^pDHoe3aiTCzr3TG}`@hHHfv0lal>)C<#@CXl2XrAE7C7y^tx`(anw$YFP zNQG6F5EbWLg6)k+n1xYMSJ@J$5vEhO>OOi4Pe%N-Ku}2)PyPYe3@qWKH2h36tQ$yC ztOq-a3fDCx)R7w=e&C$49p)~tN{U*r;72{TB!zIEa>gB~E|6u7qoqck95r|Bowk;K zZ(Nz>0ddf1yRJCT0GPT|^1{Dfgv8W%Q2idp7kPEz)yFj>UuqU5ouU20B7^{=l>rtp zAYGREdjHRi0QLZYCC3k#O`CW7oxuQ@?&oIFs+3m;z~WN{8#sRCyz8jF_<_R`^bo=8 zCi+=IbbYf5MW7@R*{7tZkD`J}neXmz(bV`G6<&c6y;zo6hI2#7p;w<#uThyk*`t#WMlf5)uBLukLb2qygDj>e$qc2 z(4Y%Qi_?c{j^;vrEp4HHQ`PKeU^b~fnsJ>AQP?zX1X}q?hkmocJxcRHBA)#1&}`Lj3#gSYvy z9Jt(3j8SJ)2vCnlK{&eVVZye8BB<9>miJRcqLP)Saev%|a+%^x9i27;>1Ni@b!=&A?&`R3fv!`H&7Gu2ldju>W$zC#}Yyg#<=a2&wU z-p>J8x(A%E#5VqO0(XP2Dgi%*%LT3k-x9c17CQw#PMJ6PSMApLH`aV_uLF7WfMJFX z#}7AidL4^4ttZ0@Mz^opWc#SS`Ecm6}_F23K+X)WFjBX0-0DCb)ALy)|@cp7a zlL|Sq*#BRct~nfJ;3eQlEwLKjZ52?0`INCA1Bi(aF>>z3z!sRFC-7n@pYQdZpDzZ~ zz_>2Q#4OWcP0uKYrO24=#@6Bv&Ndq_&Nn4Dt8GS@7cd#P9nd4Gyd!k_>I^*gUCA>V zra>u_-B4880J+h+kR{u88imTRt)Ff8Bzf$Lg-E9}xKv>P+ey}^+x!0`4vdkU8xRR^F5G-+Db&!m^> z+%f*(x9bo#t|$FXz$rD9_YM9#o#8a#yjW|KlVqVp41ElY^o1!~=D^AN;1jcE)|pK+eu(cWlLGYVT7J^e13jiNR|c0qYFCg~pW z%f4jobZ0)YR`~3Q?rqJXEC3i)<64nfL;Mh3C2~l;HOAG^Llv{cCzP9HUlL%|;$S%d z(?(Zl&Voh?ktMO;#YXaTrguHUI`-rc01N0p?iH2W~Se>{c86`@Z~zQ zt;WKW?!)k!wf*Eg4#q)I@TzCL2K&4X|J0%IKPvoc}4(xj2eh;9lX}+G8RXhCqK~ciz zRQtPWj`eL>CO2%OPyOQW!JYoQzIWbn;@Crq%3yq_)sEU~-WRFl3BYlgp%aaIpQNfu zGgpM?tCMU`w|^P5Hzi5@S*rVp1>m#7vg$HB$Z-4yQwlQIv~>j9GzKS%m5WSAc;5Tx z&NcRLzv%fEP2L6oib&VY>PgjPst-h9E$kEI)+eJJGLY4*La?`H5)S54!EpQn1It4S z`F?AXY3adrH~O3f9&g)f(`ht0}t2HGwQ zCZ$Pgy3NG}{1H-FYOQ1++|qLKJb#l{M)h88@Q{{m4OZV8D9)|v0R~Q$oab$7wlrrO zvBu?3*G2-{f-eUOr6X@H?wT}BOfjOEehi#z`5sS1wmAknO}G`;8Jb8ug;7tjYUFv_ zb~vmt;lFwq`aY}D{k5)ayDixToPu7ZYh~DO{Ye2Lb_*scDqsgAo5b_O!#(z9&z!4_ zro297(f+)xP}l?5IUqNzmyQ{#+ZQ)yvzQE{eB&OZMYg{!g}GvN>5|71-T-IBHG zCTh!CU5j}%H`a+*AyvEBwvohff>_r(duv;*7o}Q+y6Zv(LIcsaM*f7ElkLOrfsa{P z?z?Gef2&(+D9G30siudm#fXh)k_BYX0bz++{ONG(Bh8yy$Kwpx>y7V(5_b<=pR^TE z(;TB)iyZG;ywQozi+XRxIVdv`NlRWDbdTc;W?4Ffw^2O~Z8ty2&V}X;`bd6OaL)K_ z;jjGyJ0&6!xcnx(PaWMkmY#$6eUFWZM|S)%kOZFV8egE`TUgD{bm5_V0N(V@46>2m zhbQCACgaDnb9Ex?9aO3_Ky&Pswyd-a;v(4v||&iau8aW zT>t$y<>{U#yN{pxW!|GEOIp6`sHT+_+_9`_ez{$`qWV!y-#9cTB&b;E!+NIjnZZ}N zY+wYTvp?3Rne?w=GFFT6htnjJDo&;xJX&>)X5nQ3v3nyJGxGKzqJ<#tP~WAhWj*7> zGm^*E_@$Ktqs!1;GS*6n|90N!Dp<O*&mN(!5 zp$6^;-Lbm8_3pcIN?hBHbkg<};ZarbwKV+WTq<~1FcEuzgNcs!4xQc*{#P`k;YBb_ z+v-Dd^)m*lw!3^o7eec;@^u9WlJ7^z^Mzfx!*}yfv%Zv6{k<9ZC_HZ~QCVSV8@E|BOq^ zDMMgQKn@$ObV%Zey02$g!bRNDT4i40#C<~e8a(G3FR+P|tC;15(-u;|Mo1p!x?I;y z<{H2t=1zA9Wa6-I{)aGBE!-K7W5^y~l}%>daW_O8IzI_xm(Da`b1wjNGtj z-MFH=?odELwY{0cSZ)JP+ zpWmnyJ7|hhJU3wQ12ZnWOoD#BD?~un{;HloqtiMMGtyF#Jx!fR!PKFwzj~E@XIyjo zmBP&-tCVv8R56%rrC+Yau3F>Hce=Rlk+iR`b%wH|?Qy1Z91V0$_>x!lJCU`|lVp+x zs-KjJ5xAm?9aW>O+t}q_8;*I`{ISHv+K`D6S7kKB6*lQh^Dw zu-y}C>8)^dw3|0zGfe9krfiM$6<~M$LRC=KCqh?o7yfo1MV=1WxF;?ldFji#FGxEC zABGeh5}7F!+>h>HFe4a_ywSE%h6FEqG1%8zK}FYp_kYFOx)!a*wUp%*f@VFC~#hX*YJpk$3(_t4Hd9t+uG(u2w*4lNGDxk z+TI&_2RUGJ{u@O}M+-4biTaDvR!{l*J>dM(WuJ>+JrFO6m1Dw3)o>3wcZ5K%>Dz&7 zzQWHj>W#HT^tIdux8S20+!~F|k%>KlsN!PFaQ(^(pPj2Ho9us+YLoy(!MU!nwz9w7 zf|os}d0cy#bj%{*%MLT2OukaNzZ{eansmqPW9OW7MW){i83;$CnFl_`PWW)P&cDZb zFI*E!WAzuWm?^((db=UtD-rul73*)z8BhG!%-}H8vCf2t4Tng2ueU0`6zQ$!@0XJR zH^uZaq0Sbo{!yGF!D%~`p&eNYT|$kWaxZhPduJ^xxD|lOV`X-f?KwZ!`aE2XIJ5^aynd!` zyW`a34lS@&j9kRYx`7=h3m}8JC(yE5D4X%Y==^1Ij;p|es`!+Myq!Yk|4o_I>t`Y+ z7m+dG4WQKS1 zT~)5Kl?>k;x|8btRx}^umNdeYs!8qnbg{q+rcA$Cg8z>bRXy(;8!E!@uu#BQZ4K?( zU#{9b@onorkIJD?h)u1s#I5Gn2r5AX8;tk#h90#b&nSveGt#lLr9n>gX!cSrS0oC> z_f8e0^z-n7Tpz_!l3e_Z3wIj)%*h@G8R$wqkI09l=IWP?P&F#>gK{0`KFykJp8>ty zC?k^;O%Mdn8eqGYEK%xN+f%sN{4>V;2Dq|WL#DRz$7vb#jI~yhh>0+f+fUnFrD8)l z=+Dj_K3~#NHBTItoWctPiMUU2Z$*~nstbe6+UzidOJ*!HFcq>XvqY4MEs1ZDIW;LY zR>F?LN%j*Fe4fvFfuiH^mmo)D%Af<7PQKUN8u89*x70KFfB^G|2j-E(>H2{FLsXG- zfkC~NfU#t^-*91#4@H^C$><|E5SxzWfvHmOMdRI0CmDGDt?`2pewz!82XHCp%2maw zr~*lvrvRy)x zi<)MoOj~2r3-R%_XCV3lbe`fV=@A0SD*Jt%4u}EhSC$FpO&sKy-oW-3BHtfuv5T}5 zb&I%Jh6%N}r%_ zyye?fxsV06W0$k*r)JjW^778-r7V)55B3Ha7o%&`%i+Py6dbb26qpr~?<7e7MepHi z!DLG@(nRIEveROfGOp>rPQ*}Me*WBCgV~7Gi?Tom6I+U8$sOTfpT>OZdmcbMx`stY zOMEb^CD*J-@BEbpKX2wRaBu)F^06L~wVxk7aMh;W;kx zVr*YeB%sjASQKjo08(b+rcFKGO~1c>ks6|VOL#TslL>K9On;u>2($c9Sp3O&=g|!u z;PXZTe8|rqnf|j`0nkRwpV7Yi{3(Y=*F73o-d`2@b>!=4OL}qBG4pEshg@mIFa{Od zV8%q6_)DyoSj{K6`Z=-z`0A)qRS5Nf5L(L zsFNRO!S@NJ*Pk+F6>#aE)(<;gF>uACY>M$v;X-*!PY#R(vUfd-d;>469^XSU!Y>nB zL0L(n7Uj|Bloy2XJH+9ZR%`slfk|*y^;XX~Ydc##-t4Y7yx|~=m$dfm4#o2Pw?(YK zQ4Pqjym>e4RtmEvy-~vOy>MSh z5oH6D=0oR^TkI8pmq${9-`?%7wF^*3%=e;(-X2YV3ACj79P=tfZ8CvDbfA#C^ zmF(2+EJ{CP_toEk%=$X4u!N9a_Lv_V_;2zLpfCYib|andFspJ)czxG1U@ITDx6V=x ze@;GEav6xJJL)J6!Xstjdti{|OBxI8wJ57GReE{el^x@d3GfWIi#flg(!qT0+Z1! z(;~ggGN%mu=wIPfv8^rju-^cdWkdL`9XPyjXifK>uLAugA2J%Z>P@&8fH%v1f?xM= zQxP02pxn;xjfW&eVI2bm20KIi;j1y7Rx$+l# z(VDmue48dx;`6VT46bgyK(BCX0Z{G+CE2wOy%{y$_T&UoBnh3r3BX3fK7mt-R`WVW zwAM6vEIio*Gd{?+^JY2>(=>a55eNd4M(md{{2$44iN7aQAL2yGVy!hqfb4&18O3qW zsZuRr-SKX?)AtRdy5d~4YFx+NO1%3JWr9b3_HQc+M5Mi-H7^kKA2`!b!6RKpW!l!y zsLqgv5Ga)=X|tNjS1_>CuK^Yd-I<*fz3fWI7Xa16O^cld#!+F()?H#5p2mg%0VKaX zEXkIr$nvW1`{%SOtuWg*!|7@YSB9*?EzcFJ?T>_Ak12jI;^;Q6=wAJGm#XffAAj%9 zU5of955?24?4L>4-V2DM>emrr(P!p!6S@ROps3BPaAnH91Caj2O@1>gp6NWUCE9@2 z{UA6P>e&;B+S_#xi;UqMn%YISceO}-^!<F)6UJn5k&*mwWc>eLf?1UX7FLcMiDm}RW`2Kw4%k(o)xs;5~LQ? zIkqVU82j$=tqp}Q6#>IEiyMIR7Z_BtdkirbWzw+^6Vr4T1V67;Gbw_!Lp4(rJx)Q_Hx*^o&x*PAE&Is%c<@rfw#*J7o3*q z;ALQ6@A#F64nI_Zdm}Jhb_##>Ja`x(yeDkz_jC)eBWI%mVrP6BpcX*dOjXx`Mtt0h&It$@K&ojz~&v#N1w1x!r%`r#uDki5t{k-p( zV-owR!Da2k>8)n zcLvZb`BN0{Wtzx`>!IG=e6;beqNmI61rvOJ`$I6@Ou07GEO1BM&xTuCZ?hx35PRN1 zo@pwcpm+&hJa|1~9z!9jm5@!xk?oXR(}p@hD$@9Wpm9N?A>#}W%?J7Gpu&oIBq1vm zhT0{O`63-+TpPShxa#ZNjmbO2XKn*u8g~g9nZ{=eY?h{#59MoR8u<4RE?HMVr)NBA z*3aX;3m?DUythQ&#PX=0Bl$4&%p?-nL?n_Kv#A2!x3;0)MPxdc*mx(=(tKI3B)~3U*=26O9D<^>M$DuzG;~)$Sb(@qg2Lwpg)2d>!vb3Vbq5;1q z6+FmWV5}}uZChGcf1NE!RApzr_=qbFvSCvay!0}%SSlo`D}eKY`qk2@TOXJc1ZKa;{j_~OXIEpuG@>OTFRY~D`$dzdyI$5B@JmN2b z33pA4z`~DiBszzGGt?rYR~I6|aKuj<;ucKd#Wx4yH?NW*qAON`$Kf8rIF%Y`qTVea{c78Lj8Xj!%cA~jh>9vLz=$>>iSkSg32Xy6Q?ybw9#_}oK7aF~U_K3Gbe zJAX%-Nl$_!)i^E8_$5z>^KMZeNh}0nkN}oxOL0G;$q2c`>z;~5wsTCZBO7>lxx<2# zt33?QmV!R&BpyDs{}lwq9pT-Po(2FVt?}_Pr6ZGi^j=`K{FDG7?ar*Y3bt<+tde&3 z0Mo7x{vmL5iepqIcg63RpKy_aTfgU=O8V1S40rl05}sl)VpvSh=5@9jktbKE`|~fX zRA^NL;mU3G?I-p|Y8$-@Xb&6lq_2g&Ip6fU8-CO4BxM3!6l_pna zopo!36)T`3De`?z3hFv+pHpt=VJ}ONuUG6*gnm;DVXtf3Nc7iNwBs&>un(}tMpuRR zTLR|NhC^1pYdv<=_XPlt-3{i zR^GU4HbjJHD1=k>#x-PSMk2qPxGE_!MUj{UaVLabaU~HX?fkVVl-MU_VlWhQhAu(b zm=Z`~L{78R)~EM#?2vqdB&L&id9Mo=E7sU&^EL-W1NU0Gu|)-u14;} zS?9J05(E2^K@}+$b7PCaCKim=+ z!=Jp1KLDF`6aldp{YN(%b~l`@Kd<%e^~sSC@*ZOU@!?#7AiF04bagYUQ|a;cZZ&5h z@6nE`3hO#Yi@cxZabBT`Mn}9b*d9R#kR4_~e}4bx=qKdF$7rk{hr+ z0rRu3$pRc)Q-w3#s0Lm@T$=OiDs3r?F;B;>2RV)pa-JaMZ-dj2<`BUU2?#LE z&>nckLVX30+Fz2J8YU5Q72JZT_gKDgVnVrX`t%_a$BBHcLZ(7v0%^3?1x$I`%B;B! zQKlF}9P)u==DUz|@BQEBGG|f|>JyV(krY8pEFzOk} zdX+nNSpSoC3(+F-HSlcS{5!NQ^V7{G%L=a1-jrVp(!(TIukB)?o*e&#^htlaJp_@w zhePyOs>9MdZdYBoM{t}m9OD&*Sy=7<_iB*9u4ae$Pa=;e0N0saS&rf&T`VGRc(`n( zZ8!V3t9KADX;ay&C>E9kuvWVaM<&JMWhg;smf~|pB;+a#8ToqC^Qm>BOF~@PCI#DJ zQt_#|R7gEko_%DVJ)+|)XI#$)mePM5e?fgk)`qS*4cST7sQ{;5)EbQ|Rs^tZC7&=i zupA$w8t9eD(2SV51nW35HN~uEWJ7!=QpA=>={bGmqS`c4HGBxO_tr=3aJ%GJr~u>F ztw#2RvFSV+`-dwMk!aq=3L(A6va8ghZo6^Wh-*DnL(zzil_2*Wi>tj@VA+|=A$j4@ zNqX8L!XsHA6LCG)(BKx(kADww*DXe-pk#vHAb2~6WYr_=pe`1vK9Nkf4m24#%V9%& z>@<(Rm?R%<8G`GHq=a1seeOR$D{i|gaD-qLnzn~9g>V>)_=;)3C87=?2#3CP;x<~n zB_CU%!2B|2JlPgiNP%xZiz>i)k4Tmc)l} zW+L0B< zFTnF+MxgG)nN2`^ht>vW_NM7X8jU>todSLR6wP2(o%PHKN$1I2wvEaO`Ox(MJM6b8 zksAZDJL?m`BFT~`J*7s@$3b|4ui|J8xfCXR9Wbc3*l9Oyj77{0fY?9PGB6{xqD2oP z=M6vRSrRten$g<-F?Z)dm_E~&nwF-TQ0_4DQ<<3Qm|m;@g6-^p>(;W6U126HNcTu} zobF?))CV~&5VD)bELR?kzEz=HZjb$Yj;~e^96~asjvgCWQ8-e1vu*^)p8&? zD;80#4Mtxt|D^s-IHCSy)^8%Xi4&m+L5l57Q_TL06!rQ9dmi8bSW{JKr^hc%;iCvt z-!SsWv_PCJY3b~czncVB48}n{E#%v78QMW8pXsWH4!brW&J&^aC3ITK9m%gYHM2r_ zCrj^bd0Fv{CIR*B_9*M0AM@U82l#aFJE@CcFvf(@zQBNx*uwaqZY-g@RE2uy;{}Vt z1h0|iT`mWmg;r${;KHs#<>%Bk$9Z5op{XWbp$Ei?x$tp7?`FeOpFgs_anIFw|A1i1 zM0LjL|M9+*ZN9t(*T{bDFJby4%Z}sOM~Jdu;pH=<6;~oCH9@L??nA+v58tswf+=DN z2ixX9^(Ryh!8N1!u^2E2)y!mH!1phE+ayiDtb96#(b^Xfb!ehqd3xO~t3%(ZvA3#z zvJZ3ey-v6{FbepTm(l;!tjkmifkwN>1_jc&EPHpQZ8Td$@-b0i8~P09{?P0MHv5t* z7vp~{0G)u-k4Jr^tTAa!`x&1RM1JX-0U~S4vn7vzZ0I;g`ne`7bU(FOJrCByhKsL*u>S zsxQCc8<|~_CMpoTdncjh2=qCpZH3I{t3B{87TUar`cl3La&NtJ-{LY19S6zN#jCb# z3Pd`#xSMg!Ls3NB7PopdGc9PgR7SYC4YP-2e*xLdnUT-?l!o$Avij*J_MN8L8ajW` zSd9E;A7z5ZQT*9?N@6@z{wkErmz?w(1FDz5yS;@m3sLLB26=Yx7>^Ib`$*fcLi8A7 zSB(mvE)iK{L;FeR(D1anWNg|HS*WO@1Nhe#A=M4E{CIa*PdnKa=sFg5GsdPA#%(zn0|)HXqpUr!$$F|M-!9xv z9_J%GCgUy)y$+1-psI}XUo9WCIvg;6dz{2Hsk+-%Kzhq}bT3K>2m0YEpQ2RntER<5 z-+r&^T20aOd3dirCo_T6Ne^uY(R9(DW=0;V0`cebzy%f+TXI!`Qc{gyXXex2rf<|F ze_nKaCoxcQ-NzRwK%=gl`$&CPSr_9QM6w0CFRGgEwT%e-#=fH5AKR5Vmlh)+CWRgV zC4aVtaSQ38Idb)|sb2Jh-z4m$ml7EsgyxIExFdhj#EXI?s60u8lQ4D;5a~T*`xh7} zC&CuA!g&s6)2Kl~!=S_mljDi(4U%kpv3dq`+@%S&NFf?{?KhF<-#`|t54&U0(4OHN zb9>j(!YP|`?p8UD&y3$>eA9|X<=K>__}Ktq zXe(wK&TzOUgMzAF2yO-Uf!^e`WGXcKCUsLG4CWpW2+CymK6y67Kt;$?56Jywik(PP zCuZc%MRib=AFy=XMWQ+h8Uk|VefqcxidC z+T6y~Z)?kl3@S+V+V9>b_X;AXX2i~grL8*=Oo$HaIDisD0WDS_cV+VhCzxLzi^(}$ ztdqUqZ5aa)_92$bPPrfK_&8KG&k z`8ZKi7o6b~5sI6|Z;uDhRE|k$a}}ePD4q2xe0yK$d{wnT3S2W)9niN1j8tgUptLrI zlbg zD5$8r;i0Z`r(aH0NG@9uel5yXMp@v@9QlrT*>Ax_ErkC!0C_B9(Q;;L zS!$n`^R1=5p|p~x$2}B^0$u2g;7iAh5L5odbq9`FKYuUWRB?00y)KWcDRk~pt0|1A zK;E+&J997i?m)KUWGr+pHNvNm$4tIvfrYfel|SYpL5zj%>2_m*7eT=FC^L|gdoN9B z%+eXvS^MX)ndm$`t*eZAl?qcLA#Xs=+?T%DP>epRB38ZVA>Q6WAdeX1Lxbp|C>%!Y zZYt1qyLB9yxsHv0`!T*~{D-&*mIV47w;{`Qfrq6-VXPk?qidZ5ahIaoD4XYu&G9oc zc`E*#*!+DrTsCp2Es}PxcGPqjp>#x!R!8BHIfU6EKfU#tk^+`blxAdMl7^lW3~rTK}2wB1~c15rTGWTCBns zoWQeZk1YiPH^kB|L+(VcYekHtms2#WRI8jB0E(nx& z$-S4U(uu0kJ>EPal6hu(X9zKUUw*OT9sX6gs;LrEmd?N`^C>z@JhZC*ROQYg7UneS z@#Ry1()_K}yJ>YB>fO+sf(8O$aq+NtinbBgNry$>aXErr#dvot6vPoR1pZ`0{QGN+ zvepjhOvj&r2>rp%E(*l8_=nWXO1@Bcj{{dMeiLl&oF#HYd+VczPPwjV!3Z8HZavU*nLlp1T+K<=V3YMIq1Y!^bhA=TJ?p*S z(eh+PDSb?9epmJ6rF7W;RWtnjx+rUG-}-SKt;1tDvuKu-zfE&MtvaEc$hHb_bkuXY zL%4p}C0z5+-wECKxMjIZDPzyd{FW4`VvhWoNQuR)uT;WJkwC^g@Mpts4>!L$PmM$* z`_Z&($hUIBS!Jbvv0K=>+@MKOvdy=)^3aT64CP%;5xeIjeV+%2^%ch`1rusjm+kSscnN15N&kQoJ zmL3pz!VZ!EeRJkBB&oXeW7A+hyT5k7^ZdOk%-sBNk;l_Al zsNehfKU;g$y2!=`1ZN@o8Cj|CppM|2#Rp+)`cJnE zJQ&TMj?hDCGA~4cX6^E--?&sgl%Qxi%0f?z7zEAupP5o;X&6UnnPd7#?XkX2+fTUg z(bJjK+&(j!gFI!%R*q3(@{NW@iHw-ubmYp&yJVw%1IdoGvFgZAN1b@!5@Mvuc@70Z zTzv$@D*Gqd)L2l$XDq0o&EWl~=e$PI+_0_?`?u%Eq9S1Ja%rx=F;MfeW*WObi^54; zgCeXx+{QjV7d_#yMU$>6=7iiUG_Jm;!k&E^r3L8@<;ZkWk8|-;V`aHCFsVcIP5G2a z^5*s|=&rdTOiH8}3v2RaoJ&_bI+zIIMM&ipPPq9mA?w!M^H|9Lx==m3PbHnZ{Tq#G zEBGG|yNez;kigWQ?~;g1wbrhQ!YT06UCc$0_F;Lvz-CKoBS%CvT|X#Z@(rVlwry^T z?FDYwa^D+ST&(cmeWy7qrSwf+rr_?Ss78eu(H@U)VNzadQ+xGG_Gw^|78wRww60k` z{ejCg&t@HAo{(+_HC4Lw8za$p+zLpxWYXbxiCIfD^Cdopb+N$I`->J|CeAJ&3Tat} z3Z>z|KHQdf6#hHCqgBu8u~~WufK28pEn0R}DpzP=Xn934@9G#gd7r+jaNsGm^M^(T z`PT*f(74!rbJqy7Ho;Gp@)dJs>HJm+{e zeB~a}bZ5wZC9$pThYcihggm1ID%=b2t6d00i$+Gw<@LzA>Qn!GzHgNOvdRxypWHK# zy2&Pn@|RBe543w9hj4cdkepX3Q|rVKv{d&l5E9{p-xb#vzg;-y@1RM58iprkMsc*V zt_9LsjuuqC>@Utel>&{o4WHc`G^x{M-c1gFpTWU6>^9b?fjZ(yfpmTe&RxrMC<>>;`J~}B>fI|w6x-uH^m2y+ zpKl7N@{ZK;sC4jl8k=$H;`vd|n`rkl9t?*=2xCAw84}8TDd}T*x_&=YnQ;$ALm!=j ztb<$*{gg9dr(6emD=@A~`G|puP}@>a3RfAKIvQzeiq$hB8ywo9f^y~$zAt$s@IlI8 z(|(=FzoW;b*$>=cn;&@auj=TVA>~q-tPm1hWBq)WF=MInD{M7u^AB`{DIr^yKksJKviJZ(dLU}THr7kaJNU$!HKHR@W{CNP{0Q>%k&7A}q zYkIyk{n(EwZ%o3=uC1SO$9zQxWzk;Y`tv9+{;U4mMkSE@VND2D6m#|}o3*<`slk&) z{FKEsrk*b<6fb2Bf>l8uqyydO-hkA7pIlmbbb3i!UnYAxTgMY0`~L~~>y~!cJ8M>n z*x5+v60pB|6I+49!o(frR?;aMqE!9%ib6 zZmO3*=5Nm;T`qo8w0XDoe!F0if*hq!zAjQ7QX+?~zU7}f!0JnS!dD#rx-MP#kf+Q; z0Q`nfM@`t8iBA|)6N~RsI!NxpI5jW%;~U$`dWzI`YN8W7zG`06 z98T5hZCYLU;yjlTj8_1A7t{T-4R)Nhx$%l*XNjpU7`jQwm;lD~#+uv*t+|+X2=~DY z@R$dy6l5di*4%O&awsOZHWX8AlsmZaerNgvK(?f#r`tx@v^yrVWr0qUq?uURXkZXC znBM8NY6O1jp`GMs2Mr35X?nPZHNI5{B!~XKfY-w!8RRX!rWmW;^@E%(R()N4VD?$5 z(l8-XV`*>FOB>SrWvZneb6J=WiIrO}Ru4AW5bJm^R~6VFy1@vU*7Sk5ZZ6_rK|5SS z2eKrV{_p%w^ zZ1THbz7Z03ajf-nOV*+qWl)e_sOYqrAf(0i<(V~|$$c-p)w1^kY$n~fT{ZLz>@LW; zu9+u@KfmXAF;mv_M)#@?uUSR!Yh88R8B=r`jg>4Dg*W;O&XbqXs!2zrDLz#@a3 zu6B039$JwzG981S3coOxjw#{$&tIspf*j=vQbBF728wLF6tK5x8(5u23i58r8J88e z&}0YXtqNPKE_K15%lfj@o2&?k&hmQut&zoGuK(3^&woD&o5YKeV7oM6P?ZGFWIs_KY1aKi-!Ac+GuEw-R{ z(_rJ?il~f2$>!-$My221Gg@0R+v}KK4iDqLuzXKbb>LBr#t0!9k1nQHs>6B8k95>gO~ZI0&e7?0Vp#@3w3^!)9`#tv=c`>Jhqnc)*FF{5#Z z_&oE-XZhwy-(bQvRqU%bch+hz%>MFmxq|%vz7x{p@1pn4{`^|X;2Fe0cuuwx_WhDl ztIz8HnN-$=;2)HrMP0@sEvi6O5K+~~!w34I?4lW$;J@_Y-S?(W3mnj9Ls3v4GIY$- z18v{(S^dvcR;=*;)5yR+b+fiKa6nnR!7{Y?yr&<6kam!s*E^eC?7SDrl$j_lilgAt zTf4=C&QTrt`VbRLrHs}GDA$fvOes;O3CLqB)w-tn7akuWYXf3y%HL5AX>0!O4Df)( z?wv5Z7a0ZAj%h1?d!J`*tWM1e@>l;(H|eTk+E3?YFgoV28SC9@Jf%g|GCuN$i+F^# zS41tuXplb=QyKzOr*&9Ar~&|Zw)n5Mp;%XGYQF&+`d(e*96cPB@ZHj{3s1W$jS!HI=_$qACO$p&3Y z*?1}r@mDK;v6yS6J8{)j@()#^$h9^j6R=J}J*>(|HjmUrYB)Uvw~L%vbGdL6e3S70 zTIvH0O|(bW7hQMmUDG*4ntGg%=3lwO;ec9SvCpx8uoLRP;V<@!hjcq8kZhaivMgwnU0~yVe%nht2g+u7r-E7FD5oe}dFZ$K zv+6A7Y%!)^`MN`xTi2*E04JVPDeAs~+V;Yh#bxWR`QDwQKk_r#7bZDK@Hns&2_D}M z{}wSrJZdV~@%sA@25o2hmvp@%3M)f?6Yy+4cxNWReEY8DToU1p+QUturKHC#-S|HS zHD9q7@^~Y2Q+~z}Oi@lFeR9e@yhqTic?nh>HfqWc%up+qbw)j%!9zvJJgt1de5X$v zcdjl_d>Y!x2@0@7?%qb^S(1vn&bZ^B9gzcudS97G#Q4>6ay zZb?5a4|@EYXL3d7p)BwU*UP7mq-kD1 zOCw+}4AcDg-t)RLhB*!kWqS8st27}tYTe^H}1ve~ouCacsx&X^Tp>xeD~ zgI2nie92(PANJO~pG)rFQ*;a$qxb7;3wQY8W4oQfo)**kU%lk<#-BG|8IsAz{7~!q z*^>I#jfFgR<<;{ZIlLT$vRqbroI@#^&v#V4t27xRYe4Ar%vnFfhdXZZm1C3*3S|;W zCwFkyQ@0f%<7b4(t+`sUWLnmAI~15Qcq}p#zNyjpHl+>Ri}6ZjMH2mkJum*ec~;>{ zf2kQz^Kxk}GyLBd1^QG?{6%A4BbIJVI>PJ}<*JjjKF@PCOFDT6+Pad;aj;VV9f&ST z3KhX>o2aE-%+Y$<)ml81+ZhFD+hq7DSjc~QeZ@J+ld;96VE8g5N9=U$LM{@o0aFZp zSf)*04v97np0bP+ruTe~k}3a7)qGP@9UwN}`8HV@HvuQs;c?BfSgHr*RlrGIzMNv1Wp#{$Musx8P3HQ7h5!^{r#`_=`r%S(Guj0NUmW`gm&OKAk|FEYPD8jo- ztG9Xh`YGw7xn`}c>enyHLi)6#3&NmaU0qeyaj7x6AB=h;({~kQx&9bUy`4^Q4 zItpV9I|ZWAH392jfXo+S6CyhCU7q~+Y}Ii`KR+(J^lJghhbkVxvhw0U+NTc@0;%x2Z)ES?$^7@ZYf*{7-iVM{y|+0n0L* zP9`r*N^FetK+S*mZ;o3y`!TLto|@0-vi8P{i*oOyl#2YI4?qgIMGpNp*Fu{nm_p^v zv*`Xa^B;c|d|SmnndK*Hmk4F&(dkN6d3&IJYQgv!ds263DI@2deOe2In-wjL`FK?6 zI9napyj?0sFFO1g*wVJj#ZVcz6jNTk?--YgWy=l(k(<#iPMq{Djs;xR?oVr~jod_` z8dqXR*|5m)-AjVLpzR9e#9Hy#6q071iaq@vQDE3I=+vDHm>+>=!l<_#_q-|sz|Teg z0RQRYWqEP(Q$+{pp&vVZ7uVH*N^;x>CgT9Co>+HL-Kx9pT`oGv0mGO39M!?RqyFVQ zeM)(lkjJ%HCYNtE_v~8r{_65KkbiA0t%I8-HkMGjBmUqc+~C9FkzUdd+U|?4=EXBD zix3r@J#5?U{YM?@`Ar0vlk&LPgl`jn|B`=kH_GUtF-RYc83Gm;{)`49wrKL>63L9s zj|@iadnV{rjbv0UlwZDddo)gsR&)sDQ45zQ-yWLH478IqwWK-pd3H=^sqgF2qTLua z6B7)-Rbo%f5+5J&*_zJ@LX82GZ%56V0WuSrnmSDIaxT-Cn)SVBfl*ehY1A>$I^55I zpEX&dH?tR3)^@cx1EgP#$K|}Cl7pbelpe(2M}4Ah*4XCb1eAihQILHimL;|(N-0q$ z3UkpGbl~`0VHer~@?CnA#PGjmFcMQ_7WhuO(h^!-KCS?KY$xz|7V^W35!1**VEU>5 z-@)ZV&4m@$B~kT>h}ls&`Y@5nZ#36tQwKPaGX_J&%02s(jNV>}T~-XbZj(?GCC!!Q zvP_p8erA;^w$8RTZnjxZ(swMrA2;XySGD&8bjjh@6I#-uX`3H4xw)9nYDe1A@?Sjd zyjdKO|8uqYh0rSA_fY8r@+|^@x77k!kv?KHgVY}UEB8sg&q2*2PHkwVdj$=XtFzQq zP3J(`uHyk@@zxcv*zb&_Tb!uSJWtF*E%XJ^n8QuE<|nw&6W85=x2MIIvcCvFo(BIb z_CZVqU1$Q0vHO6Xs~FWvZ(-~QAOmIyshY-2HJt!9%s!C%ZQ=p+X~kU1C^GB+n{)xr z9lM2?Vzk3k@qUTV$v@LljwDwrzaG2lGManH#fe~b>6T>>9UK=N&Mi5lR#QOXW+65VR^~F#p;unyG)UP zEC;!ph7!2^>tDNhZ~meb_#=V8(wd)f*!|n2O&lo{iy%!r#FR-PxQZOEuP_F<7ynH{ z{{pNm37YhwmKGqyCSZo_eAOJ#5^CDndEPW1u5Qcej4)NS{Sh~l zY50#t!dcrgzjZ4RIIfofBp(>UDfhEKJEoKXI6TpjVWETn);-1~f^fK}Qh-#MW zSn18j0L@0TZ3ExwS6uJ?fLg#?e*pJUcHHrBZyP6mRRq9VY8TqJ7lB539ap?tAglJf zj5Tat^$+r(va%gf?qsoEZm)_4qRtW9dSC~eS8s#g2y=A#q9V&}KX2(2t)9;|ysPx? zWpmxe_Hc5y-TebxaU};3EWZCEjDAq$=VBG$T-2@%K$No06$cxPeu@?p$Sxt&J_-D~ zdA3rw;F%jEP*T4ZaI;_{9ni9~BUu^Xdvo+}VmqBQ?s4Fr(gzXIW!6RBOfNR{eUC+( zLal}sPkkeH?`_`9_o%wFaC)I;hG1zh;J$=1r76{#4SLBzNPd9Xf_UJKae%w-f5W{p zNXpWT4b&EO4>wQ{t5>IBd>njy0rX9zbT&QTw2UTQM}Fq~_yY;#9cCnd1C%|(#_l5= zXVfxL4zwR7<6)z+>4$4(!F9H#D?xr~@BY)N4@JRIC`ioz(#Qu`vJCD3JMsX?8|C9i zq4kE>Az4El4fdAj)qhR`u3Oj$r@;Z-_6qbq=AM+>AB^umjw-z+IFawfg>0q6*eV-y zeAhd%tVBVSmjKwRQ3S|7BoCGF7p&o@I(FnviAp3zdZ+qD5K3HeB^-Te%-|JVQQmkQHmVIC-g-M_5xD&tUcc zdGi=Tx^m^z@T7r7R=Tv~HIxGK2BzUMpR&t8tDB4Ju;;OM+*T3ZK_&MFfQRP)0L`O< zwMB&m!<_R+Y>$f!IsLJIi3R|c#o_fPBk@BK=A|B7<41yf@202nl)0widjR2R`@ali zdV`I3pxrKaMdf7yI5Jan;-#3(OL>A{pI_)S`=fOQ8eKQfZJqZvKQcK(T9|Imn1!Ji zRkofFE<1KORdr&fvN!Mqwdv6B^xpt*hz!Z8C-8PC+IiG7X8K3?&J1qD+)eEQTM`HF z#|E=DB`p@7!nwObr-CnpuFLD5XUV^6^2>l!ll>-u=UO5m_GB?sAVwY)&M+XUKJ1@eL1 zNMWlChOwojhi*OgQESg&HC%X5PLRX>kE^x(WP|UiYbcu2zrTQUTC{ep_VGLc#H8ld z&UA{qUf00BM(CO-n+}elZm6j{98KD>8i6fGES-C3SJA|r%=z@uRY267gGPDN?04a5 z=0RKgu#TAov-KHeu475H4Ho#nD5J|9+tTv-LGGjdqGN&Y0Y`QpN=KERNOZZA8=6n- z&+0pkDBq!gM0oQK6)|>hz95q=+`!KE(vGU+IRIVLbOhi%`7X~f|FCp2{Eh6|Wh z{VstsrA9L@9zw-KuWFT7pN$r{e2O^&{OpLlr`Yw? zu?(|o3%L>2-9;lSpQTPrd(gtW-tT|<(d!GDiJ=jp3*&y+Sdc8UCwSJSJqoOSxKM#= zv?DkZv*^4T33Iky+zI&=T6i-7j5AXdZqLy;5;zFn4GO>m5L8(iGKwKl#zhXlmc4Uh zN_EQ5N}4FGdqbrFVtq(9XiY#p(kup9vSj4sr~lLXP3LaGrpe;FeJ?25f&Y@4)6hC~ zTKoARn-0{sO}q;#Bra{(4iFx;tH@uqoYKHkyWtD#e8ka>^Ijk^+O*Py_K;rV?maKS zWIj|%2WuoE*>NMk1g}i7(?PEGaqEgI6CnhtYt{Qvg`U7Bgwg_^vLBU%SxQ)dRnZiO zVu8_)&N_%S-&8F{%$&8Q>&#tyk1@P^k8mB@xwnPCVUxC;rWacCb=A&3G_2?DRvxDr)nYi;uz|$NBXM`G2V9E^h%u*&eR?W!G zl19HGB)%DH#0Fey*z3TFGHtu+akVnDA}5UgK=dj1IP~(h4R6VbeK?9EcHx6Kh(^3` z1DTNU7Q_TQcVbYy6I}H+BX|HQSI_b^g{xGmHSg!%dt6b5W26fcynSQ(Bz;o^UPbiH zmrA0Ao9T+4gz)sG=0ET;&5~50HvaAgLfTK%J-hP6j7U_26(q2q_tRj0*5}E-1z=j`mVwQ?0AkSB zYru={$^hO!%A=~{sup<4oI|_Ar+V47782fcqW?O5&bwms^KP}-swlCAtj|bn15-q+ zwMFpvjHv@Jdz}@ID?L?VC%{UO9)n>(toJJ~;FD~K&St>RW=~%#w}us8eMCo~uULA6 zQPSA9Lw%RQYH1^uaU_vY9?eGfH4{?tt~PkhjH=C`Vb1No{D+ZJ3ffMpao@f(ogGt@ zkRv@?fwnbnJj(^HlXi0#vIl}~I$u3ZX+U@dMpp@EMu(F)C$WD9ttYK6_bAZ1$RdE~ z;q1qpxYI55rvzu4W-|@%8tu3F`2Hqz)M5U+m~e3Y3V+y zHGHMHiRQ!5Eog@?+2GA+B9m#-fcUyjjj zLXK1hYTn&3jEvQ8v}jV1UMxnn_q$q)IB3$&jh=;@4c;tMgY<6L71=K28sI;Zn_APF z(^`CAD~~G*^zr)>7BW&C=&}Ty{Grq4O7`407fc$E3M+0tQfU0s&2aB*RP8j=-e;$> zy@rv^as+YkaH@D828xH%W{2;QAH2fIiHVh#dzAs2?(jX;nK`KUHnf~hy!e$xKlc3i z<0}6wE+bGT{I>I&J`ZeU^)94RmNN1+cGN*AR+%vR5POS(rQi3N>J_i(Fd>KPX-aqQ z-_mmC8DL9cG=aCx^=V`H>jliTghOhR>_*>ocN7@z+z@vRA0;6M1fh6rx<&b#67I1f z>LiTwC7*C)Q{vn#96BpbfKAuJ>v*lu6zFF{{sd=TA;|B6>g_=Yl8Qb}=)=YLxj&R1 zrFa5M0RSDU)bll!3&<9UP6YFvOJ>LVwSE|`FeQM5?@rX7v_3K;=8!q*@d*~l8(I9& z&PKf}3rXK`W)>B0Uo!jTa&jg1!$VU`=&p;DMbp;<##}p^;D2=XsXJhkz5ylc!NzFViT4G?j0dqBwYH zvN@aQbEtOFPGMq|#EMQIe-VKQ`OqF(3ZuE0dz3huo+Z-_@jy?9l6>E*DOI~u&~R{% zNE=jL&07+njXiee-w-0mChSCl4wxY}#6QXAG1?ve7?^w}b8Q1Qg-eHU&_CK_V=wO# zZGw<6T@#{EQv^)nuJ4f}MnG=?n~pcJCH;Y_0{j}~*IV$5jWRfx_oUJIe6Y)c{A#E` zBP=oq|8v$l!;syHrmNvh=YZ~hNLpSkR3| zhgBM#X8S=U=KTFYQt=^3rQUG}5rxUD4|xh1SAhn;fi|vvioq{vG+Y2Bo<5FdGmi2= z(81dPn(@}yybT=LL9#^siM?ULMSIaaocQ5anB-d&p_^(R5?DdlYUa(|1}oIPf?Tah zO8&(z>ftksuO5S$bDpp5>DA(pKPnF&w_Y)b>bAa6!GN^QbY z?3BOr-)y>a7^<%*-AnOdLNH~kdFSfP%Wb_$;eDO;4EnSPWW-%x(i92o2)SQu1m)@c z1KAt||MnS#Hyq%25QlbyYa)a2liL7lE=7miOk8az&Z)@lY4^of39GKZ>#f!ucc8_B zVZ+BtAJnGi%kD?oH`il+nob?Io*Pa;b1{YL5oC>hYeQ@Q+dBfQFyNa7@1__sdhy7W zoloLWnyLhY1%*xHx27?bvob)ocN9CSQ`yK^3!Yo4IJzv@Hly$twRgX=5aYZ}d%VhRoNVxgxot%D8g2Igf zmRZc5k#i76Y1sXmjE@J@8ZVxpDAYJK$eA-1mR#e%hRt+~zuf*TXtS{3uP3NAas0^& zu0^MD1FoP(;1*~K<}buR8}7_xusJbp*#W+R*SK94lM&xNiOpCof2PasEbc%Y*=>S$ z`5EI*+=S%2y!p!N9 zH#m^6U98b>*KVW2EKbjUzK@BewUgPm`*5>ZCR2*%pe9%OWEo7UGnRJvz!tQE_Nv72S{5JTrQnwb=ZW`kn?VU2_&L`x}^h^BYSs4>d6gabl7tgCi))*@OV`k#0&eo6 zO$2yT-VgPnac**i<>_pQs^roPx7D(b*AX{MO&LNxBZIqhUfWmAs?%ZRH2LGxXyZ5h z)JTI^E=s~lmnl=%-WZBKBgiGo0j@%rM&!p`yt3EyBs##8B4Pt?#~qb)j*$|ig5>kC znRFi<{?_$-tqhC#;W`L8reX2we-X!PEE!>kHisap^_48j@~f{-M{;+1&w)Meu069L zdDETWebagly5#Fht?uTf{0jsDj_=|J-l79RHXTFxFYEC??I{1m1^zWd{K|bW3d&Z? zZlZ8Gp>D~*?Z*wTh`U2J9g7c;K6BpPUVV$jd11$9W!C=Z^j-(+W?&yt9Jsyg_PxJE zXS%oPv8iIQ1H$Z^c0Vq(^7@v@pM2GnX)C7Px|3ogfN7gZ%jH=KlNr7<2MIx;g7+gc z%bLy0#tD=r!h+w3#pUSa-A!}uhF`S^;8Fcl`Ek>~r}saFaeDqFxb%BL2vb)T#q3CS z-K0faP}^C2o%+pB|6|ICa-fl!tE+R*JojTd@2=M!9(r|QE>lKDqq3}D^pPiHlOdgu z{dR>Boxq=OI-*q5DYa`A2{UEd9&Uurcr7@4XL#Q?<0K^x%F-_MW=wM08H8b@DfOlX z%x`Q+Tw{>Ov!0GfC7gDCfd^R8vy^AUi`@T4%Z?zQZzMa+ZBH6C_LC!PJ< zSE2(;>`PuoZ-r~DjXzR@YPj?gHi}{^w{txNjCZy2P?gnlKKQ805D~?{vaAHLDXB+W z5=VP#2SXO7B*FId-2ze(q9{r2!d6P0)As|l1pcE=B2zqJ(Ij)9$%LPec~@25OjX^y zNw_Hj*K_o>i&KyN&9WMnvg3 ze8?>&rusJ#mdl-|gnW3_zim&pwLc0fIP^6^sDe)V*z7rrbx z8I3geUM_vyQVa87>VK+%6hwPGjQvdxNgGg6c1oTx|2e1ke^Q0U1ia{TV>BL=qTv8c6HK&sg&W0(J(9$eW&`ytuW_AH=G|(E zn1;?zncgtJJ=oGieOE$$5K!NA&U>pJhX+k|BCDbbnSVx|R)DDy0K8Qg`53QXZP%E) z;KY2p9+-sD4pUxgyb%?6-~4ip{eLx2YkcJcm7E`k07s@0s4C=IO8$GJ*WM>&^2%@1 zi@9EVJzzqPf^IOSFzexV=by{c#FclltxEcAl|xbtQYF#Lm%L=_g?dH4>oQvB- z)N*g~AFRHoqD?&gWW@h|lqL={q`})eR$1e?7dVLiZ*=De*#Hi@Jb)z6ruMdru$B z!f!Ww=+!ToJRNzwY1zs?3_?aM&DxoMQse^06O z;p1SBWam3Wpr#svDTdW`XS`LWI05}{z@2T37a{J9c0j7dnDSp#JciB*C^_Z_yBpoR z8#E}^Wj~tNPfeZ#jJyW4UDyfgek~Z+1vq{r&y6Ft(~_sf3fJQf-xOjUftGI4#3AVX ze@=$E293+Jbjk#M&mb9%ulM73Oh*r>{ypMe>mCe6Ikk`;=>p6^JN?xc|Tda6l%AK02?m%#4)0Jw|A2L{mcN{=8?b46ncV zUpQoD?X9A^;AFAeM2Ye%pIps#-Su`7=H+VmJ*wQ@l#bp(9E;;W4MuKu4BvHV;Y0@r z(T+X^s<1Xchk1tHq2TlYZd>1BD-CB7hDGK=y0T=?sL=So{}ldi1~$Ix?Rv}l(*^i7 z8*K1@ypN|u4AG4d-`}`C++7P|?5@kSYd5;_E_&8bG|d%1wDIKLJ;? zX3S(2d7Q|e_=-9OjXIobu=ZDg9?aOgJ(N(+m` z>>G!*v24A_F=Mr%zP0}_it6jIy+h1Zdan6jx6WBo^Z7}qS#wUmx5`MoZgJ?iyGpDY z27ZWyEeKldTfACY<8TG+f1N^@>$vZ1y~rAe|DInkKo!a;gbzvNhY+_)LL z4^U^y|109XYssDX^mb@q91i&4mmC@lJy7lT>cZsCDAd@6Wr-9uhhW)A$Ozns69TyP z7N2;SlzR3Q^fj*HvXya(YV)^8dG%w05;tVU0(0pP`mtGRqRPX@*jmc!D)~6@*F^QaK_~# z|82QVz`glE#@FAOiGwBH)5zx6-~CdM_$oC-tU#-Q(w;UoWF+RqIYy_MkC@EtpbWHt zBLdK;3=;)A0X6hw6wh~JZNB;73R}d`B2lYEr)^)0%IlY><;?F85>;za7Eiwn*N<-a z-zYD)eW@0m#>6g$Z2?F}1t2Ci*aH5ElayYnN6!dkf`jB?Yauhmx>A1u>%<~?p8R{- z2w#z2R3$FpyO|c6Vj_J_26{M_xwwU9{Wnlu%+9}~Ud{lQp*3-LIRl4`e{tv46g;JM zXp0pHz;U0qC;u1`QSZ!z7Cu+G`EiaA>)9emY=LtB#t|vw0~iJRCP860&pCYtbi?@X z485bQAj+Z3C>IQhW1>u%?$SrKiMg8@f4e~#D704iAFvE4hpEcf_W7%Lo&wn)rH-v< zeYP>^+n9-l(QSfQ_qz&`gZ`(;xekfKz>HzCL>D%vUyq>bbOC=ie0sZNh%4KX`}-|x zcaA>+^9i2Mh(d=iPhAY+RjP^oR-MJTN9eR@*4?mG2?{)Wt-{rHB!a7m-iQYKDO#Vl zhNkH0rYaeSAtvfTB9QJjrTi+f&v8$u^*5Ot-Q!n2w?u4M?kAlx%!`)4TY*hs%YvGl zKLs28V7Fs~Y2Om}KCD#)%neen!yx&6whL1cLf@DFwnLlU+OEe~p~>Ox@kP|X20CF7 z`SOFZ9X@4Y0`yJCyS?@_Bh!3UUosk(LYdBUcYFIFx^4E z+8m5#-r#bhn?J=Uv<6<_NAnTZLT!6l(dKNG)GZUQoJzuoRsfF4%-X}*^*)e+@jZ9h zS%A7fUJE@fYESS|Pmhyy?n@*toCa8DOJ^TgjR)rReiF23Wr znyq0em;*mxgnO>L6=$+NNzs3x+M7{4wP_7xm`cl{Iz(-Qkt(BZ?ufq|);n2JUe$x@ z*z@@S61W4-xEVL=9PQOiH7Ma2CBdtOEJS577GJ*Yz)Yq*pUC91rVhA zQj69BAB06*D6z=?;%C-NYEZ0Mty{+u`ZG!7uiPeG#*6kksTK~ZxPlknDZU>ZN{S!nR8swWKz1_eEgHY}=vn zgZURZ_vR4oxi2wbrXfmD8ditV=Z27K>sxk#)%6qxz0F)Pt5?REY)e z=i~i}IK4X`xmqXRsgKB}>>L21Wvj;Ao%3WXDu^4derpuiaLXw{p+uk`ueX#$iI%-|Xm)LUl$2L4UznO2EU& z0MXDLisB_;x3*UTBO`*_mc{gFYjRBhCLF`nLUYb<-e-M1ScAFOs9oI*N|8%=JT6mK zH=lh|?&QxV%6Xa1c|@c4@vQfP8*$eCr03(o7{JxwI`LO0po82%8_vJuVEHs{CH)s_ zXW;Zi0apQjZ7mALY?cm4?;)dP=`2uec zzzdAqDG5Cr#QuZ|a0nZs2YJ$%p_|MP%s$K`bdX*=|f*SopyTl`aIA^!bzNNZF6 zx^J`pqQN&SV^Zji-;2+cX9b)FS#B4p-=x?nZTwwFX6D{SvA650YOgPAs)?3M^GuWq z{gWXOHs=7@eKe^TR!wiBoC5K{0;V+-ELc=Tha*rRP*3vo9WwuQuXWu(s$>tByXGmm zYv~Xan=E})SD02~ldlJn>u_ecDT*~SrSDKAklA{@=>v+Hdl48{fhmuf&AXUUut2kN zOc^+$LW+lx8>GVdKmQq*1~sTIAl+3AOV=bAMi>aOg1%(LKW$zA$N6j6yv-4I2N+Af zzkgk3{cV%d!UxF|MsW%x-?Z^S5r>c+@aw|o>R3<{R{aRtO}GHf3;NaEx$4yN5KWi; z;zCPjg0dI-_qL4qPk#G8(QPJC6XWJBgo&(UE4CzUf_-<0s@H%n{$HTy9BZ25PY-3^ zPrfQCtqZ5r-*SEjGT z`6mEV5gW=-6hIAvTeM-D#DSDRZ;B`wj|LK<g@DJvjTM)O&^X}OEo&$?w2F3}ma?xZa94(5@CVVL2fo8KefGNw z@3JZp$S2dQd|NW3T1!2uyRn|htH+PQ*?w=_#ad%(FRJ7G%T^DCB}(JW>Vl1C!U(E< zBkchzQ_7~d@susBE@VF7i2|iF!6Oz~(Q-u~IE8^ z_CR0vYg|}GoUj;RF;xrrUVGN_egW7G)mB84HS-x&sBStGlNOkkp$o;$(3G;&+G&Z=3iscx*7<@J1QY@@&qAAHp(+_w4v@6h@FJLO!WjsG-n zZ{_x7f3Emdh=MqoyUC|>Q%1@Rc@q#jg4-L|!lDK;A8g!5;r8<=I}mhF4>1Jz4-k-NayOU-|AI;gM~5upRjpz8f|f1>|8ubw3FB= z$0Gzy|7Qa1D_`KCHiE~Njh#0T#cqz7%U%`?DqO_HHl5k)=7#;AN|0fS&LLLcCh7ls zA~&FcyG;kvDqztUAhG|K>35te#Sbc1P5(B(JhTBXJ79Stgj9H7NVo*0+m))vqpaF` zz|E*7n9*l=ao|+!@bKnj^y%;Ja;9-W^_NZHHBk=l=n(C#PVk%B{;%LbwF}wNCaJnX z9hm7wzu>SOa0$PM@)cSGQ42#mZcIHfPSw5SKD~W|YP^Q`;u&^;RZ z*B2B+(V#r-?FGmy$_{^7&8?` z*@abC2Cf}gZTXmJGtF`hnt~`F59Q)9=c=2ZQe%5sp6a~R0nCy55GWZ9nCqH^6!b$^ z1vbeHjb^I0Aw6J^mMQvl17^jTmo}e*rz`vo>kx-3*!HBpsO`I1eP|zchd7L6egK`? zXoh#_M;u^na`eFb$#2>=X}pGM5LH{Ux&tggE(h&qG)CXzP%H6|M<7wrW&p}-RZo9v z?#8_b#FTnjYVFPU$${bmLioc~um< zhKfr1t}D3F9c+QhK~`K3$mw>_!kdsdV>sBzL=0Z-oT#Mv0J-%N2j_7g($cL!w%T~v@MSGA*Q-#q7iYe_RK6#8AY zqVYV^7Lc%qqTLN-qMIea=6ieb!Gsk6Z#ay$?+54fh!~ia4Kjc0;Hud3*^WU${x9L_ zi0~Algxyn?KM;n$P>EPawCt98GJ@>yxp|q=>O$_@{BB7SkCC}X>C~l^6(@efEnXe} zGB&T!23IB2xOq>RYFJGBN(PU2*5&1MxO zb5&3Jos1y#il1bYY1?#5{G@3_Q%FFx;iI59A4(Ct2tXG7J5xKp!eGc)LTA@cH$oQ{bJxfUQK@Fc%09(?qd%*(9omq9m|k5(wgLvlMPe zRpjmQK{Dmi&_0Qlf5i4!Kwmf5iSqTU=b&GGfAPJo(m?L7tgzQ{|AKhn!i*j^t-vURPWU{tq2+Z{xl;Fu`uR|iamYt0AI1GO~<@AV+6GRSXOWjxUj zR_TDeNOv*rhZGu_GG)+CIvN7K%ik*Yardaplme2b`njc{;jE$6ifsh?AUERo&1beI zqZO+2)L`^h$bLGG@0OzN)8GF^K6-9PYdjgP;(j+-XBI%o^T$A8e++QXv>S0 zUx3@nXIuiZw~-N7NTBOVLQ2Oi`vgeh!F(F9f|%2y=NwKsy;VWeeWaA=K8(%F!>on* zb0zQbTv5k$?*G@-TgOEeb$#D6fI|z2bc52}-KCU>!T{1Gt#nI=v~)L!ba!``ba!|6 zd&c{^pXa$={sd-!&e>c<5$40&$#0Kfk5Y1r11@g~ zw{vv|uYU|N!@0NPcz!#bX6q}DN=D|^&}5fOWOqP7El_BuMVi8iFrfmg&gyjrSvL$- z#|#Bnoct*$Ol;GP9to?rVqjB(T9R}7&AHK1lYH2c>?IXZ;G@CD7fjnxWS1tx&rqbWh>1Y{f8MX;oa<;uk9S)S-G<(*!MPLMquTMtbFj57^w*yl1w2dIU*+5 z5rG`e%rgtKnm%5`;nn>?22RmzI z!JiagaK{L3$b;gNeWkEniQw!gxjV@!+&%L!5f8yfUcB38*e9+RY%(UJbZR_piQud1vX-1Hi;(lIE+j9;Q+tA>qah z_=_>)cV8cOn#p`ah(#T-;diqrshQ#5plNVd?^^qJ4G|XB9XE9|2ui_sBeao2jXQqo zVr0H7)^o;`)8iX`^Am^dmemc42#K6#`P;S3rv5(IUW{Ekb_<_CI(!G4Ep-Neyg0QJ{rSB$Hi&yhQ#ztAlq8tLgvY_Hf z6w$E1ZbJxBC|}^a4sgK^eoRi_VR49;{#69i>vKjUD&^`?#1#@~&(u8a4hJG!FTzw8 zjscfXpM9~pzPe>>CEcqAGE=M}1q)i;=5s{>HS?k-RfyfN8guIwRJWXfS54SGAHy{i zN0k)(W-`fL>WG%3RbN<__!&GRdI!`llCF`FIuJa-O6k}{joNdso$V84291a@({Ye` zUc!%xOM+a^{cjN(Sca3b5F)tYcUtLedS<|1FR`Ws^qaHZJ#}wPpkfiOTZiyyjfU0- z6t4*$-z^KGewgPFy(We;_-Q37a5so|oB zjqYcS0CJY-v(mHGe@Xe(~P2w8W`(5-%a!2^4%X31S#Ms6)gnjUuW@a z27xwatb6+2jI$`4kpJ!Q`-?qLh<+DtTlRS`fa%vE`?75CP268?U2IX4Yqp*ZBUA0N zAiR|=3%X#cYz&b3wp>gt&0)Oko>8}n|7#9i>}Z>^&3LBnVe8mHBi0C|xbLYv3W`c{{$LBxF?DaZy5&aZs(A53P^QYDo z%D3ZW=_JxkUPUCN)@f)QFZJ+rG1Tk#^OoQ+Qu&LU5&_WVy31psLUL@!N2e@Is&gqM zlF3Viboglma_;Gk5o9FmDA7E=-foRTHu9l-l*JvnmVKE!9r8<|);UF%IgMj;2Ig+$ z)=&_(Kb1l7`WKnHWR~@=20nXf8?(lwngc4(pCP}kuLa;ay)U{|eiGo_G2`=JINo1< zs`;nrdw{d**!BIQ8GOffI%0GAlFIS-bt5SyjEb?}^HMM7i-*)RHd~raTixgSnigwN zuQJjBAyIm#suWb!0D*CR)^C`qM^cj>b&D9a6O&aRYq=-zq??IG!_3ZVk+AY)pWZY0)rQ_HNH`&EEY0ze9%cludZ;8b8Z;916h= zg7>yBn?;^c!?>)G%(uX9Y}xlORiE8#fIX%q&el_7ojbatX=C!-33FZ@NF4mc1Pxo= z0oWTZ0u}s~7jDM9u%;A^JfC@Q#npjT6|&zlEm9Gwy&j`z`B|iRTf+yzzCVs;u^=TL zZ%|2;CPh;Sd6kwz)Axh^C_u+JsN)`!f<}2PB9kSqx8l98WJRNnl3n@?x_I@xtuQ~< zStvJQYBzf&7?p*245A|a%WES$!fyg$h^{niNt&X}@85Zcv<$qx=7eQY3hII${_Oiz zr(~z3SudsxW?48gX?b^n%{qTE}9?dxBe?u zV-&p}3?T$mj4oNycNaBp4NY?_RNHZNu|dj=kvDwZ2=`PFbWcRp=V(xUtu37BeJZPW zh=Nu$dN14t={NFq5V+nQFADldoEAgG(&HDn34g_uW`pVJDvi5tdCjkD6*a7;5;$mN zY7mOw96TYdCg)51VpRZCg@(9_&l#(SJPKh93&=4^`mlM6-r@Y@yuEE?iNUejIy1Wz zyc)(G^Dh&OO@Pu3KEK>;B`x!@@Kq~A#9mGd#Lb}J@`RR&E`d5OPhz_hcT05Fhjg}b zJ+8A($=&(~hzS|%jQGr27 z6PW5+_{6Qr(E6yLx03uE7>8eD5qUuM``oC&B@!Q0vzJlq(ZBq%gB-LEKcNbTA9$en-(Qn4N z{e~fL6X`AcNHm`Ss5S__)`U{B)wM2wT67mZuGK~En3kF7R$rTn6v6K=c=VAwHeP^N z+vh-L`a`oCc-!Do_SXG1=Lh@?@Wm_Yxrq~tmsOqA2wl0cn1h&*gm}ABRPJZpY)dDs zCoeJmo6=d)21X<_O4f(R;~ydwQ{w8qJ}oZ9t+ojGG@c(qOfA;>5QR?D?r4c<@tVb> zgJ1Og4$y;7o>ZAZrz&b}5yVnG-!S}Y*$MZz%SXS#h!pdVlBKkKbJD1B-$-z~Zlv!p zo6OVW{B=#l zJHXkf&&o1|B3gB^=JXR~Dhib)|B;^j{@S|mCiYA7w+-a^p`(h~UUEZ>2yK{VF8vu` ziwNyB0ZWBJy;z&hZUV*RKn- zG#m+!>q_!{xfq>sK6&r%vNDvOqEgZsjrqed2`{dqfm%b#sbRAnNfJNX&3Nt@mhSOg zG7<&z$MoA_RP!U(yYP9*h!0myH)?W zdfKm^OgxCl00jeQExJhd#d6kMvSgN9R^dqI-_TM;mN7JCIj9KCGT+er7K816`hCzNBEmKd*;| zEf}sVu;b&Z!o?fxIlj9c@4`p1r0BnTBLd-V=itR8o$+KV6T=~|x!8pswBSitt#1Q; z2Q!sumshOFN$*Km-s0Tq+lUJKc1|o&7RWv6p*+$oTM1b%yf)J?eGl7Ozy9laE4@X0 zyIC|-{*3g7p~@!h7?3QeluqWn16t%VVB#^aw!AlxhGn=w7khfB5k^1+2JU@G3KBR1 z{!NeL>Cz36&mV=eas7<_49?-x>$~0jY`G@4d}7z(n`YjwR@Zi&buM1Q%YZP@+Ki*~ zn9%1?Y>Gx|s7u+!xU`uB>s_ePZy%dA#~&hzK%dqURj1KuCCZ0?-viib4KHV_wj82` zbxgoZ3X?*AO5cCowrJ9@305fxK#{Ko4RgF&2f9{VP15JkYpn|#%I8ur0^v`Jx1lA9 zU1c-atN*+hbGogLO19Bzh|c%FAI!wI3v`)e3$Y-@(<0m`lOiJBZ>zbYDXR(pBCdf(W1>W z!O%#*d~BinN)Jadbnx@zmlqb(s;lJO0X>ihho0EwpOD;O$U*?d^U>-aa7N#E-TipI zETWaT^j)B5DBVC0bfJtbZ&mu7rFyMge9ZAN`IaM9c3@}scdFnWtkz%+jZw~Rrn8Tp zSKrg-WGy6gdOA;CRyNMJ+Qaa)sq|XXgJf>~IdLKg+I_cOfZQd@spYr%KPU7^D|q!3>zI`%R`s8G%?K|pa~Gi-mi zz2dBqa$~EccKI*m=zb%F>bAYOdzra70HY=>ya2H7v6U?rmi^(c}nu(o>7KOOQx1a(P6Ty7bD&3hdP-S;MP zDu{ED9{qerh$3LQ_78fqbQw^V|ZkY>ZG5zY=;@5oeEok~IxP>Yx1%$g+mLKP$L*8~5df&fs_ zvUN4d$upQ}gTWfgl`QG)&v@r4JG)4wy=%`$dto!O0pf?}2b3Gbvp<=i_0wVa3k%K$ z!7Ab<8uV}F8!FejSpX@bIQwufN?VQ%5c6h$%NE-waRJIg2K>&9x%{mUhHyOCz%cyP zp7$G3{J#W(BlVus}&>@5X?MP5?&dwjgsdKv@Qe*4HwFd?Q@cRmgA{i~(K&ul$Es1Qem z28{vkLP8eS;?wDQG@CEjh_gwa8I+~g;C6Iq)1v?0J7Kp{xOnl9FVsjthfj)H3I5Kb zaI^08>U^WB_)Fc_^d^X>!s+%A0G1$%#kaex1KM>9U@KR?tp%Z-23fOKtDipTZEH;@ zek_GBbj<_w9-#OF{zUE8^71!A*Gow%7sJVX6&gULmIE_}{-uiimtfl!mtvAI@#uiB zE?o@T%9eosz*bP5&w~uGJy%RlhSdstmNYYdiwLHjLozpXedmWG0SVfWd&5ZEJOkIbemas2!X=vmjRYo3W8H(8@ZpR*PQY` z#VRl@V8L>Z1^cBfFY+O=m&CZ{%$eH7qXbB-}9|{Hq$c1I3UeisN?asjI0qG+O z&RXMWT-lgn^loka(L9Mr;PS<8VddHPr`zrA@0&rhSMpV;^B=cGvQLlObd(ed+QTgU zup!FZeasxmO72HXyPtOWx8zq1FIh_zkL&RA%6MXO9!WT)G?|~A0fpm`zo*#M3Ngrx z5nh}Gl7Yv@stM*_CNeDY7p1A1zEuEMb;nG+&uV{jCcc=6>oaoa*sm32sHAa1uy;yHt_rn zbOu%P13pI_tXC_8R8}p=SSD#aJ&U_N z`Z-H5agPpt!*%(7>7cNazJMQo-z3FeHD?$oPhMM)n_H!0Si&XxguWL3YON%&iZ+@N z&_ye;Soi@|YL+6W)!juxXKx?y1N_5(5g}1vUedsQ9mn^negQDdbuV_8oP#1RD63`1 zH-n73D98Y!dY#C&lH%agyJbLYX4_zfvB6U>aMnvz05eR#{vOgr&=<+Su_EzDfqT&~ zY=5udoTZk0TC2BkeTYd_ntSeRmKo4zU!baKS;e;%#E0_r95LV>H1>3&D1JS}vA$TK z@X}_5WQ1b1QR8v#HB0r3KG4JqwW3be%g%gCOi&HIVCaE$S?fA{O@0R0L(Bq(m**)a z2mOg}3McE1epwyWxwXH3vetmJ3qfWBN5B{k*0`^zcw)Er_4qy6;0Jmi zsLObsWqBmCWb0Y{J}k!bkgi*&W881#n$bWk(YAPpJKXsrRgDbt@jZ>PRcJO}uHkpD zEmhhH#x8wnm_?X=m*Qy}^&zX~`1oeHbBY%iKNgb_yJJz&5%BHoKIjY5y930(AB7sS zBhheTujw+u!$q##2)v-`S*|21z*n4Re^yI=PQMKUaN9+D^+0kh7y&QpwuYV7+e&ic zI^wz%b?lh_Lh}(OFv*j%)1KkkuA?RgHIl(x2y>Gxei>wtAd-u`U0mOOLykJg|0IG< zZrM1JMFN_Kr7mI_(rP>kZyara1;7zSVj=P&HwEUJ3(SP;XP5_)Rmtef^ebS2FknF; zFsf+v&i1DR{01n^W|nX|?$kRKL*(IPp_@vDc1UD`ja?tPKu;h=qB1m8U@eg9&*hY6 z$?n_TkGV179v4}4X*(iz0LkWF4Q3--z~ZrrI;r2cOR?uUi^u-PL&Oel1IE}X9tOPU z_W&Zsx(O`3`0qMJSgJyst*i=2!#1jhhbwz|EwEkF1v z@H1LZSq}`_a^7$FSgS2;t0;U`7QX3{FQXM9fardZo*mHjC$9M-$GI`#K9t23k(f-r z^gLt{CMyzA#``dh=vm&ZY~7=&aOwdxMwlS>&CLF2c|3baw^$V`zK03L(v%#FGc3Y> zuZP;_3t)+g=PW&4)tHRBuKM9^3A=nGgby7KbCvq*iDs6J;!Ya&qQ?dB*Bv&AxA@33C$m7B==UhsQVe`#<~si3dvjBEbi z5&)xT=p_XAiCj>Ygwf_FTdrqX1R^72?z}VD%5$y;-~>5OB7XyOfct zbo*NSp~TMvYGIC>@554fTG9L9#=|&KCBX<`in-?jd zjaz{FAlz{!i?kndfxz2=Z}WOD#O86%E@Ls7NK{)E6@;4oEHrtU7u2)?nsK5d8tm$8 zJ1wm-2;-yPmv}5B*F7b3-x%9#4`v?p-0Lu?V z2~nsfG@lckzSfny=cPlU)0HR7Z(!54{e7myw;7Fwe+{U}XYa}r^HWUnBFKkhpWcA7 znjv>^=@ZZ4QQE@ENH0T5T0)uha#FuAbpAeikkaILS93HtAX>hWURo(&)MHX5x3B`L zx51BSAb!x$yEf6D#{O#f378m)`X2Ogw(kO`o1mibIh5p_ji!_Ln}}`(*kOZg8?wXY zzbnqyUb(-ybraWkbV zYploZI9=r~-R!Qwfvvw+SO|xsfbvS1HNn z0s;h}1k)8dseUKr=glciqUv65@1L?%JFKHR#LkA#^^gx!nB=v_Op%Heh>h*zg31+e zJR(GA9R_G3hogADUYL))tqPiGchv!sm)ys8e`BqmMtJ5Kea{B@A1te`l>h{qF;B(b z9i!HapKP91(=mAutm9!G(2b#vu-WRb7*h9$1`Ii+p|`J4eCiuSZ;UQr1aupbE|1Ay z=hYZOq@QEDpC7fyY3^70Tf>D834MFbl|Q>LH?Ddxuor0tS{@zB4d_1+;TC`tUs zZxBqkl#f#_5Vpw}qBB|Ak5z7v^7EZIVgeyb#@Er5rj3>23=!zgn55H@4)ZjBB!riG z--%)R`9vsk)0A8v2eRl>_-?>F913KJoFcH;*(%!c{+1=RO1W$CD?UE=tz%0$M0{>% zcJ$nP4hS;R5u-QlQ_qhlnTZ$9uj{{SIk#VuJi>Yt z@t^AYrAnQ9gTS$1im_>Q;|uHUDmCp?yM2Vg1N?8TAG8j_SI&f~PDp-0@mtR}I-rZj z+B3)*N0co>7k+#cw_4Gbm~S__JxhC12dq6aFrensO_vAvz(%Zckp;K9UTO8Wn-3~) z`E|BkL#;{lJ}G#J?p~BB(>YYM7`RDaN zFvN5mQKg@OXUR!dXZ_-F2_; znZ||mZ=(-VD7XAicC0qianHdEPGbnH!-iXeH=)PzHhcdKaasIp1jwuerxR%dc^1;I z8l9!9lA5ZC{#WqK#<*j6jv6r%F}Cl0LzQ(hWxQlpPw^qe&YmSt z@MQaxJL1D}8RhOV{jc{k1ELb@2L))C6jsId-bal#e>?V{5dA8eR~qdE``ZQ30wc5$ zKFAAV)Vb{$BX&*|qPR`+1&f!(c+hI5JIFT(gz$@!en58HIlee76^<;yn z6*&uw-hfr?!az^q3OoqlTJ+v_7UovW%5q6Kun^$f`O*iEbG`VqV~mQ z5;b^+3?;1}H=`{W+1pLqsaY3^&m4;^cZodgdx&1ZV+&)43zWQOKAu*@*p+e_9r<04 z#qUk)40643r1X(IZFTwTihrN%*5Aj3&c0G_JO2WCwGTVjD}rJ;1?kdl{+u@)pB&Wx zy5E~u{%0GqzTb(`tC!h9(02|_`OzQp9wbSg#QfT8u zgLSLej+y^%tw;0E;ThJZ{e9oD3r%@3RZ#D_p{o+TzEZYY^PNEcB+JZ;)eU88*_u(L zC0+MlTAg}SmuFOA2h#%*gk;5Skfwul$_oiiKTXWrC2a&(+_5y5-pD69PT9pMZ&nAJ z-Nt8{dp(T0#K8_>oj+o~pe~l{rbpK%HANnJqh1UAJx_Ntc~3_wmZR;(Cm&-C;!>A& zXI4CU5%DVMdYcXG^2{#F$F(QZ+C7c*_{Z}-5u`K#M-zJ&!)2rjF041LGo1`e zB9}mn9La(ije?-=N{`+)=gdx0OA9r=ue^j4O zbD2K42k*B0kxV~)BZ2fe>HYaK4n|n#JA?ORW3_(-lLgoGHL*UC8NO;0`|UhOBSi|O z=yIniR0Nt1uw*v8kd(0Sm>GM*h#URpbj_ugRKKqj_t9A0QT@1$Tn(;q`)=;F_(m+C z?-@6th5_Z#8rXA5r(+Tu1~ZQc620`q7Fxt*|{e8r+|{xRJ_p%60(i}bQ~CUnA?d= zarQw;Y)TC4aR0qU@ev-j?f^aaL5-8fselIQZW(FFgz+qgmh(b4CD+1=fzUw@rLuwZ z%lSOnJt%2enP9R3R(+Z5AT-;cuxO{-4d-{7DN?>NH+=0aNJr4qU8=>EFAY%^Rp_eL zEn9~MSmUueEg5o=1*)+Q<0{VIvdJ2QH$u5Q%^aBEX3k1YBdd(z9dt3A%~`poL@f)! z>K)#STpjFFPe%rRmmyWAV*4dHq-;~78+-~3;a2-pb06W;bAO=UbW^4kS?(Q>ZC-_+ z%9ap*3x#c6Wv<)bq#l{t-;?~F&2?bu$Pq8^CiJZ;H>cR;Jr

pRGF2{ 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 F{{TZKKehk> diff --git a/.gitbook/assets/adr003-cli-compononents-vdr (1).png b/.gitbook/assets/adr003-cli-compononents-vdr (1).png deleted file mode 100644 index 9bf401d1f2c77efbf362e78dbb8fdfe3d20e8b7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100800 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�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�Suls>{JXmQRY~o)J9qRo zbx2{_qm@;u)027?Qk|8`s}ABAAG_Puq#T}UvhFX(^Xp6Uv_~{bHe^R*J5sS&zV9pR zS-*Ah*z~Q*w%o(_aLZXYajIk0eXF7pXEj)>l~qA{cFKFlmQuYt(r22|=3awZFh?}e z0)dtObs-rP=p$@>-Q4uWQg5(qM;h)Ves!g%X(LdPRhxJF3G-+16=P4)GQMrY7{Ta> zxn} z$#tkdEQ|9U^yu0c+lG~h-6!MJQyGgpADh&IcMrk3pT@A4Gu@q3 zXszT+toV}eRfUmQTiP#Mc>d~-W7PZRvDyzUa;1E}2~p8G?OI+}%r^ct1;(1&w?cOF z$Unp?p|Ns?qT5^|GY*T!4NB?easL313>vD|`{Ugj?a$wco>G?Go)hxzXwTh2)Kk<> z=#p!Fhhy@m?zwCeR&1S6ZDf=2?e+Bfnn;`NP<+ZVzupu_aL{gy?q>cL1a2Q*$Jl;! zYE*Pr9Xu&;-!JawQJ<*w9<)PwKAyW~^BG&HDf17g>M4;-QPww8<>ZlqHv{XR>C+uK ztG4qW$Pf^jxv&XtU*zZ9eXDrOUxgXMrbhVW4w{?YwKYujI zZls7W+CKMBGqcl+(3w+{)PnC$k|Vo0&rBMH8bm$M;aW(@6@TTJlkS!{5A^l?DX$qE zH_N-ABLvow*w2*^!F0{??QhDaM%?(w`WkQ9+iAg5k6h4%l>5q~*?+BENaZGLcE|q! zUZfGQ$IQQpsxxYf3vCU%9kEudZdUnzO}o7-qBlrUl5WI@cpt#t!kSkfHr!K-?fcmS z+MGxoOMW!rQ$fy}A!}B3G*Z(+*FaOg!{NO72GjZ9mAE8w(Y%tN^0)SS@OmxF>PG+{A+Gy&~BLy)?rE^=jLT! zpys3t^JMNHN^+1-%kzF5)kda?v)S55~=kxLQa;pbYq^cUU9G#WJ5)>=-}+PMVw2_2 zLhRg|K^P^r^S6Td`_$z|*|!EY zUZ=azZoIVG6@vBz^sJ>jvuMIF__qlfJ6M2G@~

v*jk}woW}NW@eLfH$h0ThEUw? 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%0APJI%GwX6?);tlHj_2N?32oZ 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%0DLouc8G66OR%H1rt#)lF8J081|& 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

Kvr6Owqqj68u9kj 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%0DTgD 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∈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
6(Ic@*!(xjg`7Nn;#L2V>sq4Lk
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

#MMdo1EH@R4ct@fTv!J_R>@S8Dlv(#4%JSV#xzG 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�tg6p@} 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%0A(YS}p9}vt?HL8%x0ili>u;FOPOevy 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�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�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 z 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�M%oy5eTOb-CYSPZz4gQBqYo(;A-DbTK0b$a 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%0A5MC>*3L>%E#jpd&MDW|T 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

{MK6a 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 z zBSa?guTu=i&H6!*ao?G>n&rziNxY}(6g1@Kgswh}wyA6z$w>Q4JN+yt9Kvx(XVA2u z|IM5KWumi6U*G3~O@}CjvKdkPmxc*(krWoUY3|wIh3+BUKD^o)ax%e4c!n&v8^LKq zL@+;`M&O`fg=Fyj`wyG%5!@mqWmJHfy$au6NoO+$q@Tl~qs(>`Eh$yYmpxkaPuGZBp@8BJ~Mj=TbM{W>F!d{T;2f zud?lwA+F(7NV8fF;;#-0p9-dHR&qg+yg<0wnPcyDmda(*td9ken6Iu`x4IVT{M&6s zeavy{EA5USAs@>_%#*}?o--jp?iMKneON35L}hQ+o?c5O)q|3F7b(wc{{a;aF6_9g zv&c9C@fpFwg8E{>pMA5tUp3N$KE&EC3Gw-3kn#MqeKCk!Mqxskv=Cml?@>g{?-`%D z*(iI`q2Ei&MNmMm?wtMuL6RBGE^vDGadZ<>_8&5npB5AFVM8HlDwRqt%18$yoGOP- zsE;o)-QV9Cc!0a~R+2&oLOJOmUzrop3T&wpcGH~^VfImQiuL>mXAi7A`^9jHQSS?H z?J2UVYR+hq7Ezj~e>y9jb7fF`ICMM2ZoQ583GFS7@b;g~CFziN^>UOVzMRtXiG~#TisMvNR(0ht{%gla2 zw#s*Td8wxI4;(pDBYtS9lgJ1W>!+w6K|mzl1fq-Dm-c3D-tdi!t`V1N7P#$yPf>r| z<1=&GVG=Wbvl(`y$CJ&l@xIIE#oyRES4HAZQ|a&|f^bjE<=_--Om^_A6bd2F`tjK& z(Qv(5JOWZQ*s%k*%8W~>Cu%P^1EP1wE7C_vDKmeOto_{8zwbBx6nt_BTa+hfmLW-% zne&O-JSz>L-hN;*L%fE%mz6>gKzr@SKiT2_MYk}yvJ*IluNR%{dDw!?bip*4ZHHZ# zhs~EnBc`K21btJ{cJEl7XmNYK25)oU-tzv!FazA-y_Pm6UUMCId@R%2hxi7PwLYub zo)5@XaoB9Ds26Q^jr$D*8Cxs<0!%R5Txk!4CiBNn&vH~Y;t3BM!0qBLdbY$Bwg*Sv z7Y93H!y?g|EiQpN(lq|LCB$_85MSNwcxY0F>w6y~o@XM|^wHbL=^_WXzVB>==uXt8Lrd`bPEGbp3u zcMUNOKVxUd&9Xi%?zK0RGjp;T?X$!zc+FV7a6?4TDKjg|8%xR+^l+NeZ~Zp;+wICA z+0!I_(ENztSMlN1m40vIxtVAo<;9bBL$%P%lJ;Xpr8i5MWCzHX1N8*g7KJ z2(e)DkL9SGQM{+(CyDPHgZ$l0#(L#m%Czq?5llh)Vh{=t%C~^BC+0r6?vyujsgI~u zy{68DpGhA=tG-z=?C`tE2a=6P(+E#*4yXwhC-cSiZPTLatT76_P>@zuDbSM>Fkt!d zi($NpG5*Je4`l{{l%mrVKfB>AZ{hCxzj2JW{-rsv&IPdBnz3uQQY3nE_j>eC zeb(R{P@?$-!2vG4Tlx^svJsBQ5-b1$dHpvxb#v~D{;8|z+_d-3&x!tkajyd@O8t`%w2&{ig+2j zBdD&C5mAxXUu0;3WAql!_5R~Ki*K1V_3=*c4S<{ye?o?wOIuS#g35d*F8nnf4h2W&cN!h?CmP( z7D*j-RTaHYh$-g1>g-MDHuRaJX&D?@t}Ux;*WU+;esb+W4|;~vxYJSd1W47ylHsW8 zvuAcY-+kWuy|k3&@HRtZ_jXYZjjfEQ<93aF>40+?9|MG^d`^H0<$QE4hneZ_pK{L{ zEjOfnzCCaypQH|Fz4PXKuv(6VpkOkPO3Lyf9&7b&G~tv$XKe(4qeJkb=}`ZY*bjW!y&KN!P)+HmM23WWnWa`gZBM*Pt{o-qxEOTZh=_hX&8P4zlYBGD6 zQ&SHT>a+|0mZd$5`1--iCRMi}=F;+u?|Xj_uOCr4V*x6-MfRL1OON9{Z%dM-Is+ZI zbesAb8lMrmU4pSja6SsZwKh}WW2p}fzAVeGBN`7`IrhB6ciznH1T!*4 zo9ejO$VKE1NL7DJ-q*=l`q`|@_JhQbDIqoPU_8alJV*D7vz1Lk^n8=$h5|2dxAAK; zVf%Zf&}1@sVSt}g_Cd){owlexj#t|W95B%ak zmVmTy51^nah~^)4$80O#;FR646d(SrNI(6JXL$>HKDh=2Zn5xDkMz~&l zeY(m6$Sg*V59wt*@4#S6{5?K{wu9h$UA)TdT@QuW{Cg?0c+d9e2hS#ps(Moiv}=#O zlt1dR&bek=JujRt5PU1|6!#s~wB1c|tAW=k@8taagO^{p$~JgG(u5=-P;C(Qvw=_? z?0Fj-G0`H9U-u-A>O$5{!OXKp%s3t4w1LG;ah^VCyd1A!a?Cx}^Dk4|+>+gnao>y@$$HeZ(T=Ku zuGdoY$ZI-!ji*uFQM8Tsj&3f;Zb(%s$L}^@c=IP()|e!2ZC$SIS~7kd9ot>2Kfz+Y z85xQVO}q+?w`}>2YNS$QhW@49_n`+Pj^V|I5mH^NdoT@ zu($@0q~E$s-&}8YUs}H5AP$zI?%Vf8wsblyCC!4c-@0xnC=@!yy|PM|y28*2!TDuA z8MIE{_x9LKk;quOFXg-cQuC@RqFhLNH2jcDAVB)W5ccgl%1vZj2pT21Cz2DBUcgo%WE)D>G% z0SM>$mAL55wx!n~cJJzBfW~Nm6})@*G>$?1Lu}`Eph>M#M~m2tnrL8?ZmiH6$(s!B z?Yh3Gl+Sw3TK?6*OzZ)1=7-4Zq{-!}^06ssuc^sY_y#-{ET6-f;#fT*8{wf0niLQD zo>ccJ{*N!xKu51UicEiZtberocy<17Mb+Pm>*H)|(VnaEpf5IX)(1Axex=1);ltSD zvSus`nf%`1JONkp{Vtm6&x|*mEn3&|{QwS;J7D_{UG$gm`(6<$e(-90QXFaJZXHHQ z7j{nDBo^Y~$qs-^^zubNstD0bKMFjzNt`hvch*|s=ep`po2Py*z*THa*|FPQ6S_;K$6rLF%jyKd=uT zp@g712l0d}`6JR7m4-|r0KFz3Qu?i#0DY!ZG$jBAW+U$}u9~|>(SRpXM(G1xE*XYQ zZCy!?R`}0>@8CB({qz!elMcIT0n3-_b`&ut&W=p{SWbHrQ5H|T2!8w%d&;A}&ST9-suoW&n54?91VLo0nE_n&<6UnFNiE3s&Ul?vo>~cg^)c(MO4!;WTQ*&=MKA zI1t9r_b2A`w-&qROSpy6Ut8~S+gI3{>lL1xEvc|`Pgp@Z^f;7ukI1=u_EXtcFiEch z9(!ETSW~GZMlK>aW7e#jO$^#S@PC8lrv820F*aDk@R-bFqVM1Z>rB%QWQ94iSv!5& z$bpaAGY7UKZi1B8kwTYDUtb<(w&s0x&mF+y8zzKxUSe8Ri@r`!)E_?A-vHTlJyi!; z*I=g3VPj|#f%k-+&%PtQ-N>%hee(-Wx#hW|&0>$=7$Yr=GJP+cb4f)Aa0s&TBO*~+}p;&|8z zDb?VX{~=tQk7h3=ZdO?L7N8P%`X!!Uhs2)lk#Qu9&&D2G60g>kke|&?a+~_os!)rI zcV!VLDs%~8FqmMuWm(@kWnl5=?2>jaX%TCDr2MZ})mvAgud#7Fe1vAJ{dV0utTkTbywsJhatx6YD=Bz`N)NpjVXN?!fHhnbkROG%R ztiI&#NjL)L(g&~7xGpA^Ha;nZ^n&!JRH$TM6Z~(|N*ReN%LusM0O_$}!j<9XsA7U- zb_z@kW;Q!@(~)T@R$Uz$65`w@Y)|}RZAb1IBDV~_Au(k0W>lT^AC~oP4!Lbw>9Wur zs?t=pm(o41nDd?4tzho*uiKUnR$c>j=(f9QGrRfuBE`PZ;xLg5JwQ^h3G`0H*W1dp zkFu3-wo{t#n-qx(t`3^s{=vu=NrQm4$i9oBZE?wyW(qqabRn0__o_%0yC{ycEjQNJ z&*vxsJ>Z3Qs*3|(*n^lhYQEuUe{Tug!e-&c*ZY8|xya$eA z$kiId!fBjPx9sr+P|1-8s{G`+*>_oL+J^1a!oF7A)n;nchT!<6U4Brn&hvc{u177n zHAA0C3;*U{H+SmzSzk3&G-*a~Ri3;{zMu$Tz*b=+NybyKu8{U@pVFjC0*`Ap+c|8M zRb21gf(A2ut)>Fdn27sHnP3{ERX_+~e#VZl;D5-V3LNx9ITgi6COg1w`f1?jJq6(R zNXRhN$qb+wt`5Vt;u+ci;; zkcedd-b(?Z+l?3_9~ie=vw2p$*1k^~%$p^%a!vHS<+2v^7{QqUQq^>*)$FHL=TQx= zli4^v_F4M=_)h@8Xt>wg=0soswzU-i->BJ6K7PxjcqAaiY)+Fg(6@fLV)k1wck{=l zdutQ;sP39g?N{-hH0tJz;YLN(W27co6o=IU2!OZAr{Dojs&(;_o&D8(fMdh59v znd&}nAVoCcs_$P|?9|pJ@BzKvxA`r9%u)KxiB#NTe`MDtw$WyDyT^>@IMt6Nuj1L6 zG{_~g+p;q;W=hr-E3cQaoX<~2WXnu4c8I%rxrlXK3Tsz(!$4Vqv!n^QqQu#=V~J$w zqLb3fF0*V45MHRV-gd>(UkCgRzz}Li%SHH#`c|H29>YeI0?BT@1cB|Ac+M_$t zNU|J%K-jbXdQV~3_-AK|>;&?jJ7({mTiI*pGi%m-e+2Rax0xEf*V~*9?N3Iemt-1L+CHI9WYo%G z*4cB#i>hi%wE#XU-3BcU4o?)6tuk}!PiN>*&Vc5b(r-uzjQi?Ev8axo_fhRDR3yN? z2`Fd~r|I*^$OErlU40Cwza{u)O}cz;Ml#xT;|H(bt^UZ$kOu|y#6N~v))hg6R|vrM z7nUmM3>N@@{IsBKp*SwVKY52w;n^GcK-o@P*(?2I!k zb%y1|@;#eu7pDzx=%#Qj4>%DUmqTB4lD>bYrTX}F8aZ>t7U3ii`9r_N_w3dIZ4mVaZgwm?( z`IQj&)sWLMbpL0Qs=qaH4vww!@{k^yDR;{UJgT*}a=q*oVI)h8XAsNVRPA8mh*Vka zcD8w=?@TXbAeR&cpCYI@J}>rygq;6=XjbZx(w-~}ARBJ1B3|c?1z1?i6MO4zcjG1G zZ7{T^`=PB6E#KIkgEcc9HFTRIR~UVciu_aVkz%d?zKkYi-yhKK<@-B}*Fx9lYywbq zQlN@(`gD{=T4cd>q&0Ilm;fBBE;wtU+U@3(#Rctt-XAt8`%lk7$8x$nDU?-oTkD>P zZ93T;0yrsoO3BSv!<2^>CMJ9rw~k7ZT9*L36CFj}+3_)p_e9MfZ%iU0 z>BA(7H?MT7Z77c5!xJ02bbnMG#Pi>89No}Ei!5@BHXp0CFdAI1e&$h#a^fzfDTd4J z-Qs^2aInFn(uG5D(vzUi-MsIGsWxpfK9H4m@xta5ID{#(Sy$=fr;E-mt8W2WUE!Y> zF&@&-r3<#fu`BDILYZgWg%x6_T@5c>ccoOq6Gy#Fgsi`r*m;M*&c)x=IHTP5eaBgd zo~X=&PF=?ihx@h{S6=CZzHs{uKF#pqDm=}9qxAA|cN1W` zw@&#~9=jfm75`Fh-tF)hv&m;us0|q3@@^XBW)Pu^{Z+U3a5S5#V%afuk_!R(+-(`K z4Ndx=qx0~m`tkm_?b;)8jjW6-7niOX*+iLTyCUP$rE6tpTw7c-n~a2#y`}-5_<8kl%zRx+&*X!xJ)Lwmlwawl5kLo~tGqOtieoBv#w-s|Ox@t_>z){r)#JL7+wx~Vn zD#H*~{|i9+;?4J-di9lWxOFP!7Z=+3MPWJVn*W#osPYX(xh5H=*c881 z*vE{eoZHu_;*_;&q2l}j!pK~7Rl=gX1@mIg;c8%d08@t_?Yd=3KkX@L)%Q#L_c%UBtZXo02{wJOre=lE5b%yGrL!L(t-eV<$ z>{qXvyRI__uUOOl-4t|WU_MzXL;VL1(AJ~(cGiU5Nl2p#pD9CHlWt^ndZiUTC|>o?8Yz#dTJ*Y-rM*1jmc5J8k28g)AkdW=yS zo;P7`7?R5J#{fNMKgnst5>kzx#xn38@C;OM`GZU=KaIBLiNCzYI^3U*CEz#(h-bAa zuWI-2wD=;D%irjJcC9M&`u8H$0gQg-FzEHA;o=DQDMr@`F?+sUFu;r>@za{nb5KXa zD%8^mn+*QD6eL%zJdD(!e@hoUxVI!@Tof2)<%v(ffaqMoGiTSai^6TYXWh2P)u|8G5ZXf@@ZGF-pYVz|1BnJA~%16FnzyQZgYre)J_V5LP_jf zd)LUVww~fiXR84B8-pN{4T`A{Gd3E&S2rjcw`?pnZnnt|hkV|{-PwIWnn|Ja9&+HE zYGwxb99!LzQi}N`8d(wYdnv$>nOVx}O+Dj#F=)Cpk|FEcl?4S>gveTx4qk!=7Yqh(1B64SSu^UT0*`##*`4^8?wI2j z@`XRhL>AvlH={l!UsP1k-i9AXKFu5~dOX|yb2>Cs$-|S%O91}mDY<^*&)6>VYLXqi z&UPNCA942f&mcHakkr52=j-p&5yAJ%Ybo55=FBrXq-7(ws3TssjdblQ=UxYO>eRu^ zYYyq15)8BiK@qxmfKv}!YGfi86z@J97|7Vo{?)&)Mn?Nzog#@6(D2stlIZrO<4cTJ z+=^vi*Jn!!K^E;5@6IU9P3+O15_-`vx zufO*9y-I+PyJ;kYb-r1GZh`o$k;UuD zEmw-Z&)^rh)HngmgS+|;T)Jgm)>&pB5pK~Ef)u-|C64N4pXY!VBVo4dgRPnr4QU$` zn8N{*8EDX;42opDx{1uJ-dgz&tB({zWaQlBWIDav&ql+96l$2L-$I?28qh0=P zB=LTXsJmCVcvGX6`5B=9)1P?rFM^u+i*cAs;14j#3yUh>+yQZ+?-d~pI)zEPsvLWg z{B4pdDSH3wkI7cYK8Aj+uYmOPTV^@)#Cqj29g#Ln^DHP2OaB3`r?950_^CN6q zm?O}5BhU&{%SlVA+18cY+H}8-nY;|ut+hNoSd}WYQ*}nx_xm}6b@xs_DnBf>RcE){ zX^*(;9ve5n<{*<;(oUaZhyxHC(wHumy*q>DDedC)zm@oH<^T!YX0l$xfSENxsFdf7 zltkl%5rRmNj$@09wjLlGU-$e#Dy-y`Bkqb&zdg4d8U{~{-EfQ3jy`#(7x(8sC!F&6 z2F(fiXE;OGohf545j_ml1VI}bo|&=RU>9^ut#-I z+l*PK0dCarBEJlG8mxQ^-<4OEW9*Vb`EpSMIqARMg*t?{pvYCPz1tC4zG9;l_jx3D zccap9A7^w}A|&Rl*8=C|i3|EgO7dTCEi?=q-mQl+k!>RJyun6s;wzmlr2K*)*1Clw z<%x$l<%PD&?frn@kigJ|U1yVFGYxhDvBSPYIk7$R4uAh#s_d_#wx0InRIJZm?Tx&8 z(4R(bgnLfNHS=^a)rW)3aPS1e@1Ra*4OPi3iqJ*AL@CQ&&bXBaFVMv<`Gp1J%#L?y z#>s12xSls7)i$x_DF;$5pGCoK)S++g)8M#p@MQSIqBIfB*|*8%Dbfs#AC$$>%im)8 z>Bkdzo;}nl_5bC7T|Xoc5}CQMLwX{5N|=&a#dETVKCf+uJkuR*lOD8Aq(x3d?2Yq9 zvS8yG|LOY?(6Jj)EREjc#{WFi1{`|ef8@)&7T!Cl0|#(cy1@XUXOQ!ogKTGfYwa~% zd}(kR#jFI1n`fJf4m%m7vPE?whO9*cku!E%#k;Xxk^X_U?EX{wZKvf)cSX=dLRJci z;sQW~Dz0W~+k@r$D0B%qwFE)8~5HF_5$_RGszIs5nZdkvh- zuI^XE1_?asgPNJEGxLOv=a^eV`#wrWIH){viu4`|r1?{}%0y&>c2mE)*v*D{irTJk z{Xb0ya8S3~U+X=J=Xz1b6c2k@9oV8?fQOX7f-QwJT>F z*rUHIvA%;G;J5wSe}XNAFgjhrk9ElZ`&nU7HO5;0`d&gA%Zq+bO2;YUWpy*Q;*U{H zO3VOU}-o`wd*Eq#?~rk&s#P1z)FMHxAvTYis`JL6t40 zP|Y1$Hr5P&>sDv~@6E7*Uv+5DPDln_pXz_3+4dzz*ed-`fd$OU_mdUCIFIK zMyGkdrPDLCfamS(z4p|p8JEJrzq&l5L>Y~=v^&FG`cE3$z(?Nsod!)6WO^VYLbts z9<>4>>!o`5kpn%cBOJ8$!;JEa={1kZKDNM~=k|dws5@5Ze zH@EB*;_Z|3FY2;pw%{H=0lL9?)I&vPi?CGZ7~iKkwpq?Q=hcC5Kzovgfz6Hda*BLnBD~KW|n@MQvXmg9I+!ZDy6nYTF5{OQ{*3;gSh;Iw!#olOxnc?J}Z z~1i zkKQzI#qqV&$Rw?xdmp`}3{jOsbXS{lH}1aT5jJj?Y@ff_`T6E8%_A~DO12sW7mNX# zOZH%r#H?m6SS+P=}8t26TR3(?>l~l$kH!v1ph>=wwwNn zaII3IP?fst_-Gj1_uyma7L`JYX10qq@6|)dVhh9Vyi(2=zZp^l-gUWgGCf!ORBs;z zH%O?Ih$lmjb2ETj*Jqs(icD{WO4!J8dgXe6=2w71S$Vp;7}()*6Ets4!QbHRW~s0L zceae2g+nnoqzC`h5o8ZggK@iL*O5-)EhDzUF)PXY$r8K zvgf0*C!`m4ec6KB_0i>kbgd%UjnHgp#JcNng9l*mQ}lhTwY1V(`edA)mmrG8u$UA$oIS1snDefZ_y zM;&&8uS?|Ts6~+UY*L~3-v-6KP9{7@aDYre3wS|w7JyPR3N|@vxzgRl{s*)o3ns8>!?MMvaKEDbMJs5sr z*>$Pq`&hq&?;hxRZW+5nP4J;VmB1g*55*z{r0w3%=S7^Bspw+MkQEgX!4KJnOqPf# z-Kngke}D|_d1*0TX19`RRd~-xO=|<0DYBU<1IQ<6Y6lH*Ld!}R!rbo4X1~c!`=`D5 z;A}vu^R5{Q)2NY>+V$8yte+l=r}8OSDF2-$l-_zw?xX&WviGy{gj)6^_4tUMJ5ev>s4aL_w8Cs!tN*!u9&&X={bi$i`5n= zX06xsd!;bR0fhnk+%Z(1}+)cfR1#MLrt6bWpE_K3wwe zc|rg_Nd93lH;8exerBF3%2BJSE@XDdiwkyNYO4fUCBWj;n&muV2`P0u?^MqvD*+u( zY;6bKiVa2lJ`ISHf0${us%vPKnW>#BEEe1J2;U6ifgqM%u?%(Xrc)-Dh1Yco!iVdD zHwfPxPC7MFRsgnG<<$59dFY6^b$x`lpjVt=pJpCjfh0vUex(P{Sf7-WmhP*Y4*xa||Faz4)l2(w7<|95^Zo-QVDlaG zmJ+mgP~#tk0N2to$thnbCj9HD5R%FPaTaj@Sp@Ib+wp?kiOEsuM+pV|T4Kn&HNR7s z_2tf~ z!D2nMFg6DO%cY}?gF=I3bd30MDh1=F?#l6gVnFBge<4wWS|?Bm&;=(^LT`qzu}%uHsH-J@+o6w=o`GTXSlfs0v5#RJ z5#prPTU>b+xtX5@2a3=eSjIkO$}e9vyGMTI_kZt>46WL4lTyZ*PPX-UQlI-2QrOFv4zYpYQ?fSY%Ya8>JIxRC5_1++JBGKUtJjR>s zAy*ft$E~`82OIY>b)1-o_-2%;4A->T#+5(_-%zT2Lf}pD_s7Y#ITs%T^l^=-9Stq7 zw3CG0tf!$Y5$Dswh1DBD-$Ej}<`CtvSP>9|X3a5*Cnz3qH@R}7o$<`<%^=O635mIS zKUCrbk?JvdKd8NsU8jfli=uii+c4UMd6M701!%ru1i$gk5R3;DrwM|3E9?O|D7?9u zEIqmZb{v1y6#z2~>Qy!#e=wu}i0_dM_axsfiE*;`s3+f+X0I-E@I`Q2YUo7F`d(h* z7ieA3#H>XZz_S zL1n1fk0FI?$cVTmg(PMfZ^YhG=!jWCq2Z2wp(yD_64>GLu+E`G&Lf?C?jRqi3fb8viV6wYJFxF$;+&K<10+H9_C5S5+@{S@w}Uwuia@xxVz>lWDud zgE89l>Za?xOab3G8&bXM4Kw48W4C+yREUBJ8_91!JLX%U>tvGJZYq$o?QRfelOfiLSByskm4HPv8vPs%J!G-vw+UJ4B2ZgZ|1Dd z!ZkQ@J%{h2>>;bJ7*(}WX2UmIIf?Z;TRCXumOZw%aBd^9%5IM_5cP@=pI5?Y_K^9H z8{Sxtpi)Q7?(%U6C^Kfg5`F*8C5K}?XTtUTB%nN9M`OW5zL1=bIk2G>M;i%shz+Z0 zkL?(J;?{}Uq4+y5XZWT9Qr!04*+jeOjJsTsazR;Sx^MdQbhQbE_qE!@MhGPG@}m^> zSm`op;_k{y*rzalci5yJ>}y6^h!KQ-e0OKLQz4@-SUB}E;)f!MiT_D{&b&XynD&?B z13ULm749}f>NTsYe}}Sfw(4~@jEE(s_m~1roI;k83E+d2Ha$YV}HihitG?w)z@xw$x_69IPa3P$Fvi zdVJTnqtJ@dF_wyX|DB%W{l~Sb^8Cp6bUutg0(!Z{03$SiDJCEaR;Jh+D#t1ZFIK@b-&AM-k{`P&6dhaCM^HDk`%CH?&$75XU;7{;ox5nf_Zc! zUw~e71!hKS{jiS;nfmB|!waoIBe{v~TH1BBP-lM6+{i(q6hPOs@l#xmtCXhBVXN^4_3t)+W zldI6c(7M}QBv}TPh_Lc9r0b3WvoQ?~Pb>f%{Kb{`8}lSl&-J%I%Z*l^ zNEjlJwy`vC-IL-V8|M6p(Ehy0dDFPfW2>ImXeb0lq-oO4An%#q@b5$>C+ z7qQpI7NPSecPsnADr81L2jqLPNKZprY_IRzn_nP$Y8vb_W(;h9E&y7FZ`f4wqxj@5 z5E*A5)h;lcsP+(mdwZPSS%!JwU4A&FtsTN0G4s`9IOy*$zW0?EnlFPoV^V0}lv-Kc z>{p;lM@U*ENJl@BDD0u36`B3cv*}u(+xCT&uG3uA@EIRdfpgB*42UtuLjjdLxYeu+gAEWre2GwZi=rNqPk@$GrV;x&waAp2r%Qr_Cxs!bExXh$UC^nM#VTz_?_!lJ z(I37pn1l%N4O@`z%^F+X*!cY4S-I8P(nmB^@=)hiPb=W&2KT&V8gNdwPr2GB#D02G`u8j}(P{( zXn589c((c)2w1kNK6Yyx0fIO~1S;#5UM|9ozln0%c0E@}rF_G#{o_oam5M~%d`9c zE}OTZpwV~vYu{g1pLJay%|2Dv<&_%yi+j=2SCLz`Ppty6ks->U_lT#bKmN-&L$p1e zK2sgF2)AyZFN{|A{cyF_eW9mMqo6fAGiEU2n^(s2*pywEDd+S$=gfo8DznjuK53Xa zCl&aUGa(kRwC@tXm9~(4rTjA~sGd+%2Y(RBC~=k7PF1)2;Z^eHj;Ym0Gl*b;!eImh zJ&gM9qFKhx{oz8`vEBDT6Q4_ai3kUMxuloozt^{f`KLQYgkF_Cu}eR7d3nE3F(K2p zX%N2S`8WYys~-hI+${Y*KXc^Xez{6`MKowXX{ACJ5F^B?mdkc}sJ}p}%8_5xlt!MG zAFf_V0YI_-Cf`zM{?mye!W+M)D`@GvsJnv_eI`6(-(O};)jH1)-0MG)3 zNUJ{5DN@K_zFF^`!ox+T^$T(I1L4a01|b*Bec-}&kN(oVp%h+Qo1q`oil`Y~ytx0` z5o5e`WEax4Yb^!wZnL{ODOa`Pd5(HNWo2>@r>deVQ2Pn+$7HZ}=q2hhbzKD14a(Yw zT^$xSNwY2M9+4C-K|sc!YTa5McI{M~s_LwlxMPVAPerVPBKyR{#d857r8F69%5OTw zpfcF&((wA7Cn6JV%u73GI0V!$n0!ocj!7xvdu42SQ=R!im4(DmSFFJP@4Hd9wqbn= zkuT~7yi7B>`N;V5KSwc>$mX1H$6&+`l<9A?7G1h?lMrUlZ=Xu~Ak25y-7!B<#HRqd zd$LcsW0uQqI)Zg4(+C(YcNVB7*QjnV=xqV|zs2R)*{t6R$n_(^9h(O#Y)8CI2t%?6B~SP)=59^r|d+!5A8K{#h5* zgB^X`9Xz%!9S|x>*RSyqov|}Q1K3?@H?w>fDTtnZo)^;+cd@|g4%BwfYMBAOM4YxGp3j_%Dp1)_BgT_^|KB2Y5UqQKf@$`&W|1I2(Y=`y~!dNNc@*x zN;8}|FrRHP`#H6LKmEPfDn0dyiN$Jj57-KYFGJ-qazA--faI!a*}4ps8Uu#V2T{pG zk*4fJg7F%jCeKpl53tpFLnR;a@8)2%^mHE)zTTgD448EtEZHgLX0}$Jqk{E(lzB-f zn#+*x>8RYY1$Xn0m?r7kWJn3;{ijdk2%HE2fnU8sr8Am6IFBwE97PqMyWZ>hhmU z&Tg|L9{%>fWvw?T#<mYWvuF165h3-no|!7x(K**^ z{8Q|!E8wq_U851D$(cZKDwv&=o$y#cJoQun@DyR$2=k>p*BF!O##^h)M}A?AC>;GK z)Aaqa?fX{;W0zO0i+q4#`;V@e+5F2jiI`~3zq|;Lc}k{q^U^MFa=Wx&_YwiEnUSVd z>x@9C6p0BFH;*p>$wcH+w$>|Kq&ZJXFfDmp|mL~!!EU#eaurzy6u!Ww&==2^0?7lS3q8p6tMb;YV5pQ5ENs21NW`E z*C#yu9a1{lVLSLSP#N_8>%)T%@8l)TuC9XO8_ZHt9%JpO!1X&>30ErhQ;aid zKqg+2E~LPG>Jp5VYF^sN^M<@B%VGBN?LPnAG@kIyVy+)h3(@)6K1U>EKg{s({Ttr&K7G31M2iq%Xj^<8|A{M%%&0r|A%pv0Tx!1j}m=$umz z=Nu9sd-)4n-2jyu^UjSa+fnoCF%!)*&=bok`2b>jYp5GM%!iDMbc#cCvW-UHrR> z{HFAp5XiNTruwqX*8>PfWAET#Pq90lSex$!UToL9L7(PMfCr@-J#QkH zA~|}ag&pOjSBs7V0R=YBJk%!*s+1qs0tM0s>cBB9;5s8~_((T7q{+-&)kGXzMERplUzFMw zpMBHNYB|4EW_1HC`4=<|waEI9+aj{BHt{a;kDm=kd2{=AXiLpbOIB7El1C!j7Fp%c zS)!QSoQInAUC223H@4f&$E4f+Bfosvr2S;&s6O;g7ug{*88g>Vog3b}Az6FD53$6= zU%k4?Bn5A*_RgfEHp4pepsTo_@o15J+ov9HvAnu7sNsW{ZT_lY0Qv!f{lU~>KjNET z1qF>BvNfi#17_qAO#?vvFyuw@iGE9+Y-f%?ec)sC&w%cw78w686A&IrY*mq1+yB6# zVdh(C;lC2i3_R|;g^bg0XsjV;^k;qFmeD|V4JZs{G(ye4_I}L_>a>zN;q6nP=CSTf z%Ap*SO>;i&X#L=&%sc2+^d%$3^c9Omv5LOlR`oWzKwXglzRh>kqnYe#`Mk_(2FP== z>E!q#(E0Wqtrx#tYXYpwE<$QYHY*eXz0yNGD~3tFa+N4uraz9 zObwX^@cG3>%|8Lk{7$``Uv8^RDkR2Ujvw{R+^Mov?Eo6A6rTclv0FyvByeyu5a+A@ z>WM?Nih3I1n~w@vT+KI7uaqNKg73F`kZRomf)^N3`>SKBBvb){e3Ix6K7(K`KyRWi zyxVw;%Hal=p%_-!Eh<$#3ql01h$EZ8-#65ZWZjAK)1hLx7x1@1e&nE5n5{x}w9iEJE3AbPV6n62HHve@mf(5(e&KnvbO-33*Nx!11_BR$ zN#g#dWtnO&QG+?Obu_7b9?uFoTj@YTp7@%iGe<47bHyxsw|QD1Nj?4BDH&0_h(*$$ zF7bj(+kUcYHmTa$R?VTyss^m}PlN_!YWM|L`VN-^K#1mopWR_hmj09q)j(t$(vw%O zRXdQERk|BQ7IY`wn8N7f^mODq`(D#COiZYjr1ww1^T_ncHp%K|1?6I6hb;L5Yk@Rm z9gEw2u(U1KA+K4#*h_)0rk=eY-v|MDQl2$+(+US3j=88pLn9NmAeJ@di3TV+l=ujg zfL`f>9v%hFn3J1X_GmWb21WXV!e`&@|R>fEuz|d~dQF5&N+%*RODuhy7k(IabfSxw73(+*NpqT0im@;5Rj9 zkFEoe`lx z74ywp?T7Ik$C_1}A;eM2N9mF4|KZ`^x7Sbs?`H&)VnZSEE60AXd&V2x@aLCQ58xb) z@+8>i8OHuUcdSSfpL}Ovqd;(c^IhER+i(Dvzk~L}$Yg0rtIx623pwjC0*;~A+r)Z^ zhA}C9#4n(yV#u{K=1P$>(@k4^sx0r z8KZol9kSyvOn+$ip}2Z-T|^RxUR%&jg9+(2yPD9nKi^wPs!*5T$k5#VU?##Zr4gZ# zsYkAFMK<7H*%qj6ud&z@wFtF4vWc3xrDH3%&{_Vw1$%Z=RfxLwDm1^?=xqi*of zOa)6Z+BcJ@5YQmbL96!S1!9)bw0yRFTb=W}=7$)sO|1Ll%<^(k$A#q$?0AXmWj3%} zA?%-g;QLv#wKZFVktWA{Wwx8A)4?)PuJ|35kS+FRvs$xh&&t^yl_PT<{v_1X_f!Bk zGzR{!tI`wp8R11~-?U9m9_bbtz3~nqUUl-lHNyQa)g)DRJA{_QdT3!Ihh(*}{qz`f zwNC61XUvOSoi=^TP3!R=B|)CX?ZNj78=y$TMCrEUc0qx&LWypr7(BpR@#{L8>r)f z$c^&-U372xa@UhYc(V2f_DhKBdoPVE-1XiPtA1+Jz(Wu#U{juE+V!|?Va2XkKP*VU zL_vpGG-~LuoRuAsDOztT;c$LO5un)Yu0#aM*(h*UKk~{Fibt=zaAKxb>!T$9pb=s^ z26(O1J-T>s0}~U(HvBGvKf%O=Eajx zZ;y#7M*l$rLc%4`DnWtR&rIQDRrc7r=k<;CYaN8Ne#hTQcwxn^srvjQ4j#GA`HH>kX?A2b>YmTyIdNAl zy-)i)+%RdVB+T8oBDZ-PQ>Rv4rdA=B-@p%YNm*!|8Fe;K=?E$5g3{Ky?$<+|t&#{& zR5u|QHIrstN&41i2`O)}n|w%jTl~f2bfbWvZA?-Aza^ z3P$)M=%46VJBYQosn%3Q#l`;KvtB}8;6*>U1eRf+AimMq^!)LQY_~$N0KLuK#E{&J z3)(aVX&tZ8`Lgf)?awNgtDS5s&F%NK%A7OwJz8wgE-VROu#(2DU$j#rzj*(Z&iuJ3 zNv~PMz5GoUCM91)!}7dz)+|C3dh8t*nA)#bw| zJ3Q0ZENpn=4=W0t`Yk9|#PhDBq|5k2l1MvG7N7FY-Sf*(J~hPZvQELGXn1QA+B|${ zJ{p>jhW7!S_yE{Oee(0|BuJ?N-WRc}S8T$D4f929uqro$PGzB!e5T`;=1!=k7=gkb zI7F@b!)OCEVwk@27fFZ8Gm^(v9L&`%5R5Iw@wNCc)ZxV02?h45vOaN!Y{559Q z6`90=n? zrBkN!1JiI=Zl(ZhaUFJ>%TqNIVR74O3Qo%}YvWh~xmcZj8p2D#s&H&eLM13|H!B*B zrg!mzQzR}>(fIin_m<+xH{#_awV>aifZgN|h-UNuXzj zc>awK9FIA;5m7q!m*qtm#t!+7Z9gKkl|&93iUa*)xKAHRdBpPjK!k`fwx@t&>hVXT z;C-Ky%b06juxLz!hqVGP!9@3+k3S4=vaq!nSnnp>^-zI+eXEmyfKL6$rT z^DzpwQx2v556Kl%?8`C|F-;;E6;z)o*X-`f@)~%*1s7s%m_O$Ous=KS!k?9g%3K{3 zv^QLd(9$dehvMs9t-PPLI2M}a51I|1}2jiMcB@JJ?) zY3mx(9pbD1wKzW;^s-hnwr>$%#Rl!hmX{Oiq5Aq36Pg?fiJh}A`ayF?wOwR2=ZfO> z{6)yjpA|OwPMCdXge(Ou55=t~Ptij(gI-Al3OPnon`p0;vXA$urf*8;OHZ2I=F+){ zGXChxgH30NAGXHBo5V?qtbP^!;H4uq-lOO(8CNeL=V^$`r1kV1!;V6~cI@txeX*Iq zyfMAMIaGq}k3jGEwd*1xFB~?NB0i%n{Qfc(`}byNwL#=@3P2qx8b%i>S`&iv*HnXm zCtPbtpsT=+xgI;Cr^jikG;w47#aof_IT-`0B+gTy@xl<@VTV##{4t{=Fymc1nce&-#?wsHK zc7neXtTQR7W1=91Q=lg(T%B!+>Wm!uUCUSOxVPl>$lC@;q%28h`kkd7g*7nMgi#_`3)8~n`-o}iNV^XbBqe$u6qFZhgx%8QCQT)_=qZ)m@JhdJBQ$j$tL8TA^qex<4){Lp zpnyq4>X{Y*xJjpx=%I3Ae=FWSCiDYehPXc2GYn&`uWyX_QC}d>8sNNLEo~IQR44p) zpxESkNDpHbP>YsPv+H+lz%vqz7kATHNl+_iCc+v4{c5~z#)3_@4w97IZT8d!0d}|W z+C2mTdQH|}NFI;xw|gwxwc@eWl%@G95N3UUPsFR;uCkO^qw+W3&bE&d)fGh2)AOdb zRH9587q^vpzdJi&E-aQJF1bF4hp+i4VslfK7ic#pvI)dT> zGv?R#t;ILTHXL*_h5n(^Gw+dP;@PEAXWV7IIv zzCJW3JD}9(j(u_c?W&Kdb0Hax_U8Vg0D9jJ@qb~PJ~!&e?`Fr;3F(yw z9z6R2E_V2Emam6@@v|Q1i@YLz4|#@Y5EJo7h8V_=BrBnkNy832H4P!Y4wn+l&9hG{2=Q zu4e562XT{LNE13~FSsTH1bE1tUD0&2;YL4|>;zF{GuL<cha)F~O?O#LYU= zI%+i0zf(LR=b@B3zeP^jk4Yxpf6GcWfsg~AKd;97b$y8`q@$A?Dhjy+UB;duK8 z$*9?!fgKSYUM3@0GkY&Z&VR7CK*ckaPd?qZy0~<^&f9d1o}e3^QO0#Y(0XsryTWI- zG+LrZ3a4CiL`Q)l=gCb7np46mQ&tie?)qJ+{THXGAS)?j8oY@rJOWg>rae$MHFzik z5+;A1Bl6KrTq>) z{Y+;=P@+bb2(McB;cM^QA>PIxmp+8k4aKAz3C0Ck3Pl8XX5LqL+baQ9qT-YgGB;)l z#_B~vFA0#Pm{7v-Q}ebDELQu(Wwzf`j zTifCay2sXcE&ryrh}OUDu~`EX5*~*Bne>HSe->?Z`;uY03NPbmGv0+E@R86uPkLz& zc_v9C{wzW{o+A6IL0M`k>;!a|{}!6#43;!jA5-M*VPZUMkh#iF)qHY1=y9lQQv-<) zwClK1G~O2_iKI~FJkaMZQ9*`vs~X~XVp1*6RCpFXzR|xUriWff&bv1w@XsyLJ%7Ew zNzTWCo^J&%Pvwv>B$Of536BCSls#|o7m#gFC8jUJ-dn8*vg)Kuj|=jNr^}JXk%8y1 zM?Jvwv}~%bRy52JN=4l+OsD^bjQZD8i1U(f^-IIMV&CD3b$m$1#Gr<*y^k zo&Yvnk5e3ep`o8+E3i&eg@MUV%e|t16C{u7__OQ1 zCp8&J?=FSERag(E(zBzxlUDukTJ>uE+C5_nK32U;9KzLCdZh{O<&tkqs}1b0dZTi= znvX|upKKRNG;9s<`2__%YJrqQfuF}E<}zc4koZPvaJQMCCOB@71+D<=rovJ@M>?F{G?M$V?dSR-||_hRaxlD z&3|rin;EqBPoE8w3sq80Y1DIq&!D^?V-Kdl4O$ zn|UfLb_~m%sMrbuK%(}#ZF5~TivN&@JBI$kTSE?b>@j6^Dxntlth~61Td0#o{iH96 zPacl?^(%Y6iL>^&i8T7kcQ~FbtbCbhNlChc$zbF5;*4Hs(7U`~Qnz^6Re@NpFETB; zJUW;tli2iZx2$u@c-9Mw9)mK@;2wnjn`vZ>^nB?Y@F6IvH&C9}9!4k7^+9qi*Qt1< zK-`Gao_guk65Ru>arAjO%hFpp0Pyug7WIE|S#1gsni6u7cnMphq~+mr-UD3aYN0zDYJ^EE)v2o?gF$AFw;rQkMAc36)V*VMzwYB(#FSP@nm-Z z3T4YiRi!!1Et38sUQ|HnzmG41GD;PLq|>O%rJ0JVI(kp(L%8V+yTA6ZpKjWdz4>@} z^n#K58ITL{{c$dE`dHcw8S@(?Owp$m7$V;zW@M7oYhC>rB|Opq`CUDgMPa*aZd(L4 z+t~iL%y$yg!MA68d~t%1zyVtYF&-iQ9%J}8fjA7hhrTp4w!AZjjP&>IWmu)6u@Q(& ziR*nudG1^sCV@pnke?apL1MwnPNE9!=mIsDYKs>ECtaUdsm-3hi3O z7RCNjI0p-a1_qa`W~B*zJxjcL9~9)t^?i5KABYZl^5icsefvJk&00=1c=1C=z;^JK zG5J}xG=5c&Lqb^(>`O?TXzS;;48Jf@)Ktg8*#VB4QLryO)ik-5PW3*C$ zNg@jXnXAD8mo0!Mf$B$;TL8cEQGeVv?~>ZxDcE7dP|G(cIA{`_#==id25QISws*>c*txEBn^*^Ep;e*E}xd4b!M*GVve zlZV};gx^Q?O8!$Y$$GZR{{|;Qy=h$f!l#qVR&Je2U~rM(`RTLFL*z!otI)GArRRjr zO><){ae~bu+jU2>#Rk`cUM67o`l38Q{@=vZhl!7-twnbW`mn4KYpBQ9LT>i3vX?U( z^sKgBUwR~pqwMrHoCJkf1P9}bYH?!lGXEaZIN(^@^QZd6aM~R|euG!3wLkEKH_7LO z@B1506!)BV4-&+bdPhZ_5Vff(bmpqGK8rN`!T9$6I6>*S%1Y~FZhzXwqW)B&kIGE7 zR7GNFMDS&9gRVCXnHPN)#RbYSo|LJXDR zraBdId_!)%Z5LLpH>l5^{VQE&&s9{B@%`RutQy=K=L}P*qc2{Vnp4*Z-TGQd-EVtI+EM1|7#rsd4HG=nKUqr*8UeRBuT1EyhkLGAljctX z^M1L#+x#^D%oF9zH!s28U9uf`sNuAlL4vW&0;P6&n*=Nq`QFb>CNRL1|3c~B@}FWH z_l1C7YOSkc$W?U{Zy#%W+M0VOk&|V-St_+Bxc;>Az2z3>&Px05!WrU8PqU8&?JPg6 zfC_l(C%+J1Tllr)v@@?BtJ&SdXXbW;A}q<47a#KYOAq*QXU9kA(ylLUyZ@QN(WUR) zZgWS4LOzhKlo_EnaM5qq+y~s=>hp#|?FV1ob;3jENuFnt#rfx9nhydVdh&b-rh8Mt zE7}!(mX}}@@Wb*3#|I_8sq2Siqw`a2+EwjhWNbhcEo1x87ir@G{baD=AEL9L%^Owt zPVZ&lkEQAdUg-s&MSm2L_M92YkzjQ(7k{oK7@#Ra+XT1HW#lv}3mj*;v;_QhTHU8e zF&)0_*8&6e)s@;RM!sV=K)U_&5S<|J*`((rcdXsdNc9KL66D?uP9u}1^=_-z){-bp zDo60^P250bYNgl}3_=)E)9z~7cA2d0`74QzE8nE**Yh*~;m+8&S**6V&&Ncly#;3K z0aN`__!E#pTzVeZO>aQ@)9>d~5?RA<+LR1?G#R8uU-d{$U$m}pFqE>?+Z&dITGPdz zeyxW`)v~`egL}d_)~+wDuCNm8n2{L83CQ_E|`; zH8$;DRa#3?_yhFH2hi6C(DSc5!F+vV{6C?DgTp&rQkl99=sLyV%UI>;1QCi`RV{>} ziS0SZInS*}w#eP3Q1|}^V-^}*!UU+u3wxd`gi1p;fR~N`LawiZU?O~^F*YQuW_ydk zGRhMyW2Q2^KjZDwxm=s6Vf^J;U-Q@WS8tRS1YCH*BNHSPo_@hCj{+~xfG=*I)rWw` z7PU7+Vo7@~!dLbgBA)$h#V!7DKHnV4F9uV+MM%UM#lA<*>0&jXTG@3jqJ5+q-g1|F zg2W3y#$uY+;pBSxW>u-ClgGAs<%nQ0$^868j2@Rp;j0W&RSAAIOChbI##)>&Y$2$O z*O*o((0cE+wrBQFXUlkb@|z^7BDD2p_v{n2UVmS9tIKTJFbu=T;HV{)@%2lUbXaRY z==<*V!u=nHecSJJ4@+(#_@tLDqS`Pu_$^OAEI1B4=^UjuEJd-}SC7C{e77iFxShy3 z`HuC?KTD~bnQY+U@%JzHq*}}s8K#S3H6p+Hz^bQb=WAW@65lyp2VChN3Xr1UvfV1B z_Stll4hFdgo}VRshpJ*z+r_M`thybG7T-PunD2OqN@Gx?9y>*>ffsbIIJvWDWWE`(@4(R_WieEpy6;I1zv@~$6wSR@ZwKa3Kz=2!hEmoZ5HQGDvp53BkU zml*d>*H9#=ZyV5$;qge#Sia?u%VX(~pzA;W7Sq`6warWcTV+*2HYItLTDn}(Qa$3E z!|Fi)b5^x6JkqZ=zjH~DHNaF{T}&^9|67h8%$Qkx3d*pQ-MNsK*ME9+L=n!jIyOo3 z);jG4aKT*vtK~y11Hz(!03a#lvp5Oh&sIF3s-Hsn<4aOPDQF8_diE9D^UGQ1ZxIi$ z8j+)bHY8pT_~YX%YTF+K6f5u-1c7x!4j_kq_0sk)pfn_teU|!*X1Y5tdjqq}8}W|u z>}%o#wA52K+!{HzP^JCU_VWFU9KFw?pG~|vF?m)?^BwfXtqUAj2#eCE-4p6$P+KM@ zLGD)w@)a|IxPGZlGhAPdcuDbhxEIV3+Fnm33|l%T;xKd0>8fwPZ0=a@o)DlPX@70b zpglvZCrd5KiecZXe1hmvq?8M{&-nFSCrFN7WZI84HdS%-Zh5sSrP|8h;(0N7iEG{jG96%la`4;$@X)Z%bgUl5TBbXp*=;<%$w%ipM{D9oL>dBy}CXsSL`*Khxh(F zIZWx={<85YMk2A5^v2WD2R)`Fo6df-0(Q&8b+Bw;_d&^DJ^5hh>ip3?ug>o;j1($k z$i4`8sHf9p3$Hy+*1-6)JFmyMk@t6~ETio^ zmY13dlGRD$A(toSibwKxphASdbqTqtA6Q_#es<3y#5c!%c;?2tjD&%4Y z-oug;q+DJrKd<{yj$<9y)Dku^~gw35!PxybVhPSZk609G<`bK4*;J zrs-bddL9t;f<5+=nadq8K6eFNr=8(H<||qF6Z7x_c7&)b`-+FqcZUS-^(8kr0U}gb zVVEc>z+>qpY<9TF)T5z^wxXGB5_mnsH^NP?@Dg=<#%*&YPO@EF;6&TvM!E4LZ8ImH znB076X`X2j33%EIK$};KW8)1LDnfkSZ_y!r2!bP(uRAX@uP=d|<)@!XedNz&L(MwK zzLAqo4fzB9QEpiAt*tUpF=_|5Ta-3{mni6_dN*(0I&1(xg#3Ol6dCJ&N(Xg1d;eH+ zB|Sj?c7p_=Z~01Hi$r(h4}Q~1Mx+)&X+bOggA3q@+GFHp4GQn8-`9TGb~V#^sR*Q; zg??|pd-ZaPaRSkA1L_PS-j?4|X3Bn-iJoiHU1%DW%j9!~r2$uw*i*aUEDcuLo;N<7 ztDE8`o-e{(_N0=ljwaR9jrIjK1eo$Iz0`YfQZZGKodjS+YN{DMXgJ2eOPu! z8@4{9--S32mT$?5+3HR~e#Y8fb$jx5S{dQ(!fK$oF0w8S#$F*+2t$NPfHC@yhv`O} z3!?XG>z6bQ?IM@MWk5&wm3FIj{Ahh`ns>Y;eQ&di_*b#!f{GX#yIs*V z(CvSNeO?b+UmGdok;-i|`@~;oNf3QAYmiMDAlf1p_qt4P_)n3uMxnTqe#G^F^-_0z zZ;F0(VHmgTT)wk*m+#F90tjDXb~m&qc57XbWv;8x6QNd!R(tX9V}Ov#!M{~_Z-Y@V zt=x&1#b_#B)5zshEH)SfN>a_P)s7dkFqvcS9re?$EH5uF5|heA@A~RYK+yGw+UNXk z?|-j`(3$+dY$2*)F*D;65qx(Cd1AvY!Ws`8%bz#6?g*(y!VOnSW%O#T7Tubqf{us) zUBAq!C@o4rr|8XRQRVPvr)G@gM(VQhfGXsHk|}nW#j~J#mQpIVo=%@HhQ+UHB@HlA>r zcHn86-1K3_9}!y6xJ~G&#dYk5dG`KUYc#7u)asAyS0O0%_h$tqRw2)f;=$+3SAEwc zOGkx#OUOiarDcnm56O-UWyVDC`-9%l6i?vm5_Gx;+!5vs`%Fgy+aw~v0HPkF3SU>t zD+kO7R0T=py@r)HbbY?ksA!vtsVcQLwK@T4dJ&~_?_m|cmosH9Sm-ZOLo)~eX3=M`~1d}W%Yj9B?NRe5NAVbIb3j`|i9X*!eC^LX+ z#jHCwnm%8}A?Svv^#>S_hFo{j4N(E!pCCg}@8fqfK55@=c;5GC_`5m3Obwe#ir+9e zQsgg2i>k)Y=rcVY8b|n*}1Mid}>PCm)&eQ9GvJ<`i{4c>{t@9X?RUlo5jiLtlbUKn>`Wts|ZhM z!ZAdkJCTJB(!EzxB5}wl@U9c%-i-0gdZcUgW7un%`FrdoxQ8rb&=lkQg~c;(9Sof` z8o=xhZ~^}sSZKl~1%49h`<(&?8BSIA4Vk^SqSBjD;JwYFYx3ksN41dNZUt4=1UQH* zd2K*?{A)QPc~jA0ZZl3bVb6KrxDM$326+-~jzK8W7u$^Lt!_Jzp#+(_&4#*RnR+8h zz9q$*YFDQ~){)`j8;i}1FBS;qv8aKC%x<*5*5wNN5Jb+_Nq>*C5HeJosbd@#{WOKC zmm+t`Kx?lWA-}@wMi-qmMyJXt5`*uhF88NX&6;Phtj5piWmR3 z^g_RMPfKtfP}EM>?zx*w8&JHKv};)WCuXRf`AdZDb*{Q}>jMT`k`B|ZZSI^hwWrDJ z>x~kp0Fb3GRQBufmB$*qGjD{$0W)nX@KeyDSeYj1`cjHN5+B>E3EXWrwR-#i`)U@S z_G;0%r=S1YGr}hwNa`hb?!Ll`M#eC+qMDIUV(W^UcTZw~AaN>gw^YU<{a(B>$(7Ua z+2f%gj1>08V(p%gDl5}lr7*O91i%}4He#lu9pS{&uHoGeqQ0LpQ!^!CAW#2k3jo$@TjD*|gx~ zJms|Z62nI7PS54kzdG?==Ugv$dJONk>;jp!ET z0?i5Ghs>MLeLQb0_EM#EC{(Dw`Pvoy`PA2C{C_3k!8iRBC>1sXLre^_W-h|(d z!@yLWh0p zxJj|n-3Zzu$k}?PqR7f06OLaHJxhJDk$R%ra`Tg(?ivL0u>?&=@HyR=(8ymaC5@ix z8WJeafXM_G!*LD;9!7B6Vl8qv!)RQ7$4Vi{Ih2b@(`lyu8CutZr>A#R8ehM>-#rCL zVkkffwjszx`1s0$FK_++8!mQ&p`3X81oS5S_LsV&?-!)`3sBifqFP=4)9&|eNf2a> z7wa;uso(#w{;SqQ=@GgCNV(ZP70sZ?nIoo8?JBP>}GRNp#TiO*Qe- zcgu)an&NM@0$6BFF8Q5oU=~+q!|{D|;HM`yOC>yhL9NXR!D++svHwjkv={Yif2ISM z>C^T~Y6cf2lb0zRTiPe6g$O2la)0P6n#u5I-6kHPiESdjEt={}~ zhVc#q{7V0C# z7LZ~ter4j3ENfZt={Yy4D9;P?7ugO^l~{WwpuYt3`o8pX;RTdCx!v7p8*Xx|u_m>q90ms8>uO_-6o?^7RU6>SyFpeOT8rb|^8*r2UC->& zQXo25Qx5W}|2idxj zZF0R_m^AxbA!)_nWRg4Jqr;*k62rWlvZ#hm^-r4P9EZiVd`Vsnl5{i2ZG;C5T5Ntn ziqdF2!B2~)&PWR1u9(M!T&!;m_+@r@16T zNZ8jhAN!N$1u{dEDEZuSuGzlf4>-S}vF z7i$sHUWHHMQ#>pJ7nrXHuuzaeY(QQBrR&do3KxN)UYd%O%C8n7V@-??so2fk@Xan{ z%5h%UrP+20gXHJho4-o$yBtqU2q-E3kePs_JO3U(3JfOx`!fe>AdQx+Hic!}oWZ42 zJQWh8EYi+JPC$+%&zG;uuUW!$nd+(Tyqn$MJFTMV1|?rjPk>qL;H>?|F47%x+2N zthP;xGdLx8_s{xRGzjXC!@nE+e4Xuxy0gZe!~(hh8E2hP1xg>sw&4C>;k+%F>XN_NYrelECg*?rQ#AMsZ4ezi@NwJ?q1vRI>t^?MT~CkeZyT?ir;48 zR6juUhq8z_)m;Mp3hfvhxXc*0xP7r0ry#7^t6lLOgc}X`NltRtiZBUzIKF zmzn+U4K8oGBBF1Kc_*AQfXct~p>}<-^&P(`Qakv5d^(kv)WcAcvKAVceIjuLl2(bU znyO>7r=EGpOm;q?14rxeb2)Z<&441rGg2tW=&`zF0d8B=u?4wQGd+ew4ltlw2G4uctF9lU zm}cycTqfB3+YS)oZNU_Y{y(`hA-Wb?G3Mukuc*{BFpx$W6(r2~u%k6SK9$1^UwCF$ zjEVkunpGI69A3iWW>K!CR^T80hy6yok^9X3LP(0&R`k?kkeNR1u_2lQmaIaf&^&M{ z%^30cP!!n@iZNL2bz5Zth$edXZQ=a6C~-0Cj~u!*oD`^g%2Ox&Sk*9l9ZEk%T}Fzf zU2T>cKD~?^+(u=ao129=Oj*$NL58rn0Edt>has7glL&|$eDM}egj#_%JyU*ZF&GSd zb=|@K>5A142me9klNc8SyEmJMU>>>rH8K%Sm50aw3=Y{Qx|L5>AbiPGY9=OvLGvB^ z5-Y{T`tMcxA~BYXLC+OChzEpotSxnqhM63R(p21>PRGJ& ze)e&@*)31fS8vd5@;r%Eup5IHY^o!CjwDO<(8TULXwr&kzQh>lM|+9SXJ0pn*rYlI zo7mTIlVOh;MwMkBJ@RuQG@fjDgx2{akxlj_;sF&;2Hy)0RxOulpxQSO=N;U(^bjMt zE8VJeA?ahjjP*@MHv(_SqGyLQ1zkELxm3 zH+5n`&zY78l|NEp*>uzrw1W%&>$SsE z?YIU=Iyh>JXP_I*t*y+gzBPL~Jj*jX|KeMEf$x^81glr>foq%3bkkz;x^dbK?Ho1f zDTkc0^EK&>Fl#TQCAz32lG9&?VWI@mErIryq7462g*$G3;|-Pf{8o4?+SBK~&z|87 zD}^^K`?I|h4zYhhbj$fkdzOUNjBEC<@O(96oZ~;nPA(I^tPol0S&8Fjf16NSS-)?7 zUtd~ZbVpMzQDO9j^K^g@r+@~iEK(N_srbHoA*9!sSMK?WJipi7a#DWJc3C=*K5r=alM|}#5iZJtWK*s#|O{ASe6_9HZQ4tQaSBf z{4*R=Xh#d?aqGT-!gMP9-u5e3U%@zhyK>gfuSwV5w*GjA|1?;fFsSS()*deV$o9*_ zM`&QaFo^Ii?ok*x%K7}9TTNNE%&}=pJW)uQW{?&sl<@L2HBINTI4j*KMdz76cR9NH zku4fh3M-oA4~va`I`qd%m5s4iGpJelP`)>k#O6P)zVCbpL22S|?85eTiDRc@yo5>> zJ6z9Mb=FgRK%#1Z>}cQnc?-S~?p%q}VCxI@M5T@P2J>lclt@nBL8XF!Jq(x8_Qd!p zJ^?#Kbv?17p{?yl3A|pMPb!8B>h{z1fCv0B$HM{*7Z4J$|3uDQeXUtPUwES)t%W#c z|D@6vRBP;$G^?87M3R%nbXV}=>huVO+zbi5&W-{{*Tx*a4AsrF+5jt`5Z=7 ze+C|WMBDG82@M)eS3aUqc_B13Q6$!-uw)uv<{4LP-B;=@CZ@PU#dD)Zg^8WBoxJg( zzoD>U^-aD2Ne8YAOPqbfoVE7RYgUnBBc5+^#o0Up_OR(B>UY@8i!ohoPb$>PFlD}~ zhs+!W-(Pg!+;X(p^Vq3Xu`>9HMb+f&y9Xk6RF$xl5Yu>rzHcxE<(+O7|LW(f8!9rU`0KeI~&WtbaVA{O>DXBNk7q1 zFvhcxLL;s&x1Y~6Ct-x69BxO=wNW~thw4GDr^qM54De!Fo5@hgIJjN5ustj=uwCaj zi&yU~&R#s8j_P%BGmgi10>X^Vx*4VNJ_O2*Yxp{~DPco08^XpvBp{A0s=Tmi9F`fq z5^#)hi?wC|-YZKvsIA;kk>0Uhyyw`UXDN-5)?VfrqZ-?ovSzb;eD~ccZ*taXWmAv{ z9Ee_yEWi@5kh=m!62DDC^|+BnC||;p%^m=XJ#%M8`19sEG%@lJs`WB5r*@yJN!j(L z&0CZ54X5lEDXJc^-=T@tmMZs$Q-lOTL-R3WG!Dn&wia?FPSG+&6fMWLMix!KYs^jl zwOYcBQxl8qKsW3gDL-5WZz+TXwB?TU7Yf#0bbN96^~liHeQ5Q$aRbG_tK9$>oYc^v z^`{lQuFJ~WspF@y`$VfN!nHPy0;MWN@>~S-jRLDrGQjkz6M*P-1ezk>bdlPGN5#6$ z++z6qry%)rTAbb5^aE*?f?# z?-MCnVwjR_vk{^PI(@W6BWEIZ`*>8#RtH8#*Yy6uloK9?Hpw2&-*j#1lzSp z8u6P2yU`m;H1*xSuba9+|5}s{tqXpI+C8Krnks!O3tA?vrFjAA-}N;oQP+Xf#%jic z-Ty|gb%(-Y9=!D<`Fa42OIAtJ_#vUgp+;3E0lEWrc0YO>*WN`#E{p0jUvYa!y;{*< zzk2ZgC_rCy7cP*9LtL0N*l@a)e?}U0(;g9DF&)h)bg$B&T z-f(b&p`im5Tu*+YMK+!WA+c6ePyiMCJb!8YU}!=f$3SKet;~IRk$<(F?@O@AC%gRaFFVsmVf9gnIwBCX%EvDx8Xf>Y^V?$ zupjeeqn3Z)|3WS&p@~Y~a1F`?A8)?Zn8yY9Wg)Kgx2sKQIxud;TXyfViJu~AKl~Rm znPj4e{c~0l$g^_Tb@EOuE)@t1n1~7ATwOn(s6hS73g+=eE*=L6gDCI0);Q{dNawqK zk>Y4J{>G~=BP`3pZV3w@AHrADU6)gs+@khiWp4aFRY)Lmh9yT^1ACrNa3!)5B_TN3 zm4b&XxvXQZ$gGY0$07;6KEq>+oOPIS8bvXBU75zG%Bm4nO&X*tuC>Bk4ADw$X=y3k zud08Y<|=1C`ZYOp9SXzG^tU-f^{Pmzy~)&zI4$?9FpuWG_sWYZI0ib+g=2vJKQ{!$YO)0XvV{p81^T8}q}+ z8DyO2I00$WYgl|s)18FKqizDYa|IU$6964N^16PD>vB}1f6HqV3<{Y5Reygf%(m#} z_nYF|m%tZ}{I2wLsOo;c76NA_m`UK=d&vPP{2Kw5AZFIz$y4+Kbu%t(YQ5mlv+2$< zrdhP?Gn*G)RCD7u-lzy>$Y+hcw7((x+o2N|eGt$I!x_ag;pL^{c$8>F8rLJ7#mLaX zjQYIY99vf&qxgl>Aj>rEAsix{MR+46Q*G?j!m>m*MGqsxWMs4%Cr`khF28I6%!W^J zi@rz+hZDJ@5|P_0KRiYYcinUtvFFkrDaLK$rtV*G}#3Wy5GgQ%29{Te%FBF*)3+zvkuj z#03Dt6b|Xu@D2ZQBt+ja^D^r)y_39D4(26_EaOXH6MjWX+f~Wb!0O~V$0ZPB+PE2BpD++Z@i6u#< z{7VJ?c{kMDGNM@TM!l+WL8?pZWQ(Bd8G8SDUKx0}(Vw-*yoyrjAX42*NotDqRdiH62OnverqGHx_ zQxxUXL$!3g@&!WLx7&lZAV#)&^il(!Jfv-tWJpkiwnsv$D(bt6roQ$-1s@9hn^MXrc$uf}>e;~?o~+fSy_P;A6~pCJ z+k+ulD*H3BXEfIGeuUyA9+0GV{9IO31-8te1xhZ5 zaSoYnvZx|nvyiUl7@~p_ySVxzAe&@czi>rOM^BISjXL13W4>8%N=5qIV|b#*Q6R^z zoBb|GpZ14ktrk!E6w2M-gXd$>8y+g;Jku+c-mSMhgumQ(Vu*z|Z@GZ*T&jTNFq=%z zTR7BNV|dpO$-4CboFN|pzb}I(yV?8xF|Yd!FaeG)4Y~a(O>crEzvp_%r-?vZ;=4m3 zgHoTeRgNm)e&d=Z3;(yn!%|6`sX(@!E%LE=*Wo@xui`bn(;A*)dRK|TE6anngaNxC z?<8g*!ja0=`gCP`N9ih6tm`Bc0x3#k>NVh)gD}L)Xr(y#KOFM5G=Aele&$b6|3qL` zgFEzTy~CGDiPnFFo8jZPbrGJZ%F6a7xA>5M@noqx_G1_T{zLp)8HMVw$|%kTZQj2O zN$#DHk5Z$oZu$tU%l0~tta#Vbf%fy16lsUOvFoEWs_u+0K0yu3`(5~#k_v`n_us2^ zbaXhAob?1s&?46ONdc@m!;Wv=5@@N>_5fzPY_}Syo&r_YZrBZhpP#ob+kH zd6-TK5e8(|kbEmjc6oztvj&M4jAWe9Y&d?ZrW^g=+qYcxP4?d%v{HrmIa@Hhr|!#9 z90r;loNA=OdqSrgDf+jq!_kX;egm3aW|15F&=XJtL{F;4o2So-o7~31?1(M4K&k8W z08nabWkd8BUw^Ym5dwsf%-coTqTT02PihwLNk3OMQOx4TZXcmu!rD{4$#PsM>NUgl zdZtxWY-n=}b-uAo;=p6S$4?0Opt1Y2kr!6GfeESnyBrpWXh3f@y% zrJvWG3kb%Tfx$DGhC*CX?QV3(wH&LpAqW51r@r1W1G07FaF);IP9TIQkN7!P+X*o7 z1Nc95zTud~t3I4dax&#$^fY?iE9~!M&(UzIL^6Qmq>=Iy(CNLdalvc=Cer&PWuFz@ zfS2EpE0%876=#Rtq&%+%O4P>tMSLoy$qRvk#MiO|@=nQRs0WXx)FThs2If@iO2C zoj`W&lP`GymkQ&XGqge6Wh^*1&5(gL})y44Oqls<%BDCe563-!FgbOAx{AS{*t zEY#&*t-q_}J5{>WA(immZmiO@SEx_*vJOu!6sl9a&u- zT=33=a22V>)Oo;@#G>Kqo@klaW81# zi4&Xt#8GDFrSND{ce0-KzxKOvUOasuQw4>7o#&L`TLW1tZ)6p!F7Z~uxC@2%h_g=e zg^{FFKik~{k1gV^F&tYl**N!>{P$w*y*rIAh|NuQngb75TA0ZxTDp^FSY(RYc^HV8 zo?IPV?H&WJ5#4PxprwZZ^a{k+R57Lx&-L!0#K0d&$nT44tpdCliGNfHu%0>(nwL`! zJTXH5H*6~nYuc2NTz+xl_=Q}o6{~XFYB6?Vcy9*1`R&Z6^1Kg2faq~tbSeE4=}L3- zxBTl%z#W@${&LQ+-ihEjKOyF%8Gb5H<<=qT@o~-RCIXh?RH1WdzHn>|D=LJzE7u@M zEk%YTQfdFAxFa`I%)xQ@!Nrl6AV+Dz@9wK;!S2M6hB?jQs-b9|5b9lz>x+hlgYt z@79-XNQG*QZuLW)p1?OZgg#19Bn~w-TWZ5)A24tTt;c`&w+y_xY;&4FJ!Q7lop`7> z5nf-VodRIui;nxw4+8_1_D|Br5pFyXQb{oI zOlUg6&A7+IfKuMFUl>=zGGVBG(Ji`zkD&0^g#Xe>9H^-=#8(2BT0gCbQ_AaWHM+G? zM&0)AeI|*4ooFM(@;*1{?@!S6*@5j#*SeKR0Q4^|?1~u*V9G4;cFC~k7yZLjlT*1G z?ss*6O`%XbrPehH-o^FdayzN0+{a?olx$8IVd=(X2F5~_Ozl@S!6y?dW2W(}k9qZJ z3T5jQhWP}-!U#d5XrnZ>=QBgt16ruD^HJeG5X3wVjL)54Sqx(H$FyOa+9|efdlhhqb-YwPJ?sd36I7NkNfm zCy&O5kXI>lJ$aqRlNi&nACWa$?Ys3MhNoQj>+hOG>&^~E1u3nRzs=^jO!jsnWRWis z*y&e3v~lAs^Y5;(-4dmgSBz6JRFOs#`eNXBy8Rb@-I^?xfduf7!^H8E&9~2u3pJhOStRq!<@RN+95;5-QhBnENg?&jZ;!l%}iAM44GMy^$qf7N8y{#|qo zarrm%n@hO6i~!_)o`SweZEmg?-c1bb~*PXJXLlqTn)*ewFiFF!9#&d`|C8H8@vEXuMDnV`>V$=jf1ORotjo_LjJZ^8kfe%(nZ zo!LSPl6`y(CB`A;v9tEy(O$FrG2gEbPVN8)=ty+%Aif9}sPt%r{e9h?5KT|1wk%QO z^!2j4;@!)g!870-x*yNKPEsJa>4KScw%moZ^fdBN=zQMa^ ze*^BRZgZ7cyRr%Vl;m}uXNT+b-D}5vF3HcItLu-9IAsH*Y4aFg%pyto6p#{Q?Kb2I ztI}--HPlqvY^8I{m~nOQ^KA-!ted%SJ30G6-rRPO7gQo zS%3Q_UHvb+cW=>6j;0OKmOsK5L*x}ahDQB8>c6|cJb zzvSif`Pkkh>=OJ!Hr2LI-Ro#RIV05~BX>_Pt~ga;q5o++jEe7`e&F-KaoNZ_)pQa5 z99{k$=-krJ*BukDc6~uu zsMht_NoB@1esjcVpt3SBZrnHI;&^7anQcMiStjN-1!5M22Ob@Rkc%f4rw1pud!3Fi zE?jv&)c9b0`>@+UanMXUUoj+nf_m2%V#TqA6X^`Do*eUap-ExaS23Gj`& zY5&=gtMS!qv6_Dq_;TE_vN#dbdFlEFSw9#wKi8}de0Wnewf*tfiH|aLGsbVLo&Jw> z1!WFQLe&igBm2i2cM)Q71kX1)56M!M#DDE~UgP+dub@vt04bhWd@YWd5G3?71Ymg{ zQEDnjCjZBQCUbZ+D zHYU5Dwu&X+740TxBcg7OVeMXKo;BWWTjW-UL4~aH@~_wPukWMW#_l^_Zns{~0RQ#b z57@`8;8P|}U+m|a=l}ZsSKv9{(juqa@9X!CY5NyP+cGP*;sj}-sQ?UZ(^Ol~cSh)j z-!Gre5GN5Q$w521Yece7?==Y!ZP~N1V z8Fua9_8&D>=A7gpr5zPx@tE%+3+{F9bs<-~`p(=YEkD0^(GVxD@gW+9lg&*Jxpnbl z6&uaCj?Q5HR9)2A>p}UUAh~&at<*_we5)eVo-I&(Rnx)A`6lt5{9k6I7~6>Sh-}Kr z+rg!g{gt+z@oLTbzjZ(lLUGTJ^%p=oaLvB33?W|ZzL#J3KR7vI>JQ$sQQdysn0%#} zI!$B4C$Fb)f6l~MP%W?Y{yR9|@g1}`)n9bSzM{esxiyssi4==C*e2DeuXp?WymZ@a zjYaqf#}`6zA%~Threjr`!H_?K+`{U=4N1R;tThIpp$(zy1?1JM+wYFJKA8gnP6VR& z&)40@!@y(`-$ES4cp(TVYdl>&PAo|@Bi6H$Qq!&2w;_NIGF=f-RxZ(ei6*frL zWykkz*jW}0h$1HaYKR)ikH5;qon381nRjiIy$Pd{!8zrsccl|V2WjgkGtwUg!VWQ3*Y(SM4MpJThpsQ>7*R(@fpMw8;uc37&e9yG zXiafilWtAmrgjX<{#>$Mq2BW^)2dU~`S826Fw&X)oQ7ltjRUV!imL44%emK3`xZ2CFS|Wl z$0W@tUT@EM=Jja-#iD;hJvo(^fWhFaqVY3pa#P(@#9}SF$Q>Y42dsmuStE@9*3@8{ zy=g*%gQxL8O}E@X;FWaHgpeo0bVxwM*Hxh%q+83Pol_AiPbNIKYJhQ)m4ZrS4wKYE zl0ZGJ0_>bgQf68{EKj*BF6AJ2fd|e>4DMc|poA|7o;K=cPWh?L2wSc%4N&f{&!D|; zS2!}>X{I!dIUA+1u*hBL?6`*zZgD(UcX160G0=@KinUvdAPKQAL1n|FLG3#+wK+EF zX111=3S72`!sQF;8=Go2a3W^;N;pvvDPe3_iwea)V=$9HI6BHzHPl=aqfAGz^g;#0 zSyA`AHcy$El$U8uf6AU@dbZ8k!IWvwTP+hFIAyr|nLiluw-gEe0J5P6V5{Ln>K4FT zh%b+Z?aTQ7qMHIg3obzNkD#I!GcR(6z)S&oGCkmJTRDv6nG}Na?%%GISVBk6=I5{& zlNB9uoEYJvk1s4vI+8;f*aQ{3&NMD}2L1QsHW)Qri*Y^P#kAPV_#67D@TraYHpG|a zmisqF-#@uJX$Co6OcqCu0C40~Q=aY7+f^s>|M)*G-X|g7%W}ixPYiEPb4;^jCT4we`hnpzNUWlFr#!%T7yulRftuBuJ`!0Yid^FAe z;MnW@2<`aoF+5yo9+Yz)^x)isI`#)}=W1okKl#%0uN)4b)<=Bw#M!$HO$UwAjVC5w z{abX)7y4Zk6d$IbS7*d@(L3P(<{^yT9O{-_-+a6IK+Z3%6C2HJ5w*psll>jqWZkOi;KM1=uj-gKq2)i2-pW9b*!>(m( zEANs%E4U6dGD5+}R-O)myQ`W+yK1L>f)w%-WC{vYKv;mdK(4&im-Lday7c`2paoUg zyXZjrGYyu!gb4_+)Z$b0yw)n1%(j%uG?-blHssE}s3kk0+Y2&yS@RAa2 z691#5s%DO@bk$J6> zd0ivhb@_dM_y2p&<=p%JykD>9c$8h!Ktx?Lzm1P~#rg>M3Vlxx%D+^v6wt89cYbTE zsxc-3lmjg8ol?h9a&Qk3zK+Y#Q)z@&=6uEle|@29@@SXK^adI$Gux<{|crpa)_{TIYk`L0|*;g>k=)ro-RyI@k6;c8Ri-He7S{;M6l^( zcvn0NIX=$YcolX8iu`Ajhs77#znJl}Fk2zW{k4Ik!6gDWEaQB09374B#Oqg>uzUj! z>)0osxd=;}K{*1{Dbc9$sT!VZCKz9Gk;_hlD0w~OE`gbqPKRG^>~J;QddB8UkE9RD zTjlv@1u9U6EZnh|Jk2Ps{Oao1jha88A6%*P&qz<*iYYqmuPt39IS|T+Mc>^Dk7!-= z=%FbV^{vYW2DXM9K8m!$lDx(s zdokO;TU%_Fh5^=J4f>6@0a2^Vx5JY-i zV?84L-N}UKKd05Y0lW?@YobD@I)iE2IlKh^JkkE@UXL6cMKZJ0hety1w5h;u1 z9iAt3h#4P&?#|G;Jx0o=U6$>O4~*VIs@?X2e*@*=HkJ&C3XPirbZ@2U`%sG>R7&>~ z9Txn6(bD=h&Fxa2+wtCgi*}jiNLl-g`zWUDFD425qW{&$v9n2YUPi^CuBj)hIqh9? zsD)Rgt$x9Mgt2JS3RbSp!ldFwG#O~NkY8Yc&MAckVbz!8d z5mmMvfPAj}vr%-|)kM6%dQ`HfLd9e~^$)-qDF?(D(~=t{H*~(cB5_^JN)X0DD*m1D zh-XZRx}0S$=^N^^xu~>Sd@(%u>hiU>h;0Tna}o{lk^Gn%M7_?Ml61G1BK2}fl*23DIVnbx?~%f7 zTzk)8tc%2`IH$^hRlDXsA!Kv$q6FQRaOe@J_imTt)PWUqI@ zf-Z$^{Ny?2aaqh9rz)^rx4u4Wj}fzAi?w)S!Pd`}5cSTAeHFHL6{N1pt~mN1jh2ib zLMc*f0PIH4muQq+ClVEST4QAS>GZ~{?mf*;`xSh?5pl&K3|HZA{rw#DqS{w6mOSxy zc*kCR_)lFMhd4YevWvUFvO08h1U{U2XXO6pG*!(vfAc@bkd$CvF{?*I2b7ft*(EP=r4c$tqS`m`uT zK9am)J;^)vZ^h5qwk`;PfC%PMYi0M5`7q8tMrM{-|K;t_ z4sFg{M`{)AN$IN{W&SbRR%@e4`Swox3{~p!<&+;K?0Kx+yR4{cNg_O2p{eUJnU~Ut zDaB1qvv(k1175$p7qg!28xG$Yu#JQ!kWTUoM-fTT?sL@~ZZj1d7F=n5yRzd#MZO3R;{<;=B2e0^+?s;EjEAwMyhr)HMB@Or~G-g?Mnib)#vM? zBfr|_iaE!~Yr!>gERaHMh>U%bSDr`BSz$Q$@0EBo=c2diVRfVQ-h32{d7D86L+u%% zJuw^oTD)w>zbnR3-e*)I6+nWx;@b5m|06wC$NERUFlfA^HhAN;RgK@wsc@+KW{kzS zEuk^J*NeJDG!dTtS?kHm9H*ql+Pw);`p&}KADOh2bAcuO%=g-Z=t|n6*cwCuGzGQC zg5?+j`v_%MCrj`9Yq|5Pr;X%tK3E=#8T`*E6R~{G&CnfJ_$ytN^5<=T_(!uWCD$AoveoCA!9Z>Jo2aYB)W>jy;Q<;RZ zALpu8m(4F}53&Dubv5lL7OG0C;f%($1I0?t7Et~k6cg47qq#5m zlRZy$d4}TNgcoAI?JvHaieEcPaQKXB5#F3h^3}`b^Gh#p&W)H=D&5)N7Mmir~U2H}RKcEjw zePf^DG34589z!J&E62$HtdcZ7#!<2b>t{~0^TfEnPyR=Ljo)OSp+zbXPHfr>`McUu z)~Uo0A2XJPf}f%2#r%KwdMZDtA`$YynuC6)yWzE`F6)>jkrWrgXrtx>Rk2(hyUlOA5&kU3d%Vvf9hzxUpt3Y-FytOnXQSL zk2j{l6thDdU!_$G{R@WxZXa7nQ+}i9SF6u@CRFk7rfSKwwt($nuyk^oQ6>kH2vTga zX#{AT5y6ir4~^Zz915F98z6?EWzB9g^n<(|U=2{ki1;vY0EneoN*F0jmS^WRJz3!A~fxcMk3;9&y z<)V#p_>qfENV$7A=B26bGsyZ^?geYOEJ`b%y>&Whvr8AyoB3wM@_0RFtVD}aB0m?Nop3+77E1DM2Q%k99o7ahX7Cd}H6wTdtEi881b zt{aUcyWCkyS)ly{^Tu_Hc??A|$%Y0``S6s*zSNQ1iqVWzBEH>&kqTb8UubGFqXCTe z%o=ZVs;ao+VYFPbC{l$43Rnv;wWzLZQ-$0br#%B(Doa37UaY-<6HAl0*`6W=RX^B< z6q$Z>$*Bm+A?a*&urSJ8qo<5ep8M}0fV9jN^3*<2z9ggb>sO48Dm0zKO{`yh_|mLl z&V8r-WcAsM9uS_JkfJNeAj_vA?Nk63;vVY3`8|y)7yL{n8k|iD$bI!?_m*yp_28ct z=>bSuI>E*mYVCqvJyr>r7CD z%lUYH6B+!3*k@s|MnVSE-85Wi)T~C^HdZAc({{%^7%jLns46R}pI%zdsG@*9Rk+I^V)Iw4ZVlUlY4 zrwIfVb<69$%{QBACM+_vy<-yP|BRzjt*ss+oi8maqgK~z7agwDs1by@33%rjzpS73 zqu0LxM19zgFSTy_s$pS7hEQ6cjwNBop3DG?Ot4cAugdzT8|D>?w1^YAi$u;h36bYq+_8K>*4MP{52*URL~wtXTYpubHmMUA`Tw8a!+D5*kO7rl;R z`uCEH`nTxn1TSQOx>rd1{ytMd3=}a4;yv|N9J4IQH)tWy_xH^NKdfqU z08b$Gki2ssk(;kp{fs9l+S7A*qB{HKoZIlh4afl@x2?*q=G98OP!N^RFaUb$d=z`SWZt{`u=zACG}<^B5&4lE2_kIrO*4#9Z0b90T5VV_EmTAg* zz=X9K$GcMvfj(^&)Gq+&u&b%%cyMKO;aAL^Eevkz(UVHVQ=5)5ZOB6;-qW!qPA=OU zdRLNTL6obr<7aTDG0$JXK}%&fAU(!dK$7K>6aD!LSO=1tWUyGidzbJ0ASGiQ=GL^S ze(uRH$*Y|c^?j7)_*4&fMkM>wmn zPBI;ymtdlnMejcIs&!uU6YFiAKYJWNLbY$CM}&~9k%ZG*A5yN z-uW?FGq7p|3i|p&Eh5*L>pS>M!aC>5^Nd5{)e1?ltTMl33SWP?=95Xo?mBbq<*$Kg zQ%^{|Z9bd*4!nT}nW&Xw7@D1Wms~3E-ga1;@IHaipf#vpp^ypmghnc z!6HyBlWP$<=U>;Ali!~`b-*O;GZx985H{r^z*SFP7hC?$=6BfF#b}c68~6M^2+YY# z1m&lWix^Bg0QK3><29dATV>kljY{sga(wvtzlzc22XyR!x#aKKTCA`6%rQJgiUs(a zs=JQ`xgCMt$d$+VYr~g&?hmoj`rRf0tmV?S44M^&6PE0^?{%Rjithnk9?sPQ5{E%K z!o6nsH+)J~LLpQ-b9n#Us!5n8Z1*{L67Q@zla9E~$E=Mkt)Wg_ z@oa$)0b?aW%X4!Ecie87yVl02+N2bn&BVQNh&$bTbF}e}%~(Q%l$%tZF@D{M+?>L) z)YvIV;F8g^Mlx)f(SC1X{#bE4#%6$u4!KPA7|CDKxtFU6P<$=Svi~S`MgVAB(72>Q zMFoM_FZ+C^dE^j{EIM%PeguM;bZZP#y>NPCd{%c0CPp!l`E>jk%aqAZxoeJaOWihrb9r*v8K)Ae3Ml2rT47?{hv{|&hh zjz3k07Ck!V+&!|~GJ*Q)tMwMpbEg{RT$y zeoGZm5G82cVs##SUP;j{6=$}I1Yu-YHdkdo-yC|e)_+u@G# z^3Y3Xv*VAzmTR*O(q2I&*MG`z&IW9`oJfFr!Sq*^NsYvCCEU4p*Ex!2*Dj%hjpOHU zul?_rl^5u-*K~Opcu958Ld2L^JdF~6~CpR@16SAq&OEI*c1 zKc&=k_vG_C4BKxuwVUKmX6nYsZJS`qrICKB(YGJkKN(YOO!y-d15N6i`Ee^M^#f4F55H5H zu4(~2H@fkXtm>%inrMxwTYxbXCZ9ZI&KsQ<)zzv8+v`n28RVD>9@{i2xPt%dT=dk2 z(2D2hryNR)*bII2emM`_bc+d|W$__euHA5|*H9GLEl z90sIXM+3pE_|*eokykeeKGYUYO7Th>htnY^$siA0JC-B@rl_(UxT%ye$PO%nni7Lf z_qhD8RC^6s0g9z7P$U!gowEel#F)(Ht$EiD`~|6fA9&fL#iRL@pl~o}4@~1hnL51f zwzJ$RL?8w@kFG#{3zE_I73C{P?J-0p{o&WgbpDeqWkb$Xd(gw4Ttk~vR?ot_0uUV3 zL2XM=Kl+%xn;H19KV0fYh=)826<5GGW*BquDVjD(5-#$H_wj5kV&;SXSmX2?HgA4X zvE15E_xlH^cy4Bs{7Gc$2|lqHIyhr{Q~)X(Am(SiQ?fH3Zc8Px84{pZlUs!=LK(Gg z=5f8F14>)OSMxT4#Q8oRzfkVpE)jnK4BYTU(l2d56@0We$RAs;1Ucn1{nxE5<=U~k zN?iTT?H4+`hf(%~IibAIb-6TO=Zgh8-)eNQVE@L^>^y?<2IV7LZq-+Xn6=#iWDyUlTt^G4*FBS4)y-FcMiD?q% z4ejRo@>Hi5cL6BD#4DyamHZ83t*4V(Vym-OQAliWXaHYXx?R*_`YH=uh+Kf;lDIz96zaXUh1ilqtc}HkZ#B{O)Zm$OpM7Yc)q12YvF?(j_w%0oVKwt7M&qSL|6eg z!%5Fz!xNn?w8*NBt~S~02O&u@e>E$}^NGEd6aiQzU0Fr<3i!#I<6PXlN#}V?#w=ZUj_Cm*U zixfd6+4Gi@{@(LEI$sUAm8Q)6zAmwi8)oD2dY4l)FKmDCrl+4`|L7y=oA0$4tr?>uPLabMa9H1qERRw@^vHpiR+0EJ}Fa zecJEqqKCTCBTps!B{&1I0K`_+T&S*x!k z9%(8J=k5~YEi*H{nTFt7^iA6>E?o3Yr`W~a{}g2v|N1woqv5MA8T{H#pAIkbH-c6u z4F+2u2p?~*`S`cLc)0n(=0!*Cr&~cC*LbOE&z4*ECpb^6jDfLWSL*87kv|!t`(poy zZ9e^{8pt6EDkqB1_^DpZ96f#*T_o@{Sat4g;VB? z_EUc;ft9AYLnwdSMvQ}~+f*T&a`qID*?&bI#4&9<qmxc-kKi&N;@ zp}QIaF8wiDG1ifRP~QL0izWYNoIFz z*oXD5c24PtGuR%vV`THX-TOb9PH#xL%Ohwi8I!Wk7F@fO&A3{Lcr=N38hd+sdMY~1 z&CPxNidyQ&+h+h0Rr$`W)#ohY0h}y7%S1!LM}8;Du2o9oQ+rC|$i@Obu{)~?ct%`Y ztlPD#9Iq3<&$bMFq2T!hv_d8FF>uzAF2rR7Rvf-3B>^l%s-9YVQ@2acU{8-Z3(@J0 z7XBR{JoidSi_MzYXk;W~n2OzQk<4=h<$D*9mlnPy^AQg9yeaZ>iMZ(T)XWS_LI2n| z%Tboje#Xxw^J1kWVKs0^bH+Xf{Cn($In-;>hx z)xl2?yo61$YyiUGBk_F7&rJDA zl^Bg}(|S1IP{^E(FO1%JrCgl=Ug!MJ&Wb$ST{z=y)-2yGbk;t`qCQ?FLTeSypmw#D zReY5e`XICVI(M!`EGi&1l%zw zIhIaVx6M@po$4Y)(gohcGs}Sf%T*YBKwk3$hr_jws4yXi#16j@@FxdrtE;OqA(T3x zgXhyXs{!AB<;{ML#0PXGu*CA9E#5p$;p5NOQ(dZqM~G$BudQ>LVaxF<(hRJn;~pMB1L#+Nzs@=c=3hiLz@H%ucr~?dWng?k3ueVuCCbbi#H;c&i9u`RhvL zr^)Boy$D?UC_2k1!(mREvFq~kFtz33%tjNEa6Zh@eaX+Auhfc+6T=OhA0Hzd#Y*5& z*AMN+ud)3ulv6L2k|vLSW8%Fb-Tt>wMykScUkjK>n)h1V*bau*+UIrvGzWiKaA4pP z9(^bspqJ}>fDfKFzRPo7$R4@;>vC-wsv%q(l=i|E=coOH^k>=J481BJW2o$tbwjx=)d{st$JHZJT&6if+zND*!qg|lsrU=4g=E%Ms^+B zG^4ZzGd9OI;ll>^95UJ!7KB_)+{5nUwWAV4YXdJ`np(Ybt^62;o@

6ARo0} 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

kf2l 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%0D?Z!<2a%okzXVZ5PVccGZYD? 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Î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

yBxkqhT70zqR~Vv^C<`j1`Wwlu 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%0Dt?IMZwz7B!P?uFPO0RY+4}0Pv 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�B0fc@BQWTV~39qO>1lJ!jU| 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 z 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%0D$;IdWYj?mVk3#okQSGYS-}$d;W8D9_JxeizyEa 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

0_p@Y#A z1YXId3Jw&xDDyqXAiyX`M-7`C8pRKAngS0pnsLzj@)s^%AP*<1sw>n=GzOgwcCnUqr> z{Ey3aPO4RLb)T~7lr-ev&?bwFxWDQ})zlc<{5hyq68D-+p)Nk#A1e^ui$9H=Hqz|x zN*=WDenf3FhdS}izv(tqBc3xMO2 zv;;ex-dA6FzO}Z+;OYA2ODoeU0-m8sH)fi(jS()|4iDeW73GJ19wbW}^%29XuXp{s z1jAZf;Fyx^Ir0}*h9BU6`1AW!BFSwB&*6&APx*Ts5U$o{P@$L6K5SVvpm=LLhetWq z>U`T_CLuq1dIO45x@I6dhk@7!%Rgx=Z|%vMGCgl>EO~ZSp-uUMozh>uj!UwNPa8#p zJ~hIEJ4h=#Rx~7ZQcO>2LYNs@8~%nc99(+fZ8Ne) z_wT&u6cM=i<1B2uS}=khTmaGYFgfBe0cmoKfbbhvx}f9T{x$bmi`7x>+9G=oQ@AhXWSbiZMC-`u3LwQhUX>AEN(69Np8j z6;%88c39(*!X7;`&L)j;oXtlhM)kP;7_f)2BiNJ-{5#|>X+&O6%%t3majTRS&qpN@ zBLVBk+-!+~#c%ZsCBvmIr|Pm(Kx_YL2G%W0E=&F=k(J;(P2_JBdtZ|}Xhk-z|GuPN zxu;bVZSn;k*ZL7F@dN4pY@!OqOm2}wj^4wuhtaU#}^eXw(c@M9*_11pR z_kGOPM+n(ri}(;^zzxUfb1=3>P{cR)4b$9V`FZ*=^>bxvCss10sJMN zaQG}cH=wgvi{pZ?pgGg?Nzr|UcCDD{m8JBtyiL%Q*f9V2MFJR(e2exgu>`DqnYtXB zXZJ*A?kqTlz5i2*y!Q2mX)90{Cr(<2H1B(WnDp|xw*SBs%dTVbG)$VcMTma~fF;wZ z$rUX*dpd^^w1T1@$31i#V-oE>xsJ+B(eLO?6Kpfc4<)1liI%uxLAY?2qVMrel++)G z7Coz~r~llej}x_e+V-k#-g9$QvmT+H(u>2UFAt{DUEY6*_-v`1OlAhQXEtW5zFHt= z+wnj_UVh8%Ac5k=%D1Oh{myY?ky9P7jzD(2Njw^agt}lv<>vzn66$jH1vFpnnyruQ z-XpKmfO$Fa%&D6G1ebg0b5ia(FAoBzBf#?gU4`VmDKSkEymoFTJgxRpHdW|-hy*Hhwz8h3jBJ{F1Yn6+N&-eqV+;zcu zF+H}h4|988N@d|vuCj}_QW_Z8TxfM*l%)obHTBG>7>oZLWZI07czdk4qrTA<89j{+ z)u97*NyiPOcU&lS+NP%x zewqGtdA;)GV;?ex;)sCcJTigzNqAjV$a55bLe>7+4Pt!v=jy)o^_F}j`>uMtP2TH= z2t7;Uep|$sNKLB1aNGdZ_en<4!%RS^1ZWLL9XNgX)5YDEvHPPzVij*fv~P|RbVO_D zWj-8_siCs4I#TojU{dTft##e+FzwcJgxS^mL7qSQ7k?g|V@M|w9tTKqTybvz4H`wdC7W7~Pb5lUt3 zGeRZ&oVKU9#c*x-d(*MLegTW08dK_n)>M6sS%OH@;RUIl-N6eG67fJ_{a6y4<1D}! zSbdK0f6A-dXJw)f`B@H_jPzwQ$hKgD1+y*(_OSgvW7Uurs9^_e2jqf8s@aqfN9qqdwkL&f3z`dNYJRCxSrwUn=AZ?O;^ zjF-08vBgu<#~dr|Hw0zWU#rD@Jdyo0>~m&cK8r3zZc^mM#fL3u+xw&_lmLLLNlw~1 z62O}KW)g?%dRq9n5`Ti;G|1ghWlQ#F$uYh_NFmVCl|A@8A^f6F&7MpJT&J&f7bI{? zW}y+MWS*zgL1C)i^E{pC@wVGj>{_y>c^`$%x;GND$hZ$*Wa4cpRljo%NYD0`B3GJy zsi^SMbI%N9=yZfPt4@*LdYi#xN07t&X>Q!+4M?V9{M&|2 zww#5Ukke3O=!h%!Pa`$5+?j^2QT|PNoQEDSO1Ho%0LpE#6bsR+BTdrZCHDZPwV_^q zy!ND-&P!hBJm47lXRIBsvB%XMzU%j;z z4f^q>o$*F>Z|y5n=A^lm%8`T8_Ok%T3r1Q@m^Pq&^9scXb_lLm!I zNFBKBV7&X}!Z%Wf#Q|IIj0fM-8y$LIm0S8~ZvsqH5{p&S z|L}YskAQIV z-jP^;vWm#b7ANsE5I|+M1TpmR`T{)vdoPek{cLWIBw>dHeBoS zotC!yDE`Z>9*hsD9zB38`>hq+V{s=x@zcn7Q4m)wIoC+H1DkNQx3vn=8iD(CFVRfR zVt1O$mYJkim0+DhlO+YY2zypQT_RABj!T8!yW3f}d2jXD3MOJB#Vi~b661}XRf#3q z`DR@p=c&d3y=M$G3S5zl7nN2_KIX7n-i=MN*izT{t3}+)&St$XrNfmB4t=)YAg~q z{n8sul;byZzk=n(?>X%(UGLk+9$UMfKfE9Ys@!?e<&i;!hhD{2JolbrU#g8Kmk$2h zIx0r>jwpbc8)||JIQNNg;1mgBl*g~;7}PO8{L=hTjhQ9ADN1`0TltS?7OwO_9XW4b zxCvW_4z>;KY;q%-=D{xwdk4e8+M#4jB~*Il-|%h%^0n0STN|x_O_X2X)lsYVvROUO z5sbO74lzeQXwW>R`m@TPT|gY_rhO%6tC5$5Ks?sbqCS_n=2Ym(dT-bJvI{6VIrcRk zE2yY^X^E#;iS}WAfghs9yo=>&h1G=~yz-vTWh{;ljm8aFP2d*?CB55hd`MIgLn}%) z_hdISio*=tx1n~(nC5~`m9`YpKE ziyAy9Kev^7%Cd8hhU4y<_Lh9tcs-Y13zRtRup2lBlZGpBEzQXhA~VHdaL4N)@__`E zLUbBL4=rVQk-7yo0m3)~3Y9v}iL9VKOG`M?>X^Tv2o%*1^<8UTGrz<~nRSg*aB!5G zc76J>vD?^cB3!Fc!!xQAlQU-fv>lM@_g3GclB~TtasI+vuHcZ))8hEvUVF=7(n1MT z*~O>j;X=uw@(!J(8L_KoK87vbn#jDC#?MQ{eqH<{dB^5j4jzww1uM6>YMssH_64f+ znohJJ?@!SBVnNLNq;P=6ofuSC=|#yROC4 zfj8U)*ii@1Pwy}Hy_VjQ$>~3#j^JYTIprW?dh`%= zRg$FVqd1q?d+Ilc4tfYSG{Rc81Ktl@v53$%?X3dohsU7&1|)(1W-r7lcAYf_b6jDP zT}}iL8K(Oa&mSJWQaI{5!LK<Uad2_?`kQY0F1q5==Nzl-0f(Wmy9o6|Ni_KGn1IUG~Njgb?v zt#KS|J@=jB;mXIcweO>z=aVm~&h}l}_5es9L1|}wXWmxN-CZH84bT{x|JyB^|@q`_Zy5Dgjn8ScpvL5Lj z$Je*l@FrM?)gWetgH%d8oY^h5(LZ{D82P=?4&!>K^R3OOi8!2wcvF1SCHcqf%}nnP zd7n6m?m-ZdQy$)r(@Z;Qno|2Yi`+zV9jcWlVFaGi}#cSj%@P9b;Wf-hlQsex(M~E-by?uZZS7IXeOT~cEr6xq#KWEZ;WC4X{p`E-UdR_K5B4niB=HOAdCOX7H!$!YLzNZ|r*T{>cIBo)9V2t{9hj!Uh{r!S#2QvGzV1)}r zfHTbp(>)_Ym}P0FXE5$zsfB72=3O}(iS?_{$*n;FHYLmlLI!2}Xg&d1pn}pv5&ZWO zQz7q3=n0j+3G#i=|3pFbyAhIgE3SUn%=JHy#_x=*ENm!PP3>$vLx9sj3fC6DaQDSb z@??-h8ZEz%uNt*0#CLiqCkV@!Ch<$Y>0w%IFkmP0pzr-2XaBM>$pqr|C@HU;{2^|2 zA!zxd+MO#^1uA~#kbfKtzEBP6=_x+3;p7)_-oba<$KvCi-*N+qj+B^5ueG{S$_(PcgjI{#UBW zWkvA)OePQB9f98WzR5|MORtyPa&O5JL*O~c+F%Xd(3F!&3P1QK<=cO7-I6}Dm}KS@ zc7%0RmP*Cu8$a<7jUcE~pjYdNDxxETX0oWHtkR3~ZHCQm9Vq<5IrZ~epl^7MM@8)W z26`ytFXBE+foFi35yJNXHKSn&oswLYl?3zi-yt8AEW zn3>05m*90hbn27W?4FYaAF*NrT`xoa(f}f{+m(Ahw@jWykzzrT!|SQF;FmH5>J}z3 zm;EI(4jspfxW@aZ-wgqycHKxv2sj>_n_v(}4aywawv1*ACMf(uUen?FXV3*aw1<)w zLmesPnQ!@^v;RoG8Xqc~dcF0#>eG<7wroD@-Z*zr>KT+5gM9IA8{#Xq=fzy<544Q& zPVHO}4C0AlDY47>`C7c5C{8Rj5$>wzptj4hlo8R$ubswL0%<2B%>5IHr)QMGpE#~a zU6OWc8Jf-0qG7vG{)*1}T;cT~N)IDTn^L$MyeEHU4vE-QT@X zu_bn%4%(`bMaqZow6_6e4`IsJT}J0RJ7UeQjDf89(`K?AG>`zp3BEVXpje{VaZ`AR zja&lqU~tJn&xF75=`LNzIo8nzoQt?rG))@p8W0~v^es;pedF4~VGHb?*FVsQDJg%0 zkwLTlvC)IsRJM+035-*k{Nx*(mbT` z^}20RJUb=G*GpH0{g22zANNtR@7Ou+Wh?QzO}*do+Ed~69vji3hhIxmy=a!KcFUz8 znt4&w#@E0mVB?^`Zsd%U`2?kwI~Sir_xM$tPZCSXi(wU$lyr+wPyK9*rjpmS?1kr3 zYozt{fzCB0)J=1y`6}PnsvC} z(%9?I4JEwV<)f*qOY<(9$4z7T_>~j%ZJLi*J9X`2`}}EFy)hS%OO0pji7{vZaP8}V z5xZP&+Nb0)to6o6kS5x*u!H`z$?I)(lL@Z5pVAG_eMNXE4D)FmuN56f|q!9_2{s&-E1^3^+ALUKsh(+ zFFB*_rhXnu4T~6yLEh61Bu`ZSGq2 zRYC#u4Vj%gUpA0{a1mK*XNegxcYx`9$08&X{g;4#6ktBiZofG??ae23XJ$GpBsYaS zcP#Cb`idrGOulUuH^5HXhFc+md;Lzrnd@FL0xwr%I-kwvOSQ_P)hP3u(iIyiGBAt> zKy@!=SwblSwJF*hq27@v%wDE=@_4rU(d@OwaVk?%$}eG_#7Dsf#CYPe z85S?w0Y>%kYWnW4!yliiCI|(K@PV zWWxsG8vkWVTu<5+b?vMPz8%3WVK33kO?W8Q#u=UwbK<4P>UM!i=Z0--X{VI3wJ()W zTEJ2EUCi2F;PI7*A<%F}4u4}n(g$I;8HCl4i{BPaiHyq+y3*quizpPS)aQ1$lXQ!a z+=ES4%6-^)9$< zoz>-jkGWvZK%;=ohQAZ;45EeEiMh;?p6$X0+J(i?ub{NaP+Kz`AKy`Y046fM*IW{4 z=yL~|=yP(35yM?+^2@ls55vrwshKvfV-!N>sdPH4hnd^qU9G&rkIZ2_x)rP!4D6$3 zJi!D@H7929uxwq@bc+m$gn9io(R^9;L>;q~z}V~7t&uls&27Iw7QA6u_uQ&PuBH`$ zqB*<5t3oX8?g?NnAr|1qmT|jZFsZAKgE9cfHyxiDh4blyIL*(SRGEzRynO~67=jeh zQ2W}40>m>P10oL)E4m3$+aD}y4>y}1dTHAgh~FC^*RDgF_;LL-kI=33>RtBMaFM^a zwRF9)!W-ZO1IfI4)jZ;&u~Qg2gGH3N_>d?A6I+h_=0p&gDNPBjkn}B}ad1M>3J&hN zDTO|<@D^ihg6);Z7jvQCr`W~sY0rY;pEgMvWnN^TLO&g5DuMCfgK^ChZ@33(X+qc;tmuB&Xfs7<4yknnD}~>FEwR$T zekUbRPgT0}fFI1}fJo*0r&Bpw8xa^{Z=F2JA)Tk)@>O6bJ+U>+M*C<;g3{2JndM&pTH0C$@Ep&75 zdS}9ug%~;r3%Mm$Y`!Zpln8Wq^cG=y4m9(2)Epl*=n2pb&c`xZ_j*?7jL!Ua)0Z=F z--IU)*h_V6G}7^`|FSpWB7F>wy%a=gem+*v*n?U!+V_xUp*4HEbXM|N4K_t`%J`VY zUV;rKXBde(*NBJGpNJnmpgWoPG@d9(p9tg{3e~VJvii!xA7#a3zD$6bJ_7W1!l_xa zg{iGPGXU?c?%D8Cht9ylGb3)BY8DJpj}OpDx_)p>7Rzhom%aYjRxP_mtU7e?>th3= zs2q_d^^vbrrU_TxL+PhhrU|-UMom}t$#mDX{Tzv2HTdXXHz8?iRMBSvAZUB_t7GO* zU=Qil@6(6rg{M*+Gu<}q0koI3(7`V|ldxuzOcUp6_ci9g9pfAWC@Jc|!s;3xc`VV-gD31;KRhC^`b4{+)S z3okwKYeOpR+cPs~D5#{v1I>IjX`Tg|dn@&`^x$4ij>_rCYU z6&Gv;`joCGl5@~5SpF&vx#b7J)7PDYldO14}9FWl$T3xhO8N`h4$GL>-`zayIjap?Fi@*(U zd(lw@WZ&}Y>hHF_X2qIlOAoe&TO&4ysjW(Wth)m!0-{V;Hh}8ivNA-&Z*N3tYXvl_ z?`j6WrFRyRq!`Z}f$PP#oXR${9YWr(A7Kb9J_Ffof_ z>~%hRQtqA2j8ZAd51gY1swa%WY-^tMta*>~e4=oBfFrPdbfu+ocdIZRLtMS}uvs=F zkP%uhaO$^flvYgsu-V(kK`5|KWPd>9?U@H!jhJ3g11OvH87vx!X`MCma-a^NT)ON8 z8UBS;%Iu`u08YBok|A>S<&v7Kvd1rpO z+O{b_O0^rCZ(x$tkOYgQXoUqI@miTJ(C=QyKZiriy-!2!tVAal;R`X!VwXy(aU;&DRJx(9G4K4{X`GTNAcF5ZIna!(u|=(6!ouGLbB4 z9X@o6TV(=6p9PAg3@R4UbEy5;r#a`3#>KB3tm#;f-bOv&0IJyFdTqwmDS);_oix)ziZoae-x z=WGex_%35eJg4gklDNS8s^KWud)S$3>kz`YVh`U0`tTK;yMa~Q+aHxFxzle3Fo*`3 zyKE~1Zu*C4l9&LU(~Q4X>Pzo$hcVj&-%qgtzPn|vlCl$WU8r;cIU>S^8QZf5ZG5Kz)h`&MCxDY_U=KP*#EY1!iy(H$`F4P@)&{G-YqWumjvChTWdEv18oIpUgyCU{6l@BYj|S2)Han|JnA481mJ=MR&(t;A^WWAkUd$p`sH4LjzSP*_X9j1T@}Aj#@YQ|i z=&Un)ivJEhs!Kv!EmfL9f7v0^ds?dg(V1sJD$Tkp=K#if`3Js}z%fv#HayzqC=zMH zFjxq9HL8RS;@yWn`mwPV8d52aC!zG50D>ZHzF6z!se3Pj?v4g0l_=_|BY#5FL?XT~ zE_hZt^ei23l?F_)G&13pVq>ezWju)6y_nz&<`ttLiIYMhBuxP@b-mal>e;T4^MfJm zIxPcvz%JcJmxX{`9$BU+fU*BcnUnvAtGABJGU&F3rMpGCq)Qs4OX)^hx25(frMnyHZ*F{^^Pcnhm+1ZDzOI=)GkdSK_L|~hlRNw`_Dh{u87hk!Bx@bC~FKs*5}?OJPg+{xoY#7#ui4Yhr> z%d*71>Lb4Wl1P^R7Ljz7s`;ya(0`UEoGbiK^??e>Kcs?15IYtyI_MY&7$zXE0@SsH z0e+wZKvtAy&HPb<43hY@ZNh6iWtg3ZNlW*if^py4~_A?OJbG#r>| zWYlewyUjn1kmS$DqlEZ^5bi<-6L(Sc`Gxqs0XaJ=01fA)Vt0H@t*tVqu;A{@pB%zY1i-p{ACdiev!+=un*S3!b#&y6$(!*2f7y-7;YGqR#;-6&1%IfiI zbZ9@e1-cQ3E?Vb)^^Vb3XZ=Su3_B_kQi=X0m~PItTkOB>7E@jA0Vj1Q9(E5$aW5kelrExeb?-tuILpUaTUA?IQToj3~Avz zwJcw<*bc;g#6BYAZH=(gGX*1)tveuWB@x$R7;9|&r8e)TkF>b`!8CeEBydP zO@30qLg@7uG5;;OH_}H`>D!@tFBPHqsB*}-s^%Dj74L7c3{j`wM5NWh>>&+q0EIK% zBY9$Lc?L}u?eRa(5F)#<=J_M^yT+pXRli;`|NF657I`lxP~Y?2^MOJ4Lxkv9 zIvAr3=$rhhL5IA(>2eITnh5|$Brr(;I_>$F(xvUAn!;V=(^qWeggzHYs~L5+1OJIs1b4V~CksEPp6|W);6J==X+1JD4NP zxA0b6M8@Z5H~ML|p#qgzOC~hEH295Ojun>$5a_lH0-Ec-?qG{tFA_L|TDr_@YX#u%Z(%7tt|(#6iZT zvJB+_vKQ7M5ZUT$dGVje*nkJpEJ=vkfvUguNQkC;$xbvw(k;XMImRhZ4+?&$07waD zEXN(da`EOo2A)_SPelcL|{wp-(_tU?q48!}q+flA~C}%2A`bQLXPt=zyjIzx@d0 zcpz`kiUyk^%$D*f6UP8oSa{(7ZwHP5AAw#~-5bO_H`0xCSBjc8^lnjB4#Z$MojyO!% z4z>y)dGUC{7SaekE&q`f1I!Ke$06Urr7{ne<ak-wA@M7AhqxiC&7eWC#)xQ6T>lMiT48qZ1|dx zkXuFFU&;BJ8bNcSd@aN4%jJrlYL=n_d%E1YTnczS-& z?{GyTK<(Z;AW|N;5u$jn3OPTY!lBr&eBeBmvUh|)+z(h3^y%n3kxNhD=~v29cs>`(NZbJ_4hr zjR=*;6vvAp%}=%zDDmJ+fnrH36xyFjOI8Mu$>C5p zl{i~(?Y8#!)&L6ydYBb~Y#?SKBZrg3EOa+9LvA-i?sa@fX5OsFwrBC@h^*S4-1qEVJqE|&e?eLwSe9DKvt?x=q7m}(>*1DsnGhW4V(zu%WK$1i7 zgrP5CAWceuDy3Z1YT;JUdn{qTAbNX2#O!e2it;Xo!Za7s(O2nM1*9w~tX>hH_61d~>hKwXjn7ll z6fgob{ae3L1rR}?=3dY0XV;L$=5=3fdiVXT*o5(&?%@ETxH&;rLuBGG6Lu@0&So3- zIE$4_v|BZRyAa943CO~q23F)9p(|*ZD;%cT<8{rvJ2*L2zSgB=<2Fr`m5Bs^Sdcq}P;hVHlT{P<(GmH84aeIehz>Q3D6!0Cc)8d$Gu`Y+F%n8?Cm`66P9wxI zmaGKm{e+#M9%oE`mV?WdBY+-Hjq@IQEQ@%sv2_m>V^vj5X6y#nuU*mx1$k4Nmi|<2 zc*Wo-wVugKYJugx(F(e|AuZSowvrQ0>l0i~Z*`wEjo@_Tf%LzQ8UKFINRuk$lJnfN z6pKySx7RaSZYehr4XG*|=vY=%g}~NUUp-;+4)o6tJenVsbms82@H}WVFFou^oQOHd z$bS9tTP2q{@112Ko(s~UZ9B;q)h~^ZKOSPyut@gaBm8Nz3yrb+G<&y;TPgcySBD8H zBSYzKM=2b@w={-`XRU-J;RMZpxAV_A$mronv}G835%hl~yk)%X`{NN=V7r>mI874G zGH`)evYj+`cI@J(>ZbK#gZj2t-t_JqZHj>lwBuYK7hkT=haC|9G$s;(?*n@!j0yQM z!Qb=7;i-@ie7kdk1}VKkwKQ(*4^*wJ%TnZ>&n1S+<{X#9xkv;)irQodE$=(*uba*~ zE|)m9-iHipiJ@spLcPQw6?n%{9Ns(c^Eds^3FhGKU;49?OHu)AyoOLx6ThWlw;Yyl zBAa;<*e~CG&T8n7Rr8=ej5Hp3HL(SFy?(_61RBOj!3XtIJyT6wle5S*?8oJ=Ukh1V z1wZZk-)ZfUxpA3)s1ulMf+C9|$c%`j9T4oiMaw;^=vL?X@X2bU2>nzxm?E&x=tPxNUeuTUeGx8kT@_O#g~8Ua2wEGw-u0lERR+1Vw?x@=1ij&*K_$ zx1!0NMdeExQUZ%nxVJ!?xCLjFzDO4xWS%DHH-v(=Zp~{wXa_z#++0vnJh1)6%rl5@ zk?&(eQ*5((ER2V1V!~ZvT2oA;LRGQFoyv#kFQ$nT3`rK@gf(e&DMA*>`zK;~%9~z+ z5->>=t#9$iFA$5HxNU{$`)@j{Fe0kVd8>%~pC-{4H8&hepdMs!k!qhrnx;TA#c%J^ zj@QxQd}b3dBF>j$@$1Y}V^lNwUOZxMp9y-arj3o%zLOgZd|++1yk*RH~H{CK$vw~uL95wifv-^ek{t=o^R4TDNT{Q2jK_&Ba=#&tmp73iTx|5xW zS?ehUDGlv;4Ob6SmIWqh#WD@YDeNu{KA)2Yl^Mt9mNbe5<@-OxJ=k@rQ`pTNV^x_Q zNUjdMi~qt}#8>RD{CvVm9uEAr1hqzF6Fuyc_y?mlB>xksZ9sLL z&VIgxJ4MkCMiegd^^oz%2HV+~gC3a8ifGslSORky)4S}i24fjN7I8cz2J??Z43@z72(GA>!(gmgL!YoV?YmLP*O$ib>ofFwx#vgC zvCrXU?&nm?^cqtZs1aAOhBPbWg|2I>$!A)t_m;OJiQG5CuFl>f83&70%ixFQvPxVw zjgX!tyUG1~!>DXKU<`!l0 zvuB7SW+gAleEujqan{)`RXTG^H-puoiabNNDUqyHIq#fBVNV}KbbiAuX)=Ep$Kbl$ zBEChXe=q9W?w}FjJ%a!`^ z!a1s6SiOX6v7sePv|@p4j%l$e=s>ir900+4y^AIq&br3sd7-0-Yq3NZO;J0u$w;4jB(u@-fY1HyUu}+nD(5F0lJrFG=qB!U2 z6GzMoUtJ5^S>H#ryija@Nygg4<6awt?AZQ^?0KIG?@XY3M7F;*4~c@ac23O|R*b3j zrR*kjM7pyGW^w%7{dUYbS<9P`-ed1ehj}cgXi}OjLOd_Ur>P3GBk@}YY`f9du0Je^ z2Nq9R{K)Osna*8Bz!_?qT0R;YZ`EI-3U4Q>R-3kj#!B5Fy4x6JHzA0Hj0@Pb5Cz~d zJMl55D_5Xyll!fykIb1ZJ@P)L<9{zP-c)KN5gx zhsu%5TI#S< zf`8|KQp&Fwdg6NgEwIh(`KAqAm1nn3;jBjHFr$~idS_P((MFyPm)6yt<`rFZ-pjM4 z0Ubr)Hrm;kRerIX=}%`2%o!3r=JzFWr!+}_MVh8pB^58897EeXYaqaL=nySorc}B%qC$N zPGZ6^w=J@jIo(?u`!8moKl`Q1KPIddys~zblTgqs73+f?<2uz=(KlzEx0vcUV4$g~ zsSvz_7aK31gdcpwHuHIn-6!BF6Gb+xP96{-^GU9xcf?p=IY@STvcq#-;3B<%6N5fF z&)^vDWIH1&RSFF5`a-t_?%*I|E#uMrRXTO~rhSY1hUyLjy&)aRv8X5FKh5AbRD{l&Fsj?=0@Len}ZaCb4M^;6Do_ASzXZFPma+kjrCD z^mnG88OWR-ybSvHMtvd%>`HYTJ|9nq)QY{}bxQ41B0VkeUS1NwR#`gM)pO1FAqRxn zfq9hqSrkyRqAVs#E^hF+ojm_)Q)IvyxCo~Nnp+s*~AvnH=6#Xhh3F@!Oqf;(_FP&3m&_a_jTRQcC|vkUjrI8N^tTi?t7c}@{{ff14J&=spn z)(>qIm+Yj@?B#-4(=C0f=Fqd1aY=Bs*I%C^>Y1ro+6Y8a8%N#UxXp)oFbf5MpI2yXUPFRg`Rkh!JT2#$CLGef*@B zG=Z5v3MKGWr|mA^707#d?K+xm=bYt&XxT|eaQ&EG9cJ3hx`}PzouXb%GW4%c!%Da59#bHVz56>(<7U_LN>vy_AX|7Q?W`3{VdJQB*%Vjo8%RDUnqJM1vtRyr+;8$SsBD=HXA$?L6!;nBnL=W0KWB6STbwXk=+xf0C zC^bKfH7qIqd5-6D)U9*n_?Eo$b@j)97?srm+eG7g{6aHn5@DzA=S*Z`n!oamCuT&m z&h~`e2mLy?4892;aNo32)vqd(=j1x}+ zg2%Fd!B&>OpL#(KXP513&O9+=Y3@&Lr&lWW685C+s z!rf`6o-&lhRmRA)Q)~P9<4U+cRx6!)PQ|J&zhCZFP6=Ey4^7~)+fiVYRGzjgj>H?3 z2{HCQ&b(h*sYKO;|L@7CGV%;IGzFzr=Yv3C#*UChi~IMHJ9)1McYcfvB$I@f5{PDU zJ7>mnyzXO!T%?mhXkT}(QpI6=r54Kl2|YT}WbDciP0U%|JY{GvvcyZO1QCXlVc7%G z7&MDA1WweyVcvQsS`EzqqO&lJVIe*`sl&!g^VrECv7Df;TkyI6Dv}tu>}MJ2_N6vjPyEF| z9wSfqe*TSMVjlC2E}m-lL&L+4p;kaMWHMy%;+eih50jm+x-8EYf*Wu;ZoT{4N^-}p@2 zNd`yiQt;Sy_osLB=PEaTj@=0eKCKrOt@|LthRewXbraX1!TH9XGRVr#L+|0}5&0mB z-IY(=6j+JWGrez_4@6fNFe0BmHt8TEK20|PoZeI7;Om3$O0R>))d+_Ywu6Qtd-9vp zV(K4!J+`1g z?zk>`X?vpnybrp>Hd{f3+);_nzWeU7T&N0U9_6omP@L{M%jeP<3UY$k4;ry#JVoC2 zFr-Faj%Kxc*Z|x+pO&{F=X7GPuzEVzs#Ez?;;=zlFRX>8<)&Bj#JNTMPOQMvQ~SqN zo0chgb4rMfEB~Y0-R}|&CXGbKe_;a40h8ymm)C{8Ru6-cey^S(dJmKLo&?E+jzuo+ ztqn^T?6~F17s343TAEB{s#&wAlXlG|w*~{uM&ksXxAm){`9{%`WQ8x^75oZ&sK%Q~e)YZOe9zgeoLcS-hVEohg1uACz1}0n29fIQa`5f}8X6=63_Qub z)Bo&reY=Vab%oW214VxkeEkq0$)Zs<&{7YdN!gTa>{i|M-;xlP48~P+uKu2iOIKk& z93%o#ONL<^YvufWBqJ3i&H7WruS502WL9E6Zi_Y zdnrM$=AN~c{7W+HL*e9zk6dyBb~FCGFKu;SZuZW4*Px9DYOEuSs3kz96I^ zD6CD2*JI}{jpK><4c%XMkAGl?tKu0fwhTku=J~WQ1Innu@pM`bfp@U3-tBQiug&Ks zJ9>z1>Qew$Ahx=O!=GuQxbH`jUB#kRqrn_^D;GSlzwEit{&OI-@s>jGO|^pRy9yaf z8c=v7@-g?!{i<=f`n$077$H39Yx-ZP#uxQ(tlw7kI}Hw}#F9C4P8K*6J_>Hfhmm=E zrj>w7SU7eZZ-vLNA}=xzjAu|x5Z{Cr5F+~e?A5xZs1?+7qv#tX488K&`W^&@xy@ck zpVUCnoG&)2VAOOE$HX&y4U{HtFeP?Dpcgcb5;!>^DCvx3xE0$u~s0z-EP0a3r9 z!1Qq+2r$BrI|WUkp6>g-+F@S#rwfaNn^8ec*PuT6=4=rfLLQJ0Sv9N!5JEcmis<`J z5{p?Wg=P>8+t^2dBD`(g`v!e059(uf{kg&E&4Cq)Q!X2R(Xm#IEU_u zxshqLdfj-ei6;%eBqx5zRBRTWoxEO|?XOtSI{fc(+$W-fYQpea>7{mrs^4P7<@Skc zl3LSdx%VD@RGuLzO+v__=aw9~IBM0e`KaOw2E~^GD1q%&%}Zb(%s`@w+2iZ zWB4YTf0W4(%0cZM4-z^F)OP|bU8tRI=Pf$UFX3l(RfkxIayw3jZZnj6IToP~5r#=Z z`SYVf{u=Pu6)?dQm^tjME#o>&+8C#-WiEd*SiqRJN~=pZ+Ie&*t%cSKzC+9PPCNOy zJp;$jD$g~B@tFM$v~DPyy_(5~)~bz6r-_)8kKfEFkg9_^i_fm~8j&t9t4JA}?~x&H z4rYpff6k38Wr!qtNmQF=VeZ?t5RMaCny?!c&FQuWw_ejYe&VSA=<@1+=YQ!#t>`%-VGtg8E zk?FBz`p=jxL}oR-TuM4JZ+^9}Q8P-{cp?DD{#ch{NFUuC+nfk4rw||359j_kcttt@ z#hH#{W)lxyTgBp}npSJmKOz@orR?5w@WB46p)jyATl{fF_T84jKIiq~BO1s5S$2W^ zFf8WPL(U?;J|(`E3l-n^gv!SZa%+eN$z4C12*#%_ z>{oiV6vyWVTfGD9MWaxnvNP0jx3C({4d%lnXmI-6S3K`)p_|tIslO}Jt1+_mjIajz zA~=l@$~d6yYO(O{7_)fXvm`vLMN}cP#fU-E^@>@uR;Sye?OZp}&t<^(dcc$VKP4d8 zihQ>S{?^M$T231WmuPy3khkIUxFSWQ{7`3*2#;nWk@Z2ht{f*$VoWPoeetX zGCS3d3x)Z*bHvxV{&VOv^em1g<3O%f+QN&zVcpOdO!4N=f3SQ1R_gxBfn>sClxI&+ zoedX)C#UrTx6i(bc2VYei{6NuPQ>j8xTWoZ`HlAfHpk-A&z;`{Hv*8nC0mP3T`x3QKh&~x+L8BMwS}HXLB!h}pJEEJ>~Up$ z_BC2;k3YLXGC1l137NgV9htu!^u&Knzph3 zw<;Eae{cG1QMkg6|2#F%=rs`>?o4O$4Y%pAndO4_H_sbgbH9-2;$HNNdyug{9Fup7 zd#tT~vh>;zRnO0v4PeTk73@oG+!mes0@n&Lxfn&e ztNrhJmp&Tmh^%6{cPxz1As+cPKZqm<O{M$HpC{WP-Fxqnq;SzB9Q(}$uR{g`dKQm-#v4@jP*3Us=W0Ej6k(4+ zP>jpn`bB^fUZy__=PF?4OWQqw=``{+J9ai3PrXXFIxpHg4>y?|QQ4V%k1xoYa`Iumb+81t@eo z?P(P95MnTZtwKGT)^KRAVD0?=*?QvcrV(9TOYqaV{~f<+#x5&s$e;OOgs7uO__Y5s z&3(SssGjc{0w5Sj5UF4CszoPfE8L(8pY2~)IHDZNx!zU!dLz|8ki)a!5T=wH^E;5T(OEhsh2_*ZUC$4LIvLjz_sOW zOP4;r`K%PIWa@uk5uI`3s>y}jD;sV>v&)B-gv#;Z+-=%ch>6FxJ4L+mM2-*{o%)_Ub~LZ z7(am4y_ea1FJM!;nr?uX-s>h&PKm`5i^#}(_cA`KFD8EyANz$L%ajxwzkT}!MRL*I zAx~VKYQ#sKncS2TfE}t(F>JM(14;FFrIgLZ=jz`$2ZC;R@Wo-=Wzt z?;G5+3Vx#Bt{HX{xDZ;}9o`O0%I7W}cRMS-v_aVcz+IF+$NOf0A2Vg$|5jtxeCD$L znS*B_F@tu0GjDItulS_s0>Sin+q8(I$8P0h`8$-&e<)&)u4CkUKPkxSv5*Hs@b<9OsdEx z?&}HXjNtT{ko1`*KsI^a7i&wPa{PfD(IgoU!$m`bryhg9C>&E6iwT>AHW9Dq?wpL_ zJnqyfL^|Vzao*dcLSU}&o`BOTMcc|9K$-(;_`R}Ljh{Ax8(Of|)TQsa*Weh7R|O)= z{IY_~*M>ft|BU+&ZVa}eHXl@z+xkM!GjlR7`ReKDAa;{6Y!D7nlU>EQc16?b&KY_mXvNw;uXaC4qwcizCGo6d!S;2#gH-Idope)J`;=ta@?&kcT~YU!AHU1d;F(s@_1kUH zre~k@jypcOh%+_F&qww@bZ)H=UDE*&I*s8KW(b;}2p-dXDPJc@S^5B4E9=KH9~5X^ z+lUq+eARodT@o1(XqwAh_)Qy{a8QNPkeUjgLQ0V$ubfJ;_?^}=(%*0eg5thvKGUL? zkE(@5ZNJ-2eS@E6f*puTJkF-+nsD zu<@O`d^f(jmOXV@?XPy(oPS<1o7&aIg3|={xTe`ngn-lJ^Y?O{UL1D1xW3%-i|(f{ z#u^jjFaID?_ld>Jhn$nDcu7Z{w@_2OAkF_qY5L~oS>aa$2b2V4&iElXLM@eciBo5> zj+op$buYSkXAhiMLE?Gm-yZw+dm3>KB@HwoZ7mPD65t)q`#OgJ6wro!U zWy4(f-i5l!N4YEnSv%aIODfO%?QY?iM(f496Z8}9n>szK8}592pNMlwyM%$eQ60?X z7f1ntb`Mp#c8|N1$+o8%3LCcrR~xrlIHXjXDn8ehMn()eg{|?WoFaKy3>Zr7u0BNq zO5SC$$pdO6bb!%S*-0u2m{9flk;R}!R+2fkCVg)QK=&iQN#F-Jan~Dbbx-ND`_AM0 zU7l*jR|fl6{#!;$-&BJdIunxYg4{dvUaE8S5yseyMbUm?*fgQgfx^LNs6yPRxp*?2Bsc*giXrv5nO)}8y5 z_Uc39NVKzHw3*CpCdcHit>#Lp@sSq8cXojktTsYDY|vn;hT;11b|kJ3>MVD@&27wU z*>i^t(bA8w>#O41-TM)-_JIkhWLwyg{fEvZsYfhXleW-2cKdY|g4b4s?wYU|+wD0? z#c-yqK}eR{GYLg3#1Bg{;4+8=;6@`O5vk7%dVbX_xg{0fQ$pkfY;jWqt#Q*ue^Y^j zifa3hUU?lBskH*TXe22PZU(!3X%3!#ke!*F?*C$kvm7={;d2R-OKW^vag2^FAc~o3 zu<3u`kDytNcM#1h73M-W66GfA%)oCC2&$sio=*&2O5Fy|Co;LsRVI^qT=UO3&=X5% zSrFeedmeaeRUZ15ywUbiD$TBQ7Z)4Kln+ts3j~)B6ypnq@&+I{OA*zPs5-pm`5^o% z&4oA#^cf6JWzd@JmEka$p{yjCYcrDttpH>%ri0E%)T=6+DSS3hx!YtVbH5nTl0MGS^GER|3Qx{(r209Z=C$`L zfj+TM_($05D4`dt{<8`mZx_Eca~_6V@@(ewnk5sCeBdF&_`o@r)x}udMK0dhIApK4 zfYIaA^AQ5Q3nkxIb5e}hlUW=&{OUoQ_VpHDqSbRa>Uj%QAzYw&qaTlA?S~3uil2qJ zUgucejp#?w5nmMy+B8ZMbC2~mC=~H2qpptV$sVRaajFj!tE6QV zZ*^k1?Q3F)NE~&(8E$Jw=;AkhmS8#UG`d?Ex zuM*Jg?`z4q8TMgkP&Ju}oC9l_4Pe?YeMyWegUT3n;J8t`xCQJ596_8p8JxAji;X#B zs}~s?k;3x97~q9>s@FBEdm`}TUi4k^-<9Ld`g=w3LGhD1!8;*3Vd~iI3#vWZqfY#) z2V~Km-;q*XL@jH+*GqbxtC;TyF!Th%yf}S)S1CE9ZCYf<2|HA0Nrx)_wYJEHc58;H zq;os>$Hy2LI0l1zzi|CfuYD1;fh3}e6a{0Ie48kUVI7TBdj%>-h?W$yNR1Y4O&Iaa zXNt6lRATr3c=@;w=~j)Yn48d)k2JD*tBoMeAc(yqKv_UeQfQ5WW=>))7y;e&_xF(y z4Y}#=PAKr>3r()^dNR^|0u99Ohv$8OI+nUnkQQIw=Q-|b!*RdQy#*D15WT6}Gev0q z^7mS&TZcslekVzD@}HSl*~ymsqu$zxua&$>2}GB6QJKM8`nsk{FS=bBDu@J6pBYIL zD)z#GPMNd8lvS?A0T~82qVPo~Q?QkPWvW31VT8IsVNi0Oiho~%MVB_JR;Zyie&;Ux zXNiM|z=C$Rk8JI2Y7({`<3^_23@alqA4JntUy_6`q9iH^jsBHq^(~b+=DK)y^Uj~b zhBMUg`8;9IO+U9@ROSzX0|{FHVN}Jo7;^vB&#%Y68Y3z8N9jceNJ%m&j-0@fD2`nf ze^LMr-UWOLpE6zNA`5i+R_F!zM5*pgNXxZ}dsRI`H(mW(VJxGlSNdDrJ6dmZZN%qH zrCpKpnw~jlDzRsh44|;Z1LnGI3 z*n!r1^7h8g)s0GdH_x^`;~vj2gwRV^KMinmFLpa8f@}D9PLJx-mwvQJ`K)clZ}L*o z;tPj9KbM2I?aP6i$N9m%}dt}PwOg3Y)*_YYS;`qcQV8fKjJ-24o zhaZM8yv#P3z!TZcXr6NVyFLEUk3mbo1wQ;e14BfG>v>x-!lK~)J8dR#|Gc`M@bTTK zo`~zgeU!or7K#Jrz#THa_PD;-P1!5avxE?=rtswtfpA*OZn-LtZUaO}s>6+!X~j)( z4d>Oa4DH6!c|wjQdUD4myE8=ntAAiwXmc+GW0)2d58Q{}Wh%Xh`c5!F9-_PmPv35g zoT;kW1grP1G#b09XjwO}siZ+pjZ_0TQzig%7Ez!gI@M{+vg-7=f6@zV($pPTmRGV> zu1=OmWx)qbi+aa@t$v&Nr_x|3Rsj4f-bJ%H@r5FrYq%jYT4HPnErAMPOyiRX5{pB6 z30_3`#h@#4y5`ff)Z9=eOcM&s0>w0}9gl0vy>9O+RtVHHcwE-9%3VT%on^Hv>x=eN z*_w9f5q{Sd%Mk(BJuQJNrbW*RN7hmVJs-_X(na56oHoi$Sap%$XrC z6yLbgcMD2a`%W(gBE5;l_q1SnCji0cO3dIh^NIXoan$Idnx06=Q8Hnq8+Unyna$bl_Msc#FL$d1VxJ#O&Z8 z9HH?=l*J?@g;Y;fY&y65_ z#0=~4@2s8aAvmH!s8{*KJ0pJy)AuVEG;RL}A_tlzPk3_9H9sQKU|t3mfp?wol|7dp zh*z$^VcVC$@Yp?fA@(8*%>rl8@$VkG89{VEo2q7!U<7W=tBYpQdNESKp02F$lLq3$ zF$bQt!F-4lai&yvOCbP1QnZU(==h=bdaRbdSwX>IAy=41Hlb6r|9S*<6@W04T=8jkuIFNv*XVBv*btt%+vGTbx=YBwq;5#2qmweSd zsp3i{g?HG2%U?3ZSIbaq+x*^%o`T>S@u>f&KV`@CMm4a3E_Zju;b-s>9PAi%36=ap z@K)l8Uh+0*z#PzTa>ksSP(Ag>i9GJSq89#JRigo@Yoe~(#+%`b?@!4aG4p!Tdn!4b zoJicFal7701{}jtjKm-i^i=e)u?V<=e{GMOrK=ZZlKqT8U{==VIMWB;vz5GJyg=+0 zZMb0fA6ZGA?(;qySoV6Sm(N};yearKpK8+aj#%y&C&NL{z}F@5zK-W80yRpifw8Y& zmGiy9NUz87PIOkuzhY~-+R%-mW zKEZ1DTjf{wmfmp${r4<^Dnmh%z7F$ehE{N8Fse5;t(}j_yFrB^n5-mTBO`Z9*;W5P z=mi}{a~sZ(v?4j;1L+pim|V&we&>vL$Rk_noIc8D-Ud=1?@cLk@l6U&nEcJ+AXn@c zYg)BtSznC5_sSpdi{Zn|{h7X{7((yx-cGijnFgs&CE8x?-x0oFWWAlAGy=`p+@nR` zh-tzM4UcZU!G{XeWpfXvc!!qXvFd*AjVS1Q{Ho_3lO18@d3bMUGO3{s=7_RgnQJt~ z@XP%4-Ln4XIm35EF;1+N?tGs@_%ViaXD#YBXLT@_Lc z<5=U+MU|D`Xq`OYt**bpq&oKD zL;1bfgLs=*y55?1vWmq5P$;3U5r(St;I}60SrXNgqQhc#)*eX<&^C3D8&Ei>F0u-a zUAp225EXbE>4(E$P2;l#UkEOH+eB@B5rOwZ+4|kv&e${%t}5)H@E*p9nCMFU&cry= zP#D=nx(=h|yXsT;eV?LL&>g*Cn$-w>XP+ZiRIz*-CUdYGOn#6YnKHq)!e_PjDs|xm z%M}kwKaTI!W=bPN!-^+j6R{k0O3M{q^^}qyhqCuf1vU=!(e4q<#pJfOO_Ky{tOVsD z-5~+&`+5dSshSfWPXOE|{~tuMBLb@H=56#R$*YK2&KcI??n{pnJq%j^b<)4{50Q^) zd&wMra;8lo5A`pj-L~K9@rOfDNJRy|p`jw--B)nz$R_#2wC`crjZHhP)HR`o|7x+e zgedLw8MIj$YsL~3Pw_UCi{>O1s?894^@0GG`ajsB2pyX}^KRn%R;<0>^C%qz>Jv3+ z7Njy)M@JrCMK)7Q-U8L!ye z9I-LuK~a(Mz;>T^Uz`%J%u-bTFHX}x3yR6L7Dz*Jr)QMiE+5Rl0;y`(^X)&Q-giU% zOiJWAB0UWoO}5J5FJ{;hK+0Xt^mQg0P_L4C{C(!apST>dk8s(bSnJ5bP`1H&pch`z zq_y}z=YcOXjOHi_HGBi zkBc=Oas}UGW9dBMwL%Wqa!MQLP7sfRzDbEQ*v9ZF8u z$_7u+0Xs`-cb`c4aqm)>Es#NV`m?4rp!vNqH~a7l=5R5p0L|*}xV_i02Veo%X`2Om zrun9z0DlMNXZs`ci4WyK#!DBS!Utq@59RTGCa)o`eG=jNrbch{^+WWkCqDK89reMn zM>Cmz|MUM!0RV?B7Us7qEKzhK+=CuDz`cfm7Qn7hnd5;}GXi*-Or@RekwKKo}EAdHut49;1Pv*Xvf zx?P`FsM>1Nio@Rq=|J}dke83U6Q^HITLo2dvArm>2W>IFcI_q8dWa)F518;HN4jWbat<|%r^yFB#lM&Mb*>?b z>!Q-~Mb{sn%SBqr^vJGh|A)@(i1F(kn@PHL@wrmFT*y`)v>2HUCkRNv`bS`HTr+*f zs3Qvz;hxnazik|5bsHv+HjJr|uIB#99G%gK$xP-sIz?sCerA8vUQL6+&a|ymAFlP= z|G3621f)W1f`*|PckX3#=ugZgR$%JrM(Az(xk4Qr$Za+v7Mx0Y+fOiCXVuB)L7UB= z4xDS*TA<+Yz4!v1BL5YVn<}I?7(M?O=h+I-vwr2=ltPv5FZudk(aHFnDf-v&Tf6SI z(z7@fPm`5;Tn_j@e8l4-?Hs*j_qj|gKt=Ow5n2PhgvVN2vasio_Jb#oP=@2z$yDLl zTJ<^{eq%P-P5%XrXSG>ieckVABoy;Mtiqx}wow-%uiIvk=e?vIf8&043Da-ITWTg7@Lmp2y8r;5k6R_Uja-qr!TBc zwSRE}{TI4mAF}uCFqP*DAHes_wt&paRRV+EHPvv)Cj0^pgIz9&(>+=+rOfDyK;I>q z5N-J;Cre;rvpvV>kISNF&&k@oGruv*yM+zqAf)*0239hEdy4dxr%2~i|E=VyUvRBC z>BhbHdbTUGMMEHH?C4sC^uLNIAeoDHhi7dbjET6A{6*oPEC;OQ^6pJJUZJWTf>o}m zdwzR*pF2@5h^?Y1YE#MYf^8foO1{T!kO@&c?0M_oPpPVx3DY4qltYAt#mYQ+X5(yD z{~uxR0Zw%rH;&_2m02mrJS9mej=hhDhE-HZ_Rfs#c@UD7y(wiB*(B>28JXEDl)YE> z`rY4i(DT0k_qzVq`eSg+{GE0KZ{?@bWqh}k{a_l~Wc3z6x8yel#`w!kF zYUSXKcHR?;P8;3p?)awJcON#kna+{2w=nF6An%vuW~21a=v{VgNbViDx`^K79H^6HosiCWIW5?;AZnp`K8SgHF2`TB z7AM-N0?9BMJ}yBc_Aulha%K1#L}+_M?y8_x*#60#;r zbzQk7kL++SL72rv`s`9AzfKjCsDo)t^rdzRR#JYXR7rToKk@hi0;<|{I=B`AOEVyDvkzBh%jQC-8U;d4jz8wl9% zAE=7oZ^Bb4J;DYi&^(tz=k0bScW3;0DUn?5_J6_&RDW2#1(D5JaJMYD;ixRJdqaB_&d(}`?xGma1=8q_Ww*m*La#ogGW3Q2z-YA zd$lfG5?|qW&9)vQtmR7Ilc?HvpTVv={t8jEL5=wF%p%WA*fM#PUIw3A9pUP}ryn%8!Ks7^3;_x?@o`q77Y?S+EIv{E9jq(D&Iy2KQ zOL@!-z~Kk8oH*MH3#pIEf&PiC>ep0H@xSeRV@vAMCi3HRk)$bSP+zCbot@>p53A8z z)w>rCH#Z_l9Ag{DIeA_BlultT!>+Q$Uf%H?0Th)98-Tb;H8a1-hkAVMKV_gl#b;e9 z@H(Kxu*;Ilw*n-hDULMScDn%K#R?@tedk;KfU;eE5(gUV1&?tIU0sel(bJnd%lG=5 ztD0pzh^6Ulh#MrC4!J%<?UbyeBDF?n925yZoE%xk0N?LZnA``^bT9j+=o zd@aF6n;^V;&|?B}Lp=??=rla$^epQbU5lmfK5#0DnaTbsjI?NSsNU6bJthK9VsOJx za>{*?r}I0}WZ{g&zYXEUPvFFk4nk+^nO;9K=2p}aoSpSi{u6c2B%Ce$i4!7tPt_#N zcwEU#C|bxm*|^}Y!bv?){5PK5&X|$#Y{pd&<=1{Bm&2(Vfs>e8 zdUze>-^kJ-;k+eGje)`#h+^#7TKr z@}@_Oq%peEDnvRSJee1vShj5Bz?CX&`w%gFDvRsoObjo24xAmV=Ehist#);8e7huQ zUYpKdAx$&+XPj2pu_}A`wT#DOx&V&b-fvL0i>{>%k~V$8hUdpYqF@S*_**+rgK~;s zn{8tLHWcY&Z_Q?gIF1)9Bt6|6fvv3Aj(5TziJ1{o`DqBknkgbxD<}L{w1u-7a0&zw z3^$??mLqrl{pw78PlL&+3P&hs#ZN2Uh4~tR>hslx^^LRjyPC}Gkl|_55B<(=oJJ@Q z*Spqx*UGKG>d~E-Tb-sN(#SE3ktNYGN=;ZQr|LP*Q#cqbvBEUNX1_d1-p$c*>pv+l z%B2|rYt`3WWDoB9p%{2zr%xkOS0THVdbWPfVavxcuC2? zLg4#3nc@$ln~_ThPoWIuH+6r`sM#iD$9|dK?3qx=s;l|o14QGK#(XoU>}*W9iD1|B z*ep?%@24*SBS;jnG0Gf8IaB3ERX=pSPddTA(P{|rVSlFlbd~mCKT!v-<_`mn`S$gM ztqQvxEr>XTA#rZ{vUFg|>&AZhnz>j0w1B#6T3hRvBx3>zmwWixlB3{l5Dt`n8Nl@uE>we|Uq8fTTTWRit z>D8k9z_;HeyhE;e5nSO>^rm?H2hZYQ+4Tc?4UV_4302@^Z2vgS0Mb}eYifUmf?AqS z-(i2nXL`(G6AhpmLGe=4uZjbdw44gp+dZyHMp2u1<=eN%h;+)esVQCd?9JM>Lw2t# z(G>CsdFD951M7J#`J6@%qOQ3?2tJh5Y;q8Dxe@G=7i2TBIhF6#4zEcJal2n0?R%O(yZv zuOChpjM0Co{7QuuT%oACxN`OCy9~?gI~4Juk$D3}l6pfttLe?>aVCSfZm>h@`;Ue1 zS2ik@t_|=1QnqP(wuiL;;lK7q|2D2bxrO%1-^WfMn@t*oTAt@d$IrL6HYg%^+}Q&| z4b4J88JN?}*55oX!LTUXE#SQ{bu)cQZ_x$#4M2wy=@{(rId}Q%Z(VNj(093Fk;R|X z??ha-5Kr%#({y;H0GQo-jm3F}q%lTcj<_Dh&9ihPV#bPpCWVZy%-^f^fW3{`+BBJPg-*8wVNJl}9vhCMxpJg%9llDMHaYUxCSMnjBy;-JpX8sy~sj;>~KQ#F+?=-*O zyHfRR>RErVR)M|7%d3f73IGg3yi3np`aRqS4O?!rnsE47ODqq0X2ql8N+Z-$8%kM4 z^&38w$x20$jHYBpg6e?D-pV_=BoN5Sc|O-A5#<_vX9C_*w-94s%PGDavUKQ^YLnL` z@xa8ZEK}^T*~#)fn|EvqR<^z@+4}W)@~tCPJV{6?qMZ+>%Dp*KzvQ?e0u@4q6r)&D5KW$c7keV>hTq@x%i0D4 zgMtnNoEASI?-bjxtvr%uH#fd?Q=UAM@V%f_&s$2F0)-WOA1GCZ zXS@95NA4cOL284Va&}E=^5Q03^~k^;p@YR1GAmIgFS$oMOgv5CNsLkeu<$wq(*|W_ z+%eZQz376^?c{tud%zRY0CRZocjsEjeDdYLoXJb~t2;c&nl$onf|~~*n^(Kskz2Dm zJ#VtC{VO&bJ1jCp(k>LF5gNwvtbfc;#p){xIH?SJ4mjtaegt}$`j5GmTjr_-`$-x7 zn6cMlDmm-!vQaq?Kk?DBgJkDFR3daneC-YHvt$TcLJw;uF{`1E#_dgNJ*yE8-%GLE z@M3}y$rOa9TMJlAF;KV)Q(z73ugxfsr3~d;W{yzXO_n!)=C``DVKo92?}}Q$1#{TF zoBV&t9!I1b{`h;3O^H(`Z2t0fz40FcV@ZYYdk+oK1%b69uZ+_{tKm-`|BWd(!sRZf-hX_1{^W&x(nOrWLlWFrMRVD!9{iHW@h`6YcDk+3>Fol z%A@18d;QF;7I)bBthe(gA=4LQLkxT|S1Fk#LVoSEwzYiVJ_G}kE@F-lnW3Rtv1Tu9 zE%C#w(nr!#oPMG&hcmXAS#?vs()^ zf(o3UM(?ELiFa%8624F}7u}b*`U|Z;l8Ri?Gi=uVxyb^meHh@IrO)i9d5rLPc-D0x z9>+(HoFT4KM0ld{-_8MV&G!AGgd>)G=NwuY zE`5wZmnIg3{n2Mpy<=>IJL;e?NOx6c(TxN}N~2Y`Apxx{-U1h-n?gw-GzpaunHPu# zlKxzlfb>Y>#~ARxNGQn)9#0*Uj1pR!jNBYag&~totawZ=RK8z!zLDL%@pY}@2(1j~ zsR$w{*B7MupWMFMJI4u|I4pg(k40ynt1pc&7L(xM2B<;TV+7sS-U1Qv1C%RRVWiOh zI6vv`54`R7phP_!RFiD2i4f#eOz{5hbv*`D3?{0j}&&H*~mQVl#U% z7v?g+&RY>Z3=s@HjC?@;fkt!LfogrZ&pIjY473>zUM6hI!t;)$uHPBQum!{Ic}&QQ zna*%Pg}+ME964rM2ZzOA8ipgle$cN1LEeK^0S!rI#71SQK)){*4F|j^w7)lH05xP| zy6cQ|F%*0_@MV3TbK16Te=$jwm=gv$ykDd1hCd;Im_)^T3XtFyLC6WoI73Vo{J!*s z#aEtjT84OUEIu@zuUz+VA;vxPwHfbRbwBW6Gl*HCm#;Sj4eSz@kbj?@6aq|53EuC$ zmlKK=9+w(13gN_{L(#J0=e~-D1sN8Ey+2+AO`{(Gr6v!z(@zR0lejb@Phf|-pAknx zRKa8q5G+ynCsMNf`4fC#FeH$pkcp)HqGm9CyRR16x7Op}HG+9%&J>e)7$ zIJ5d1`g{aVd?olN=3UMWh!ZSdqYZhVyfBuuZA+L=iVkYJ1NQC_fZn*D9|0~*kQr)y znp=@%CWYe~sX9C&>zT5GBqTgt_tLUA~$I+#0W^*#PgXuP{TFwk%0a^#nq`o7hND`etLig7`F`8Rsn zboz2lt6!tp+Mk4h^jE436}UXGef7n$o@p;)07N0~l*2)2V8B~{ji}rx_LFW~8Yy|Q z$9TQfCD`vu4Cq>OAE>{+g$`Go(Ton(aVLPIDcF;YqkMd{TdXJoty~x8pDTh+NL!jI zpG*yVd$6>5!wa3-t{eh*zi}-}1@u?qiZJmF<1qU?lAWm{&&h@y!EQt;SsS~NrIRpF z`1d%+$dO!iDtxp9we$sz+11|%-mejVG?Xy!yZm{q;8{Umd58DWQnbNRv?<_G@$eVB zal{f3+rd`_sR)-8HZ%wa;OqQ2d>>LY_=AuSB0eJ&?7nujWEJsh{MLdQ@&4lcb5p0@ z1MIR1qR^nZPy{+T;zyC&hQ2V7rLaRu#l*7l8L$#6c|bV2K6jFRuvDN#41|G(fVt>Z z>+_3Yz%tsHF0M}Z1PU|>C{P4Hjyo@11gzBlk?Jv zV|SOxyL7AHkKi3=oT%22DER|Gdjzl0k$GKuPO@r;QQWEoFl7dzw&n?f??U4?mPxmW zf5`MZQ?Dq`zXRsgNz>R~Nvu)gj6s1*k;c2{MMF07BAP6i#{_pA`<_K9 zo7lhHwYC1%@OxxBj{d~AmgCbQ=<(I=%Qme?&A`(JwLUxxdL0fT&W0s2PDg8qf!2Vh zt&VS`k~)-az=Wg}Z@}!Z4%CBQCgX0=pK{G~4sJm-y@U@7N=-*(O@68_U6;~u%B>j7 zF>=GMPplO%kF7VKFP25H`-kLA9KM+SX4*@V2y5R+UXrE+W^P^uPhN%Ldi6V?&6WbK zE{{-StL9oDSpPk``?&QRj`aCI)*IjURQ&P-<6iN^&1OpMIynjq7ss>oX#2j^)D+R{ zz+x_ou?Yh9mX+6uc@#uvAW!e-b7EER?*z8X^i|mr^@Bp6$dZjek9z~7VqdKM5&a!| zzOv>e;u(mEQ1}b?Vud!L7;Jd&moi9iy#!2X%1sk;ua@{8j1&`)c7yp^{D?2VoDgv^aU&X0}Ngwu6XNSvoK7f82s`tYJ$YQMy^13BcOi!db6`Ad9RXDBV z5#>@DF`OuKYU8bl($qr;!J+e0!4KBP>q4NhRjm~ZY+rvQhi_k8vJo=&#Twl~9-&u`2LX2y9yny6lG~(NCYv7hjf5eX}s{OJ^@1YjuGD+rNMC%PLFjXpdRop-CuuN zh1Q($$EQHBw;KDAqhLC0_C zh+DFe$TO{nZ50#!PD8-AWOLmofJmw7=AMRwTf%2UNEjJ-VkIQ$Q;4giy3Iv6O$3-i zl&v~X_U|NVj|x|NJ2aG%8G^>lX|HR5OBnR)Ii(}$ZLP61)OXHH1ojj$kTdxx*M_lj zCMdqtl;%f7*01Y96^}3U4Zm_^TG{WF??nQw1=AJq$5KF&KBTtvKqMG61k^^W7z{Kl zyU|I2?|}M*>gH>PPZaG;?B#y(p@%Jy>ea`BC|Kk`j$P)(XpYbQH*Pu2{&FO6;wad9 za~o!v5yns#+VeJKwPb}}L30!ot2CTa{hWHG;#slA!syrL52#u+4+kTp-wuF;e5Cui-x?~p0cU+B(Ku|t^;ebW_R9RDl`l@YaHwTjUyxM#Q#*+2W$a{8Od zWOfcm<|Jkf%F?CkS#KzcUsL#CJuKX<`&(2&eRS@&Xy*&JES_7IWlj`vZ%HVb?uSx@ z%1&BGDDMth&x5*e3V+pUEYDqNz|0oU+^wag^BybvNwpGpp{7(%gO~#bT2o&Ue#56r zUndbq=EV+Ur>=*B$ye8DU$Ok6xcFuEi%V+ej*t`YZpE#i_YS%@{gO6;-`i^4dUg_6 zA2J|RI7ho)V`GFi9W6}m9#u{g9CTa&VNg{`L5-669r$XIs@v+cU3_N6@)-XO1l0Uu zO>A3kbRFb=G*%BBC?QUD5O)n|EpIYdLOR-lct7@=y!bpH9q)em<%GmF4Ha2y1@!aDlxJTw-BB^VM8e`zjU5Uj*u7FOrF>)xK%e80SY3nC}e@_ zI)3z~&t8()f4Ao3Jn4JBMiQ!ZvXRWVbRsAXpC#gMM_{P_U_QCkf=>RLQ-**l5J$5) zVm6F{gt@65%I7#0-N`pX!bs>BxMbedt}Oj#DUe)|9?nY5`WXYi_+!9)dd8(4)UP=R ztI5p@uN802{1UkjG2kK1T!On(7lJ^2;@yFFubYXPqGl z=Y$PM;IGDR&07#FUJQQhPpjRf1DeUSJ!ckwTln4-1ZcK@f#x7%&0;p0!?R8K1weu%Nc%60Li z$yNvKwwg-~G>$6EmdIfXC-oFkK3|D4Pb->{t5q?Bs(F$npXAhqJS94>@mM5<_D{&( z@IY5a-PZeOcC#QrQ6q8@3d?v>MX^zuE}0 zRP+bx_Je@JOVSzvX%Iv(k@XWp(`TZxntHVKQE$XV*W>ONy10Mk1?4fH?P;ueTlico zKqX7};shbdQ@I-K08~|oE{Y^9LCBhAUg_jFAVQ*O@5&>bzX+K8t~6Zzriu1c6Iim4p>L2uDRKEmPyh`nZdg1QKY;}V}j;1T+a7g}oZ1y+68<$xM_Ot}=GSWqZ&Oe{NE1o#0vx z-Ga}NO)YbPd_hCL%i{bG*u}ghNo9wvmk30qrk?)gs@7O2V+5Vi3S8RjD$h364I|&k ze;F&Km|U6jD|sfR_u_qIM=)CAyt3b`_7AP0I*5uW6OqT09$V08IfVxj|bX zmw_h_5i+z4Q^d72=O5pgQM(&G+++c*_OQhz);z06U4%LAK7VW#;^0ZE+;>XQ`brJ$ zZRX^*i61-fbd^**PtOWQhl80$@2%=cXbS0_(=u3#zBD!w}dUR`vP*ZR`=5q+hg=}BAZ{MuCdTi_-a zB7bVJLx1OBc68*!mS2hFcf|vVf*!Pqj65jOsihI-VWdfPSury-NvQPfS(k8e2`HSL zJQy-lxDw1ti~fcN0ckt5?kfYx+@?w+19yoj!f(ZIHx=@F6RgEJsAnkXA^2!FKd(P< zSXz4bl9?}Yo|5P(0NpbkO!zX#6C*KD-28ayg~2GT=WOI>WZTD8(HS@Yy7ZpsaRYTc z`x5+MF`!=P^B_iN=YprST(&ID?RwTSDbBny1x?N5`7OwW?{ZR){cL@9oSFB=Yzbp0 zvvp1mEyhF`rpx~x7}ueH7mMAPTdq#1Eq3Rb+=`oTY%NnOj;?6ZM2;}QUfs8&5~Fc0 zQsF4nWr&01zY=k_O6QQL;W#Msc5&2LKeMoQrs?{GGJ=3D8{j z?48e#TtVhax7XN@g4pNIQJrNepmzdMd45oUQCy*KI5N~PaTD0t9$gn?!sPxAZFJg< z^s7_XCp0`zy{1|AZeg$G*ACPP(nGAO5a!Ifv)dhI(Cyf1Y4crPD~8`nH@q&^O_^06X(*CV-$1DBg^^j=BPuSAJPV zQppj*znINGINnn$tC;6lsEj6g^$>A$)PBM_YeH_XU`>e2nlUxn3hN>dmtdI(@Z&{A~*_pn3^#PmE?3pbkW^&0Kui z)oPe2upkscr;)AX3Ca5b%)Abnj|p!kNtS)!3UkO9c~?|jckO=T7p3vmrw3`nch(cx zfCsBxvk|!AR5{)W5+ZAg-0Nb8fZ?0~Ail917 z;1S3kf^lSTaB$<`)Qb0P`ll@v$(UEWk$7*Rw3TsHh;Nma2|jsUBXTC-PM)~76YzGR zKG9mz1^m6 zwGUMegRp`9ACYIE-Nt+}+ZUc^;a4uSt|yotY^?G3CnO#?)yabWzdQ&(rpDdhKu5KnVbWR=9Vv?9SBaa+hd$1h&~oxjr6;+MjzmAU>0u zIjZFi)cqr#U?4qcPP61z^eyO?EDYGjZ#C~y5D^c8MYjU;HqFP;>TeCJ&pg~fp)!Yn z$#9!tlbYc+6_e555B!Q_vGNpdCQZs-OjUCqK`-N{;`!MktU94k-sXr`NU{5Bn?!n9 zAn=ELcKY>o-YB=nkA`#28~(6R=|RATzH?%~NhgQSH>-f!)s?c1es0jGkyJ0OzBlPc z2~78Mz45n%dmuq;a62=V2ss*xXP?b#!|eMyrN~yiiRnxsL3Cbm-#x~}VTY_6ycW?# zdKghMA;0SlrR(w&fZBI=2#3`izXwKgsD8E7*e!Mxohm8mUHP(mx`g6$pdHYzN>0VE z&f97zG4|l!&W_c)&pC@?pNTkCUOcJeDjYG=)dP-^ph2YW-ZQsWWdU0-kJl*}=q(63 z)#`X9YHSrReR}zKw~35q8ULZ7?0WI=Kf0+Pv}iIL_xX>)v971Je7c!DEFj| z&wzT-{NActPk`|R&8i<6;dvP79;vh}G#G!Q)r#Vam4QP}sbUpoQqoTOv$sW`LtLR^ zFqxmCV#_Z1014K1GU5SEz=+VYHz}ozy0$&L5uSzb&k$^Pf!-SN7s7t;Z6kLp!c)dg z&D=_?_M|F9zHUF0M$ds%jm*T^MKew7^Jd!OALgw}3PF_PZ%HW9C74$1=apcWHG0^S zfe6?EWhQaRc*BZpAbO5jP_EELet~v3A?_`@O)m-L4?A!vn-x-@tv|Ag2u}c?+3Ay4 z*(s4~)ij?UJ8y#K>fTbN?aSZtZ-jR~XP92OoyHykuK!Ros!Bqp1f$cm+3B_3e-5Pd|X;fuH$1<2F%U|HOaYUol>(AtYDGr|SU%ARJvcBpccBEFG`FSgsXqCKi-#-B^I z&6$0ev4|c49=2!_LgXWl8y`iD$nU2#56nco%?I6SW-V5oyW6+bWG6cZirm(6T+P*{ zhxW5`5a(isOo@0Khg~1L%IK*R$WTQX%_zel7)7qM<=KONH}?2jfoy$D@oi!t+iK z)LyoO;f-@gL;CLyAR0g8@!S7J7HE!x)&qYVyWe&Y@qA}M`=$mue!t5wVskUY4`ltR z205(!rD;&(d??mY=aE$CbO4`qwI98U-~bIxX*kafOFI6&3mODiUvV#s%S@4tFS*TV z0UQaoLk6Jpr1E9;%g*{tZ_!Hzc%SJ7jd-Q9{TNkAEzYUzzth|g`k0R3J#Py27ML@= z9N{(-IoUkjIEvA+IizBijD~P`5hNKsE4JRyK5T8;HT29OLFwonz zn(ND-)O**3mn~)J0L)#iAiB#41D>Kvy$T*lrO3o4$q8m0;5Xj@r)2}F9tcpL@zwca z&Q&7+So*X-D`8EA!)&08*r#LZ{Y2TITTfH`F?WInh7XZNU#E(^zR|^ zS&J?_Q3bgG18`>$xKJ?`*t&nN-rb2zEcBgKNJ4#+!p2JI*7x0`kS=yTAc6*Xju1KD zP@vn&F8YuZzTagbuHT*^muoU?T+HZ%btXc$B6QIFW)}eMuNpwln_m{1jjC!QYtdYd zJqyZ}>pW!-Pd%b4v|SKqrHT*nQ(OKc$`9RX0J%12Enb*En{}s_A-p&QOp>Sk*9{4x ziP=EU;FJ4y8(bLt_^IU9z!SBYPp@tByqdha8 zjD=ZE6(3fEKx*W&Ak3F!XK}2+gCuaj{2cJP9A*B4o?d{X5y8c<^JFZfnigYUSbX_M zTP%3YPFJ|_-{C59O>M=$Kqj@NS^rf0c12I!&n(}Zh+@=D2VMpBAO;2I$gG5{j3%WC zb|_Jm`)lpZbARzU8%M6mL}+e?Gv6?r8+3a5dJy!Ue`_N|w9Y##x7kG>A>0@T6uXu# zI z;FS_=^-+}o@!50bpWt1MCKEDDl7EwfbRN7aMddaTy6UVm#BJf+ zfC7#7RG5ufj$9w4ynr)asiJqFc^$X-*coS*;Zv`_^c-f zR*Qk}sY-EA!-8>769l6{xreZ7%}mo(!!e4q?CC-E{&LoW#gFM-pVbRy^cYH#BFmDXn0LzoOgF(z^X zx>rZrI#P>A5F<5#;&B9CHbjIym1g^=(Wu|xC}*akKRGR znDihG!`m?oV@pW%#CEtu8S%DRZ0b~kOMMyWZq8LSxYLuBCX@vJ1$9sv#>4Nsf31+M@t^2>}`LDiKo8BKVTTbx}Q_lk+1JK0h1u zf69t1AvsN0%cW&h>QrlQD1l^#JZ6_*i_V?5KrIkvJCLHx32;rL}Zwjq;JN4OB zJ~1{55;jKG+E3Ara>_)o9;$paMhjYv0Y%*LJ4T@0pVm!`6`eX-`(+M;m>NZ^!KaHL zeUZ9mM0dzhz#=-aN#SrUcObGKNxH%yH6fmdj}7|v@-F>W_OHHmZLXL!Tr3?_E1gEC zHV*(V^ZLJ**ul@ii`4HQ-8_5MTVRppCCNihwFoX~O$a`?uMxkzM$=QzLb7>P+&s|d zT|h3d+)DTM^$cudc$xi7^$YZ@{pFkbg*$UQxa5{2fVz_d#b%21f>pIKP~}38Lf~0h z0d-ya^Pmx;Zkw|MCwVjio6+@;s!)(DA%H*DJ>1hwM71yA1{ zaP3M2utLTfUWTifOFc4o#8fI%NZ=NLpar5*n#I%mG7i38)G&+lrk6nQyah>_jHD#? zoq|rJ6Fc`-@>yXJZm`+WsH%jySB2C9+QXrXEJcPPGAh(?pg7AqoSX- zM`d3ltN@A*?7Hgwn_rnpNDir*luYbx;l%*1e!}AsAahr{5%6IZbKw$6m3vqZN*joA zG)gP!#m;LetsM%g&z&(ke?*X2hVx>D;@GY#9?YaLMGe?1C=Y`GjW4STSy@o*RV=YU zFA-IOStKhB%S;K|FN++`VxgL0%R=uF9ugS-FgRxTdvjw$#(>6vq|~TaR0pYSF$`Y9 zBxo&n$%vHFj3LXrf0)I>Kq?qZsNUg?8Q|$9IJAP;R;^Qn)v-MzqHFOE&80XYhYrIA zS@hT6&#%bVUd?}KlzL=mAz%`aGS*&&o3itSY|&GE!4dZnc^o@pEpP}YLLQNsEg7hZ zxS!HGd=j6LkBKC6i35F%MF>Yp?sut=Y>_Pixm91}Q>*}-Z;7nqU z(F~xxXXsk5?>ecO;=fn3pjX{piGpF2ixgr}kV6t{#F0KC9uXI?s(LPLv;IlXz5;)q zy8pv5=G`@c^&pM6cTy{fZoc#y#g(J2*e8O5!AHS@tDPUYZa9SU z?7*ldcvhppcOal;T6?uUX`T>08N?P?ryDGDyfTQjP&mm-VRZ!PuQlNAZjMJI`w{9X z-}2p(XhlmY=>FBUh{pTIjw~dQ>;KGj;#X`Dk^NDfPRg2Y)5B8Q0`b1kT z@A>7DALyKqXv*~xkF{j}y14tWhDP zSMFw)&rW~zj!B4#UPzFzb~IQh{_-oKP5rma;uqIhVVZMsy4Om!T{{X_Z8zUFqw#6o zu|M?;Fj75KwD6T_ZvH1eC)`FYpf8Nbh?!h=`?LuERFR*jcA|2t!Xv|AfAj+J36V)n z3}G+B=#rDY5|??QFZj;E;=LISDI~WX|4`^C9FFadmPNXwh@+wjL*M=85Ubllf4uh$`ysvqE`L*$gwXi?WJpjN^ znI|5Yo@*!a*8$w~Uos+Si^otUN*- z1{DCFe!>#?{BO&-wL6v&`qBN`NybwzCek|0FVUI?)9R+CWKJYU4(U7k3sWZw`nDPe znWT!>DsP^I7Wtmn9VLyp$$bjiGVbR!T*a=JrqZ{P#BJ$wjWJc}9m=5`nnDj8b)h4) z@zDP6QCjDY_J~J(nzt>*ICiVeL6gU&HZeqqoM12F#NQka+gFG0OhK5TI@5H7nK!)I z){&k~XwM+yWoJ@?WD<1mNwt5w!t8+Of3m;NBRE_V*AGlW83pgtuLp(-`weqlJ4@%9 z-yjzE5R__Kr;Z2{pVqepj{qKjQRM33UfSN1zwP~3qIGH`V{{W%VaVmM}_@lvNQ{f zzK^0ao`U}H(a!UL&|mtInjaI07UDFlWKF1McO|_dYEpAEa#~=<>uyh*Lt0h~Y`-QE zH|yFDuwHzgO0IwSzh!`$tq+LX`&~cTV?rfYHibBXnF|lV6iU|p2veC=m|B)BB%=?* zz*UDcZQaVKHAY>Ul^FHvqqp`kt`=2Q5q^X09ud`+E7`7~#1Ov!xYh zo}DM|=_QOk92R8;CWg4$1yOJ(dEcxDWBE7lIxdl^2k-|7*-^zAqfj$&A+5)_N_MeMA-* zR3?OqR9|_Lf3J|=(SXlAcUYTbYSP@;lapT!NLTks)q>+hKk?qzWO04PL_vRGe~j>m*B7k4wziAh4453} z;I^5jcy1lq_p_?KxN=w_GTO~B9e>efv-#0FOl zft1C2jlli^{(c^URxe>Rm9U*wpNKoPnAWgzrv3?2z0OV3V+II@p#9Qs>d}!fkV7Wf zPY-U&y`9% z0@V|vRAYu5^>xgfutP?Fk5g|7uKP}_RWe!8dn8P9DA}f?iNGRRp}DjfJeH=UgbJ&k z94#=J76{<1VK-G5qr(P7l`;z&ump%!gbj)mI}c%1mvi9jRIcbr}B577HmttL2Cx8KWr2(nTJmk{H1=YTBiL<7)7veXX_!HTNpZu>G&X``wv9i%Thl5*3_?U0=jID70bNTVM1zCWI3CE1e<%ViI^ zh$U?11)CeQO3hQQ?ObV<_`{4t5wlLA$Wbl;_7gO?iL)N>BBk$h8^wAb3LfmfPzCU* zwu8GJ+L(u88@?`w>jSgl5uXGQhWQa(`SeTsf}}{pA#SPS(LAdy0-D7;JiJCTaIxyw zqyJt)u!1QRk(baee=$sI+8l?(a<>J;FX&b`Rq)%FCf&_NR z(JqqS!Fx07E=&|pYVuS#&s>L8D1ScJjQG+=*Ov>&ulXGs#z(;86NAAn#~bw9>YUWg zaeuowEqe^bPEjme>B^NJEeZ;+jY<(iTPbM3#C1)^j;md7-0e47dK~NgTW}Zq4ft{k zzzJM*7ks=gy2P0~MHfbztr4hh1G zN_L~MWZNm-qIhA6@|=fIISUzUZMR2`VLHOyRzCdJV5yTg`?c;FkEtpIU98rbLrP1# z4%rL)Q+UTaDy>8HyseAv(QvCaa%7RRa3Lz&JoC?SaEJs(yu$(9@qN%vGlya zxzO7>TKnHlHIr-ZmczvY_}jEf%6n@QH*x1|1gM+*UqJLitC_p?P8DeFz1qCQBGKT; zt*|v^d1UX2K*Z@x{qOjr=Y_RGo-kV#1B#=UXz*2-dikMa8WY${jU^ZC6#wHDds?HO zHALQen?mfpH?7|#n0EBU>pwcb1lsM8!2W=vxiscZ8|4u_k7#Qx#GLY&4%93;I59Vx zqY&pFYCWBF3~W7!KnWx~T#o@m35%Jq@9Wx#PH&X(a}ir_a155&n({p+mKy9?JSgc% zhaS(3`-LtB3~27|U5@`Jts$;alNtB%QxEj7Z_GLgjuRFWEa!(Cc%#3P9WezS@zdA% zgtZG>{?LkPnpkZrD01#G z61lW4H(cI(Huex@;2lV20V8w!P|D$fcIjUiA{Ob&0M>*Huj+p8rZ8_vq&Rmp4eB&R z%qygSj|JrqZf@rZpC&)E$Y@(2fu87_hF?OA(}^IDhsu2X|Xxhwa?Z zNn4Bgk=Wg7ydxSCfXJAeMd+A}jfjXTME2=c|K_zu-=@D-wV$cwCc@S?7dLW#7k3D6 zdkWEAFm>3mP|PQQO}ea@ueOLT#=L$b;jyPyxt~en9D1Em@{k7Vp#wId9^v@EHP&G8 zJ%g}Dz<#Elo5+>Exukzn(EaZzZh^4f2c_om9@mZxv8m8r&iBnvSum^$B1c9i9_$6Q zm9H$AZ2ZYyM~-irNBE-#!&acp0rOd!g(yyJdM*;H?_hq3}6m;Skq z4N}u{KMgXeM?%;bk5sBV8nWT22dPJn_x|WD{%g}0Fo71f`s0b+(GlR7l;MZZ!(GJL z)O&sh2klM>Of%-IHP;V}q??6Lz4I6P55Xdk1yF^*AY=^uA-xQ zAO8S5i5N$yB5v{Gc!Is{G#_cB#fXF$N&BGOU0?QW8OHHAkZ%; zD=;2a{ey4EbpHv1`JFnb<+_xd+MGYmTs`zSTaeLfjFHgPXZ}!7fXjlA1biMZkCuhL z%DogF%S77E6`Q?ukZngZ_sbV8Zj*BJ$N|#;(F}^^?lJ1pPQ%2d6OC*aN1X& z_~OT`c!T(y#W$fS0S92%XjOX&d3+vNPUc!Gr%*rM%r$Voo z=8wc~xBvFSsUEZ`q#e2MppNPI=m3BlksOi+f~cFrcvm+19xW`Nas|35jg6S^$K34j zcC_&B*sR0EX}e=-j6q2Qs5GYO&ZO(2)TgF!_yJzwyeBRfRZ{1^sg=v1WCw|k^Z_0W z4yc_oIna14kkBTT1*fDRC}5qIWC@Pm(~{GV0O4Lc!U{fZ{S}CCZDhr5$kI+Rs$;)E zI~r;=mF6`+O#NkKd+`fm>KG^P=omfVb+9x!J?OY-^iZ;f5PBhvi@1DmkImCKtgJS^ z$vV9EKeYQCIL~tFUed*<^w049zP^iH>sl*jyE==TEy3lDu;mgDVNK0H*}?t56EJpH zQpc20m)o6F%%i&h7JIDN)0nWb`^vzv5aX)BG=)z_pK1N}{V#*{X#w*K^c^qKH0tox zbWIL71=#^w0q%@PnknfO?bkos7DOhY&6;)>pf`G~ljMI*`5v+XY7HC!SX5ZFj<;`g zfmpg_KU;YFZ*0>(EU31YOHWsXqH9)2%f$2$*4U6i26gtaRQiCydYbnxCp=%DaiLw8 ztxQ;Ba90u(i8@?6IHLnn9wGg6Ov;K{BY!?Gkf$hJ>$m5DUUwQY|%O@lt z!aPq5k^9e!dpkKO$sFS4%g3BE0agHOZ@T&PIwR|hR4Ue5pnHR#c{`=&w(?M8UWEOr zBPin$BY_iLwU+Ug;inuCrA>M_2sEfYZf^5R;fd}6W`S9X5)b#N|LcuA>8>L8H&1K+ zA94u=smq&)o8OO}N_StQ7sXfTSKD-3wOYgG?vY%KWhCA8IP{s#UeVj*VU&FuOrx@`N5K}*akb)#=3 zPQ*h0f{RQM!TR;^mtUtW52Xgmj63PAc2?k5Ap2g2}#@&d?#_d z(|yc4CuoHxt3>}8=@eTh?lx;?+YvYk-nWz&pFZYn*0cgSJ# zm)28#`8~g-iKz~Ys-Y8ea)$40L{9ZGmf$!5I~$=9;q<@R;G1Lo8+U?hh9t+qNvX2? zgxRkvmBMQuSa7-!50(je9;E2dBFFT0gLqp(Y|Ukjqe_%(N}+8)MC!V2-NNyZ9|5Dv z&{9PruU5S1ID*3{_fqkItI89)j)e$|vc14Q3(P}Oy&8?HGHbe+bdT2`T zE!03FB1Kw&0HH^uL!Gtv#zI-a+_xK#_fIfjRcT? ze7SNV`do|S?h?a^w?Wna7|#aUcn-+9#o1vRUNbEILF)m@Gl!M7yK#5!lm-PW-2`aA zf7*M%s0lT6e$?%gO}h3c4U@XcI`C{V+B9Hp%xN#=$^W>r0&`Xs?yaBYrmZYxpr`V( z_6&Ic0xZ#b0>7`nWJ0^K=wiCQe^COmC)fShh3 z>|0WR^6GYQ5z{H={~*F5~`hbLYAuv(|hy(4cJh>Dr;aS5JjE z&jtv6iqj45gnkoWn+ zFcBsA-zqQNr3M5oZLB2t^5U&*Q>K7U6P|eY{sQ)5q-@IJnu1{Clvo)G(Dw=#?p%m| zbUG#e3d5j7`Vy7hAA7BA6tda^r+%GzslXVNFx zbQq)qQZnuqbKzpT8$5^}S!3Eut4NdSBq3x|q&d^vS3MkuB4xu!z}N&n?6PiRjOKQn zkIM#W7eKiOMQ;JUI^h;Bx`d3MreMS%Ap(+6frOA0>&<_d8rg9UKX=+&j*o*|Lqs*HCMYKhV{mq+P8iYqIY( zI+)GE26=MpEQcRJqBqH(fLRdBW#2BU?|FUml|!$eMX&rbu1|)v%Z$zS)!8`9Fx%**lEYkXAGf~> z*n+by<|iyS1!ojKGFnK#^YtZ(Oc$}QhHS?kfWPh9P~SBXcfC95;>0Q?rNea%zrGs` z3>!Am5ts|R?=xGxPR-R_(&5T&6PvhvyOWrBm6w@VW`_UC+mdXEa{A;WX((WqmJM-H zzlf8ff7=dE#CA|OfyMVtit`fjW2jqCO`?>Q-lPxcx}VPvpUoA!(8RD^w&Zk>^KPjE zdthiQqY$|2IO&ZW}SV`4+? z2U(Eu&7omq*2yL+h-&{3oyyHu8cc+db7>vMdcZr^n~;-$Z9!y65oWhs~E4cOt0O zFz2<~8($gkHd^%5=;d{UNa(7N??i3_hk7vfXo={n>L$5;*0XXKGeq8dC7wDgbLJ>DGuT#Vw+`j-&dpbG zRI>NY+u!8jUsP43SZYMygg!;NdE~H(J90{2j z4H;lE`i}rl^3Y*>)%F&n8a0UzNL6><-XwYJH7=k4jz@6#IHYi$f~O=gw;=l;S90aG znKr{yM%lRu-`W3mLo}ce&~N#jp5B|d8E1%>?{sV_FmPNdBy7OU~guYLt0zYaa`dIRF-RvY4{%_nW-H6ZXh@c8^^h7j%)fpGBq z5`HNLRFluZxaaoo!0H!ZydN6StWQoM+3$LHpslttr+OwlD&(EoNd}z0jd5}p~D$$jD8az|00+F>Kj^1s?@)LHBDYAzm58m|d z#`k|vB!AvZYB>-b&}QDNfYMXQM~CmAZ*cquNx$zm7f6}1{2HQnk-Eq~&nu z?|=S2Fr?)bX|Ib{+LZ03?oYNg{32rinz6J`rqal+KSHBe)Gn&1TKs>rS;2hab!Bz% zl0DTGBg55%{zC~qkbD2#YryUP0LY5B%5Mk$5l;RdJ3!o%BEo(zu#oi1pNw+I_TF_q zdakp`srz(5h-$d%@xRgC?;g(W{LI^NEWxv~^2Dwp$}uIE820@k;ibOu-lg#F<2}d! zW;Omwe0)~!qk*{8_k!l-lN-k^C0{;tI%33R+mjjaXWsW0twLMOLqLuLP3Bl+rL(s+u{4?*)0EU7XaNNC$JI>o97qiD;56V7sK3t z^`cMSLxm@eG2ffFrDIH9M&X~p<5zzf0A%$kuClMZ|L=>@W*=K}uFMUCm!YLy$N$6T z0f9bGc)fDW&_UJkKl-CtNJG+4F|s_gb7%MjBD&ll#?htq%dLOrLxBm)6HGhFDyHf- z&#k$uf~$$rkPt6V7-9sYvlA0jcUd!B_dMG#Qs;M90-O(xJsG5`^AZ42^>It9MiHQ4 z1*(pGISSjqd5eAKuMMzw{o)>P@RlBTey_x?&zJ3=l(2jJP1n-~=m*demdev3dIag? zmhX728W~l?AMQ1!i+!E`J*$2ltk6VtAvQtIe=o=wHeulA&i!jv&Atj?76_4u?cm_p zRGPM`s`1UD61EAy@VI$7v}yFt^IDw z%0H~eigOvxc0%nxrwQOh7Jv*Qutb#U4qLIN9$b-09XN`jb<971lznMV;g=CK@Ew_x z99sWx%W{Bjn`T_&T6&RWxpm9qS0yUidAc`bTrt_h}J9K@WFIb!+WJ2+!7Zj|gzeTPoq% z|Im2gOy$*mD;vz`p;)o>V&qC`O40n2)!ACH9`}*uLDbAIGU&hB=CdE%T{>Z6q^2!Z zp{x(NR2pb$gr<|=K9^)zYgG?%7{$iX^FC9aTZPBRI?zi2wH@AK%6NY zfNXJvijUOfE4$f!X0^NisR-HkO>cnxy3kEN?mA&3bLmFYYt|l23Ae4?=#Gd#abUbC zaOSb4^_c|jEy7Pf%}cR1ghG-S!-z&I}B*=yZ z)alanq+kZE!{WSTsCB_76BlkMk1C= zEb|jyA5nd&q~p_AY@eOPN`5gGUe){a&HnL3(Xv= ztMaQP;&l;MQ&d;{%ZJ)exU<+?c9Q5jueu24hfb%0x+mJ_D&vDM4Qfgk@O8GEBXTab zRcJehLdxS^k6|Tfu|5EA>`jMKta?=@*8RlTrtMFORZ`l|rt1|jj za{~ieYw`M76gDody5m#7{4s(m=eqRsD-Z$~r5MoA+u~3=4U3yF1a(_qTZhjEFL>z; zw+2q za0vzyDL*);%X^6|KwOWy;Hf={xB$Q|@F*S_b@$rqstB*9^hp}vnx1(Loo3K?3z^%S zc@ap&n>_bNIJx-3p}{i>Q782pFn@$MR{=x_LTzQdY{ESW2$ z#r?sR{wSwIWFeRq(*b4RH+hB^pD6PLuf9NjVxXP(&GA2=-!Ba40DwU((4Ivy|NfV; zA2NU-cAR%ir$=&l&4md8$D<05zg7$$W~PO5caD^v=FLLzHfg=z5$%)|DR2$vV=!U1 znZ@PTQ<;g(<%`{CH`3kX#cWk9x$UZ+_xMOE^4j?(1Y+++VQV6Ayu|L0q)h;j?ecC3 z13)hQU@#N0%qR;COat5YsM{Mt7sX{?%3bI43&^N zEt|WC2*hecVK?aAt-vB0nwg_OsmaMpBdkIxU^D>xR7ObQyZo~=#y0zlfZ zIQRoNK|8G?{=ItS(7iQxJpvz8f(3V{BTWyHqlAPE)oeb|sfH(r5?L<5iorg^zwq~R zRs9dblYvu+|0xt&{l#bV{L8EUb_jo~7!K%d&*iPJALst>iy&#`5wzET7~Vhs?CJts zkn>^5<Q7w=PiS-82!|5C~R?H~eTXh4GY`j}1Bkiz`iZ{Gr( zd(-KzE*WJ_!LD?yncVLd{(Z17RQs2l=Kpey1K0dkANu^#vHgAeKDaQXi6&^T|Dn5q zUbD3YoM6>KwoN))$kBx54Z**3(Et1<%as4+HIy5%==Wh^3yl8`QfPi&^LH@wuWtIQ z)BjFR3KuAU0Qpb-J)%G(CFwluhOBAXF9X=mtPWZM&8^H7^^~+Tn@Nq^HAZW<+C!$p z5KkpQ?@~ygvG9J=>Xkb@ho7*C{dw1S+m)N=?K?tLs2#v+@0dIo+zv94=F@6BegAn_ z>Yq-2Zo~=|59CG+O330k*Ex0mVWT9$?wdr)5czu~F%v=pO=ydSfp+sxU_hS340(^< zN|J6FD#!{=>5FCJ6)3g#@(f!C{4N*f8vvd9qSAVN>gmIal24f(fB+DX3a*lC#*7sz zFpt$r2hf9j!@L%!@GdpDz1=k>YDwGtH9H~+vrzYa zL}_>GPMJQX;eB%Kv}>9P{#A#l-wx53mEgU_nda}EvkjTPW7rq$)w;1V>54wPzD^V1 z16iU5>{Y^6v8iG|W6O(Jx?c+;wTX4TVY99sG3+6YZ=W%fG8?NX*4H}cdQ`kl$$zsr zH~Lj-iMI-GMN|LvF7H!5-*2Tb9C@d2x)WBt+fRufrfigWZIL}+Q2^betqKCx`Ns1I zW`}CFS2(+@3U??gVn|-IqE&LGML6JM{M+XS^W-maCT3zGau}d$sUct(v)AHu^6^*h znJr*H`$RBfi(Rem*N$!%nPb1StmR)mo5{?vzI(_ZL^6*4?52mwkaM2H+pkIi^vrbt z7hZ3B+aaBjB=Om8rljWDlB2E#J$gQ;J0D}c==b?DHbibdw+kMiT_yL$@?AIKOE;} zgE)MQ`@l{*e65T0(iFw-LSNC=vf`I_ zGIbRk)c8*;!*$Ictv^rVUUsk#ttotgC1)PWb1Y3WidopwY6zw8q;8BQ+mpH8D8Wvv zB_BO*DK&QW$K~nEzp|y-70RpQ-_l$T8Q|Htg{M*eY~bs5$jwckPETZ-fwgj)%d#PQ zrSwMkXD!r?6<)JbXnbKr5qeei*?c@VMwl`pyFwD%yv-}7g_9V?)6$hU)*H-@y^KeU z)s|nV%3`U-*XV6A2nj#GvC(VxlEk+OxjizWwD(HKk4*{>$W~NL_)c-I)g$1X1(p&$ zdb-e)*CC5)F77eU%(GItJeF3fDWfjKYk6mOqrj~~L(iR`&3CcdB+w*yw&#+!yk~#} z0u|&{88Ki{4=wrUE2=r1y z)lc5)OKlFOB(BczA+tw zJ&M`e*7v`5w>d`VWkIW{>%2;B?j2h zTiSrV%y{gFks0&r5Xt)N?pga+PeR?^*}XYfAd`s)Y9^=3E7$yq7wXpl#fnW$n0&ph zVVY@5-AsKg^+&HRPHt}*AN$g6&fmi=d`HOnX4;TL&BTS>l#OAS*RU%x{xek+&9<%U zouR5l?xuDrA1}k#s0A4_-RI*PU1+4Bl#ZJBVD_kl5zlMH3X7u7Xi|xQ--Yc}KouXg z)fqF$B^CKCX6Ivb@`WeMJIEzV`PW35RxuZeQAt{5ga6Tb)dCsX&?| zR!~L81mB-IBU40Emn^(iVO6C=TgI5H4}{8zJqk!eDCeA+U73H;4p9K9D;;-!36F79 ze1z~wl17yCTE_+3oDyRw_-UIwTot$h(9a#7F`g&U3aP_2FQ2%4dC^!cxm)dpA30vC z1RaPd1n+%ey+vPmnpm{bDjk+!Es`SDa-(AD0Cj5xcEMO8b?qc|5z^2>riUd6;N6b5 zuJufhwue39vUNACT|eX`bV zq;z-nG|rFvg?xbCW^UdZvAp$oN|?kxgr64q7RamlwJT((~g5 zmA3~o8mx~Iw>?Hd^>i#tWYI^S$NN9y*t{HBN7hmjq*}IZfIQ4@hDkeDQd=ycE@ll` zUeNeipa`vW_J|02c8p^f5R%KUYw;%Vg$_n&uKAF%_#3kyxZjt@?BVEDYS?DncBj@Z z200DY-`6FaQJSJl+g^@*kxm_5et$w{UJkv+wlRg~d(7$G<6gh4jw;4*-VunH%^dbS zdk>~($n-|9$xNvZ*gUS)DvQhXc_aRnC4bk(QlF>3|9t&-jz0ag6ut*L6L0*d3WuM4 zjaJ!lFU%CW1{RE(sY5tcab5eMDholzWgg*j`Qff=9_|Y^NWfITR5hH*SdNZGRBV|d zB!8}?HK%ka2n4}L+=A;wiTZFPj&v*xl%$_b6I`sD?kO&PAkcyOe%{`2SU^g&j}o>a z^J|&}BUF1*VGg8VT)aAM$E`#)=nb}8B*8~n?UQle$}t?Ba7)HGs>x3vqN7fW(y*b_ z2{OI58H)Fk5!%tjSz;V`!1nDF4}L zw~oqKcaiuMu*G!hhL=}U4r0j*1{>x{xk5sa`@Ad)?{O!|UlKI~wnBv!T`&D8oJP3< zaz5O^!-u5-#$q!}m(LDn-Uo2RQ?=W%o)9RHS&o^4? zEa9#F@&#PI9j55ojFjikmulyWtis#YeDd{OXEyt`)sdX#Jv5WSw6wev3633Tb9tGd zXx2O<2ufx~b)vtAJ`t7>JgcEcy3vj~Kfr?b7rd)~GZ~R=#4z|dN!}KVbJGzl=5!x| zd*L+?^pOUYws|QqSb?Hp1UZ+TU!W-IqZ{a7AQWMCZdh| z#3TGy^|dlw;;b6a)>f0E%cTHSeUt0Hw%5JY(yDi>{E9}L_Qq<0XC^{of@_Z5j8ipE z5_it8c7otXC>l14U2aV@}zfBPH)+E?eGQ{ulM0PDdb8R+eqXxF0E=-YlZd%CY z(fUzUaZr9Z?Z^$IN1PMAV4~5%E5ZQ|cT=WRc?YL?>dy&$3vEr`h|dp^R7O$d!N=XP$udrEM~+2X6U_p zwbEgJ>w>AbaMd=_6%*yz={d$MUtSN?8f=+PJ=*lHKJ?%Ldo|<&%&fHtwkCJOW}=|k zPg;MTdvAG7g|%_Q@9=x4p5o`Y#(J+!Z0KFRot4P5GcoF`J({|jqolcaDoJ?}p-dgi zHLFxY2Wku)yoOwBq)A;CwRFUqmlS38Rj7cn2OzfyFvu9FbbP*G z@KWWuXVbHt(VVyA<>g<9c5GRu^UKo0h7@MUFZfN6k+T}__!o>lqxV+ifPhNzfRf;I z-NPy_tHDPT93U&SZ@pnE46-ocir1nxS`wmMhaZEGTS;uKS^5AMe`mKHwqYOlA1 zt=C}-avljux6gVC=cF}(+k>vO1$JDE*Omou$%Q^ScfO^yPZ%7~&Ixw!n>%Rg+}^LQ zYmZG9?`grTD!@W?2{GqdBulXZ3pt5~w>sY28p>dsGYYhc^Y$UCJu^N9PLJ;Kl@ndl zC-j0(ad^$b1J0%hT~1Uk7lokb)K|O_;e8@Q(LHiKVE#Vnl}vjA>A~g!UorWPEYVbHSQ2O z^O#j6c5CB>ih>8xjpY0lrh5bGH?Kpo8;t!bvSl=KbaToR?u}cC9%_lH_Y@-PgQxm5 z&7+^|vdv4;_nXD#rHT524_AmP%yw!`xL??*JX9$CsTe0!J{@n$W|D(M!EcP+z1^pY zve;ajP#D^B0XUt$=ULf_uQrlY_vw|{lmOX7@tK5Zi<`RC{EOX1p04#9(Z?+bk9*2_ z>RhH4cl@?rFIJ0(x}CQ&lQ37Ehrz`)E`@$&3^5K6(irVwYFVY!h{*8k;2s5^&;$*? z!36Jj^5xTy^`hWy)@M35+#eHq*d??5)MRf$uBym7(1Y;)Fariq|2tN&TCd?F5(A;+ zQQYXDsL<=dZc`>5jlNN>Ai+w%xZ9_;dM?dLgHhoq!I1%i24}hMCtr9n?2(8f46d-E z8@#CLb9GJoW>B4}J#sKsRa*V44(G~dLyB2@kgz;q=zG5cmk1(I_*F-ivErN;6LvXL znOLZknRK3<*L!G(NqMD5QXgTRAzeDN4!E&gMt5(B$qiVY5f|LCjIb5zVVEneUYy1u z#g9XOE$e42!v&A#lo}40iNd4whEh=Ez;(@N7TDqR zw9v-#6|H|?XSnzci_h*{4WS=1N^7gjWD2-PdRGmJhGAetaHdm{bsFRSd8Nuz2{&zV zGd&jN-9uK7zT*m`nKb!6K~4+8Omi$a>RVV^KJ^L%{$}X&n`-&7>y>8d-Yj{piJKKs z%9$otf}^zw!{DQ)14tAE5OM+g-sZ$L?t(druh^ta+@N2LZ4D-rb{CEx!*EOTcW4Qh z=`Ko|-=pufhvpTJBA;PQGx`I1q=r}@h{8Xe%o_JYFTHg-Mx4R?fy1^Z*}plXU*%jR zxN1t@N8%5-jbmsaLXfe(8%K}}8{=3*-uA*1;H4$hPBQl~j4ydt zU<=#^%w(^8owMHyP*BaN#*lUZX)tki3BbT+sh9`sZ>Y{n zfR#z=x5xY9%7?Dkqcu*H9lo3rGtBZ3_h{6I-*lG$;9~`yS^kQ-pLdf`GufOdzuhT{ zC_B8p48d(Hb6-YyY-^Zl?nfm(Etz@x_^&u~KdLZ#Z0((P=rX*jHa2B-puE{GZ3TmTh7wlGNfQju*(RxKG4#vPoAENLq8#kj+QfEZ&P{;;TT|%> zIbk^@`MIA0=qQ8x`85u3>^lL)61%-f_vhZwEn{D3T^d(8d z9kC23p5XEZ;o>#xiJFh?KS@n0g1q*Sp9BK$oHY)UEE8ramv6CeM^|*xX7a0^Q)9WW z$>RI9)1oCWwa3P&W`%g5iv$(+#Wd zcrR81r`25L21dqV+@~Q$>OpIa0m`WcLmX;K}avHr3 zElnj*ge6w`SJIxpqf)kK8d_t@j1|}GyveK;t3U+#*^fGmId&*0GphP#oWp9^1&`x4 zh8XpfwVz(uUdwekuVZ~z(WPrIUUL_0q{phJLEH=pC$f&D1ppOhL$z;a%2z*_9MkZs zCOK7q0iQDiEe3N2|FpM!SVEPO|At0yjGECMN3p?fb7Gv)aZ^Z=Pv?b~<-?XR;Ym@%z?)?yw=w;trJx54@bC{$a$@_#U8x>w zCOhP6e>##K1TG$wm=Kdg8Np}EZQyhS%Oi}=Z=n;-%2$(otJ6-n*V((0JFj+^Lw=Uj z>#*}ZJ_t6S1U6B^mc1#A^&Q1uKyTiymt*>3>b0UY52^QdsMzM%fu8WV3cUajgrzT= z-Xb!W!LNLaf$>xB2TE;#2>c)nzf{4^{fYt+_h40bq*^P(XW~s(E}Te#p*ovsEqa z+lcE5ZF%VPz$}J4RjSKB`^gd(h>%z3Cuc97Z?TrWlzBUQq1+kNoI_##ph|4z6Du_02E#iqY;|#6-DQLCHsUp&xpwLJa5UHRPJJWTJEdv}t$3%NZP*u#M6%-}x6yFPXIZ@HGO~(?A-(yw^sE+`Q!#ZLi zhe>|cA9{3iZzpAs4y93pw^I~TfL1;Rf3*`cqcLpr;=;8~7ZyCJT`<&Tgx2nlBnrip z4HSk&l68J*3N~N7JIP4w{!YtFD3iqRivnxGb&&Cqr_ij<(gsopNEc4)2G`pkiM&nY zOhj7*_WN+F55}A6SGx4#rBB0@o6M!-^p;6AMc)QzWAhZEz=DYtTXI^yQoemBnL15%H&Qr<$c7%zKiG5x*<_)2eTsvx;BpTf|uXhDutKtDpN~~Oc`3Y|i z7Da&`KDV=#<@TMIS?qoCHL<^dT| zm8jk>R1S)Furs4^XEMIg)a^FP2`%O)e>zBOc{=})?VCDWg zVs7H`B{6J^2z#;m^NsrVnIqLxs^NpAkqIz$bGi`!Wq01m32M*2y}H6bx`g(`mQW^6 zTAG>k^4>MNnTp!V1Y^1Q&+m3H#(p^z->JKi|2QMUWYv(M!@DRQnlR1j%aVn@R@PBA z5}KW*&Gtb-AFp>Q98ST=#>O0}S5$BkGBAVApIyzviukArT2D4XBiL98q=f1^iLsMw^@+k z`1x5;X%;6SGaPdM4ZfTy_shn>O5xZ@McH5_$=iu_&X+}>M*;GqDzS_D%vH@*x$=v9 z?eZx8yeBp(%VqOO=?t*oRU>8+bp=8fW849VJiSI^^Kg2NCJ9Sqwk$ML^6va`&!NTM zp)ZPsY+^WD-6PR$yLq>Hbcfc2$qAYycFh{L6S zH>~H}IY^j-ug&Wh_YqjJVd_q*nC?saaz}jk#N~^=PDORlr{jiC z47uBPce~z)PIr}jc$uVFlr&5jK^NPMxk?l&Uv}2`0SB8YxN8)5-`pC4Kj0U7oOM2AW6Qlp{~TH|ObAeNExA1c-_6roXB17y8jlk1j+avs}9TpLFG zrU^!#-;$_|Hm-+*V50IB7fs9sbcbpjD%{tPVrcdTDA(rO4^6!S{4~F)4oO zr+PmqXC^U{-(42We;vl8jI2WMjIp$UWWA7H-xyWq zS)R__)r6`;@rCR-Cw0f$`m)e11N(F^S8+@2>e!Wh^F#4HI72HovUQQLhfs`a;^vUI zzjuG?h&5f~(uX*&>B+SVD@A%dx?`i>`O*ZV-QDFOb1!>|*UXng+L#Y-tvPmkudkR2%|cVr2!MD)ZF1u;|2l+!o+i9O^{~IX8H3^3V|Yuv!Qg$rV)Y@1G}0_ zt*I+0x4O*ntEYu;I^nvr^VJdv1>_3 zZWLHt{@A?+%b_?J{CKY>Z4O}`NR zf&WRu2jq7C)-J4*lqYuG4-kHBjP=i4`HO>Xe+dwOP2K5{mzyHN!A50MH2{{OS;3f@y~}wv*lH1}0yz7f9@bvM~Z2f z*5AwD;BA|NyoNOvOcW+b>$@qrxemoB$~)y=DX?=M@5hu6H3&t0G+cG;^?5!o=?Ea| z_^h$(Ky7R|ZQHSTyi(mC?;iH(v8_|30>vtl6h|lK?JeT8Nk_?qfaEz({dTsvygh~C z;RI39IS8QBg{cskV~y<}W}4yXs=a?htZ z?il4Mw%=sUwW6qY1QNB7(v>C6pI#xOn zoBbwi8ay>Ft6PWSSxyoe;t}g(GzZvzQIcRR?)t9URfmD*#HfG{Z`wW>g&<9@N~FYr z+Bt4myIeOfijn=8Zv^HY5geCCS7anH;?%c`?8%B56Z8lV?I^9t+7G78h5q))K!Yo< z>@i95j#9B$HcLO`k}`F!#qd&mSc52emg>p0KG<^p1N1cz zXuQF%l>fA$YcAh=)%!cmI$D5@pZtlCpPR3+aHAY z*5xgjPO&v=qeEM}Cw^#4kVow^Xys;goa$!89zT3W^X%Ia_x`xe0p$2JnGAIW!H^rD zBhj|6Vf-EPKrnE|1RslZwwH*s-uckaPjB_C4FnVrjVPKA3v*%<#INDdZlv(?HHe~T z=_AqBGG27>mP5Vc;QQdkW4kW`=JvJrstYF$3wJ8_%UksMUCHRy={9>W#nw)~q3X3a z(xhlOg6XTUDVWUa_A8XV>`znUM(+Ol{!8Kf^w)9ADr{>LuMY;-L5+GMDj-og{kXdm z)w(3j=F$Lsfjx=rz~5s^t!j>$h{7%GAs5&7;-xnz{2{53$Z zyW+vaUjw-Rtc`_9ooS%Z5dr8srGWa3KRoBZF*mz}RX$KqDkbzJa_7edDL<;}OmO(% zcKhlfgJq8a=vrz2WlBHfLqwbtg_(1&&i#T!I@V>V=rviN4a*tJIwpX^8-8(APZk!| zIn&dAhI##v*=J>M!2R)`y7A(=;_(uzondkNq!K%cSXH&g*thZ#Myg<-Neb>}7Jwd5 zlFjQ8c{7p_3iI~a`=TR8Q?wb_GL+qa`%Iy`5I3!S76GyiVD0vVOyeWzW0mYve6b;X zx?5$me(&S+s(4bl8CJdsY(5y^wl8f?qn5HpJ%I7UZTt_T8RvO9NRqtP89X{aTg>b8C0f1T(W&rf%VA*DG2CfSiZN&*LCh9SLoP4f^qTXC%M9{+#Cxoe z-QBU}6d*97oSsI$KzI6EwG~z)cWa(%Q={J~x~7-}2+o@=MOVP;#$t^Y6yY#UPKKjp zvF#k@Xw0W?>qmkJMTB7=XBA51%^VXYauONZp=-Y;1t_jh&0SGh0&@NAZ7=-v>ny3o z*QtYYhuf(L4~Dr^>ZA;}Q*Nc|$H!Xkg>h9t7+geoKdAm`08ZUZkQtl6m1FwP<9Z(z zB%MRkaL09QKGf{HD6B5?vt8L6nj8RQQmLJMJuw4z$2_BTeKyA9VDr3Vb|5^-5{*tb z3Jt8RD3?m0Lwdsf&;8B6ib3r->;@ zVLf^DW?)v_&?-5j19fzD5AaU#*Q?0ZaluUXf)9F6NKj$?p1v~ zd@u>+)hj8gclaH*`KdH!OQMVd=;;Y z+?7(KA@_8o8Mq`eo-Deq8E)<71$#$vym48G`=-hXgZV|J$&-_A@lFF$f2ZC6xJ#X) zK%sJGPSmO)Y#ZBe@{-Y2xUpJwG6!cz74+PuN$a{mZMA;%5(_{YG_}F(T1T7B=~hh= z0Fwl-Xo_idCdq&LZoGK5?~!I;hctjoGI-$6yc)58SX?Id^j$f2bbFkt;mg&(=8Jek zPA3_XOgARm>%CU)4@$~Ugs7)c(UtBBb|YUCIW-0c_0DOVQtgf@Fld4{N$T+*lfon;2y=7^V_pPOr*3 zCCZv#C!INu^vakQ_R}m%c_mzu@n>%8B3-L^>K}`nc?Ct(*{%6{tE7<3GXrlga|~=2 zp777=wnSqt&x$rVA2|-MEuDH6rb{Oh5*=y;I$4mzm2?m1peSg1{tz zuRPgGon+gS#8HGOde7#?CIlvXN+Fw}%*TYT4KKQo^4Hi-=O86-@@yMbV-20Y#qb6t z8P1w+d}}>?a`u6SWN#F!QP_iKKKE@vWi!V3Ugv13hRUrV3=hIhi2wOEE zXOq5O@V2(o@Tu~N?pIL%bBgny=H|apb}$>-9(klfW1<$)-~zcKT%exrUODnagCbR+gR7H-3U4Do zB+E0C5 z&<$D7v>GBwzPb0ZtTRH?SVb%+$?%71_nGX9_NmZZ-KeV_rP@96rm_~c0ehd0TSC@* zOCLat9_Q~q;?YI1R+R7Zq)G)ku)5_VIn;g6P7A@MZ{qA5+$&OiNkW%}QNuA+6+$bZ zg4!O-`%~bF>JR-?WYkVizUKoo8Z$9g_d&Jp0}>7y5d=a3$Oeyk5>WMzg*oj34&_zQSH{C z60WH4Kl)I4c|CWBz7Q|RramtHdg$zDQ~R)4o-i_o&of!RdsPOuJ+`!+YCn{E^eFMC zv3n{X$JNvuE+e-oa)!s+V$>0b2X2f^_-dlqz|37{8&XHRb~@17m%^_S%CbV1Gi`8i zZy{-xp8gIlD{c3#a*=^!0%2$R&yWUup~ZL6sy#cy65jJe)o;>P-;1Rp{i{A%6rWEj znwyumPcZ+1Xsz*eLm$Xp>G%SHBuN@&J!qDDMPxC~Ly9DVB%j=}Pfoi2G;xgsraiFy zK`7n0U8}&kD4TbNIW-?DCH`ICe)V)F)>tg>nXiz2;6lk`PN!r-b3UgSZ`GR5p)6I+ zx45NfEK9MwpCJgGCamY>vl6R(8C?!aDKAnSlPq#Ft;1ab=6|cGh)u3G8}v2s+&rKJ z?5I0FYNr?*9IdEj#H3X=KtwJ9Q9-ms0a42ki!-mltwH)xaiSog*mR+}1Xt37F_6$3v_yfpLDNE5JE{<=o z`wtJxFJ%`rbqKU<+fD^|jpVb5mGNBJ+1>_KyZQtar~>r%z#|F7*O1%!> zxAPKx0tM1H?epLGa{1AnD@!R19*%ikz3jU>cvXGh1!t~|sFS>A%Md#v9o}0$i#c8L z(L*=*+QUI81!&eo3Ln(Ma7`o8Ml%8Q&d6pI^VI)}b#YpOumFdBp4kh`f_~k;sy~L5 z*sn0xD{AmcWbqGN7#mXum@?lA5){<$p zA>X!ZJHG~4`lU)$G25t-=FHQgS3Y=ToXR3uJc%zu$93X6KcJTcwGm?P>WtSd^qiJWQSWm=TK}Y4Zx3 zWox|vA$6l4G1UXGl%&YX=<~0x*%)GzkjYt%4p|gjekJz8d}mFoHdY8%pB zFQ5GCD7# z?2&bD*BZL@vepOnM+|d|WLmf{-Z z@z0P;;Tcmn$)THlZTfq~@Rbb!77`!3kP}qpe5~&FTpo7G=vD=Yetw9i!=NUouZKpY zzTv6dd;szGcqhk{nkB5PZd?)y&k;iFXwEOM0e%$;y*FVRM0HTd9djlL1rYER)dXL! zr`VTCSWU4;r{#x$;s3Kb#_7OV&-VyFvZP~z#{`{(H)g=#1!406Zcma$yFO*7lgl>% zS|yRmDcG>_`lz_@5iXFxtWANlMcahYYk~|@L89`srp@rroN6Bjzvz>eK!ql?-w451 zwNknS><kJdn{VGz*_*qj;qoCal@!*S!G22f>E0E$XE^-_tOV{z-?pPm%Plfz=F;d z*r$q~U#wSFr}Iezp6O?h^S1lKz~z|`NHgZy6PA^-LsCXfHi{(k*J_zRM_dlYi*gn; zTT@G#HI9lCfPE5-bUC41^NW61b37=bxvpu=G?=(~zERYM8gss-GX<3Y;&9N*+y-@K z`U_pLJ3cE^U*d#f?THtK>@$O@Dro|v5q5x?tPnCl>HqL}=b)&;nbxa=SE|l@)@)dr zmghNNPt*zlE7`AUM4pK#&@2H~m>swpuc(mj zcpBdIdyx%()%RZ{v9n&L<9}CWkIwjW%0Ma@SA@bd8dKL7%d6FYfq+rs|7q{KznWaO zHXW6sSg2A|1PdH`jmDr9rK*TPkRmmacBBO)^dl-=KtZaC6zMgTkbu&q8z2%AA|N1y zB=ktXuXsG`-1{ed>&p-CTFI>a&de?|&)&25WD^YR4XJAf9YgNfsvC`4cgy`RYtU{m zDmZoq)o(_=B~k$kGG%Cv<30A6$rEVkFF$~jk2~4%>sYs@0Gl!)5oDY*yU!Z2wS@vi zv0lOjb5*iEgP@~?%%opJ0EP$^pp-1QaTP^RdZJeGQMF$kaP~sg4p}@5I3D%@uwmoo`9M{ay1}>wR*O zp+_2^H0uq3LA~&K>X!Mjh9^cRsxOaivbhrU4r$I6R~`Yr4gG z8i-41M7{X1_QJEl%byUK=B|C2%Mq?{ZtvZ%%~SDMaJDlhs3(%Wk_7Tp#PZowGU3bc zVUWjI>I~-S>}X=%;mHw=o(S;axhf*e#fa>D=uw{3vpM9(qUa=$zYV#)uR&f~h}%!= zO0gmmWZTPY0v2Q_A2gcYOD%KH}GsjCs49 z>1{vM)-gMwuEx1F#!k)1x0xNVvT7hqjb8a8CUsKJ%N=ERdbd z^1N8D-%JO$6l=kif(st`E@vCynMod7m~)Gg2kJa>;;QMyI-LCr#uZhnO~Olb&QvRN z^r2w$@g^Hn^&MOXaH?P+3X}%RT)ze{ z98X)%cden_0Z#pSqqDHaF`oqag-FXk7KYLo`e~x4t@^!uht4TbFA1ZT+_?fz5WB%) z3lYFPjcyqJQfaOF%`LyTW_p!VfuMoBU!n+Nv8>x)3L_yit_CtG*qnaj8-xI_XzWywJ41R=e7ESt{(iB{@&wA9;&r#|`7m!d)_r<7U^rRv*{KN~JC(K% zJKd#n<*}dV%*ALhnG*W(tg9}d!Fk97Jm`fPx@nZ|n*oMtiOr^Ar?*{s=%i*pq@cL{O9X)gefkMh*v$KVic`Iu+ z9}-l(91H!k3_+%h?}rzm9_vT|g#ftmtjCj1V5MbXHFsSNKskfK!eMiSE-ZdWGmo6e zV!Jsa@>%6*pQJ<)H+(}m79}4QKm2eTQNUxG*#`vf3rvKk7dIphx&US|e54cUenY`H zdgHY;xE0{dxmF1RhFS#ORmR@ zbt^Wu`Nxx6*F@<>0$UEQZls@ogK{cinw>WmsdSSud6-o;hRWrrAB321RnR~oe}WsS zQ!Obr{vYm=SFe+OX$WlQb7WZ7KA#~{&NS!{$%&N>k{gSEy7vUjk*@y&PJK$;HT+tMGXoNd=Al~Ii9F#>Iadmb<2 zs(Z>UM6f^vEZ=n>d$%F7B{Oe31RX(XCHGI_mg57_j90C>2j88oh1-JmM=x~T-<)L3MF)C2G~%Iara@t0F0j7s0qC;^%mT8S9+pwSmkb|SP@*UdD~<9GZA1KH8g zufsFuw1Vf-SYAw?<0gNZY>JJ=fx+*8Fv{LxDJt_uIgg2C<;TUg^qGv<;*u!QnotIw zUs_=5TarCoV9N$9qjI}vq@(uSa@Q%Xz79xT&U-Hy&&l-C%lao*Uks}CezwV(TJzot zC|k)rv1`mymVWm=0|+!HrUwfdchuS>q>q@~6-zMJ-FG6N;Z7aGW4^f5?oN+Km)xE# z&GQp5xaR)cDzX|0yMMX6OP7!#O`XWeccdlP6uJ@DaRn|7LE~JRf5;G4k-_Pyj6Kvoah(#l6pUnJ(dX*TsrtlQ~deb=v*Vc z=w2|9s9^4473@3ERNL6KN++E(T=`sZBq*PJw(tujM{F%+7`Q3V%I8tRUv)s@gc4Sz zd$KrS=A|AEQ~je+wzecau5$0=8}IN(*VU`hK0EfloH;xqL?0yg56!f+LxqshnVefn zz`;?kLAR0l=~Pe6v{GA;z3w1|s2qjC_l3omT#_*7w~`9H!)bUXAj-Oou7c4)V;g)c z@dn$2aXz#)Fla-tbOf`!MH7ipuT$+Lo|)#3waZJ_wo7uX$W9x*y5Hg{A1lOmm%$dDQ1 zSb3>I=KkTt`0?G}?Gg$RGV?{jJVSbw>UyT>SfYG$^PW2dB6U*X6mW5V*v=EMaHd3X z(0z2*B;8U{&0O6`xcTUUV{ZX*9K@+bT70*I4dV1vOEJOX9C@mi-hQX<(ZPL`GR&iz zuHoZ{`!ZZBn;FkrYQ@kLJ4O(7RwH3tBeGCHLn^`7#{Y=qTr<$#whP zmFn}DL)`sdZ2h9G)gZ|14AvX>gm_BUT#2NyGXi5?u|%S}Uj!$WE1Rpd66-L8GRscb>#dV=Ij0XRBF;XRqyrl`jIYMo(#f?qAP z?D)7~YV4+@n;Y*Oq7-RFz;D}bKEx`j$eXvTDP$MMaX2ni^H9ZNd}acYsJUNUnd zOBeQjOBY_ti|!YYMc6|4&j{%$dAf-8oVXt3+^{teguPy$A|#SRy-3>0cJhEXxeTgW zRQGJ?!w45TbTmA=mY^?F>-;B4ufluQv4Ju&_d~#C<|#C&?Ufd+y^>S$CYuPT9jESa0q0E?c+bR zWzQ(MlIUJ~?YhbpYmHH)Z!mfzfT5iPGV^PxDCU`Y?SLT|2f_{my|#yj#$-Ef`^#P7 zmX|MLW*+_P*p%hP0g8_*hbkVzkD^D);YK7J?$_||HtzH|PzT+!FEwp0kFh9vi?DLb zmuqosvQ!pNyNp{?8;gR6Ne;gc;t=AXsf~4% zs_h|{ThDxm33c<_)TO~j1)j!+Fz}@O^nR3_=6Th8g=QvJ5!h>ygdM+?P`~kJKfi@~ zwGNAUYmCz3Kxk;sw@Ic5W{x~Tb)O#*GupO0|4<=Q z8wa=jryW;Xrp5HBD>WM(ESXa^J|=D*2)zNLT=8fwT{(7>8(oZ;S|FZjE+-~Dp; z1MLtg35Wmb68KuEDj|VmE~GKt-kHeVBp9auJJwTB vg3Ps!t|Oy9{1+Xt#{K_P0r~zPllWm_EE5^fR#1P$&4x8UxO;4Xu^+u-gDA;H}pg1fs1cL)xH1$TG9vk%$l-1{4D zKmB34mz2F#tGd>jUB|sSSZ#B>IPftZ0F{`=6w`d$iH zRVLRG34Z-h`F931_;++TS?XlG(U$tYn3QOEV3@z-s(!*?g=zB*cuQr${8jW9zpuW~ zWEeyz*#8@k2pMm}^bXvF=~uo{~#E0;m|;4F#nGC zFLvM{e1viQzpOUFq>BbU{^JCYi};mWxc^(c*OoW0+;ZT2`-`_IeaPGc>~2VO|3%t= zrl*u4NBtL{i=T1hZ*ux=uBS&(+HmAb@DIk|ELjf^7HGXZ%-gZ z3v`uhDnIY+{z1?fe8?iSK#*~!}(^mc`r1?LTdD|3w z2wywtlV6^`6@bZGw?e@(djD6XUjx2x5CY!yZ(#`anbW>@^o@Q4(RK9{?=eICzdlWr z6Zp}tm817OeD2q(Jq z@5uM>)$Kfzf=1ud8ieHh&$j=NE}-{8&+04>3o1eRI}JJBKfRS(Vbs0S-XQ!B;7I>S z>6MndduTiVlfBaJ*DI%Q(Ef2NQhQGJNZ5{#N+15xM1yq4fhWi``k#UI$-h8E749`+ zr|Yx-+YRUK<&QP)L*7`1uqW(Av~!w86Ap^JCn{LF$1@#V@aKMm(oIE-9oUJ zL9B2Na>X^YBR!u!|Eb6u#2H=Nr59ZA1D-`&@hYgJHkR5)czPP>Gy$H z_DlS68M^GzDQx{L>RbEN60`TJd?v!tWI-E$DKMcSzNmb7_&8$l9P}Z`v;X`OWVout zMvEP>Q7uhlzO4$Q=fcVIJ{Y2A;Zo8WK&msZoG|Q?LsfJt3WmZF4W*AN>4X zzPa7Vs)}t}576eW(|m@ly15@aiGtJLu&mETuIY<;S#oU(A7FH&&Mr61ZBv(1t~xU# zTJ36wf^Ol*uj}9zoLemTrJB=0-!L(>)q+a9?M`1Wb^q{ZWf;8@_TjO{b|FT`9MNWm zQI7~owk?~^wbbFL^vQ)EL)K!Z;uzZ2OxjTD-E@kF%#WdW@Xoh{6 z)M}d(E7X*=L(|D1+$(%3&81|{MBYK%raAv=Q;Y7$T^_8Z<|ZfwC56)IBEXgCuTo>< z^xq}`m#Bzd7_YVg)v1CHL4wTEEtcFGhvI_OPag4NU4J5Uv$0JrTcXnh~XcmpQY;dpzl^V_ufRWwyw%4%NVZNx}V>r z@dnUED7vDF2I}^%otC_9(hOlb^s7#nK^|RF6{Zn}4t_TzzsV{rmlsDK6EafqxpaUS zUi=ew6Ki!OKX1vs_teFYN_PY)2Q8X~EYDJO{s_bd`cWf!`^DJN)H#!FZPV#3`-L=) zlHWg)9pO;#I!vGEV(lzaDCw|94Qk-S_Fn^quOj1wm_FRs2(}^e>J&kk;3H`9$d~AV z;uZ2$y<**`%z;Rb?A#SSnry5X(8K4vm_{QScbaNygB9BxBc;l>Y=G2+!Gd-%0oGav z)F#hF_oU4ny)2=M#(NUx4YcYO@j1yJZ>0|#)+KJgTOLO72u?dl48*hoE+107mIDt| z)T8x^ZHnU9Sed$8{W1M9Ec}*K&*ww<>gfvTN39{!0JL2yhEt65b&7P&bOSgCk1$g5 zwMeZvLc2|!c}iVqDPLX%`9;lg-rOm5q(Md0CVR9X9AT6VM>#q2XHfh+%W`0y@|dqE zk0l!IJh&p7DW}9JagUT|iGir;TWy|UUtZ2-SI`-zL3(;}xT!TAN1$w#O6bxC|HNQ% zF8pBqpU&9`ygZ>c3pFQ1b#;J3%xFy7R?&bRc7D^v6o1oR2Em1CmAZ4NO`WDSN6D0d zBe#`JfzBM0?q6pR`^k#0U!{Na!*bfm@W^TQC$ie0Sw}(fO;pVZLpGD5?*J1BWBZn7 z`Eg>G&p$|baG)lR8-K#qXNr|-0-PGVYszpvJKogjS0g1h=l)}UbAuhfCYj5AwS;tU z{z5ML^5L^(bAvLG4SOy;EqrpPYKWtDv!zutFK2Ij;`SJa?ck>Z(<)7C)t1q1r}-s@ zmVT2PE^Bk(E9522&6s`}X3q-u4RLaL6G?KL+v?t>6y5#mmluu$oII&m`=sCRD+~^V z)7q>jb1DKD;J&7Z1CR7(`U)g?ujWNj{eyNu0cI;-v8bSVX0AD>Lp(_>QQJnFJfUZ- zvTL;`#kGJafodcKa7}ou79%P8yoxLqPx3Ax%boj#h#RDZSyp;xI!W^}<(*s%aorGB zs@`~$6&58Oj+Rki&BBpOV0S{o`k=&FBcW>R)9aG+C7Y|}t?C2T)e@)5?QP^9?x!pJ zit+rE>){(832#D2$xYJs-3G(4ytEAQW{q{JfSJa@;>UM)(>fE1%2bSB)|EQ89n05h z{W35Cd+Nz4jC!{~Cq)_KDDV@9e7imdv^qa#o^mU;J&}FcShE;Ul@fN5H{)AUOypUP z_rQIv=DdA2kCNe*Qh&+oE^_gNe%+X((eYE`0{2q6#JK}G*=yr`_i8{a)6?I)Xg$Fv z|Kj}v6NB!NcV-GTkNa<#IJf6zaP|QW4evE^mZK>u<8y8CV&RHUl$?MGJbJh^s`N2= zDsR2uo+zI+s%=VH@vPV)fK25I&A&rXbBy>{HaJSJxBpX(eu;+9uxQ-G&7=Z(%ae*u zyAFWA;Yy#YR6f`sB4;!%sSFHRJm{5BO-6uqhO$D^Y%k{3K@&wr!6y`eFty1Ns+f)Rr5rB&aS?(Q@AQ%(wFPzc{?;c?-D-ZSh3NEk8F`nc*j5^v zmBX+&zqIMcQsqDuVd=l_t6^^nMfbh1yVTdmZ&Z@xetvm#7OHCJv!Nx+LWJNtt)o>f z^~0b-blG~g#`i}lbK{FYG9fKAKbCkKP$Pty7TM}8HtR$_>bo|8#1n11ziq1uON!FC zNM{VEY*m@KTkq+LJ5=*h&~sC<(hE}6adFaflEEGQ^-!}uT*OLp#b>mm`j_plJ@W9c zpMD9|&EbP?S&l$YMhTtOp0F?gsxalpqi9*4JBCKFO&R{NlWB9o$aSVc1rhkS!$kz$ zJ~_29+0hBWgG)~5TMmL;xuPKMsr&-)m2v?^uZ86GywX&RqvNFXc@1TPX(FacHqtAY z^^?*TP}Ni97_hk`^t8l1NF(p&S^AXp{N29p4^XOfWKzACM0Dt6uiK)4S2*e z3kS_gg#o5}hxFI(!dr-QzW_wc6Ni^VC=5DZR6}%7m?X|eUxpV%`79xN z#%$>wosf+|S~Ojra=#THxVvUDjge03(1u?*LiB%UC=TnNCYkcrWW=#uh^AtD*nq;lr1mt)NTI+ENt^(Uz3@;~>; z%R6^OyX<%yxi;^YAvkXSR!%7bOMet)j=xmb!uefBPJZnfrjVYRW zpAy$>Sju1O?Rzs0op9tM;^AJ`5r(D;He59G@MP| zM`(R7K2;u#;cVfjWaSYeTVR~33|xI~ZlV1+DSV>f9kjjaW8iVtN(1d!fU#vl$%-I5 zSBj;B{vqiV^2DaO(CXxD_ABWar^A?x3P-#>+X|)6-Ugx=92a3RC589y+JbiGg|{sj zWUN)Y9p9v)iK{;hs(w{{U}6_GbN!h!ygEU+dwA{Y0^8#Ce0;3mFn)3Y`}nL+jPe1- zZ%v;X2l4)U03%L>7ZUFFjhO4eE(hokagZ!p&tEcH$Ebjqwq}e@#7SB0UB{Q?bSy`^ zgheS0jQwLbr-eSjwsVp?f0}OZ(UEL_CHV1VZ3W#JdZ%TBhJ`X7UESAZlL?JCP_?D; z@PN;y-0KCiSfc{DO~l8sHQwDq$N@F7C4SiKVji&3zLPVx`iJdG^)jM+6z^9W%s_XO zK;+c6ea7_6+vcaNvEwfVjK8-KoF4oHI_}s}E+3%2eHl2pxNGqy)M?+2_#$ogvx)Wh zJTBiPX5l_^G~+a@`fy2=&gF=@aVH$El?GdM9$d8+wLfA}f^E5GvkRv)UfkMUSCbKA z8o$fX{1SP^@Lr|olFPSYsaH6KsggN4K_M`t7KEo470;Hm&6OP6vHhA1TE@y?3v{F^ zCah2j%HCS>tfv1)<6rRAKv+I}%Elf{pX`)PdwKURt8aEJ;rh7#`uKY6xV+q^W1Q&x zK@03HOW5A$@)FGf5^m|JpX#U}`|=#cy{XVR@>L7V02wTmrZ0_tSO?TC5&Hx`e42A& z^Ds4>I$+agCAA`2(>Ic;os^NX>BJq&Cs#md^5+#MVu=RGl|qEm3tF3t#OIt*F;pX1 z7|-=7Sh!@V6(qX)}0GLqZz}+BgkwSA#xW_bDXDx)}Vph z;>)W?AM2c)8l0UPTyLA3y#zW0^;a~(-r|}qk+pYtn%-B|?NHY3-qt?n(2`7hhco`t zMxlRhE12>S#;OmD=kfrSu7qChMo7;1TN|w9Ns4@ChR==JbPbE~F^6)}4r{Um|G|D~3milV*D(Ai1VkV6i+A%4XbeaBGR=fH&bhVo~P^ZQ}^zta15yrXFaMEUvc zinwOJ8vfD!@ea5nHJPT(@{K_9d$|Prp-Kr+e!Brd2$u<|8OG(JTlnyHFvvY3E(k^) zgVGgDJY3z}xQ-UBh+5W|8)Ow?EtjTcuV0xY7XHI(f}kxvF46vSZ+Q!$-ua%V#VdXJ zZRYsN4QyBE&v7Di;8C&dUU8A_s$-+IvrbDzRp<}W5{U`_?y%Z*7nclu7cI61Q8Gs7 z+S=8dA(*=n9x0b)K5pBU&DM~~wCUQ-IC6Qh;(mkf%GWZCFRGKU)PNo|!qsJ97#26dgsr5o@OJ6)Ttphb^KXa<6;S%o5u!5M( z_{`$_61wmbRqZT#C9P^ghs_-C3I*fWnQ-vDF=MrnONI^dI{nJ789<)mu4ajlAOZdO zO&G~q#hG5EuB>GrJUd+nD2a5UERkR(qvvNZ`=rUPxQVh^iNo^P*S8NUUl9($mLJJr z74Vd@P*wCXb*Sd#C8MB+JA3^M|0Th?4%EjbX}ZQOCPU-higi`wIs0L&u)8nR+1KJ_!bNAvO?otR(^yt$s-FJNHl+_LOW5|2R{6~E9~I>*<71DHS_;fcRn-z# zcWwgxIdBR7&UFjY16a1nD*w9$N&Pk60H`NlF&zN1rV(Q3P*M>EBw4=+rg z9(tfzV$_@nqMHVt6Eg=p3iM7fbS^NhBjV{&*A7=1)y0us#02?tFybJ>bZ03DD?O}$ z^Oqk|T?x!RO!RW>e}?}c4Xo6vGfpoP>JjGXkwMmp+Z95+<7v*+QhPdm@Z@J$eDsS8 zhNg+_-!?YM-`X*ep&qQ#WFv5TO$~b3*TwXqd5Q*0pO2X~5Daw9etV?BN|OqnH8lju zdmXvWRR1xCd>_+ps!^?~%X~^4-Kf4=Rx%w(e*U>ig!o=~O#u?=k18w|y#EZ0rS#E1 z;IEbebMG0dYi6>{)cr-%wn#OtX1(RBfHbPIpN*#4$!t%!2|OCANoUyWnB2j)OU%9Q zCV5ThQq}gQuR#ZGLIR<(u~O(^jic_7~xEp;F@ zM9Co6AnX@UTLX-&n-1hNb;VU)(*Ae}H%lL~=mzE)u+_QP6qo9>S-)6nA*&qo$}jm`N3rYBdf*83tltogXemicMMc`X4GNilvF=}}OTx*s` zEi~A!3}eoB2mFHH$M#AI_2V)*VN_=+`UfAXhAsn1vg62IZCt=Hj+Bpj!k=k44|y6L zq(@T^N>(531lgSd#T0`@p7h{_;`iesSdM;KfZC2C%em;WxrP}`H;%Aj>2yU!9^3nQ z3zIt++7+Z%^6PU!$2D;2R=aT#rr&k_QD_!VTjR}z=0wJCcE)fxLEw2%hpd0s+P-i& zEr(jig~80Kn%dN{=}>))^mr9eHJohh6t2^FX1=&e`CPxGqIm1iA}=sD(;EbkoOO4k zq)XNk$l^i|MEegp;!mFG=I^*hWqdsVL0pIdFyZ2HJ`f$PV$NOj<>ADZ8luneLUVUQbaHb_Vr)pE;Zs1JuWWL89I&7=U zw{;F3`=FPM`l`b*EJ#^igzK3jh}oaX$33kcda92ui6db59jRu=!Jl*I_|$q8!cyzf zgAX&VfsX-e6Z4;MN8-Mjk%n^*7E|PLLy83D723^KyxbWtLt9D}E&7vwMR_8n2Y$G4 z)c>LJOXHsce(p)6{s+0?u`>K0W!A+H+xoQ z5iK5zW3{aO*l(nwPi`j5wwbz0+9_9z*fOogHX3(H1UgezstA66*AdpeQW$k9fLiML zU6EO1SidxfT3UT9s6t>`ES9xvLKy_4bNLK@jV-@4lpx#=fz zW#QjgtLH4OoZ4(p0ipS>_rmxt(}(lkc6zc$?ac|xfxNSvE(>u|%q5kX$#l}_+MBi1 z1r+ns=gS>!56j|e+5knn(WWf~v$$=uf@U3LS>pcJM2ic3OxKqJNkxlB@8P@0k=iEJ z5V8G5W=|7m6fMOu9t}a%VnRuWPOb|&+`8mQLp$xzPBhoTtkOgMP{(TatQDE4vef#% zcn|kn%rbwr97P@)Ilho@JkFBKaMzv@wj9yH$AB9GE`WwkOGm!T$+tejI_r{;b7ti zHm#wGm$N?%0JmrgJh}r(St=?kkUwATa^C6@t@{;C^wzT%^>sg~lGE@;E)Pz8lU%m$ zgThpnjv@!TA<%eyHm0U@^8iNsyh)?mVgji?_dz z_qpVtVV2F??PuP-U0{E?yK{Yz0Z}|f(lXX)dZ|Cuv!~we>53Z1Do4rY{spBBu3l7h zLR`vbSLdrSa45TR^^d&up6~I1Bxt6M24wdAZC(o?5zz8%DI{&RY9sm1WUH0&Gg&Rh znYvy|vd%Wte*A8Fq2+B%&qv*zkPAuPx-~T5jpjZW+wyaIp>;#CCO%SSZk9_KvyU^h z^Oe?wyqevew&5sZD+fTw_{K=ymcscK1-4~?hZM%3*BZXx%c;08NhoPP!~qcM00wTUkk|p{dzk$9W^Lu8cg~s>Brk87`pt4_blf=c`BXkofAN^K!vJy@VV1i4Jp-zcT zZUPv`3iO?C{TdKPtqT7!+wzHW6ip+#Z8e0n<47kKkqAGBnnY~+l=i)_ov8_V3rma+ zTT$UKHjl#U^!&8u>hD^gove>HY^}O86763Sgd09O#!w_pS$U*{yUeoDEh=iAp692U z#%r^5v=Vc&3Q~<8RjxC=u3m`oHEK}9sXa!|DulP*Y&X#&FcUqrlA$dKWamln4x5Sx zS>~3wA{jyq89vqWs%Y2lhX)On*>!X(NRK5;uqBZyF{+I`Rpu=IaEYXUP1|%1t+C>qG>T?SRgqVKj2m-jkzgL!*c?a z9+wDoWq^}X|2Q`1vlPGkcd)JQVmV#9?LF>}EYHG@Cu`j}L#({Fs&!Gwqq@j?wP5JE z`_l$y-4)?oUn2E1Z@_SLubxM+4lDY;wp19N`iDxfL(gPN_!=dI8l~{_E?mrwa?Q!- zy6=H=R?9EofRve*gTbylj?wI3gQYi}6v&~<`@PO8k>v}X6St)ZW*FmX+5qh+ow&sE z4G;gn%uns`SX$1O^5qM8oj+U#+eR5q2Gv{)Bojo28(#!1Bo;psVjzn9)M|0LA_gl_ z=k~^8g~X{9^5Wce0@uPyb8e-Z{$WPvMUIEzxU=;C8421g3nVLb}P5&f~1;#?Nqe%B!&p%V}7M1w0Dpc_E zNi}3Pr$wveWa)K4ZmzD^%_&V37LJtIa>-1leYxwk-=r|>BOi(t znY3Tnw1Rhd3bE3M_?}^(+A1w)&*H#=*yN0Ax8t4@7nimcpK?CX3I4;Y6|4=9LH*_HsD$9%wO#yH@SdNDJ0Oerc-x_ zYgkj?L|P47tJN-z>)+2;tz``ox6zXwJ=#npAN9%Vi!7_K)l7-KO^QbQXih zha=OL*yFeMN{jfGF8mD+bC&o(3ETySP;a*YV~Y_Vgw(EC4xf0`Une?Y_@$4c}`prYfs4`wMv zF3%wxS7hrTbyyOxQxcHs<^kWP?GLsH^{k7*>)41HSp#>VroS4K?Ca@hMuTr;oRDCu z4y5^PnN1QDwseXs5KqQQkY9*9vLe)tao%lRl6yobCe0&vN*9fwhi0nunm7;OL}Q!nHoL)tk`VHPMXZ5mJDa|7IFS z)57RGHt(so&ZI{U%JgZl|))TqLrmcdY#@FQb;< z$3d=pFH1iCF-3#OmJ*8M>H(X-Gk5W77D+=0@4q!CEc)DD`Y{Tg4uo3brSRGjL&OZ& zGAbd1BoZFdl=bevAxS+PNqL13HI|pEwcFPs8RiEs<^w4yhTW%dW!^*x^Mx*asAYQ$ zLGN;B`8(B~Z-Nu3gG=Qy>}wjIAJSAYn)>JH^jgIkKruWeITjiI$}@6JMs*4N0cnHX zE#GSxFl#=OEnW?sY&q)Xx8JMERa}=9H0obZysT^|oad&_d<&n*w9Zvsl27zWZPloP zb#5qej#T`eCTNb#u%VH;m3wLMgrgtQ@z24RKbPuk?H&`kCD^iH&&snI%th6T)w-tQ ztae@z01w+I@Sy+5W^GW6vX+tXZ~^FXgnR1*wAFkky`5l|@5Uzk=br;Yh+Bbb$F5i8 zeVLqZ-=GO=!>VseO|+j8EW}3K`TsfZ)pV#os|2)Uggsy6L>Ggdvh$KV{TrWm*1H({ ziobFLdc$u{lN`fgEAsVEg4ig*_i-upNrBwILf`^nY>G4evc7)W9{V#1AD<#dFALd$ z285Gy(qV?S&)>+*I7yVfSk^)U(HQM^jD<1LSO;CvZpsF2mm%aZ6wc?oyFFKLhY7Rt zjGOHg!jicoaHG*ndEYS>XrSyY3VYCDH=BH>y`ui^nn<9=PHJVRBF(uo?L17mVzhYU z3q-azZ+;bG-td!pqCtBXm!x;W6#3+MB}sw@V{ud84~h_uV(k9hK!QR>m+#OXY1x|B z+~%{WN_sK5+lHEE9hD<<{zC|~%;LkeCHa6If7U2pJkt?++!()^s)vSf95#l6ct4$w zU6ejx^Q?*{`$S-}iFmk-)6j$I~orwxYTOaeVyX$8L7 z`MO<{la@9+TmkmQt>g6Us$#>!J3K}9B7WMY!*?}ao;BKc>FsN3aZ-FfpFCLu9KYZD z(PDyPKe(S>y!pd6Z+)LO*b7NB)QEuKO7GP^YtK2W3LX2Oy+9mY9dko!N4f&hxLj^X zvj3RunW?9&c$*wbJC>=Gkg|T&e8~0B4zV5O53hX*e*e*qw~J14!x0V7sA=r&$TMIO zlA2JPIc~B{b^L07+V9{LWpVM`8_FOhz+ikBE(c2g+XPhQ)CAm*IzmVya-=01(|hD& zmypkD^gOH>j(L@R_Vk$QLAlKXZ$$~x?x21T$#Rr0|hf z;yw)rsPZs0O^NR?@4l&G4V?sE2nli~jKbXlawC`}>NM{BzSdzc;h1Y}u4&KePPCn( z6V|L7vY3zp)TPfjyFPopbkX43YOz4JAJC@&u`x?QRS?L|;rTUa%?#QO}=*e6x~^!q^T4H}cI{U^)TjnSsIb|m=3sw*W>u5XHOA-t-|n{7El*vN2xbW; zCb{IE1YG}|tzzQiuf{x|kXM9_=FSl&ELD?#5|n!;#Fiz}K|;MQ0rMA6$pb`T-)lI_ zjc3OlHnx|(RB0j?kzIWz&(R?bU)We5dCUntEv)2em9MK;ocGElo`fzShnx+tm%q^} z(jgjvXlhi%Vtd@PI82c7cl#<6c@0R}Ge`Rx`)ZqUP;@iG>CbfROI8fPeXU@?uj5Yy z@C;9X@Tb?FAlV5r|5`h@Pe_4x29>r5M+G;2)ZmBW8zL3YOs+i>G-r-z#8@uVioCDs z5RXq(XO2d(PtmtfW%g;VvSB84OJ%!2%8TC&ly0)i2cLbtjKb^LDF4%S&dSxpsVK%_ z@E!}1zeS}2CsU7E0CfIieHe?~YF_o~{ys&`WtNvZ&0r?LPB%+tK3-kCHV7ff44Adrw^+wY-ec(x?jGv|pMP?iJ$ z>s(VcZ{+Ka6!(8h5G{ypl4Ll*W_lJRaRrvjo!1o!$4^f(%2lGVqY#3nRuBU8En9e| z$5usW7cWS_rD-`X0`iU(;=b%dy_UW+fRg%(@H{oVvnAV5X~E$IqkGv>_RTEk;vt!Q zfoe~4WGTR+UQQ8qjL(Q95q$CTFd5@UduOGKq1q%a0ReBNZyXxc3K>I2A4Sb{Rzr?x zi&G5kr)|IV=o_W7hTfq>yRjtJ+B+G0jW-Az(rYrbLz0j?Ra@7o^RbWdxB_IcHCDh$ zXl}DN;=Es!cs15l7Gc7?eU>=d<1s#T3A7(4n#ns9|y@2<_`1RH}R=Ut$CDBZVd*hmEciEPGV z1!U7KGNA`01Al$j|3L2Ygjf!WZl*QUuWAm{-Jv(vk;`n!7xoUUqV^z}r`GmRJS#|D zpi5z@<1_6z-Hzli6KPa|`kl*+k|K}Lv#o2*uug0RrMpcq;Bk7zF1vrRjn6&-%ohRv zJlbg}0y|gSTvv5|#I4k1jK&=^Hqv3#)=!ghs{fy~d@QJz+)NX&_G7X&B$%RM_LIA- z&eo)gC&!_!R0CY1DB>VALh^vgLGj?6Nn)23q`1WJ!DRxv_aljfZ0N~ipDgsBa-)&KrFn!_(4m~dpFnEgC0W3|3 zPn9sA@UGQt{F%lYGQPcLK2Mf;p8-B&aEIA@I=!Xk>Tr@EOEusvn{6e|Y+{}45V*EY zms^L!w$EP}v%cC-@1GvhQy32_&M}r*KTn>hB90&*Ba$u>k!=(H@~&qihQ>B%ov$Hq zxTCcAIQ%lYsX&1JEVpC;FA*C>0dS;SrkQHUs8}E_lf*gDh|6Vt#`A9YIJj3*2BTQz z?TezfK$By5u`VH@pA*3LmxvB|;&WWef%}Te;b7Pj?xBLEUJPwU7TL49kwi8er=8Sx z@}gctV(HzcAPyl12IXC6iRPa6xv|oGL4>lSl)yq8)OEgB`$(p&b$pdIhoNkz5o1;t z>*Jj7d$<4$pnfN=VVya}9j<@V9(o^^c8f7Ma1ofH+rH6D51VdmJYSm?T$QwhHJWFB zlo4Q}5+160)a*7kkE_%-mcr6!A?&OI!See}@^cgmqNfS1nd7XKlPEE5(MSieW+BpCK)4;GpI?%Xh~8R32f?h%Ry`opjEQ( zB81zVc!~=m3>kP2D4H%2jr*u~kA%u5SkS55vP+LtE(OS=!8?N}*h@6R23Pmq(e(0E z?N2w__6BLXZ&<3DVn$+%=~ z=)i^E#1poL^#oDYJsXhe=ft7y+mL85GCUGQrnCOxmUK7ll4*K48_+@&&lKgCObBeO z^;0?@+hrDpqx0=F_hVJ!PcF)c@jDD1OK&xq`vz)l+FOf{x8azyzK_Ci=QN^Q16&$7 zZ-jV{UZ@_m8`~`SEufpqe#UwSRR*c{iIH-!Lf5zjd7S8Kw1{cn=wvvop;YwlV@xpu z{2!>To{{GB9W~`_aZj?a4)ZxKs&z~w#rBRc;L}F2t{Y00@ja#L#d%R(0vp#`_#R?0 z5DUTdX^Ov&Yv1oaDOae8yY%&WNvy9oc`eIxmnCTeRTc$4C!sV6ZpH=z3!7MGJCISv zJ5;sLSV^*vZQx99g$Q4PR^oer{^Ffd14W}r5?m`=__TZ~k)kH4}O?E+wbb<^w zYr`Th0bt}+zl!S@NvO=OK;hPiUk+xc+^&UlL|H3cJ;0k-F=;}xamvt8FY)Ot*CK1P zL!_;^Yc7fX?|LE?t;8dq_mi~W2fljkJ@MJhCZ`z;i%xNOXwS4^Kfuy#svY>qZnwN` zk_guu$YYJTpYtowm7v{Ld@6pcRUCw1yHPbYwkw$FC4*bxb{FU!#fj5;xOUiD!fkC+ zKu^YQ;Uc;>imf7eK6DRiZD3s>0ayuN2#m-u=x||LgI8ONT#l;i;<3k4-6s4(;Ebw& z-$JsH;Ljq{7SB2zFI3tk?iL(vH;#?r%2zGt(2)r#lJ1zot#7e-&9Kw6*Gs zI;qE2q=WIYDdIgt_BUf(4l)N)KP{{-@xcd1tmw6*)+~3s2$;vkbxPs}pMKsN82sJg zK#0)ljD*f_(;(Aw9=IkOsStYyv+VeJxW z6&R=ytwtfkAc}2mpZp3N{fi(`PF&uM-0Os0W&>8$gLK7GWUGQ%9w{1}Q=!35I8Bcj^@i*C7?z{M=@=oT{XTyoac1 zc_I@MKD<(gV_@qYpO2g^A!B&y*!%+4b#I0VN@PnrRU3;uljSDN_snM1Sts_>!>wDo zIrevWygr=tWnW%qk5Ah+ECi!DJ&s0pDXtN-Ro4;9*G9aW_L27IuO?0=L+0skn=^-1 zA}7W^=BP#QB6uS@vN*z6H1PE~+H%pV32g;S*D^j&HNF_`GZnOl&hx@SOP0L^r?rb9 zB36V6AG1{Ocmjx1N6=Xn|F7Tq4$5p3Gscr-sjR?}!|(vtKx z$<0p+h>3g`b@mlQc`x*OcZ!#c3#OPlb(VxPHaSa!-|2?tN@oSg<~qt!cxjA%KGlDa zat;Z;=vl%aOl7^j=f&R?7F4Kv@L+sTgcZ9Jl=?!exg;Jilkd7!BdGG#b6j+AVWG(T z4poX#L4|hn08(zjf=_8NFc_1>zNpv<2@Qtr0RVSc?nYjUBV6{&BjRzeMats)$W{vq zK9QP48Q3XCG#)RC>rEe!YgL(+dA&&1HN-R{0X|QP+kIddK(8s^984rw4(G0(b30=M z&UwH$C@sQH$Z5z&ukV0pSKU*M=a-ad%I~n$(wvs7#$cMZCF`8?fX5-VpmEcAXfyJQ z#y!Io`ptbc(87m7!ji3=RT8<7Yh&x>^;u81rLdg9YigR+=UA^j$?9b8xVW_R&*k?p ziDPjGx+;v%n$Ts_^%SbK8Yt{uDD4l(XdE?cm7B~PgR!|BWfa}=guF)S3J8NAS7TJv z!~HTz{%YN zHK|>USVr({W%J;L&k-q?tdN8zv-!XCIz~G}ca5IORuur2dVWvw#NL|jnRlq#tni{Ys&4Yp1s20s9AJvn1dBiX9Y&(?WsMdz+C@V;{)L;lCZ)A~IkDNrFf zk?(`kC8)0GXXJH%A9XPzDH)$W9QVehr?*2l!g*0@;UpdVoYI^fe6VE(<`iS%$s^;; zb3)3f3XTYP`z3PC@B`}fFK)#MUL6*;=H=cM1P?A3)~Z<58cZAi#E6dhP3WNg)t$@G0TtmIFIJL|$;jpVdfb54<&@VG$D- zOX|JYnYbziyBcxL)-6&G+17#aE?$e5_;_E~lq5B=HfI=~c1(`?6P%cH!P%tu!Z0u8 zJT6X@k9xQLQN03DNt~Y0gPx~>=8LjNnj-PhRo`T0VSGpaZ)WkeH$~R+gH-J#<+mA) z`yH?ZPd_7pt4EgKBr=yjd`#fJ-EP03&dV6({ab^YpA*m~e&pOLbTQU5K|K_Vw3E(tTHXmax zaTBr&$NNm6l{}kDeN}qwmI<$cXl`u~DNy~A#eF|z@DeZ+T-Qm|_XJ~S-aqTSzKdSB zqHPex{RN;>&VHOJT_#e$k@?La=A}_frDCT2@x8_plw28l!xzi4vnjs1OgSeH*J%4y zGq-KCI@`bqACZ@Q#~63{`d@I$ugenUSIe$#f@Z1KR=_j{7p4kM_gTaaQDBgQfI}O&>AbeSKWgIlkNYx- z>jy6z3Lxd(tgW(+Nhujg3oIX9g3l!bNp)R;gJ@T!Ub&Z?fV*1lwY^?hd=5wOsBB$~ z#~Ey2C@6cZZ{>(N`-oM28qKmT^6>e`W1nFAmk0CH>k|!$Rb8ss#>0+)+VA<<2RtsU zuvWrB%3Ll21hycua7uZ1gliinAC|=CkwJALcbIZeuiNEfuAE1jj*{%{gZsWh$9DX8 zdTlZ((mKTy;mX)QXLp$(2@U;0jz5R#l6IJCZK zZ(u)5UFdWIt+DGk1$hu32ENZ$rDYAHq3gEBKnRz8NF!7aXR1nvo9pg^@=4Z}c{hU9n;?;?B zDbg?>{5b{$-ud3=N2^O(yK9cVAev!Cn^J^+cf_VXaoV4kr9ZgW@sFZ$W^k7p#Z!-A znT*uZ-rJoQDK4YkVr@XZ!sjwYahIlXZ|07X2AE;8d!yhl8&O={yBezotGfvs#{xpk zM@BKMvhp!8_FS(V;sD!TH82T=f$Qyl$Ni3tfHDsT)p==DjVWq()!L`v!QK3^w&`|% zuO3I+&C4p``{c>dJI<0Q|CCv!o9nl*)CWQi#>rdB&aDBJl`cojJi(rdWw zOl2Pze|Bp)7I@UZOofE4$r|4>ZiP9p`enl7ms7m)d6fC!#@yU9K zdy|0#iyUhD7V%Ey1z--`m@4+7OiYU9U#8La%3*m=sPVN^xJpz5Kx2ezf$W%+nW;mA z^MhR(MW5mWZo&-jOy8>bGqeK=1>w~@jtWJV4Fs<-B=cgQlP}*RehEDz!Ts8*)aI-3 z(iI)tA62m}o3Axp{6-(hOD_cuG*r!EXe1w;{XOl|Kd#&8GCSL1!{>V6lZ{akd&Wo$ z36esJo`U3f>J5cvA(^Ogo*X3~eb|Y4Pvg$HIYWlqhX$LB6Py!m9~H~JBJgHKSm|hs zWM7o0%C|55I;Ej95x-NLeQUgRsoG`jnH>;2)}TmSDX163T$bZFpin8#t=5Q(8#URn zFxe61uv=c;^3EhRJDJT7pRu{)7;oH<=DC!s9bt}DcMEO21IcAUx#~MQ zDaenTa@Dw03YL8iJG3t`wkGk^?K)GoIr;PFC8{X0%1XH=mvw3%*J)yyz8E?7Kz_59!d2waKM< zLb;CuEz4jx7bAxoI;7LrBp!0ZH_i{{9RbYA;PV&{kf_sI$nHyxE77TFHvwLS|&(6#_yO%0gmK{wtd0mnO zHSpS~u-&6`qy77^;x9y5&V9s**HlMQ#ZT+29vc}S?lN2M416(e)5FXvafN00)f#`4 zCb5c6rB5)N(GO|P2iI=f&wV9EfSGkQ(lD&Vf|s#uUE9xxqBK^(REH${ z*+S#_gCcF5t7)$r$Cdy<%JYoPVrHeX#jj+C=dK;)5xY~ylN_a5;On8OK>N5m4KE+P zByY#qY)KK{wY&B5NjB&O6#wq&y=G>>K$Pj_>qYF_vGxBTvL zoK3u>goxJz3~r)5mlDf0*oSLDd?eVZ!feuG&cbU%bZlP0w@<@$MavY{Sx9DZ%eS;{ zlwnhb%j)lux`ER-6Q)h7l{FHNK&P9TOaIPLT+0RpF;Cm#7XsH;t#un~KL%o!lt#jC z`B46PD8gh*WQZ_ZoP!@~ui;aRS?X5$ir23!Ybz*93|tNJ{yEx+Xvl@(i8o8afKP9y z{vXiSd%4+^)_LlYfZ@FUIP1!Ne1H`~^$=po5TaE%z;N=r4ZW5^ok_YWZPb#a%CsHw z((-dW`Io75HH#DV)4Epyc^inuV_Z?jFATgqe=*b5{o-SuxsP5x14SCfW^ZssWN!DV5%E@O|W6 zI9{MFww2$$Ua(F+wHN|e4vt$RcxuU~;_us)uy=_|Azqy;UX(DOqMBjfrUTtLEm#A$ z*C35WtLi(t)``_a8rHqE*a`RH1o1v>$!&WF@5w%yWhlmV`8}VXNznvwAYdXUq4*IT5LlK08eCjLMS9al;-#q0 zrS=xvnDkqZZcTyEaaM0Lk%QUDEi|(f8#-ogx(YDdH*b<41QynAo zbn9Gr{4EWo20_;*QI>7MC4t1v4)$874(evy4-WhLuT{8YtdDDDEWTr^dT<&wIOSSr z+S+EU_{U*hpMS=r_ZTWZhyuUa^S9$BzS5mNb=O#S2!Ba!BKL|7iPJeVXl*uXRG3Wq zTVh2@z6!UG;>G%i6a?x{zFEcgO6izLD#rvLH+HH3Vwx$qkiCivE{RIB|g^7u}&X$ieB*f4a@vjq=zFJtOJ2;%gZ=8&zU=OX!F*2 z?Px9^>md(0^iYR}g9q$UUi^IfL0fU{%l)#PZ}`nwIxc08XAO~Abd6{4~H!Opl{YiD(LdI3zf2mT`}Zdmow&SG;~AXk9lvZ<(?z zKn7kwMjpxuC$>jCZ^L+~ASfPnmO8}?h&wH|-WB8z#GaaK7{P*5)LbWHL6lKQZD;d` zV*OgOXfsMk|GkJ7kH zYpC0K%j~bQ{p{giIZDDq!Xp-HoZO_|Y$-WM1XA|GvHZo{|KVsy;aOLw4qN53*_FO+ zw3w$qKo)yB6WS*$3Hs?o*+*Y&Sc0YV!wx@?Gw9Sqe^u;w8-Q|*o1**s_raAegG6S> zvD78%vdX+vC{~DMZi&t3uT<~X6*~UjI-y=Gfgk%sR5LJh5>SADrTIy@7$LaFu&&zc4yuzI) zJmkZCKn1r4G?3Drti?j{&f4tB?F5&S9L#n8WGXCC| zO$PK(x^AX56`Vq`c%%;d6AAJ}rNY8&Z0tIdbF|JpTeV2h?og26xk-S^?l*Th*#fEN zWqZ@u;!>4QAE_siJU07Ps&fvT2q(#-> z)^Yt7v)jU-Vs-oouKy4?zy@rNYi$ZD5MKWeM_2oI6k*`%Y^8%EZxP zA&dpUh_O+DFMsonJ>)Iev47vF(o$Y5^eKmdwATzyC0bF{lbZaod?|phm6GJS-QVWL zWRYjooe>Xx_DxZ%Le7?THADS_twmoM#HQYmPIxj$Dya*BYrM{oS1u|+pj$#Fot|L~ z={NQy3b$bBGAGmh0HGy>_S%sbv5Y0xjDN9?z!i>OM2%PdR%?_9xv1k4e%?$^v9#k! zavtFRDT+c^{8h$6(~;jP_RFki*k?dgMougl<)-IbiO%Hex^M3}*f`(6d!KFT)teN* zROi2Vxs#a(J0|vp2Bh`#&E0OQ=<8fqF#mwM^d0%UXmF7!2p0ccZ;`53@cFi+qxZMv zw@-CS=({1^lU7(DMgS0PVD_l^UVULbXhlTrQSoixr=N>FBJFazcOkZ51_U~lz-&<} zZvY8GI%_)DF4)liM^`KtB1FQGqm)|I+cgg-Dfvv^$r^jv$JfHFq1KBxDae*f5EF7K z1_WOG)zu_aRV66Ig43{s0$CBIOyaIc#g)j(mH{%_f{`{U2lwKmd|2QB>NpIW<7r*$ zdRw^bELT&2Z66`{I0bXeW6;DfO!7USJ1)5CHIH=zEU$75y6oreyj9rUQ>oq?Fzw!) zSxaYWNAIWa%Mp?Zjt_Ka1FLy`#hDQvtt=IiNBOWldB94OwjNcoFSa0rr0vTyizf-; z-so#LUNS%$MF#?W**QLDid_DS$>aPP8(h=gcM=Fsce0&d`Z{07H|qCvED}^{+*m*a z@b|W%EWfiVMC+mFHP(9+-+3Ltv9mhLINdPJg;Mw)XLH1-!{J!lKi$8H8t@~W8dni- zq}PDA0$99ofs>-lDtoBh4Ayi?%Ae$Qn*gOhU5sa0ju-vu!d`F?&a#OXS~`ThhEM**P@|KLZo_v_SsVUUY{*O6`-l~q%=;Rm-WD)V zX`_(cN|ZY-Je00W>I7Q{9YPb`+lIiUrP1t#!hRVeVYmK>7i(kom6tO|-h)tF+gW#x z)%VoMa&eyRk0+sBCnB!Ly-v_^%DE4}HoEc0VLr;x{YcdW(@=mQg8(vD!3yt{8r>g= z;C3b5dd#~sgjcH-a9d4~^G2Xv6HX3s^(*b7{W~hVj0`o)6p@d+GOC@r_O7 zDrOhXPMgo(y$U$mIeUAl8pWlz^<~FB6wn^Ak-=(y+1&V~{G^2@e2;ui4XB z7TDmaj1Tnl)EfUiko^%GcQzF~{{(^Gz<>lwhvzwjVzNuLlm)8(ZPKX!%3Foh1zcgA zBhPD(&7P|9Nv=&1e~^|}>QzUn2A~*(1V7C*lE;jp;B4Mc)ZbfL47md3Tv!5lG}X2y zz@1pYqz8Y=41%GT8^wn8MU82zZc{hB!PV??uh`lvaY789Au4LUpZ?6!?psga3H1oH z;g0S}=LuaP)IocU?}QMdGN8}Vt(n%SukDOBm;A!(>0M5z35K8?fjq6l#V4|8lAK?c z35E}CE>TTq6IuLjUp6W)gx*HMAnI!1jh8DS=+vu#JMm5V=Yi^Su_sHxTH8Dq86iO~ zh(Sb}>j%2)doy`5Y+7XF5|-BykR=Kn3*E?ftnj&4jetj`zW&Nhk5XDc37W^~peRdb z<5fFB^(~>9TqRe#L^B2|@w(NMPu*9PeLaa{dt->W|ez(qHr!a}e^rCDe;Nng^RZLYY~12b(G)vUqj1orf~QRZnO&W&eQ^lihHK@W`=%ytUZhpp82k1@iPTwryiBO8 z$DLgF)X;a+Lzza2aAC(G>_Yt1lqYuxJCyd93V|D5`HPrh2d1QHhbL#P?sw5Xt(w!l zTsM0`t0#{copuTiynOvGH1hG;_r>W)M;(ka?O&dkYjK<=rT%NFjWZNIwGrI z0W8$zMp#|1Inr$I3;%?+A;Kb%!CC+G=n3x)q()SI0$;pp#(=ZY|8Kaz_rWRpWySJO zrbNwy{SdhfF$4)Mr@4+Z*6%m_KUuwFK5N1X5VQ4Ty*59A>zr>LgYsDRJ?N+5BmsJ` ztb#ALy!cfY1q}CPopm~xf6=iv{EaYUOc4XcZ%GG#fde&^cPo9XSaX+C)Trr%wcQ(9 z`6*HbN@Y3c*bFH%0xn%(5Y+F$n3;MUYh>2&*}O@D3GgXE9w03157kM(!3gX3Y{iy; zstV0dq^KD9{#rff^Hl)h_i}q~`e7G#f6Jac`+@{y7FDL3noz!pJrK}POs^5K!c2z`9vMQJvF0H-nZ+qXl|765pHc+%DO> zSNNB$3IhELjm%%>V>CRb^XlLVt@suxOnpEpU_|`!iF7+=jKH=l@AZiJ}jVXnVF>PehldCU|#Th6x1 zq&3k>rdjj_2nHn(^WMK}Fuj-`%~|NY`17RDlJGAY+2iI^J!Y_U1=HXV5c2Y2x+xJR zf)5>ta$j$gwHhf=sX)k{hbd2ma z^A-5rKt8L4>vNwmLC%;~ijYBm3}PPzmCmHwnIQ-kKROICnh z_a8*3vBY#wi|v?(?5jIhc=#uk`F1^;(+8j$mx0Ox!Yw&fM}whPK8YI~#JNnT;H6(7 z`&T8pIb2+nUW>HrHjRp3D`K|J57G7QnhH~mQrA1I^of{A+sv?g@XF`WC3uiHy@QWY zUA6M4Pt$`Cr_DTs<+k}}ktr#Be`u^#C+F92La{EFo{baoe1y?`Cg?^{`k6VIOHt9~ z@3D2;$R(GtIIq!9mWM45ky9QvovgU(4j~Xr5H=N?&g!l4!I`M3sbgn{C-tpZKVzVd z4EBi;%>*$$vM^oYDyq0@r&@Wg;%*z^{=!mBhT!pNK;L-$sli0*H|X~h0fYOgXE)Kx z6>T%sdLYTv6gkpYhNh992?Te;8-+hVFa+DC{mU++L4VzZ$U{BlioS+8_oqOYZj@rZ zPcw-fMTM?v;|(RDu5O%e93KeY6^88}#p1_yn%!PevN2bcCR!Mk{r>kn4FBoYL*qOZ z=$As{ipV&TA(Pg07)K)6-rMP8C|cz!(5uX#ZGptD5H%D!vxlSnKfsI0)hum?-;YCc zd*4XXOgQ$x#7g`(m%%jca|{-Df-7!!={FG2Uu=qF|AT&UtTn%j;JQJBMbWPzvpv3O zNT!kEbvKh!wpl;!x?0L=FC!HRm>0PIn~Yic4h(OPI6jJfQyI6r?Yv!Jr#u`KDhBs5&W|b zW}eR>Euy!D`!#u#ZJGbBAZ>`lyf#43r~$C>tD_3&ioU9m}svb70>3d?z^9u9r-jk+@7i^?bGkQ9Sr_=NC2r?R%3z&7PFr@dJhFZO=@j9d7&DU< zCzoS>Q+cU2Ggh9`R1a4npD`}lGR*p4c$*as!u*Zjd$+A!@vVkGU_fW(V;FJ_*{rYt zr}=ey20PoTk+C|d#bl#kgvCbo=i&9<(cIndo0RbuyuFUDbal-t! z-NEdm3}V`1f*6Sb7Ku}^-vM;*ok8=NO>ZRvvbKK05z9Gk=-1>Sp84Fi>=#go2{^wr6WW4VPeG_}LjDb1tE>j~Wfw3U>gg(OVAn+<13;Zv!PwJK=JHNC_%V0TF9aTV>%{qBz0|Kmh z8y;WB=oX2k6lw`WN+n4zI^XktH+HC-yhL@51YOkhONq{lUi|wc%g)vFJHpQOPSMz% zf1cMlqWo#~bnFV1HK47C)dH4(s&0n<>P*Df?ufaKPdf2m8`Kb>384-6)A+R&9vj#z zN`&oesBe4tmwJNjq@9LGz%~uS}KO~?2&8baQxAGD? z13ssQL_BUJ^KCjgO}*_ja>x)Z#Oz(4u|9+6DC+_R5k0*Rp??(17^(LzsQu$^CG@5k zr8Z8ZtmOgF?`{ivm&iefAHJc|)sAsX8?4uzvj8~+#MQ6z>HhPR8&T;7{=MlNmQLPi zsNZA3&`rnd<%_7pqu)b{o34db0}1!Z&p)IE3u$GxmEI>suYwxqslUe+6rvN}XR?pN z;;6>my1cL#_ZK{NGGroxG-HiFOc&K~U~Xb&IY&bSDX7}=1L%@z@}awO>?2rTCcLf( zBjBddBo%%ZTtxTT`U3xxY_#izXi|j6hzLAl8a6Csf;NE;Y31bqF!{4B61GSSIyJqM zXEsaWUotUxY0jzOZQ zw^YRPF@ z@EdNBczArxCZX3Me9|9D`;Ibz1gn_N`>;VTzsQz&G|rNqL*Q3z6CI#5J;JbtGh(Uj z5Aua67K*dnDYqE+kKQa`PjZwg+Eks-+Zz; zUK1=E5xz-eRh+x+V^bfXNJJFjG)#41P&EgZ+LZ!th-noZ9693wyjVlR%w+8ZSHukQ z$$!%%9+!s1iA5{j#J#jv{*;ehiY#ho0|7sFAO}lQb5|x$;)=V0G?OIqLY2SdX1$?# z+l@WDeX;Axjb$Es$tiBld!IYnp|PiP97KYu&Lvh>>CXLO@q?SWxXq47XRPxBg%fx3B;T6$cIvhIUTkfD!IaMxR%Q9tJqv~w z9bwu1V)J}1jo%qRAjc=^=7BAeV;1QlEcJ2fzKr*Y0{UAX&M( zzd`|t-rL!N9A<#RTV%7iJ;=vfWq|~#6_JAAsGLDJHf&VBeVk)=io(18>if4@I>seF zE|?W7n7179Nd4a?#3!zb>yvo>rM!=h zc;%;5*InqQB{Oj{SxzqvxH|UMM}hyheF0}M&D$h64vOpvn%p}?MfvcQy)Pr5z+N98 z%vnxYP@Ymf+yXubGZ;QI?5{~*xb4dSbr@NKTX~g{sm&IzFnJQ&z@p*>v~7g04VsuE z(%ra9`QtH@FR4fkF;G z`=S6fwz!>xII+963 z9k8);{B-v|ud%fLvUGt^R9naE;h}FDm!`!FmJ4QNtj%?ZGM9bkLcgHy z@8djPe;WOXpXY@c;2lvyV0GhfwdVhMk=%6jTiQCx zd*9!gTqhg3h`^PT2$@BrBM$QC&|CIKVeKP#HpHa5Z=8<( zMl=1PSdgZkn6IJ{*;pZ96-gsZvEn)+zezhmA-Uj}4hFj_n(`dL$x@+R8`0(5+opw_ zaUesthC;Xpr4R~lh#{)tB_s(D^&|PF_8U1U@DEP{6!Zd}&MxLQcY z5C?qgw|tLeQQ3sAiGY3V?v9c&^)OO=67anC%f5vUXnru@tW{|;ujnr! z_?OZd`W_i7Bu`Z32BC2@>L^39B5?urzT+j~PII&)%T-Ccv652!Ukn&&X9M8jD*P4L zhEv#l@w}t0UJ^L%4GVp|>GA&tW)(GH-d^6rX#{b;x?7dw?Y-hZOOpB97bm5T7KYv- zER7s*wH%Vs>cgdomYI*^fA9$;rqL57|G3Ogis$ycT&u_3m@pYgX5Yc6{LPQWoyAT_iLj|k$J;i z5hMtcQ;5xzaPUd;X+_l@%kxc-)TNhl1G*7MhO`4L8j1Y-zGsw}mlPG8F{4vnuj(C3 zO)vWuZvuV4ASHJ&C_$r+qJ?c9a=v%^(|IZ&NvQ4}^9hEh0(|1lc3lHXmZ$%4?%c{q z+0lP1vH?llmpTb9sZ7*D3=>~OqxDkA^YlSO2M*ctHGP)WT62@ZC8O2hG---iJ)_nP zmYz8jJ6DRR0}kPsW_Oa{G)lwmNk%PMRa4rPJiUL+%~tY^c*LqYW!e^`L8*4fX}ARv zU1S^m85Ahg8rk8ZhF@GQZicvD{bU&OE#OL5Q_O=77N*JkdUaYS~_@@;iG!Bd?6&jE%8%KV$Jb{}Ji;^4tYK9MaHvT%~vpD=== z;~PbX50^9ru#SxS#z7zK{lu5r-jsh^w_zEHp|qY`sho>Pgf)b=oIh7s)(54X^CI)_ z4Iza@4pXj_M$MKM+rO0SH67L(FJ)zBAG3~YC)*cky_uX8;z8#>8Zwe<__56GD5iUn zQ+qDH@|9aDtge)B+%KnWjjdjQHNMjy_7f<;xfYpbHeGcUO>3^b$13pFU($PC!WU_S zSa7U5s4T#fMkl0EP-8DGcz~;#=*cVu`QaP!a-C)By%G8cq1&-RBGyJn{v0uk6v$d& zZ(afORSdyInvf8PE~zXPCXG4pjoi;~>jad|eOE~rD?->}UI}JkUJuPXY|k(BV}^gz z1~<_GCy6Uo1HPrR*u4UO+5FSTCy*l9)ow=mYWwqoL==0*xF_@N+^!ptXDE4&eWnVX zOuY=7;SpllL6cx|_cRveKaiClJ=*!JW?T7xk zs?6hl7C;VF63iYSRKy3z;c}cPeP!;5{ zWs|U!mo?;YXXKF3>Iy5S7S(O+@4Du!J;$K=mx6}L!aH$ibk{?GjA(=;yNp@HNtXqB z^54n%3F|%sAYjU|^yqs6!IN_LDT4J1FPRWQ_*%#XRLrt|sEEP;N9{Eu!|GY{HGDQ_ zR^xMkVHg~m;wi1LH_-gMd!<&&s!18KhH-}2Y6oD)yA(kZ{+pP$qyRZTX|kt>;I`5x zMwuHq%^;L~#|s{fX;>rWmGBLV+h~`1Dk77@Y0q`%qVMr=j2&_Wz-eY7ZFb|f{!-|n z?ILc+U^JpJMb4X0bz>^6KSS=n-a2C0RZ`?0jL!?7I^u?*tcM{FFAe|UmdZR{ipC(x z3fCtwM1RyPdE518hu;^|>9*`5P1;^$|EkoQnR_5kTHIlt1@muJ-mcU1z}(`NdiqY5 zZ!K@&B~M5vOnf-q519R*IFFym^0i{rjpe)-z<(!Vax(E@cUT+T5Yyd(o7n4zfNCF~ z^=F^dEXG+DWc?O=4!MwLdhOXe{oh)!f4(WS=(fsezWNX??@ket-_K3k8GAXW$N+at z%=q$xlz)xf(M9sr8_T9U-ro>z-@U~30Gc*SiV?GGl9mR408P#cXHs}Y!lZk0may2d zHN7;%UYE~hV20=!gIstEubn^YQ)#vy1w7vp@wxs|b%f8pw`39yTLZdEN6Xbh)m8!q zsTQNI52O503DIqy_*t9PhJ18&U2yMNQl zY0dI;0aCB&Bzrfsor9WK{qa|p5RhMVX&ia(Bg8X2yAtEMuZJC&7-ZMQBrt1NEfs*u zn6{d!uAb74MrR3@>rm!9HQo-=2eHg&W}v-I;Ap6-J;#5%;qlg3(5e;y&-*dDk)uj1 z9EKi&WDSH-cGSi5265gd7VIlN1P{k$oD>Vdxw?XqHn8OWlu7E%W3W@38y%n(2fAma z2ZaKD-BAtts9M43(;XBxFZcN*aYGmR!;%i->*xe4Zdhw&{jL{9l=aC?CHQNT6(kxo z|CLdfG&^^kM?|t4?oMu}DtJ@Y`+7v$vVRtCI^UMc#>(~xt++73ecbIje9mW&??iOb zzL?p|;wdpCr)K--0pGQJwZEUd*wDQCuqptlG;05xt+>Q>ECLR@j-V8$SWNo?Uc%`d z5wxRp(CJw4SR*bY8fh?8OJuDMUEcRqu^eu6yG% zd_U6XX9i$y=F`_GP+DHgXQYr5Fw=>w*@Z$7z*4AbhpRSPB2N52oR@7mXRE`S56PpI z`9WS5gqZ<`k0u%kt*CicT74!Lrn5ZQn`G}%16rAiE3TE5jpVS9^K9=60C0gho}A8d z;o>-HX@ST`BECnw%z&bi+5y0B$D1dvnlEpuusz1>4rCM)VHY1 z44@=;Y%~wq*9`HPJ}XAcJMC(vx)M>a7p@{37Pc9|1v-25T}W0K@v%mrXAb38#_T7b z;97CeX-0dF&OyK##M+u@Dbk%tZfG#}){|Ca_G?1(6%tG@RkUE;>hTqN{k6>KN88^T zEUlpst7yFv;Vct)e6^Gl0q5fE?ZPN|_AE|r?#bAH+l7whN8PSK_!v)3G_lW2w`A~e z6z*#Sr+FU-fd#I0d*crFNaP#)d@&?_YMq`+4;NgPVr2&mHgDpl-C`EuO8G0~FSBb> zN@K+3Vk$6{Y)^3k-rw%P2?3wUyrWLQ4x|rL7r|iPSx^QN+#z}rk|QH?YVh=P8Qn*4 zIk(c7#Is!VH!+p)^~o zJzR??8>TX3E`DPY`%ut=0Kw7{5B!`~?%bb6`kLV2>S){jZWJX1ujTXaJeF96g;6lH zv;cnea6_5}f1w!A{KHJzl@lyjGLNR!MDkXTVdF6E$Xwg_&72hW#?aH)%c4lJ8?U!_ zJC8jT-R&iKHO*nsg<+QsP{xJoVnMKb(%rmH!A_Qc7m&XmFy@^m(OYjqggCp|XsX)i zp5AkuMFH#14V?*$KSy;IB+p*@*qV-7BHkZRwwpZv>KtC^s^O!rVxX1Xh#~zd#{G_r zvCQ*&XYM;v!E3XLvxW}U0xJx5$BP0IxjX z(J~9EEJ#>R7L{bJf{|*Gm=toR?E};BId+h{wWMRx3DBF-uomBJANnza8{y=6f3^aE zVD-}nP4n(F7x6R3QyOc144aM*oHc;k=BM`v)XS~1FQ=#sOK@6ClC(73`UfS8X0+?W z!_4FUAu0Z11Uwh~@M+G}^r@F(M)ZMn`1ugvq?vpvkqfgsx$k!380JWCQSzKicM?`@ z5p}|BI{`kkE~}+^cWT!VPs)41>&NIATl*X$I(K?s5}jJI*i?m*N?d(g4%9r=BNI33 zNUkNwBJrRCP&b@fAQhW)P-kVoKHaIW^~~q0afJ?Rl(pQ}Zs9fr2#K2nTt9A;F9<(8 zI6lRmLnC1ETU5m3WmNZxkOWPjqewJP;I(*wzTo`YEGwa)8M@eZU5gP}q6<-|w^+0S zdDH_kmC>V3sN^c1Pom@D-nDtYB%0>9UH!RZ3(4zRvQZpkd7~EPVz*>_ky34baqP!k z+;*ee6aQvI>y?w6ENppWbFu3B$lzfZbQvr=gw>pBQLp7Hkk z&T8YduIRS8CxpB8Q=o?0uhm7H;EO1$f;DH+nzuW|Fq*@M6LfV& z$u)>^csa5sYKgCjC@+C)f4U(DzvDXn7b=6iaW`D#q15WrD;8|@+YLs&m0x9ldadVP z^wU$HB=V55yCb0Q<=Sl#ahE3LZ*d8U&|YB~_;Hd-TLQs!cN@cqX|aLrnQhsE-BXzj74 zKst&uYaHq?)}s^wr0AGnA7iY8Q1Y}ztO%<+wcS)oa#ApFgCHaJn z(W_*P6htKvq5L*Gt;*YOJ!f^>-$0a_q5Ic=Z|!o9<^Cj#P&yK_!ym^v+eb6j0M+Dtua)Rloq(g>3-UD+L4sfA~bLI%_83* z=O(GvBX>gVf;cVNnqGhNU*#K+OwGv~N*dEhljJ`#+_6UbJh{7lSp;e=J2JtS+4ZLf z&k;jgjW?@p^Gz0t**!uo8&yx0M+6n6hH^|P)6nhrN*nN19&VWq)_t>ojie8em%TYD zBSE0)PonQHX71id{`^g=lhNNdm1adl|IyT*&Ck?PMzVoEphQ?gDs)jkjATR;uPQ7%d)MKbQGF?-^4Wy3HDwVG+PihqOO ze4_DR{1jb_P-a+zR)>CHr3kYYb3Fa;xQ69SX9ZaMZ;q%pB*XcOB=eeHNH=yg#qqD9 zd^(<@Id(PG$~|q(@=36_gccpf*U$)!1zA;iCctvja^DPTX>tX+)dFnevl0MGdxUm> z`CP~u-paIGlOpddMA&T;6qe2<^e1_iwP@9k#^cMLsf(}%g~x!0c{gHQrGK05HCh14 zQI8j$%9w#;SvOsd+@gPL+Dr5G9e+Cg-<{?*16FzTxH?J}H;8pWuHk8pEa+4f<`-TUVZsT@Q-$Ge1PpofignK9rDhA+_8Zu%|ZzhkUIIUj^wAFmzfy#u8(1-bp zBAD>lo!0|F`N{*v)Z&m6e1X#DQ9S&9c%Re*euYA?9D*BPs2zq$aa z{XD=4V_a_nb(euaP&01eTZR=QEv>P@bWW^=|3Nf5S)V_fjR~w1&7t-}yUH;#1hUM{MdSo}t6NR5B0+Tpn;UEn*c4Xg?g5 zC9x_bFQpEvC?{=nM80uQ?b8WSHI%x$sO-jsKY=mQk8sHZ+)+*p1jQBk->&|&G^s63 zaq+!B$3ilz_AdRxG!n{b`EkMq-erY`y>?CuUnv6*iOMI}46aZgQ+=JSl-~sbTP>xd zu>2`#B+~9%|FjTkl6iN)=g<0Ma&+F^zqcdXO4?om{eOM+7KHI!qHq7qE5zUuLG35( z(S(M@!slBm9VK}fF0BnS_D>gG1au58P?tZ1YxzkPJW%~GR4UkRuDv(>m423)j+y8! zc@;q|cyxg)F+Zh(C>F*im%E9`p@^vHS1Gvd%X--9Rk5c_0ZUz5~ zU}U|R#rqA~U4|Xe9${q1&~~E>!;|(;8VX+ySxj4XjXYOx`u%NgN;&?=J+baAWf${@cdW!)RcYWNVi69cB# zR*g|F1H}iFeds{QO45c%i1gkkceKe`%iZ9OsEgPBBx;-HkmC1I^PQ4iW5Lp3MLMS& zeIgQXX{LF0BKRLj)!C4Y=QS78X{eZ3sJECSHUixTeI!qLFMpsyeFi!Il_I&3a*H=d zhv+_n9hOyjVcyb6Q))vaPb(pwCDVoo{0#suAh@dgMH^zLGFdwO7LVDYQhmPDz74S# z1nk8Im~q4*n#6;(wtvN0Adjp{5JNd?=z*+piVd3eTg=PQ9Y&+IeXPKa>}7sUdGwK3 zEQyaEipMB_y_R{5e{#KjH>12Klz(;B^wJ2x(>C(A7?_FcGE!_N-0@nfRFErdzvfx& zTAa`Pp(XMdNaRK<>(%MoKb4cC|NfzkYczW*22=dZ$BkF>3~6iA3ZT+YKL1Xc^$E=^M2c{HMaOc9SUuK8@|e zMHf-@nbM)>wq0%S?m0pp?r)-r2t*0kVN4A-rb+9^}4gwaCOT3SrMZ2 z$rLjZ4k2Wk+~WMj8h>N*Uz9Pp>LNXV#Kkx*D%Abj-yRC>VP2tG^jSiXfodw2I}6uW z3lO-4eE#6and?KkfERz190aMsb&r{sA+p3e#L4*&crHk9x{&)4ODd!Np3-?cOay0# zy%kNS(uCqK?^?Gj2*5^di?pw%2W1?gC>h+Z_h?|J+B!!ZhZ#T22vK z^)wL$IBDj1?9ghSJDmZ0uJMBfF8=Oc#`FIKJaStl({rLs#-sVYdK`RDbpn<`WnX1RtLl>j6#n&fJ7?yxj{oeY>+DTXDW zZV1+9ZBZ_=pmC~Nmkuz>8(0*aMW@-SW;R(d_$6%R9Vz^?$)2qu%eE_~F|0^6RvJ*T zhcj@Fcr2WL>x+zE5R(lLk60>dlb7pDYVv0;Te#xk%=FTJ5?saN)vtwI!3DkcSkD6$ zq({@akq%uH6ouA%c}uwoYqP-ES;`X_55`n!7$EscT)3HznMdlKd4N}UKlS2{#H4h_ zaoJJ;2go_B`Lb*A$eE)oTuqNmN!6bnAOlr0xa6R_6S=r@S;RYNZQ=VPU1W_MJ4($THBGS6%71OzffZ=UDATT#aVuy21xGVW|D+R>YV zw)&gw*fn+zwp+EUh(E6)Opg+R2IJY#%%%$zjKlxDfQ#nCe0dGx^qjp%WwH1!jW`N_ zmItC%?7PLJ-8%x&gf6yAF_WEn)z)ukgvl!?jXt+Ezo09UTG+A@s1%vO6(dDQ5iU$5 z7p@@>Vs{!oqrxOr^A}i%*K<}l6EG2w9c0!v{6+-}?J^b>%jZ*1BVyiUqc3r`7;t7g zhNgghTvuJ!(Ep;pXKG8_pb5r=`_!PXc(g|-W{aoJWJ=ZV7#4>V-UO#@Vj)lxA`DLU zSkynE6g!!x!LJ!<=ibr1n3(=Dk5tNwUziF^uHF;X$d%^q#>o$m?e=>O_Z=scJHSrf zE@99+cFBy0DBSum**Q=T12xS)+Re0Yp^OMMub64`lrxV(#!{4_6xX1F|2&zu==R?IXY6U6ksN0+~5FC4N;$R+@m? zk~wDlRBE=?@agcWl&XVn_?6x2A*W~nF+zU}7DO$w_8xUbSJ2Wser~#a|1ZhPjhll7 za7yOK39y7=@=LcC(NliD9>6wuXSO%7fU%CD14~mw^)J)%UFnG?$xk@Or;ki4CBk6` zG#q(^Vf3xZ`j9iHgbTyv*B`YP)W52nL*!`#u)BNwdwRGgv;KUmS~AirrY~5+bdG}J z1?Tn`|E8u3=Ji)-TMy;jD1&FGp$b#{#MxEv~$rp`gcP3-;O5s*|La%av zeWIXsPhX+IF=m>lcC`w=91zA{kukV^A2#qLUjoYvDA#ieCip%XujsD3h&p!N%(&qc4vHBHb_G~hGf~5Z{TM&#^8`aK3&d>Ypz~j!a=s-pOcYI< zaxyFFrhwtkxgh57_u-kPwruLwA{t4Fy6&{r5)FWO5E04V7UN&!5kWCb0vXqEVDK|Y z1mD$!gOnLzYAB7n`Mbc_0C}kU>>e{-=`0^#;al zW#;KtLEIVyF+*B>^TgppCPkg;CVMV7E0x;l^2OB4tx}s>Xsw&^C zrBU9Y6q8j#hflgd%)TWd6`^)p$D9E*I_k=&KsGFaM#D&%VBq2qH#>{MEU_nhkbCT= zQJ|{QMGJl@-O1Twl2|x(#HP04xzwgsZRTJRjesa%iZL5hKiyZB^Q>r7-%6rrMKxFu zSU4~}@@O-%zER%uaR8#xzLU$b0n_8nZ-L|4QL0mf5l&ki$^#6=yrTd4Q`60G=T>;> zuB*+|_O@mgVEFXLGzHZyoms{`!?ULvCIGA_QO^E%;s-RCR<*-GbA|jdYcz1cn+B#3 zM7{hFO|}Z%InO2(G2*v;SpNeI?&ej=ot9(JFQ=^H|6HDbxEv)NO}yM!yxtg+23clT1>dlk?Nc|IW- zzU`xc+PM6TxlZRT>Q6vK#${dhz1CT(osL{qpvS!B+HZCsHak9+L9>5Ad&BNx&Q}YM z@e?VLZO4zsEc!v@pW3#784&PCo$|RNMGB_ZTwJ2!5xKl&9`b{BhyLvjn3lHnKE(x^ zkgWRFAMWzQZYQ%*3Lfrl7$GwAN7M7?2-q0{Rus;{6sUjA{_(MI$Q6LYcWAIfz22eW zhz6V{lhgE-WJx%w>h?Ap;_wZ*^^F&z8xCLYZ_dyaN?Wx4C)T`D`j>cwb$&;P0=eJL zSmndcN3Q#APU{cdjg)ZfCf}|`T;rnYzI@rOB+YvC84852)cl{0(FYr)dQle*Ck`fE zyDgd&=J{LFR@CKu)ch{#ki}UrNGG8ig4#qbB(Rx@MOeAkrwN<*e;)hSI?$3le9u+= zC6~y|GH<`SyRGUw#~I~}_xliSee;477YQ6{Ff;Cy^Ti2e*TaoKrP}`ui3S^TDeB*V zmbr5g)@F|#pC@Pu-^e;>Wc&U`bNSp@9UvK5Kt)<5Rj0N5T(1M5s+>b z5CLhfbccW-jdXWQx1@A~w1jkb^Pb`P{@#D@XU;t{=j^@q+H3DKQ`DDRwvu*_O~da= z;jGO~-a+M7Z@IeR|E6J9#~M-Lf@VhE4#l?fR9>5h8wRbQlnA{S@t_v+BoO2(!WgEk$dk|!=V@up_ao&PQCXc%E<*}*4FK@Sq5 z4YcgiG{hhWA}BuuaZ|T>>#!M~#y84+4aDW29ROn=dE85`+v`rb>C@Odh`J(edH3JQ z6VSj6B*;lu$-Qb%haeTJ{YUNB`68Z|?McHcuhOm~x$}s(=q2wClpkRtvx$csAP7gs zit3~l3eiPL(!Dy-Jvn#sj(zvOBZuAe*WOGwZ z1ghlAk7I_>Z(V9~D`ss+N9M!+R&o8eg2tq9VMbV6383LI9tN3}ElGrKEXxRVgch2<-+H7-+ojPWC>L&?C}jdiRdUEcld z0S?Wn2Q7C7{P)+-R~ofXmb3(|BSH2JrnJulEs_psxgM1J1yoiIjP2^CPh9=6*itHW z*zEhv!@URJyf@hy^H$wBz^=SJ`oYqp8XWvzU$Q;z#V$CG`56B@hDA_`e0zU(?Wf7z z${T^_Jk-hAgOkBeKcY&=9B#+ft6kgJD;koi(Z3I}Lq|pZEI9qu5NO>VDC+qw&i2G2 zi5_hvyx$)G@d566^w)4DU1Et-GqM8jJ?gsvdCgMxlV+#csW_MTya+(?9(!b=eDB^E-}(V2_=%eIYUe2nh@VIc#sca~rBO4Pclze!BR&BO+tR?0c8#tsT!pC4z~ z;SEYxXS~8|yc$L@R%qnEfL8#v)Y;o}^8U%+L(E0|`|9t-Eo$5gDj73*HMFG`?64Wt znKSP}lX;wOhc^`9ITYI=sLf_EF(wi21FrzQZACCbu{ve{#&{~aYEnT6ny%hwSsz7E zhFlwV`7im$pC5}QBbTL?r5=aksr71=RyX`=J?eyqwySqo-A9ZWjBMV3jsXq*_0@)J z37y>)#>N?)n1w8pjfMAV5-&$a=Z@w-<(btVUK${|qW>SB@_2$q{l{;zk(lN*MSq_a zlDyxd#h1WaGkW>at5Jj9NmRa67}IR(xi|}!0o&Z}^`pEt$A4uu$d})=^Zql{^2ea5 zJbIVeJE-JmAho6B&RZ|}2c)|jd5kACCgzPM!}rRN!wJr!D#z8IM|EcgU0R(*Uk1IhNqx#Ft=nh<==%GABOuixDKl)B$dokRi1HReSegFr7zldu=8BA zdJP(<`_Dwoo290IRG#X7z;vh}eBTr2i5$dEix>KGNI9vHJ}(!0K-!#NBsa-u?|RX2 z=Tco~{7Yxm_5a~P0xfVU9$Xh|ECWWGg@<6JaCbS^jb$J0w|-lE>UEjhW6c|kpBH^h zqxL*X8)m>EbHpaX!%E%Lo>uQKIhRtCIOZV1$0fe zzn;^$JX?6Ko%G+Q1+c+co_#l9`t<>d~4Sincm#OU-y#+D3YdWeQfD0WX6wbdKTM(AyiiHcAt zb%4H5=MQmwaYZ%?&%^KRvWeSkZ+5u68g$GfVwsb3FK&3h)gC5JDzC(qtRIh`%$~m{ zQ1_2{rYn-|(^Jl;;5~&RBdO&7gamqDW)@SjJIZFB7rpldC8O$+o3J{00MW5Tqr6=3 zR2IC|?C*}EKBZ%cH-6K@D8=fY=FZ9!i#M-+QY5drk>n|dZh16$v5(gsA(0V5@r1$_ ze}ij0`ltp9PDiCs$+u{H0x;2`o)Bd0!N99Yq<9DBxECjFgI;mtznSi!iPjYH;)<&V zUY_)+^KP}+rQkn_!rPsVB-2p(W~dSik6z9d8=3Q8ulU@?qTMuXDmOJB|( zU*q9?3?KBur$C zOF0T3nX84=zT9w8li9D=KrvOm zk}B56Z>mmbu%3COV$o1|u{E>)B{({>#X7ot=7qzRO}M}vpQ?CpTNIg!`oAz~WH9B_ zh<)Nb+Kh!D;{#^Kz=K@18XK{ssoF8-Ha;dw@7nmq?T2yX&i3}-ak0V8mGG6(B8%lN zIk?4&t5y}`V>D@~(UkYNR30|wC_h(_SEOey*|rX*6F8fXdYy@0oTp6z<^dW1xf;?Q(&!@+pXN@ zI|5Gc{U#&XW!Ug!BtK`JA7|=R^1aylXisSXERP}+>?rG9673OAl61!s^4cmxET+FTM{^;t} zF3zz>U57cmd2jU+tX3)+@H-0c56%4wW(&AY)1>xCg()-bM;2?AJaoXNnb%apwXPH{Z^ZxvB zvfk(@U?kHb;VXRTi9SolSLbTT~R(4+XW z^IKp$*Rb;e*xNx5{$hPpgRYrDAAL;{h%vxsQu8LSPp738(fO>lh~UD2<`1n~#bRjm z@)mEbXbc$Qj|(D?cIOAWgDsDYuYwBAFxE9ainlLUS=2lU-gHsSXiaNKo(;5?s53v$ z?5Rz32H%4E&nfP}k0mlBLd%yU*xxjyu7=t4!Yp?v*Q%hyqOndhm4CeG;?YJhcqc~h z>{Lhp@2-P;v|!5oU}WqP@A_pV^?+Rez_<~|D-YqhLTJPkThsSOtK5^A|6IOgP?36#1B0E)fQ31Xu zIZ%yz4@|>Kc!x<$meIuL^dl-{EFCBD@bPT5;oN+)r+c4+x`=g0j)hCbK_S*KwzF#( zfJJw4fIII*E{|W#nSkWZ{o_!n@cAU?>rWyd&W?805^a!bX=^>5u#>!T6hZ`CeGRFsJ6xti^AU$#7V1uE5(zTEV}ex2 zGWQ(%=h&0QN7L(dT`o$orL3c^ra2F~>3gH#m^{U_|d@^{7 zMg+;sRrq`y&0ZFL&%Ck9T>IL>kA@oIuwq_h5%bEzkP-xVu(q%61HhGxFyqMZ>9Ny% zq(kVw3h+G;+jN#YUu)&jzvIZ%7HPZL)BQ<=psv=NRT`K>s2h>UqOy8^rw%7nr=0=s zhR69^OkeP5oOvHZgk7!RfV5!gt(^|p3}JkWu5Q}1E_Yq?1#R4YRD990RNnO>|E(b$q87G8EOMtwAE}Kev5D%S)Hb04cK2|8kJp@a4SwF+q`%t-ol8 zCm&OBhVt%@vgLZT$H*QOx3<^=+hUl5yykDS@VGxn*g{N_@|JcMi20aqEmg^2Mx50+ zoV?#ua#%Vi%aefX41c@=mZJae*2V5OyRXShzr&(*kNF-(GM;5K9CuM}Swku=>_QeL zM`WV;H)`$X$N4WeN%%A8nc^_kSmNbdS}5rw`Ag7CS)n+U*ZnKa)D_3_KGaz=3y|Eu z=;&4FHJs(SHD7LEzU{@u_(BoV@|Jg>3|xoY7h?L&xy=QQDzCW7hk-w5 zr3Bj}9Akks-|6$s?Uz6sl&bcw&SrDqGpF6B;;AB^mosEhGdpe{*Sioz7F1GTNX%V; z+iKc`CbWF?Mp{Vz+C8);8p~d#ADA&{%h~tXY^IyjEOQ)Yxpk(WI96Yw_IWHfNS`V%YkIOlf?L5uZ^uK5 z<810`f<;!VX01b~6%*VAdvcS=QV-8~XV5`2^f!NYk+{*-^aeeWzgpZeM9%J6(zWw$ z`9m4Eb34J?TfyLWk`0wv8k}1p~wtm~ck{&dueqhGJG{LiVrGgP+6b`RPA6RrTSpqe2 zReIk)f5?P3>BC9gZhE6b*3^|@SME$ObFsWo;z(6>%Qk1WtQ_(X=k(V@&#k!;?#t0$IyYbERbg#4M4^gGShwF^E*3= z$J#Plk?fOWX`n4RV>Kh!>&EK&8HKTb|A_Cyc-$udtl^;ZcSIY0HyYC48~W1h1VzKs zCV9@Xg89zD8G{TudQN#ALE~S(o+3|RNBGMG7^LvCK&a`^EO$Ct^~gZYzOFE1Dm<&G zCCn$=DB8DQUC?-5LN7E4{`Ryb$1SqPPos3((h+U<;tR4uY`veAAC1a1UI!ejy_7y6 zSlvi@tC4Qvabe`bVLV9eq5u7M?#XZY62>gIe9_Q@{X6XndjD*>&h0;m#X$LDR?iSD5uP`%sNNDv zRougYVx9mWFdn1vHeg%BhXT0CK1Gk+-LDr{kkhhat!0%TwQ{k|*)Q4j#Grj19D=Yl zQ4C>4Qvdjup(`T{8B)KOw0y5T?ZI&qvU}r7abC3Eei55mg&mI>K!EX%FDe4D%B)MB z4tf?-GPgT940aN{(!ma$$VnfmNw7GlYe1l&U8`_;$0tq_LmMSfLqjsNlyTi$Bz+I zsJ;h_8QZ$NM5^^!YNA0Tnd};Q}7V)|Fn`p@>~C`)V^)2 z3$p9&D2a5ES;W{MkL6BDxG!Kp%f8tkYw-UI1c-6-xqSXPG)7SV&ZGzHnSBzHVM zM_=~jn)lb27Y}HO!K=ec1ZeDO)j@~qc4n&2)LwuzHgp};lF8?2dSg}p_)D_TZgmeb>cYSVpe=Ue1J0f`KLb2?py#-c1z)7$$Cq$fd}7r)&l5}%$YJ_iYw3bw$- zVCD(2Tj*;)G%(R3Aez?A`GH69LrBxp(0@K0NIW?-S>-OYAP2ZD?lT)LI9+AgTY2VV z3xA}P6&;Nzl~{oi)g3c}CET_pnVAz&u+cd-F3L^lFgG|ozFeSpbf(}Va0@sT)*yHG zwj)|r1bb|vJK+phqYjWTmZ7 ztmI3k2%x6*G*t0IH{HpB>n&^SE1QOy@O#F*SMR$gA`PeTxaYJUJX!fTne3apoA40a zo^;3{H5FYC4@w}7H-t}LD`%oT$De-#zSfyVzPBDH6S@3G;MCxTkzMU_fjimi46K0= zDoC}Vra3EaGxOMyhunV`4)P*8k1*`W;^vi%EoKi!(iQN?dT--I#3LC@1I!IRAABe| zsoSJBUB#=;c_)p1Z0R2%j|!QdyJ0I}c#~=TN84HoxRq1p-dKON?+~KRxrp<)iiHIh zy-)f6wz_6$2VH7;9ThTq4KrbbA^zgkBB+VWirJ~Lu-6*94$-ffYDT?A8fmp}yacV+h5s&O^n zsV(bFbSD_9&WYsJO}Oga?%r_@CqasTAD~<+L#Kx;rL+k%1(0cFAA|2#AY(&Rf6MX^ zI2(4aI~;5Gy=oXhssu8{`N|(IJ3l0Xz}gN3B4bP7H@|4Z-?)QB@q$B~kNxxC)ru8E zBGf}WKsk9MLK;sEM~0u=e+sU)O#vYKl9m%mC?7xUaHpfNvB6}tr`f&Gv=Lv)vF^Nm zsP{ou5w!%kG#-ZNePM}+OB4v7SNDVVor+AdP+)KpEt{jWQEWhDTm}cLMg?hiUf($m#%(MoWUsEhzN^+LozUK z0Ia8|Xoh<&!O$-_o&qK&@psUOa42I&QK6EaOa`5)m(C04xELyaf+RzB`MiV2OQ{7# z{hF?;ABkYRqhJCH*(x1!nP!FpEmp@@kZ(QeeKhM@q;SXAR@(%m@>pGIfvzz;h~Ch} z2^cZl8&jJ+DVbiO1YX~P`hvW;PFONtM)_DdB{V$PsY<3DRYuPVHQnUKY8vU! z*}tzDJy=?ellk{{Y0+WUZ&tfuA+R6?pOXYEsw4m}TZr79t8lc;T<|VMZO! zt@|QYK!<^F8qu-W^p5gENdDv~ zOPsYdxEH=(e9O&DV#fV$sL$oK)O|1!SgDvFh=}tIZN^_XOb}PzBxfG~aZMrdTlr4B z)mnq9x7^Rg`B}CU$)z!y21-nY?nvL<+$otMht$2KQT-$E>5@b~rl@#B?mx3T+E!MU z3HjK}+Xmy2{ZbdZ+2g3P5G>(gT&lymbP`ZI4qiBeDdD7K=~iVUYGAsz^@m&kM)Okt zsQQ4t7|_GoQm3DFm(3kUg?kq$92yEX zL}Cupo0Ev)l_AYjqI4J;)$y&!+vkA1$g6b6()I=&xBwRq69V_ zHe>qMbqR=-QJjc)q|m;joJ`B;ZO{JNMoQP8rJFCo^=!sloPygpd*yHh#JQd8S>o7- z6!zsbTqwpXyosgKc!-r)txK~1vpxLPY?#69%| z8;SYJvq$dRTz2Qn^>}rcdnsuew}0IRs5->~p=b{d3dCs1V^+`eD#1Z*MW+_~PJ|le{>_wn2WCd_2L5(=`Iy1WqX%=U~Su#*of%VPN%?-a+>+ySB(wb#Clqi z51G%w%9g>5Pej!|_N35lTZmJVi_=;| z3!OjEt!@P`rxJ7z`q)mmVjo*Q^$u(H*7xFy1!hqKHrlrAwbP_U6+a zs~xIA`odUN!ASL*-=0{NtXP78vsKEKxRX%5y3uCZ*x3ohQ-EHCFlio}LzD}=;WZ>kLAK2Arp!q?@v1Xx(aJB>B$Xu_xfm8}}@QPo>l8(guF4>csx zRZ5PRe9gVQN||2CEV^9wBZHkspBt?HGP{qIR{kzHP6D7Timd8)s=UNMEeyo!B7laGm@($P$@a* z*z~rx)WEIpH=W?`X&ZmotC_rkvi2bC*({38&z>`6h)FKAP5j%Z2CkZJ#pv$G11E&i zDt`N;vx}m1J^YrZT(ASGqXCXVm9LCrLg}gv>7U&T!Y9+>P`7nDK|!j1mc7%gJ4@?U ze(-ky>mWGsHw{cnOmS}fq0svxl2NhXdHjiHrZ~?|x5+P%!&tHxX{o7mz-xieuL`I1 zE~y!_Zc{6`3dbfj+97+3P5s7VI4Kw7}6R%!lh z-+|tVB$1ozRW~G1r>A}g+WD{JQ{Ig%x6)r)1QalvVuy(ZlL`SF;1;QYI)qn_y3U|M zMg+650avD~d$NPC{LB30j>t4AxL7s_z;MYxRTAL3sq#O>RtTfZ$tJ6Xg~B~!`*8De z^KP;c0&{iW;6zXsP~CeE7Am73%A_dwV5c=AyMK&OrF7W+w{>2g|ATnI)8#c7Td=0N4 zwGQ3M^FBoUujJg-7&G#s--4Um$EQnec)^>BjP>`WkO#RwtNdFg18h3qpT?Wjh)Ms4 zlH`CMlF*^)Xw}#{9s1_P#_*x}Dsx-sP}dHkk;AFnc;_ArEUb8dGnenmJQhVoffS3( z4-V86YG`dnv0PA|QbxS_c-_9mzEU*j^epgpQ9(sH^Z^{pS!eKHOPVwD+zg|QJ67C^ zBd1p$2(|0oUt!-~%NN(O1GnUsK!~|ZV&xTd537q}LTth+OUKVyV$MaLgwUytdvIuc zASRMKJIoW$Yv_Bv3y0_??$@wprM&IYR>lhXI{@ELB#RTUbE512<*b9jLukb`cXGIC zmpA67MxejN4UdojBR)ob3IyU4RFeMgN2>?FR&f0SRX3RA#m z*J)Bw8sa4HfTYkG&$B&(;fvUM%d+JUG#;U7Dzyq3;-JL6gW%hw!m83F{JDS0c56~{jPTqOCW4z5T0{fOR5P5EM;X3y9JtV8y> z_*uB@h1dH9KL9CQlZFJKbsC?KC=4G%tz~`Yj|E@W*^GYCa-~S$_^dXV;<|rSw3x-j zZOaq~?{6P12>ax4D)~;wFEDPJqgakRy7%$OxIy)zS$MR|&HCnO$Ik=USN`V1VOW+I zDbVE~5|s7*Z|TwIi1WvOT6q<$RR^8|{4n0Z>(k9|!-Bfedg`~5h%pA73CUJ7?YuoA z1f&g8`ZVEv&98a)qt;xJ6r~(2=Lj5+j@l4g9QsvdfoF}s%K)Zw{}Z8@u{m&Uj+gLT zZ}+HAERO5Sq*lcLFd#VP0db_1weDCow-jf9P^FDc|ox zF{EI{NbkjL2Q|AA!4;0CopqzPHH$UOydloJ2iq-J9AruQhLl5H6Bn}D#my!=BboQ4 zkjL=vc+WN}OddbUS<*Xkr+!r{E#Srj>KrjofP{c=knqkQEYz;vqp`yCE;5(kj~tDO zcV}p%N;^|iQ@^=h5BE1*hLRw4TSkS4rH2=Nkm9=k6%}IgK*nw#-B|2s@bU*+3It>B#VPvd#EdJNj^cN;13UoDDG z7pAu0APXyAl#X95o%FFlEgxz&brdeZi@Lja`90(0b2vpHi#@sPTEb|YTMwM6yR(D& zCAc&Q6>*RtCRvqMngW(DTR8%WJ=!jn!j#n?O7=TkiuyG!7K3josXiCDi&km&xM!0P zG*8pcUAQ{yeEB?q-*5luTekPo{Yk$#R~OUm$pok1+fZBrcqTq}qzDrwDip6-y>vQ% zr5Um|-eXhuW-eLUUrfW%U{qm;c^bTbh8YfBBw!KI4J_yZugiWbaF&=7t?eWws^A)0 z=oH5!R-?nmYSVIQ7-zljavO;W;M);#(pM})g07`BGfMIBHaLFF50pa;xpGh9D-Ac8Z?6Ye;k;{>oA$wM)MOO{ST&F` z;Zwfdn4(pA7~#URVleSRaZt;`w5!}@YMMcccgb!|C+E>^G)E{74KLMLM03f9O z#gxFdDwh=GZWp2OwK3PYJ7wk(*@2%eKYsCG8R*sL@=-=8-t|N6rO@vVEDgNW)BLyr#mt49XVKjCM4_WIiankNvD7@E}x zzSvI2`s8swcxri!;i)t$zm`l*#^6d8QFhtl{a>;W^av;ZT}zIQMEtrlEHg?-$~=$b zwu`8}8Xh(63dmn%UR7#scyRW>IKN`bJi6?&WLVQg8rO*5xKzr(&5k=|cbFL+3B)RB zr2mVHmeE(ZiE_Y}O-Bv}&W0fIN@?#AjQ^xF>c_$O4!^A@%!;o;xd^@F4IAt@T|Lq zNk>KvusU_x*^ZCO52D>dBef*MK(M(1M(c~;*xytt#!0XM$`f2RLwOO6$E9QA6$MV( z4{ih0FSd6JrD%)|heT&E#s7;3=D~E5L4tN`W7l$8Fv{vH#J};o%8hR+V$K(C)-BKb zV5>Px!GYTig!;GGwE^E#??RT#qdAI(J);SQCfd)3iANAS_nUQkCvJj61az*^;0=jL z20c*n$6^GcU~?KBUkz`QkJVdj?UP#w&AF)fA3m~*p1m0Ckm0y?Com z0sc&4nqhpa|Jty}onazR(GC(TAUg@?IjB+J_q5Hm2;iUFPyYmW&Aa4i<3pMHyJ6pBJdJVI@8KR*lWZf>Gm%Ab# zSHj`Ke+G&0UK7-;$sPyOH?ApCjtq+|H-0DM*@XV*za?cx>_Y4q7B2WZ^nTQLtrb^( zb|yDK&LC#GBkv%|Tc<Ey+v7bzVTP`j}j*BJ{slkJGG82P_5@Tc&Nrr(9m!=*1jp zNStx$oTx`LjonxeyfXFaHn31?d<6a~!vw=E!c~WYzRe9=QmOe(!wf1UqYsobQhY!d z#QqpyzXv6Z>UrDj#n<-W-Cm*!6$*2AVNr8zl6;xq-Y?D_m;H(VImJ5=-Ka99lvW#WfPr0WM2@^* znI65#^;O|V=#FR(EbN!Zns#8OsaCN+ZQ#owMt~dcT)BO0l?k0X73D z*il6@n|P?O^N4YRzn6Fq2pM#kr~GqrtHnusrYe9=4^*3nhIOKYFTSkB7I_KtfD7<@ z0nU(i6ToH**>E??x66&|zDO3PslNb9;@cv#ovT&4z;WjX3y&XxtLwqlsFVrQ=F*_X zaCJoHdjdh>iiCsd!o8thJjaD9pNsld?lXwIRfup>(60J&WCRP>gD}Vp$*SR+@XVqC zP0{*K1ktyRAkvW%^YV!I;^$*145gCF$o0C~r5}4M;T=f54|ae`w%Ys6t``!dE)hRG zR^f1^h{8L_pcN(g!&6NCV2&QcWP6#C11m}|Ah zfb?Idafc{q)Xmo>+|Gan%YvZ511(39tdKaHbWdGW&MGHYHis!~c5&7Q3tWsX^a}34 zG64Ro+l7+f_Ao50mdpB>3wt4JeJfW-ffw(ztHw_q4c&Uq#t$mGwOfC&m5I%J`Cuwf z!2@SFbevX|BAhTH7khGLUFERVvzR(H&}kX_(WHy1B;L#AV>ZS4+3>rb{o);L*eRlYWz`86Qp)qUMX~ z850`|56~Xg-a)DPtY7+lTK*`KP%9~Ezw_67TVN4Qli)e<4Z1QMCh6q~A!x&r+w6cA zXM2$K`EXuQ%Y6}Rx``yM)0W3Sqku@}hem)+B;~qxqbDr*U+(Vyk*Ff?9k4|AQEIw& zIhT*Sav_cECsX_nt#S)_Q$S1Ss*_#^ueoT^rnUf$2kSlXN?*nLoTXfb&NjUzKToAd zP3L+nxEO~fDuGOMlk#If9}ZcNK0jd>ZG&Y$VW07A(%I;C5NcfEMGBB7w{srr;9iVg zO-4!u(8;zkw-w?zd6Pg*0iX={G^Xs{eFGjQxZ>ch0{SUJ2P?B`@xyBC z7MID6xE^6c%-(K!PZ+u7ZofRJdj z-z5m(~3p z?W16kr2&;H5tL@kD-(z5z50*u>5i}RzBMd|34hD`vJW7tS!eXsYN+^==ekcYQL#YF zAFNEJI=c5;a6uH0asr$Ut{!pXuG^lSMe_L|xm3QUtj?=O7pOSBQW*CUan3;j9bz6K zC#>JGFn%>tfi4$!0o=HuP0!e;g`ei?C8|+$>&c=di#Dqq7lt&R6w(3{*2iK1Um$Ca zum8>@<)-rlaAxpvA7;OTqsH}f6ydqDe|lT}^u}to(-c0EEXI%b7rIh~KAx&1z;_oz z$_~uNCQ5{A8iy%L2KcjhUH5E5+ZiX`_S;G`?O?sRMAcIKwa%`)7Woe5V=rKo0OA&! z7p6^=`W?ZCkdSR4VzRcZ`fqTG4nyk%HVUN+iZEqvM>l7E{r0yLRd}&k*#XXpMexli zuupLNJTHcQ%%8zZUTf$0+je7vX$tL`o%~Bx@9brKMDMxT{)H(FzA>PI0OV``s!7)g zXJQ5TQ!i%Cl4i^IbD5Mxe$mZcZOXy8sILklx>%>GaxCcG`qL600T*S22ui0S3|zDX zICG~8`Kui*>^L+|UBngYD_ze!Hel$D0oh29Woct72{QCoTj>Lvy`^8r=e0zKDvI=j z2D4~!gOr_=ho(j@=OD3$pr0Vu$GP_P`;7+Sw~>>$cE0DdosHbVTh*3bedFCYaM4sY zy2ElE2DrTYncytSd8FAwp~ey)66C+`w9h|o_sGp|N)$=X!tdYP4|=Zii|pgBrR$I3 z)m%=wj}-L2Aq)QwgC-=zR5~?M;>9bax#|l0Z{Dw@MP=%W2rr{|%)KmxTb7rY{k;obe607HmzFHP0Bb4Ifypf?N z7#cO8$=>f1rAv%y=*nc+iXB%bY`_;O!#wv4K}5NpE-!T?yHl61r_Bn!4%_;G0ufz) z!CR$KkHvu8*Qn{LB(w*QgJt5DvD=Dlo*R_PoqawT{K~FcFn1|K@%uQ`Kh?lARV$ZT zDyOYTI?TUF=zpgUJdGCE0y5-@A?SUij1zl>7Jfm%b+b)jhUHy#{$^r4W*(1AE%dxwv+16(}B+(IDK59@KclBVPcVVG{=X zd|8wSx%a>=pJGIo z6G?^@Fb?+{#aHE<=Hn+M!xgHTYM?tOCsp)p$Y!a8J}}y)Arj;VO%ostiDJrwvkiIK z+LZr(vAGnQC_Nv3Jm6%;U0Z6{zvnlnUbP>X1RH-mT#^iCH85_a-G(4<#S-m(>=V72 za)~pY+2q;x-G3s@F-qGNG^?DS!ab{8GPgnaIpv7$4IUsx!PfLxHo7DlG_#5S@YeV_ zCJHah1UJ6Y2i|VU1Za(3rD@*spn+2x_wcX>+EcTQC#@&dv&oq!Leo1^wTiCS8JGYy6nv9R(0#t6ajw@A0wdHe2xaWN7A(M63f>VC=`?? zYBz#anTY(B`1C>6bG_QNl{fx-AeUeTb)(ei@6>RZg5=dEB2GDJacT=q2o>x@XWujO zM3hhA@w2=9JMV2o^`vYDM$isg6+B)JCj=7}HrI*47vWZ;YHM@Tq}C=z~WfNv)!LG1WtB1ZZ@!UgU`N$?V8ZMPE4|oh?FLg>=2N z;3DxyiS;6a7x|Vh>XX3CRegQX6`tj?pp4<4MQzGS0(^dCV;lC148bkNM89&ca&O>A z&p-%)G^IQ;ewf`$!4w1=2VI6A<`Q<`Y*BVEtoaBUN7$|MRHU~IWfoOwg=uo;JnxY8 z_c@MA{RPn7R;5UD@A$D}$o89-aGmrMaPrRZDp>TvtY*c#MO7GrLqV!(g$f$NAc{LG zc}nxwaV$?96=Uhfi%$OB!8KG~4&4hUVmaS@4PTrA%k2>(Vziq+FUfWQu~W_o)7;Ln z@?t5{`=y**+rnV1)-Z>-9Fz(a)I53)Q@BS3A(L_PmO{d_v@2i@#=Ts+L z-;w!;uz!9N%i_5UVlNs-8)=|W`r;eSkn&GkaNWv5k-*~u=jxu~WBx-I0bQ}hofjc1 zaxoRw=a)zDh@jIico9neqd*ZCs{{uaewB6vGxKlXU2j<9B|H<8pTDvwax|UQgzvuw zsHHVNIwB-g0F$MA4b@Om+@7dg^K}$mM6JK^ezuR7RJMOK!3c+7xT{G__OfA=K;{7C zs&@mv-*I6f!}hjco5Sm-4P56iIgEIvJe$@6LSz=e?m-#Jc}^=lSewMB&(i5kyb;~huul7F^B}vzoUdRj4adSC%sbFuy!-Sye z_)Ztq8(+!5Sm_ShQ=8_#k@`c5&&@pAU>C&+*AzG_;Vr7kak;Ay1&&?;g<_#*{!C@Z zxoml$#0>V(ED@kN{wTgJbU?=1qrlUG)}3CD^CWIk)iWM}{-c~ewxYs>v-wGWj9~b< z1SWX!cDAWmB`WRzFb`S;Msyvu;S{`K=W3LwH|&r{C}OQMYjQAlS+l|ldUXG5 zTk?LG#be@0;|+uIXr3yGo!mGEb3MgR3IYak&^x?05MPwpqjB_e1wL!xE~xkw@;x)p zmIjBN|m7lVYC``&vZ9s})! zO2YGg*`cw${$X+V;i{B5>hdon#6l5CnqonWTfw}-0HK#cs;L!4I?ds?DbHd}m zIam~ijNgn(8@|4~o{z=mI*%Bo0mV{ksfSn<5990;e;>?pmzhqvjZ!O+^n_B;NYY{F zCsS|k!95C1?Hb{cl<@ zkp-}=ZWK2`-3&ewOAoK614uh&tXwK<9XTd8#y!t18URYF{dk?|Y}4sku7&yE7z%J= zF2@%D;EvM$#rBzjt3;W&ZDvgGLxg&#{lBdGj->dS&6a<0Uw|1$;dqyf_3e7CF@C`@!wSkKS8ZOsf&JQQHAYXyY~i zOhSM^_Gyu;<9wMz9(+eJWb)9UjQ7P|<4mwjE6rP8Qwj}>rJ&y%f8fe6Opa*nYu7+l zRL?nl*3VrXFa$5m07~FY2m;E&+OoEdN*zsszC;y*5q`5sAKp=`-cxa9BbIK)-7ugZ zv4P_Oin88%!jgl)Hn`s@|8q@vtUxkctLt;>B``w<4npeCd~Q8poQ?gtKTtxt58%@t zRDl;`ib#fkUl|1%&&-p@Y!ygW#V8o1t%qV_rU0DIiWz4_??+mzcZ zpryijy?y4Plzjri0ap9XdlfqN>)vA^%v^=P2@7N>AjuaN>%?ISmutRLN#om24nMFjRiLlk zOeNk9_x=J7eERbG$&k)E@f05TIBP2C_W(y_pj7x=?i-~CCb8lb(coMI=zdznq#WgD z+1d_`4mLw1(h0r^u!!yY6N&O#Ui)CEIV9SG3LXcf8eon>!*2tRTXQ(9vf!b%FTep& z3)`g7txtyMo|IRd8(-qyu`rSD4uzc%=flXG3hOny9m<$;Dt8B!ksy8gQHE%@53+NL zTkG5VQQ#~pgLPZ7Tk8g+QJus25-WZKS4vLvw+P#n$8(wVbj0 zJOuZi+zC#ovES#F@tWQRDH0W6AFP>Lv2@L!7nprW`jH`hUBj>ix}dc!>xrb;YUZ?e z@v|*t0r-?#vl<&V*v_0d+fhrU59qI*ni&3>g&*Hsv;Af!s(6#=>&tSu`?O0mQO!U?j@M-Xo0?Oo2a z$PhMAKU1~-++z`c3=}+Lo;`-lZ;R?I?TEV8o$&4J7BepXGk}2(PWBoZApC4Q0KnAlSDu{ZMA+7Si!fy-XZ9u zPKyq?w_%`*L1`ajjS8;@eF$9fm;yL}29WkT4*l^giDG-<<^h^r2%0xgGaKt&FHnkH z_ht6Dlp({KR3<*ovvLDd|MBY--~SgIlJ zI=ma~2^rhsj~9pM0@XdxQy}$6mK(@!u4*sM!Eaiix{BgdS#uOHrV> zr?3RPPgB6Dt*^f0H+Z}QxPiy}VKlz)RuL-9*8I^UyXa0fCNH;5c{8)BN@a!(q_$sx zBh;to8EZ0)a}6Ot7GUKDmU2=1q2jYYyaQqd`}BMKyf0nNY(p5Zg3TJY%e_S;x2Z3> z^W2>6*TYyUHmQLN_kikx#62RDB3N7YCzsmm3x57cw&AABo%&x?VT*M(c0*_U=~x(e z&zmH8Dp)}Q4Y1T7=s$$=7nk7+0#Pa`?VVijW+a# zK5MVN_CDvvNJgYT?PWZa*(AFce9nL^vL(|F6mRs)aR@v@@7hkdgwhoL#*< z9>=yxQ&WHbe?apw(-@uB{$TeRz>^d@B>KKrq!8JbHfY*Q9|QTDx|2{0oA~={v$kLE zJ3rH12|tgTlLGg?zKU&**)Re4B+VN5t#I#)&KQ=8P`RUWA^5oqU&>vFxi{C=&u79< zo66hWuu4~=Qk&)wT5{@8Ku4mcByG>+Un z>$ElX6SX6gOd1U>H#}YIwNx4(W9wC?Qvo`ECrSGcuOFpc_lZdj)$sn=w430m{o1=Y z>f*TkhPb?0J=Msd{63|(PUoQvcC|Q(Qzigz{sVvYCGhIooZFgv?u0602WlX^;0P*= z#9KN%L$GPCqukEWyB%#IQ%xu=UdUGC=f1l_$A3!ddZCEhno)pji0WDXBrt?ayUBgCLSlsAFqdVt?CJFPnmLoRhRouy&~)j z4iMyY3?;w!Se))^bADQrsK=EEBooP7)UL1HIq4(!V)U5yBXyRc0$9)67uePxtdUf; z_$qP`2c&>~XUCsIF0$gZy@p`Z^!J$Yz|)Tw$uQ-<)hh_LJ0Gc=+N|G~*7fgQgcsOH zpG60;g|M{W#qoBH7JhgI%D|TnMr*P;Y8P+gVkc+bN*E<-=WBR7thRdF6oQiOW2DMO zR|#k*48S01=5gP2s{lZ>x02P#yD4_%vC*VPMlM2NX^yr=m;%Yunqiro;k_%z9h_BT ze<*~$0c9Ay)9=8pa<9q4*(=5S7Mt!(O2hs;M>5z-3dweg4|X3NvyGK_Uk)+ zy0_*BOKjqYc!???5H}joUlN|-f&zG^U5HbrMb5joL>x*vBvs0bE%BHmz5m|OWq+hk zFNx{wXTSqGkr8lkWbZRDry((P9T@W%Akd!7A&#xo5>MOx#O-rqY!LoS4H@b6ag+J9 z1%Xz6SmLbN@rsYX#%oXpDTaPW@2+Bnvyb^9wZAez#C=DlWPd$B2y-m4)Y)#Qabx}c zA?)UK{MUYU5?X$H#R6NY@?uZ|Anh2jV$4}`+{Ksdap)~DS2~8;-L|cc)8$ZHo!a~k z9C>k_GBuWWbYeWngt3m4&)68^c~Te z$ELYt>nVMi^)tu5M74k~hP2c>OLGg=Ndf_nhcg_rscAie3f#>F=ND;Fam zgIAmGEd+Zv`aG^*VZPaA*XYCUTxFzC`p6Q&=WAs+FIPAcUHjM zz`h93?2EfbHa(mh)^`=$AXGX0Rs?6Kz!DmFLJ{;9lr=W%DM9FX!&g}fDfgB(hEkvm zCB}r8b0W-?KoyILaemLT$KYP~+^HJBcC87FDUv*wch^M1G`O+SP&_?I_xT3B7yUT- z&?QOcC_wj+1Pl6ZG>NGCFRtRf?xx04xGJ?5w5FT)X?St@a&cE)V)*(ZV7KPO9} z@|86{{XQIh^ceux<9Ap)gg%mO2(1qDx8Atoj{`(w``q=Jxdl5OX=&GwS{K)Z1tx&G zA%d`gEsQ!~91L7e02-tJrbIL@z(6}i@QxeCKx8Z7yaxgPE~Ad76IMHAyQ*z>`nR%N zn}?Q^ZDfk;4{!#6Yb_kJ?svL1v2v;*fE}RS969g%dYh)pc+5Ad94P4mzoQNE$c1CT z;Dw}BJ^|;mgY(U|muLt;4izw1dS*)TDbv^39>At-=NcTAxIK8Aoz~`hiMDLNw2Qt* z=p-8`c{MXp3LHKguW7VGBPulmI?X8!6!M4vC`Z740XWkNIS1|Tw?+u$ePS!HOL3lS zLK&y@3zgSwRM}2UP1d6wq}Awzg-xbTu(<+xa%^Djp9u#(w7*eAEJVuXmh^FY35*;g z;}m0-OxUC4Y!YAWQl`A*JF4;W7tvqBtIhS-qqg+mv(&~#mt*+XZ_9y|%U(kX{PI)= z*x&G{K;5OuhkU5s)0K1>^$mgA3oO^5j|&~yS3Zf&8zDa5^y*rR=0`>EI=E`}So<~9n9|p^Hl~v4M&&(`mO0QqE@S0890{@8{D4CXhaW(xC zl#%?o{YN-Tqdxv0>!z238>m1eT49j6E*tXHE1Ru*d$P^rB(9V3eOWj+Nvm~t)(3Xl zKWq92$R5~{1CV0!dbTPUrEX_0RFei+=*o@kE}K@vwVI%El(5jH#WfUTTrv~?%;U0B z*c1K*)W^xN=h_RtUG)H8()6F6FWKnSt1!5c=;PN9GMTEc9||NgeWH&@a>B#tk` z9RPc+^cMSEZcGIvCjj`z9|S_V&NSc#P^|18$CUpn8y`xTsHd`PRrgY|(upct=J?ca z!TyHtW^a&)1@2BFKqz&;JJkKiM#f%AkLv)aIamIfSA7XVq%ahUEc73ou0NA~tH|R`QeY*+7{RXpd51{e(e}XJfrQ z95;c$r-ZBhQc~*AIn?-iz(#<{fuFUP z9ez@I|4ln^z2(WA>+ZBLvZGQe8usb&n(ZZQox9TDE+q1+RIn*=ptkMfEn6m60zL@Q zp&6F>r0GCH6_6`3R%>s|(nSJyPrJhD%`tx&^wOd}UX3jdW+&tEv4U3LK6rNg<_=1S zFWyM1Z0;!K^3}yIKiIbSJn2c?{0I%SX9J8G6Dy|l z)jwy6qiLLQ2w{5V13R|oxV%uEVSha{tAqS*cdGb?@GgDVjE~2DW})i9RA4su1;~jM zfCJeaRLF{A6dXoBQzituoMrq-_&e5oxeeoS)-kLe{r+E7>ezSlVOd!LA6t{{k*9iH zF1M+Smn<0%K;mGMxc!F?w;Yjc&%P8uNm?xw0aD*57O-tb{(L_jpao!xL!uw;D%(C= z&!99-@eRSE&)#0byA~r7p#)u!;H(dY39>#Bbus{fBN9@7k}%kwqoUe8U6y- zN_~;LazEhG8|hs6rMGY%?yH%_*enk(y#zscsVnpsqi7{&L-a)8%3ye(@V!~wP3C8o_0kwEFV{SGut8%1aEe05rC_#CCz|;Y zXdvTL;7XIYW@mhtM-Ii~M(u0yg9vfXmlh@_mdpx;z`xk$>TCx_T7sa>;0j|PA*%C1 z3()|9%75xdd6i_H0ycRe+#-?q1&u7xNLOMhT%CKs6W`14q^$<)m_wBBqaKicdZ?etE_&~FKj66XOxxEYTI0F^Y9uta+aY5WfZp<0bK}+`8xYbdY~@3 z0Vo;xFY$J7EZxWPu^XW*4B4L0@*Kg%Sx9z3LaBT~&EqQD7Pjh0bi(8GE95oE3HLws zy@>_whjDn8=fB+K-fNF%99M1C81Fd-&lle*V(1o;CUdSfXK{GXyK~-ZxiA-le9Qbm zDC~a}gFmANE|j$Y+e=?9B@}uw1zNWs)X>LJp9)5a=2AZ4L*{;G}ypo^u!SYH=xs9df=19+b8 zldit(6fnqjW2zQa_G!PX_OR$0b{hANEI{LI+yK7llbJ73T;%EWnCHrbB;eIrV~yK6 zeXGu!J&{XXmg?WMO^nvmD27m(W^GDwZ*F6DS5jK+2k8MPJhm_I_nJonHwH`n5^im& zx&?jiPbROTHb`40<6uT-Gv{-hQL;oaxAi%}LA$VTO>2a(hkZ?Rud{YGq zbHxjSFz-uVq%z=O-hQEnzjSx>#gVc*3Ub7+zWMl?sLeiJ19-7MnNgii13q4B@a@0oYHSe5$4Pzj&prebYgknGzPOw*+3SNK-*Lc*QT7 zFS$Phx5V_PngP0Bpg$&>6XNAg``mXs-JOu-|olmRaogGmSnS zNw>8gRuvUN0(aW$F}aD_HF z3V;pIJG%NBkkS5W6GHK1x#mqT!{EgV8HWx@z2QbuX}9C?t)3PN36q>N)~{3e5+OUX zr@UOwJ;6{u0WSp$ub+|ouR+?BKnKE5Tfr2Pdi21T`L<2SANLN``0e_7epYWp(2RdF zr;7VP!ZKyAf74ot-g>^P#?S9?$(ak(2BZ9dLtd4m^<1=&`X}Jv?bub1h?@&{8j)=V4R9dBlLd&QGIPhM=0^Hb?cuN` zSik1*QTX0C|BHxwboOdui+4{%*E(eEmF8y)MKEb9Ot;Qmc6ud!ncZ_}EDNCVrXN9e zD{ur!(SH3}?=?0VdHzq+iv&bIKapn$)#1hmLVSn2)9Pk7y5(o62XRJ!bZtKLwEQ1{INKdGyV zFtyopId0iC;!vQ($J1LyVw|O*sE7<*WE%tNgvJ9}#X% zu2@6_>|pgj9BlMH0~;_8Gtnw>S3EyftUrp~Tvy9Mhu$pq<4IMio8nik=K5bn3X*Z( zfSfSkct}|;R4@lf$)HnQG+}6B>Urv-7>+5Rv6crcUK0$Ra=vV$i7&f*8fKs`Qdg_B zwYo}E5JvVe%})@+sGqO(oEeflm}4T=dQ(V?ish zwt?kGr=YUhpQh!B_EAqK{iJ7Ux6`X^c6)V#IBe$GY?N1tdo;e@Tk&-Ii+kefOGbZ> z1dVZ-%e*)mQ#>-(_{velE|>QXzQCR&bWHbUNTk@$2Rr;+{eYIDoRR;9jcOCnnn@`P7f@u97ddO@i*pg06w5lOdWrk;@O3wuU@YCcc@$yWzG|w z>To&X()S#s1`+uJNHg7=iz|#;jT%P8q3oIu@M=t@Ai35>M>&%@KPkS^>H|; z%voGS86Z>5714_Rcu8%I?gs}&<M@ zpASKFTxG1=YFS-!dHCI2WYj9whIP8}EuML4%zqWUHQi{`_AqqW^REE_9+%PKAtuO7 zH6i*j2*K9#Udt#tt1IG;)`utbNLCh{dJpK9eUDpu0IoPpm;D5W{h1LMcEATIWP{h6 z?IR~zViuj6!u#>X?vk} zAiD@aXL+j72Rh7&(sjT62z4!ot@wW}9M2T@Iu1>Bk~IxX(sCvE_^?>-eZ93M8{3rh zgbi#bP7mPIA*h|k5_KBidvFDSNw1EH#=cqR>ErjDog3$izP>Y2dQi-lSCUhEUTtmJ z(rWXtT6lCuh@4Ug1C9tt1MmN|UKX8`oFSqG*e7TtX>zK(vEeq;R{LtwN}8lo*oBR? z*d@*|fNREfk>|PchR|cZ%h_b{5Z_CN8MM~M{C{AQEc#3U5NXgtzOA>W4Ol4hD8`jv z^LYTGBiZSI>z9s#&gNV{{n+HHMoYhZSBmr#0c$shT&&vW73dK`S-*o^5gE%k9QDf` z7BGhILVOX23^eX*Cp78J-_;eh-Aq!;pL8mv>W^E_B8eXNw*LFmC20$LCRPNJFSb(?x%QVgr#9Zd{~m^3abgkl*U;11k(1zF+P6y4o7 zY^*eICWiYa&=EG_0mNE;9laHNhvKT2f{ml$UQ)=HtDY2- zNa(m&_R96?`_3kVOme;TB;5FcnQ$y<|3R1YTM@C?QJF&ls9*q%@k8>q-7%v#NLUm% zSJPV0%TcJ`$E;39DALAfx;tNO{HS`JY;}UG#Cf09+ENvrUhtpG0OrSQ+*X9dv zH(T=;1`0j{b!gS9oOXrbZpSYSrRW#*?Kv@p^qZ&a*{dEV>pEK3ON@DXZCOXR1@b#U z6)k`be`m-~zGCawHo8UqgX+0n*2|ilgktgdoc!KaZs$9ti-Gr|O%Ova=i%ZI*SPOG zwa!pBVaIYpz6?2UybDwiK=SA`7jg$bANh&GV=TcSlrv6X(YDOU(Dz$TIAAF)7BGeK zMN~Ip^4wt7+9ct=w0r&Gydp2P2wI4fxq+b!C(z6?E)b(+m#pEx7YAl!t=Y3|tQH6| z@%yevN2S2`!*{TRCZ_4aL~xT-B`q2MN`<4&bSs%vowk<+EYr)8mp;1ijqgbaz`n>8 z-vElrzc`CCJq4{gC;z5D$oBrBzVBH6KJATO6MwP9`uO(xrmQVJrO%#R^fPq+X0ZO) zDC$Lq2T8lojj+bQVf;~SNR4PJ!-t$OtTxoxMh-0ZC6&6+waLgroHUdcPlu*r_3nBE zVAnfKMpxl}4F5%z;4B8rji0N~O^xe(Vg_VLz**qm{j|Pv3M5pA3)~=r7L4dBMh=T} zBRzMAjb`Yhk!ivx&i2@qFM~X#zfwFJ8I2X1*F`x|E1O5xt9o6h{k4~y+VzwN^qV)y zT-=~BT)<#Fuqi2Ku;Q?^=YNwF15nV=-s*J`EIaCXu@i%EF{^L!m1di+2e_L>OfgaYhlh2N!wU*I_j5PdVRZD+IqWFLJMS8pTSO1Wx$ zwXC;LF_C;;6RKRp4q@&5Vup{xPnH_m$wR7+^Ypx_UE%g$8ecF~4w?$$N~5 z2y%Ba`0yp5DUy|@%@W!;%37aT_TY1RSrgWJadat~+lQa@p+_Aw=KL?N)Dq2?Ky*yw@^Y#($x!!y$JH!HV zl4P|H@=~r~vycCdqpuJP7>%8ue-NY$UuS}bgUn|q^kz4t!ASmIZ&4=i;;wPYI`jj4dg`CT+#(tjgD`wzq~e(iUNJ!iwk#O>2APhpdXNa z(7#@&$F?oJxf7CU;UkVCH_2P%^xWH1OMl*rBQvSjQ3!j80J{7M|MWy)p4;aE882u}rqqJwnbT1?g5*NyvgrD?$vyA09Yu$8l-um-?%QT;YbHNp0)hK}ar<0Jg3Sg$-?=Z9*)Z5hv}tJrGb*m?^#@@=zZL;o2qA4*uBT5 zv%!60fsE@Qj1<7dpkU>MrOv1yJJLn~m79XQ(TSffqRaJ|Y(&PDFwNQ;8vzAKc2ZPmpSCNWa-v`YTHHfXj|6Us%zks#e{VN3;JRzQ?-k^u0_rr?g@>H?E)|coj%{R{a4^ToE?)9&5HYMHl8{ne!|@;Hmb$O zx^R2EakQ(*`NOot>U}?&&^DLh_MF>2M6l6|_5fiZL-04Fq{Grm=AQ@A8FY^SfKGdk zrrzMa&|Et?a6Le-C-GU0>hXwMaX>lVKx4*8DUP4rvCFoMuJJfDDma)?v-wr~YaplbfSCsCLAU)k*ky#G+Xy;=kaHu z0!b$mi(0^al9~NO^3~Vv>knxUZkJ0Fi}W;j3-#g-hE4^G{WY)J@8BW-e-_m6ygF#C z#Z5aR?9JBIUm4l~=~QmpuEoLPB>dz~*_J1h+i$`b2ZqBlNs;OEJed_oNq_hra7^+k z`XH&~lV~7<@PBBDrQX3o3*X3sH!&aanM_6OzkXZzy)j%atHfCqubL;NKM2u!^4BO1W&IZbqVo-zygnJ{|t%g-4ocIA+i31 z0b2fEJOXju7RG0#D8}U^eYdJ!=RDH8Y~&Fij;B1<=K9T4s>JvS2}JM{2~Dfi@EP!w-THt3C}89OhQ$ulO~@)^yb+G#gXfjaO%61LtVOB^=ie2p3PS%5&O8kKX^~CcrUcDhN)3L<804PB7E%Rl2ecf0@9AQq!LP7; z;lV0gZ4hp5$=pNiN>t|I{k(IBU+2?o{xqG9@QZNjX9$At^`;bVg{Ylwz$xlK7y}~{^Y!H;CI94c+tf$qNA{~cfoQDvMby33!rcQme!=V-6<`FKajJ9PTR+>@~bL;wJ-L)OQMXYhplvYflvQZzv&gLxAt;g2|V`R|P-(?bO+IITL)t8h_fyc_Io zpUwg$g39JGjY1If3Ex3=A@&alVfEVFpDzZD!Wak=hzJSaAGkQgfY!qPKYVt3^eO{; zW1xMzg>(7Iz@PHJ`0w%}o*U6EX{fhSJ&dk~1{+_^rixKr%$9 zw7ByVSUtr<=Wc{YP5CXo_E|X1gEn`?XI|bfBvZrdFMTHgxT@P0WQ>rgg3~)t`k2i3 zrQ;WmEkB03fk)SUf0IL{g~e*Q$;4wLV4KOgNwu9gFAXWRvq30L82OeKZRgq+oo$m4l#x=~q<;1MglH zD{9?z6^PxUpK`wGL6T0fWn`g;Y^D3d^Mh^z%f_bj?At;7IUb(H`LG;Hpm+Lz#ff$WPe@uV3x*elvfxyoX*E%%Qqnip453`LKSd~~ z$76S$Z1B@~6hTSB_- zw`6qW@0Us@gq`17*a%k_b~MFwemB<@wl3wm{JS`aKu1foOyMP%p0e?>oP#Uy4q$&1g0(`U<62XR3*jB2gGfy#c6Apt<^sM_N@R z4^F<(o?>#X0vEZ!cB6ntqHS|tRD#likF&4Dg5wPJfL{mt)0_BH(Y5)wPj_HVhmnu! z@|4(K$C8F2V3}~sre?#lc{M;b?wuTG@ArT2bBe^?z@F^iCJcDIh^ja#&lg&Il*$`~LX2})%e@6IKO!$k%V{qN>q zx2vAJMXo-uE235AEL*XXsTzoB@w_5Cy|XhF=_jyh3J>J@Ru0C+aX3P8@^pN7p&BimG$gzoNI=S#=GScSK8c!`jzzFMz!P?|uymo`0B0EKfl z`I*(E2!i>*EH+7qAp^Zji7tsrD2d6;euG7;(_*qd@z#;!SVO__%X}u6)9{L@Re~^j z*mN=)f%_>@HDOA_o*$E_8X67d-)~4L&P`N*Uyk8A8T;lwTAJmWUwXa&NNKRg%&*YU zmFTK1arA@$q`J~#a*JsEp*3=pXz?)6Gl@Dr8G0vX^p0RKL`*o zQTJ!qJRZtEz;>7ZTt%tld2S?Mjq%fl zk_YY#9`Lm``t>a-n+s2@K-6q1}jbXSWYQdTv`7R#-!rGGFdXL zvB1ztxAUs&0^x(Z(tD%Ltgd-A#Lt}0#=c|$c0Iv+awBHyLjJ}mvSt%apXUp~aM?Oz zkzR{Wl0+(bP zRIy+0t?H+SD3?`I-n&ox9)(FcFi&DmMj54&6D@)M!vTsl(4-K_3ax<{0%ZLT>x6KD zp}sV}B-{_sZi%g736tLs6+SH7y2 z{*@^p20-t7Dfk)!)BYYjxtJw!-}@(d|*X!sa6J$AXQ^jkLu1#Qv2W^N82~BmoyVGc}tNlE{TC zvfPmv_1T|!xcInS^zBDvb5)>2E2rf>ST?dfu7baEt(ZqFx~Xf8FHWcqUC|_#S*z5} z$GjUGH40lCqPTca*Ipj*zEFK4w%Qb`Y|)&4kb8rX^qV+PMmD-d42flng`hyAQA93~c=Df%THGi2kq|1E|ZFzF_D0nUrv?sOnjfISu zo1NQJUSWi9c3LK><+-xZN_6=whcRfd0(RhsrZebd_1v51s%GP1yF5Z{fq#D`K}~g{ zptvV19lT)&;!OX+*RII6J%it-lAIsB@QUIMO#mm~NxlDEljgB*sZ_v1^S8F`J`&#j z?opjgW*Etz&mvyZ%qGYR_Yge$rbk2HT8lVN^6vanBrhSAa;zY+;E&K<8;jCZdqWU- z@F)1a$vVb5;xD+!F0#cc5KT;7V^d91C}W|8u=-@y}D86v>gtlhC_tRO$DMm3p!MrlL0nq*Ee)*FpiB& zB6A^?=KO0N1_6Bi!Y-bvnXCLFcf(MVlh0{<`2>jW8`7`0+gmxQ>)FHX?ty&( zSo>z#b39e;ZAx|4M!J%ktfn%(OzaN(+ol^VOGPm1KDOb_`lc4z%Ld1k#mt@Bcs4PLY}|*`;7vOw{)uze?%M#n6lL!^a^wO zP~rT9!k^Vdz2?X)QkLb0@r>8b|Eq>W+B^M))oRrmqs`y^stEc1p+LNnd7= znt$bCuDunlwH`0L9C+VJu_dZE39B2wl~29BUj&ce;H~pazn7LUD0LsyyuJ>xO(kY- zkrxSx)+v@DR(;YW5O{W^EVu)Kyn-b~zA7gMsq;y)de%uteaMn52o>EJJDK#hEDVQ%*CwX2^*FU`LCe4Eq2z~>ExwJ?1@BL@mx7hhZXZWq_D zJO-YosCsOFSeVrvZ+lLW84_?$?$+(SS)DGs>*;?!ENvS;d$OFD8F#wuuK&YSwY!{k zw?$N_BXmrO^_(Y1BtrKniO+-SoH_7Zf_B2=T)m7xeI2SKDpnc5?DIt~_1gveihJ4> zum^nUqBcody(WX_<$OF2U=IVOq$pi{BiwD=E7o^(4;-@Qikz&tHV3-#f5@L0hSa_8 z>eHgtU?;Pqa(a4|VStiTr5=~r-}9vqer>(x z@xmAX-v&&~Fhzs9oNtPVZSwf}A-&O}>Xvl^7Za_V~=f5TXAYIXt6-Eg}Nj-X3>K1QX|}3+PQr~ zN6NsQx#znnc|gwnf%pByP}XAl$D5zK&sR_~9!s?Qq^CGh7EO>J3UH0Ibs86@>z?W7gl9HQO7W z^g9)@RaG3sl%H)K8aOo{ote}=$WffgVj7mqPg|MDWXXHiT227nk_v8kf4qTYxy@R8 z{@oxg0ZZjNhTAj#m#kXTz*NL=r)A;vIm(~7%&U(b7dsa}>i+S5U+jIPKlOTCYrRZQ zrVNYC;I6n_tGcp9m8N5J;S^$7*~4HFNvU@yV_im6=Q-j# z$uk9;{K;cxE_%?2V#OQvfqNOkte9JL(X#Vud}5XCif=aWqu+%vyEbS(Qmn&_an=KG zM9<7s8byw^?<~Z~qa94j2Sr+PRcly%&A}D zi6AP>o;#+?Z#yd6*w%U#b9%2$@}FtK4&5hG{Ek?&|5fIJAT6zTgAC)5~ZZgy=g?v#6^3{q##mQ$%oHsqE+vrBI2Qq`4y zD1Eztj##^Hq{6+sl}=5Z1^oS&n1YakUUbJxlFs9)dl)sd?weY1b$4BD=W3PD*n1Mm zza?LJEf%~P4n&5>k>Ke!-x+jWq(2r&f4c5>-yXL)D!E^6IIFO598n8s#~YiEpbb>| zkFnt%vu33RmS68}!gSAW7Y7;WzYz#fS{X~)C@YJ2I=L0}^=G~~<@$=JZ?W%HYDerz z_b2*8mPWyZMv=bn5!0<>y)wROarg!QMfRL^qT=bkD>I3L=?9ufjBtu%uvT^2J03MJ z%_PzmK9lp1#lhc*8mzjdo=?UCx1`fE8?)W(d=%MC>0@vBD4lTRlGr8K|0z|eDhYjD z1)Rm40$z5oA6CV#3_4nO>jOmrDi21exTXgL^%ESHcAo?n=4W%S)~^Arqn`Tllb z<8?b?EieMNu(6b1FqWa-;IL=hTua^6xZKhNam@>kvtRqx!PD?nsNQhEb6@f2wG~qM zx`UOCR-)Z@)s?G7QCh^#O4D!Qq|P@JLe|tb#Ui_Gdq+-B>*2k!<7Y7*fBEfrm4%L! zj){q$nu=a%R(A;lVje%+__wGNqq-2z7dz%wSxV=X{O4odpwS*PDH}8 zN2$oPks2Z?mWx6)-62)`s9~S6F?EGZM;skw^|S0r+nRWj#drp>)}*%|DzI!_;2%6P zc^;Swu~1GqvQIB^KiKl}26K25JG>W>Vn|~$-oUiL6ibOP}bLTeKM3 zk@HQR&SYFnTXV_5X_+vSfoZ|KLimbSJ$5fwxH_@R5#MDK`gN0OjBX09Ruuj!4Fwk) z6+Ic%O!B9$Ui6Gb?zR^*<8KdE(WziQ%^Ia+trrDD1hi4WHP*6Mul+jf)w;wXYN`%CC{K@9(Lf3dySE21z8020|NgY#yG9=(^v9s84}^;Kba>(HMbjS8aFbW z5Vzr(Lg~8Z7KkP*JGuK%#Nlrs%sbG`)2fcCbvR5bOm^W(&FxYm_3$tXbx?|m-egwX zyl6rC^f{x6Yg7v{fHN6U!ghX)BA514?($XO)lITUHb$w=p@2!6q}vk+Z^L zWJ(;}WSL6x3f~oeF{W$oRpSOrJYIAM3L4mXWykQNXnlWiq;=z2j0!e06|-utj#2kW=RNa_YY|36w>ZLQ_$EC z0lb*`X54c0Zv3-zhiN6$+`54@hqNBsQW1ihXlgDMa^NLCGyBQgM#DMXTyAvhl-E|< zMO70hGkYu%sqb22e4(Q*{*0m~HFf-d>rfAt53vkmgW}fS zYA8%PI17y{M#oZb`Fhm;S^dLAMe=1sV7Zh>kvy-EocP-3z27vl`*5T`%h5$WYGkxU zK+(5gNSqcmF`ob9072)PR2ghtJuEuj1{K1F+y|U~16A01(TTbh@bFHhe#Bv`u|2u5 z;bQigj^o%Zf$59J{#Fg`bK27k;)e*&8alrt?e<&PBqA*GuzETne3#5(BvciZ4c_qx zLtzdD=eVUPPruMPyAm&qpiQvQ!l+SmkL$)ztN-Hudtlmsmq|t)$h?E`yDLwhuQTdI5r=M)4hHW zyzk`+{R!`OjhMr1}mY<%RCj{j5TnoTH<_WlmQ`_zq^=1C2T1EYe;ZofVL*4S? zs!~qSv=zUW>NnV6ohjoNIuZyl4;RQWkV%rsHnSN~rHmT$y^ zgvDN9X8Z@^%fV5%TPq_|+LgY#kh!p?OJ%msHi#=R#zKIu2C+EVvi?M*+#iaLRlGDmD+5o}9a6|E^D~qaNF9 zOA2IM{YVOsG9H4w@jp0<|6wo!YW1~CJ8;(tP(z5Wh)L4sBnmqeyP;dIvKsFFekfI6 zR?b~v=z4r6rdLBed?Ej5S}2-%!a}6(i$>UtT1#7vP{PihZh!pc8QOm8pJ;5TOOy6D zmhR)N-!D3VoMqkT7Pxw4r<#(t!XZ#<>%Gt#_FzM~+F0w*H!x8|hJ_F}`zho%$`FKp_-R zNqC2@1rKgPDYXrMe=EEKr`#?ywpkCB4HTtHbDU@^xa&W)W@jdavN{P1_(-Y-7n&tO z5ZS!?B3ii3x>g0WX`D7EI=8|?C*EAk41bfegQUDONDG$dKtOBw49|n~w*!rX{v)9w zW2YgjvzI7;r^41`g{BN$s;+U`jiP&)IpN=!P%bIN-L-Pf#OR!=be&6anSeA%i zkCOgZCLF>lV4?rj!NA4A*jU}o&D_%|!9qUnb&3EmfB;?%Khbw^A==lMQ?`YYBNupD zE8TB1o*u4=7V3rg@aSD3Q^Q9rhb(dem z;Y4$!l{ufusQAfwd0Cn0nVEl8(Pnf3*_V}Bw>xMUdewK zy-E{3EHW!wtu%Nb?)ngdw#*wjiyT8|qEQLKKKu};SX@6Pv)G^{qd8AX>}mc@8`hjt zQgd5S5ZrxBY3qO*g#Pa^^fs1G+AVS?GOhcJ09@+9Fb2da3Oe1Ko|~gTOgUd*hqZm| z-X6V>bj!cmlJ{JUCo6Iaxh9ZhGaUAaElF#)A z5w-<$cV`0w^{UFpb5*m!PG8b)zDOej(d|H{IFOpxNUnpXS38%pndsOU-U`|}8JKE| zNm+Y(TGw$fky0heNee#cG=PfF5^62;*zRB<$0z}Ml=;7tTXUAr!}NzLB96}6V9iMn zEcP|I<4XSW53qFpXTtSR&Ox4v6<9Uf<_r6^ZkQUekm_=Ic#|CYu5)4j`{i=@WNy)> z`<#bu{52rfib5NVvJY8k(DFAnlFDDVPfEL$ASRhq+z5)>@`254;t#lvXjeKu_e!r&rH91o+G%|5i)OiJ5mIT62wKDSRyyHa?v4OM9m9u_8EAm!8DwA}T8)nu zHJ7r zHC+`~Va=pSX3gJj`Qgp1wBvkk)w`ax}J$n?j^-)%U0K?(ooC2-N<%P$&PxwJH$nc|%Oxh1kqXmn-#>I`+*B9QaVuBzxxCB=qDO0FVwKFXhPC=m3K*d84UN1mQhEH`OPA+7Tsb9{eaRHn+x;hYL8-kwzi6gFU>Yg-7PBke+zUc{{%OL6n$TX4#f zGA~7cB;sq%>4PmPw6z+}){rIZY0B3bJ#?TX7+WYpoDvJtZ!?@q%Iu%x0&fPcdpV1% zNM^uBd?EJlsQQuSS8{%o>RQUW(L`rJo!}AAd?V`6INFOj|E_bA*UcP<~ zG?jvZg*OVYvDTr~Zd_5V(35YS$vTr?SZ;jq$yu0aOap^wN++drxM~-(vMw{gt5d$6 zR~czQosQ?Kb*E7zuV|=C{=AF7Go&@R48Pc?a)T@(flw=(z_3S;{%r1pG9^_x$wih9t& zl2Go~A-mwk7`McsrNpGKi>j6wJk!4-VeKx7xwRe}jlZWg$-0J;uiMpphbZl1W%8@ZC`+>PzF zU*Y+=-M<*D&3?WLRHpmzqzCqDEh!Nu8eeU|2NU zRlhrxwmWAO^}tBS0MT$1Dsk^k*eFBgu{U|F0YOrIbQW@yIfB2P*0Y(2*es?C_R7|^ zyZ-DRcbiDMwtOHh>XYa3P%mjU^bvpKoj|65I zzM8Cu1K!YoOy{`y%tzvCD-!ot`-6dT)bp5|2I@6jU-`W}Qa6!!Y=L2yU5WXpJscTm zw`ti-WI}06G;{;C)Ei~}$xuIGaW=D-6!1%N7|R@eH@jPV=wrf{SBeMfc5R>#;OMoP z_B2@G%&SRM(4^UZS<`GL++YQ~7@T*Es0&yntIhMcVc&rrgNY|7{$7$W%>ddwf_bL) zZ>J(EwmkL~=lva7UZ~E*ywj^-u6e$=gDgO;RLclX9g|+4%qy+|2npfn*PAj@bo`Su z$aI`->oyBMU@A%O9Nc{H$Z^G0ncihCAMgcl7vM}*!iHA zPw;AUnG$!|HNw)^RMesl6f)nx^i!Ew#=jL#BXomeMpJ)cBasv23vqGZD{_ln1QsYq ztCg0y=-{qT0H$_Q3&x(QcI;!xk`CvD^zBOY+xWhnLkUcvqK90Bjg+p=V4kPV6)oSV z$Lnl(zIiq=k=;A^7=5eYjI2O}7qdW1$EErwFVpxyh7(}&#^_u3PxH`p8tk0sDI>m4 zm)9%y_`Ic|Q()7&{cd|Xa9o?Six&R_K`=TZ+^EPw-P@Gth&u~;`Sh4qv6s_Tu=b*5 z9xvkawxFf9`X|X^?F)_YL~07%SSGI8_c9O=6LFD$evJFShg4MvMOokq3d?9+fvmp zK>^6>!f{)Zvg!4^3ly$Wp+}%zwS3o~pD#xl=Ak8=ZcWhoTSf_cxcUkz^D|f%m3{@b zUd7gaGJbb;V7D;}OY&_egl3npeT>4_l9#i#oj67?(qu+~;G@gUrJFLhC-GfTT`3Ur z9}hHCyAxKcKUv~9T>x27=S_5Oc7!Mpo*tc^9xkssTuQCqgL=Yh!o)dmDMsn29e(hy2TEtU?GF_r@Uv%T7bGN`(^Zd>gr-|d%kjGF)$+`z%~cs zj2YtA5RMWe%ht{L%(VW&1jgqJO=)xyE`EF2nXAt!iKH=xls1hUgzsGNjXj-jSXBY- zo~S0LuMQQXm2ydkwXK<5pd?9lBs% ztw`gAfR*~s0+_gL(gKn@LpbRf9lhkt8Uw)2qi6Lhb9L-$vEOWe!&6{j_{Xiv(iT)j z>wkp05}ycqJ{#NF`7K<$2xN)2wMn|6MkZKrhD25y=44hCr_zf`m<;_Ki4D!3SEAdOIAUKhfEgUXtzJAEm12qIVY;s7v%u*L7Mg=|(_W z4gTtkzeNP7C0jk=gW*Hk6p+t&SK3Y$U-zQl$P|_JN~kHqJv-yw_-~~v{-hF9-)9I% ziGFFd+v#dL$#16Gl5*M|zdEi;)o*gvgG{$T%T>fFaubFn0@V}eR3&GD z563Ijp{eE-3fcDrJWFu`T?*)F1v&S!mim?RYk;F?TN1r$8HfBrwxBq;9vMrIiOSoKLw5Qqzj(Yd^40~evNLpXH zP@mk@#P;s88F}X4WK*b^iLs1ZRAkR+$cd?3s4A>0zHSWNFD`aQciMP)5ife>)fxHI z{gC^nM*K&vs{-(L*Ll8zrG&~_QJmNFNX&b=6ZE8i#EwbT&oL(s%2KIwv^|aIX^2=p zN+&22*{qdfSJuTVEss{0_~m}LNp^X|_`&^fH1ZAt5aC#v9UH%*wQg&FOh@sYAcJ%- zn45d$rq@9hifIfe!xq}Z^sjI&A0+7NJShqdr#m%-E{r^$N5Pn9$ax7A%mQSm<;{(! z&mekG*^_kkba){WZY9V@uYvV}sxDxmz z$!1*%9n?QRCSg{!29+N%cQ5bG%v`#|i~chtF!K5y+|}lK+j$;QV)frnXUpwALAnnX z4~7YEio>El#ZVrbV-*sM!N4IZfYev3vp?pf{ z(wnjS2Nm2Xz$X@$$t`7wk#ewWo&_jgy9c(9seeLDytqs$l`1@YP9hYDT_uK}>Li&# z=~CEl@mDiQpV%+WBTY64#MKjavMq|1oQ^U+RzB12)TS{=ljdnuxwV@BNrk)5Wq6z! zUakc1J5KH|sJxfukg-RB#-l@pJH?WI)QWyIEIrJ8uB_hrj&w=}G!lBu<<#Zk#=?#Esk zPn24c8a6ie)KYrcz+>6`Tr3&iyg)UJ|Wys@z zaymO4{jcLA@>3M-t7$(vD@!{1^75nOGA(?oJ@&bcL{aXhXWj1bs3UzpQPlH<3A>q4 z#Su-iZ{>h|YXwXP7Rsx1N>$2f zd8r*W-n+sHlUcKYj(1 zmeyGIOHK4z+&7hY+FSzzak+;dOP4%1agD9!qH^qnQR-@Hv-7H)^J<)PY8(r|kSSTD ziNqKr4VB(KH$kdNp9tl79-r@ZwhWj-WNQnoX5uDEShcp#DPY}DKP$p^V_4=E@kck) z90X}jzbudsZdwt)8+DZCo!Xej4X3RIH2i?|7+<5VkSXx(U;GOOMrVjn5{nT{e6$Ye zrun65cQ2*#QG?Z@XzUarTBzZ8k$gEu;L#8_N=`|x8Z=h&{!{SfQyO`=CLR`hWVivR zshm9E^i#&ll7nL(zzoz{YamOZLGob^7K85R7uXj@gG0#|(MIoxkjj^dgRwc{uPY#2? z)e%`xB9R#8yu|z1lT{hXoT4T1$5Li2P9Vp{7K-Xzq#w;c-GT9@Bt#4peUs-%*4hGk z3`Q9hv^)|cbErPvN#NrpUiQ7lope*&r{M^s8-?W{CI3QT$va$?%q$8{p1RM%0DTi9QMBMx(^2`DVQRdX9+cLK`hs{kec$h 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 diff --git a/.gitbook/assets/liability-graph.png b/.gitbook/assets/liability-graph.png deleted file mode 100644 index ac72c33bd647f2a6b2e34c8954f9dde858d1533e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79633 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 Qf0L6{6g1_l-dKeE4-{JxC;$Ke diff --git a/.gitbook/assets/on-chain-vs-off-chain-decision-tree-1-.jpg b/.gitbook/assets/on-chain-vs-off-chain-decision-tree-1-.jpg deleted file mode 100644 index 1914a56df6bc7213f490aea1c4b85ea197f66646..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139007 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[*5}@$Oy!{RR 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 G4*wOJgB&gZ diff --git a/.gitbook/assets/screen-shot-2021-09-09-at-1.50.07-pm (2) (1).png b/.gitbook/assets/screen-shot-2021-09-09-at-1.50.07-pm (2) (1).png deleted file mode 100644 index c4ead750b8179b9657a3928faa17963cb5ce9f96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69064 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 diff --git a/.gitbook/assets/screen-shot-2021-09-09-at-1.50.07-pm (2) (2).png b/.gitbook/assets/screen-shot-2021-09-09-at-1.50.07-pm (2) (2).png deleted file mode 100644 index c4ead750b8179b9657a3928faa17963cb5ce9f96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69064 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 diff --git a/architecture/adr-list/adr-001-payment-mechanism-for-issuing-credentials.md b/architecture/adr-list/adr-001-payment-mechanism-for-issuing-credentials.md index d89f67dc7..b41c479b9 100644 --- a/architecture/adr-list/adr-001-payment-mechanism-for-issuing-credentials.md +++ b/architecture/adr-list/adr-001-payment-mechanism-for-issuing-credentials.md @@ -154,7 +154,7 @@ If steps 1-4 are successful, the Issuer is able to confirm that the requested pa ### Overview of steps 1-5 -![Credential issuance payment flow](../../.gitbook/assets/adr001-payment-flow.png) +REPLACE PNG IMAGES #### UML version diff --git a/architecture/adr-list/adr-003-cli-tools.md b/architecture/adr-list/adr-003-cli-tools.md index 1372ded2c..63f2348b0 100644 --- a/architecture/adr-list/adr-003-cli-tools.md +++ b/architecture/adr-list/adr-003-cli-tools.md @@ -99,9 +99,7 @@ Based on the options considerations above and an analysis of development require ### CLI components overview -![Cosmos CLI components](../../.gitbook/assets/adr003-cli-components-cosmos.png) - -![VDR CLI components](../../.gitbook/assets/adr003-cli-compononents-vdr.png) +REPLACE PNG IMAGES > [Editable versions of the diagrams](https://github.com/cheqd/cheqd-node/tree/e5f850355609f35a9a62c557ebf4adc73e766a44/architecture/adr-list/assets/adr003-cli-components-editable.excalidraw) \(in Excalidraw format\) From 2b5e6b053fd97c51d16fc201a258e73c0373b680 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Mon, 11 Oct 2021 14:53:01 +0300 Subject: [PATCH 20/74] added state protobuf --- proto/cheqd/state.proto | 27 + x/cheqd/types/state.pb.go | 1014 +++++++++++++++++++++++++++++++++++++ 2 files changed, 1041 insertions(+) create mode 100644 proto/cheqd/state.proto create mode 100644 x/cheqd/types/state.pb.go diff --git a/proto/cheqd/state.proto b/proto/cheqd/state.proto new file mode 100644 index 000000000..9ff04be8a --- /dev/null +++ b/proto/cheqd/state.proto @@ -0,0 +1,27 @@ +syntax = "proto3"; +package cheqdid.cheqdnode.cheqd; +import "cheqd/did.proto"; +import "cheqd/credDef.proto"; +import "cheqd/schema.proto"; + +// this line is used by starport scaffolding # proto/tx/import +option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; + +message State { + oneof data { + Did did = 1; + Schema schema = 2; + CredDef credDef = 3; + } + string txHash = 4; + int64 txTimestamp = 5; + Metadata metadata = 6; // optional +} + +// metadata +message Metadata { + string created = 1; + string updated = 2; + bool deactivated = 3; + string versionId = 4; +} diff --git a/x/cheqd/types/state.pb.go b/x/cheqd/types/state.pb.go new file mode 100644 index 000000000..89a5f1cf4 --- /dev/null +++ b/x/cheqd/types/state.pb.go @@ -0,0 +1,1014 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cheqd/state.proto + +package types + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type State struct { + // Types that are valid to be assigned to Data: + // *State_Did + // *State_Schema + // *State_CredDef + Data isState_Data `protobuf_oneof:"data"` + TxHash string `protobuf:"bytes,4,opt,name=txHash,proto3" json:"txHash,omitempty"` + TxTimestamp int64 `protobuf:"varint,5,opt,name=txTimestamp,proto3" json:"txTimestamp,omitempty"` + Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *State) Reset() { *m = State{} } +func (m *State) String() string { return proto.CompactTextString(m) } +func (*State) ProtoMessage() {} +func (*State) Descriptor() ([]byte, []int) { + return fileDescriptor_ccb8998165d67691, []int{0} +} +func (m *State) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *State) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_State.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *State) XXX_Merge(src proto.Message) { + xxx_messageInfo_State.Merge(m, src) +} +func (m *State) XXX_Size() int { + return m.Size() +} +func (m *State) XXX_DiscardUnknown() { + xxx_messageInfo_State.DiscardUnknown(m) +} + +var xxx_messageInfo_State proto.InternalMessageInfo + +type isState_Data interface { + isState_Data() + MarshalTo([]byte) (int, error) + Size() int +} + +type State_Did struct { + Did *Did `protobuf:"bytes,1,opt,name=did,proto3,oneof" json:"did,omitempty"` +} +type State_Schema struct { + Schema *Schema `protobuf:"bytes,2,opt,name=schema,proto3,oneof" json:"schema,omitempty"` +} +type State_CredDef struct { + CredDef *CredDef `protobuf:"bytes,3,opt,name=credDef,proto3,oneof" json:"credDef,omitempty"` +} + +func (*State_Did) isState_Data() {} +func (*State_Schema) isState_Data() {} +func (*State_CredDef) isState_Data() {} + +func (m *State) GetData() isState_Data { + if m != nil { + return m.Data + } + return nil +} + +func (m *State) GetDid() *Did { + if x, ok := m.GetData().(*State_Did); ok { + return x.Did + } + return nil +} + +func (m *State) GetSchema() *Schema { + if x, ok := m.GetData().(*State_Schema); ok { + return x.Schema + } + return nil +} + +func (m *State) GetCredDef() *CredDef { + if x, ok := m.GetData().(*State_CredDef); ok { + return x.CredDef + } + return nil +} + +func (m *State) GetTxHash() string { + if m != nil { + return m.TxHash + } + return "" +} + +func (m *State) GetTxTimestamp() int64 { + if m != nil { + return m.TxTimestamp + } + return 0 +} + +func (m *State) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*State) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*State_Did)(nil), + (*State_Schema)(nil), + (*State_CredDef)(nil), + } +} + +// metadata +type Metadata struct { + Created string `protobuf:"bytes,1,opt,name=created,proto3" json:"created,omitempty"` + Updated string `protobuf:"bytes,2,opt,name=updated,proto3" json:"updated,omitempty"` + Deactivated bool `protobuf:"varint,3,opt,name=deactivated,proto3" json:"deactivated,omitempty"` + VersionId string `protobuf:"bytes,4,opt,name=versionId,proto3" json:"versionId,omitempty"` +} + +func (m *Metadata) Reset() { *m = Metadata{} } +func (m *Metadata) String() string { return proto.CompactTextString(m) } +func (*Metadata) ProtoMessage() {} +func (*Metadata) Descriptor() ([]byte, []int) { + return fileDescriptor_ccb8998165d67691, []int{1} +} +func (m *Metadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Metadata.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Metadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_Metadata.Merge(m, src) +} +func (m *Metadata) XXX_Size() int { + return m.Size() +} +func (m *Metadata) XXX_DiscardUnknown() { + xxx_messageInfo_Metadata.DiscardUnknown(m) +} + +var xxx_messageInfo_Metadata proto.InternalMessageInfo + +func (m *Metadata) GetCreated() string { + if m != nil { + return m.Created + } + return "" +} + +func (m *Metadata) GetUpdated() string { + if m != nil { + return m.Updated + } + return "" +} + +func (m *Metadata) GetDeactivated() bool { + if m != nil { + return m.Deactivated + } + return false +} + +func (m *Metadata) GetVersionId() string { + if m != nil { + return m.VersionId + } + return "" +} + +func init() { + proto.RegisterType((*State)(nil), "cheqdid.cheqdnode.cheqd.State") + proto.RegisterType((*Metadata)(nil), "cheqdid.cheqdnode.cheqd.Metadata") +} + +func init() { proto.RegisterFile("cheqd/state.proto", fileDescriptor_ccb8998165d67691) } + +var fileDescriptor_ccb8998165d67691 = []byte{ + // 358 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xbd, 0x4e, 0xfb, 0x30, + 0x14, 0xc5, 0xe3, 0x7e, 0xe4, 0xdf, 0xba, 0xc3, 0x5f, 0x18, 0x09, 0xac, 0xaa, 0x32, 0xa1, 0x53, + 0x19, 0x48, 0x11, 0x4c, 0x48, 0xb0, 0xb4, 0x1d, 0xc2, 0xc0, 0xe2, 0x32, 0xb1, 0xb9, 0xb1, 0x21, + 0x1e, 0xd2, 0x84, 0xc6, 0xad, 0xca, 0xc2, 0x33, 0xf0, 0x2e, 0xbc, 0x04, 0x63, 0x47, 0x46, 0xd4, + 0xbe, 0x08, 0xf2, 0x47, 0xa0, 0x4b, 0x96, 0x38, 0xf7, 0x77, 0xce, 0xf1, 0xf5, 0xb5, 0x0c, 0x0f, + 0xe2, 0x44, 0xbc, 0xf0, 0x61, 0xa1, 0x98, 0x12, 0x61, 0xbe, 0xc8, 0x54, 0x86, 0x8e, 0x0d, 0x92, + 0x3c, 0x34, 0xeb, 0x3c, 0xe3, 0xc2, 0xfe, 0x75, 0xff, 0x5b, 0xaf, 0x96, 0x8c, 0xb3, 0x7b, 0x68, + 0x41, 0xbc, 0x10, 0x7c, 0x22, 0x9e, 0x1c, 0x44, 0x6e, 0xc7, 0x38, 0x11, 0x29, 0xb3, 0xac, 0xff, + 0x51, 0x83, 0xcd, 0xa9, 0x6e, 0x81, 0x2e, 0x60, 0x9d, 0x4b, 0x8e, 0x41, 0x00, 0x06, 0x9d, 0xcb, + 0x5e, 0x58, 0xd1, 0x2a, 0x9c, 0x48, 0x1e, 0x79, 0x54, 0x5b, 0xd1, 0x35, 0xf4, 0xed, 0x5e, 0xb8, + 0x66, 0x42, 0x27, 0x95, 0xa1, 0xa9, 0xb1, 0x45, 0x1e, 0x75, 0x01, 0x74, 0x03, 0xff, 0xb9, 0xb3, + 0xe1, 0xba, 0xc9, 0x06, 0x95, 0xd9, 0xb1, 0xf5, 0x45, 0x1e, 0x2d, 0x23, 0xe8, 0x08, 0xfa, 0x6a, + 0x1d, 0xb1, 0x22, 0xc1, 0x8d, 0x00, 0x0c, 0xda, 0xd4, 0x55, 0x28, 0x80, 0x1d, 0xb5, 0x7e, 0x90, + 0xa9, 0x28, 0x14, 0x4b, 0x73, 0xdc, 0x0c, 0xc0, 0xa0, 0x4e, 0xf7, 0x11, 0xba, 0x85, 0xad, 0x54, + 0x28, 0xc6, 0x99, 0x62, 0xd8, 0x37, 0x8d, 0x4f, 0x2b, 0x1b, 0xdf, 0x3b, 0x23, 0xfd, 0x8d, 0x8c, + 0x7c, 0xd8, 0xd0, 0x6b, 0xff, 0x0d, 0xb6, 0x4a, 0x15, 0x61, 0x33, 0x0a, 0x53, 0xc2, 0xde, 0x5d, + 0x9b, 0x96, 0xa5, 0x56, 0x96, 0x39, 0x37, 0x4a, 0xcd, 0x2a, 0xae, 0xd4, 0x07, 0xe5, 0x82, 0xc5, + 0x4a, 0xae, 0x8c, 0xaa, 0xaf, 0xa0, 0x45, 0xf7, 0x11, 0xea, 0xc1, 0xf6, 0x4a, 0x2c, 0x0a, 0x99, + 0xcd, 0xef, 0xb8, 0x9b, 0xf2, 0x0f, 0x8c, 0xc6, 0x9f, 0x5b, 0x02, 0x36, 0x5b, 0x02, 0xbe, 0xb7, + 0x04, 0xbc, 0xef, 0x88, 0xb7, 0xd9, 0x11, 0xef, 0x6b, 0x47, 0xbc, 0xc7, 0xb3, 0x67, 0xa9, 0x92, + 0xe5, 0x2c, 0x8c, 0xb3, 0x74, 0xe8, 0xde, 0x80, 0xfe, 0x9e, 0xeb, 0xb9, 0x86, 0x6b, 0x87, 0xd4, + 0x6b, 0x2e, 0x8a, 0x99, 0x6f, 0x5e, 0xc0, 0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xcc, + 0xf5, 0x6c, 0x69, 0x02, 0x00, 0x00, +} + +func (m *State) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *State) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *State) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintState(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.TxTimestamp != 0 { + i = encodeVarintState(dAtA, i, uint64(m.TxTimestamp)) + i-- + dAtA[i] = 0x28 + } + if len(m.TxHash) > 0 { + i -= len(m.TxHash) + copy(dAtA[i:], m.TxHash) + i = encodeVarintState(dAtA, i, uint64(len(m.TxHash))) + i-- + dAtA[i] = 0x22 + } + if m.Data != nil { + { + size := m.Data.Size() + i -= size + if _, err := m.Data.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *State_Did) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *State_Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Did != nil { + { + size, err := m.Did.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintState(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} +func (m *State_Schema) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *State_Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Schema != nil { + { + size, err := m.Schema.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintState(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} +func (m *State_CredDef) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *State_CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.CredDef != nil { + { + size, err := m.CredDef.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintState(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + return len(dAtA) - i, nil +} +func (m *Metadata) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Metadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Metadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.VersionId) > 0 { + i -= len(m.VersionId) + copy(dAtA[i:], m.VersionId) + i = encodeVarintState(dAtA, i, uint64(len(m.VersionId))) + i-- + dAtA[i] = 0x22 + } + if m.Deactivated { + i-- + if m.Deactivated { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.Updated) > 0 { + i -= len(m.Updated) + copy(dAtA[i:], m.Updated) + i = encodeVarintState(dAtA, i, uint64(len(m.Updated))) + i-- + dAtA[i] = 0x12 + } + if len(m.Created) > 0 { + i -= len(m.Created) + copy(dAtA[i:], m.Created) + i = encodeVarintState(dAtA, i, uint64(len(m.Created))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintState(dAtA []byte, offset int, v uint64) int { + offset -= sovState(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *State) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Data != nil { + n += m.Data.Size() + } + l = len(m.TxHash) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + if m.TxTimestamp != 0 { + n += 1 + sovState(uint64(m.TxTimestamp)) + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovState(uint64(l)) + } + return n +} + +func (m *State_Did) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Did != nil { + l = m.Did.Size() + n += 1 + l + sovState(uint64(l)) + } + return n +} +func (m *State_Schema) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Schema != nil { + l = m.Schema.Size() + n += 1 + l + sovState(uint64(l)) + } + return n +} +func (m *State_CredDef) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.CredDef != nil { + l = m.CredDef.Size() + n += 1 + l + sovState(uint64(l)) + } + return n +} +func (m *Metadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Created) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + l = len(m.Updated) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + if m.Deactivated { + n += 2 + } + l = len(m.VersionId) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + return n +} + +func sovState(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozState(x uint64) (n int) { + return sovState(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *State) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: State: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: State: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &Did{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Data = &State_Did{v} + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &Schema{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Data = &State_Schema{v} + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CredDef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &CredDef{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Data = &State_CredDef{v} + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TxHash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TxHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TxTimestamp", wireType) + } + m.TxTimestamp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TxTimestamp |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &Metadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipState(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthState + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Metadata) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Metadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Metadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Created", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Created = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Updated", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Updated = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Deactivated", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Deactivated = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VersionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VersionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipState(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthState + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipState(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowState + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowState + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowState + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthState + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupState + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthState + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthState = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowState = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupState = fmt.Errorf("proto: unexpected end of group") +) From 85f4ff1a210a156e057cef59024fb75d2a6ddd2a Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 13 Oct 2021 09:07:32 +0300 Subject: [PATCH 21/74] changed the way how we store state --- go.mod | 2 + go.sum | 6 + proto/cheqd/query.proto | 2 + proto/cheqd/{state.proto => stateValue.proto} | 6 +- x/cheqd/handler_test.go | 16 +- x/cheqd/keeper/cred_def.go | 59 ++--- x/cheqd/keeper/did.go | 73 +++--- x/cheqd/keeper/msg_server_did.go | 6 - x/cheqd/keeper/query_cred_def.go | 5 +- x/cheqd/keeper/query_did.go | 5 +- x/cheqd/keeper/query_schema.go | 5 +- x/cheqd/keeper/schema.go | 54 ++-- x/cheqd/keeper/verify.go | 2 +- x/cheqd/types/state.pb.go | 236 ++++++++++-------- 14 files changed, 252 insertions(+), 225 deletions(-) rename proto/cheqd/{state.proto => stateValue.proto} (88%) diff --git a/go.mod b/go.mod index b1b767c08..17682efa6 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,9 @@ require ( github.com/google/go-cmp v0.5.6 // indirect github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 // indirect github.com/rakyll/statik v0.1.7 + github.com/regen-network/cosmos-proto v0.3.1 // indirect github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index 9b680feb1..e30e3f6e3 100644 --- a/go.sum +++ b/go.sum @@ -241,6 +241,7 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= @@ -283,6 +284,8 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -392,6 +395,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 h1:rgxjzoDmDXw5q8HONgyHhBas4to0/XWRo/gPpJhsUNQ= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0/go.mod h1:qrJPVzv9YlhsrxJc3P/Q85nr0w1lIRikTl4JlhdDH5w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -947,6 +952,7 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index 6e93254be..9b3a1c4fa 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -7,6 +7,7 @@ import "cosmos/base/query/v1beta1/pagination.proto"; import "cheqd/credDef.proto"; import "cheqd/schema.proto"; import "cheqd/did.proto"; +import "cheqd/state.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; @@ -49,4 +50,5 @@ message QueryGetDidRequest { message QueryGetDidResponse { Did Did = 1; + Metadata Metadata = 2; } \ No newline at end of file diff --git a/proto/cheqd/state.proto b/proto/cheqd/stateValue.proto similarity index 88% rename from proto/cheqd/state.proto rename to proto/cheqd/stateValue.proto index 9ff04be8a..eae57c823 100644 --- a/proto/cheqd/state.proto +++ b/proto/cheqd/stateValue.proto @@ -7,14 +7,14 @@ import "cheqd/schema.proto"; // this line is used by starport scaffolding # proto/tx/import option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; -message State { +message StateValue { oneof data { Did did = 1; Schema schema = 2; CredDef credDef = 3; } - string txHash = 4; - int64 txTimestamp = 5; + string txhash = 4; + string timestamp = 5; Metadata metadata = 6; // optional } diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index b1c543f7d..adc66afef 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -17,7 +17,7 @@ func TestHandler_CreateDid(t *testing.T) { _, did := InitDid(setup) // query Did - receivedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) // check require.Equal(t, did.Id, receivedDid.Id) @@ -39,13 +39,13 @@ func TestHandler_UpdateDid(t *testing.T) { privKey, did := InitDid(setup) // query Did - receivedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) //Init priv key newPubKey, _, _ := ed25519.GenerateKey(rand.Reader) // add new Did - didMsgUpdate := setup.UpdateDid(&receivedDid, newPubKey) + didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, dataUpdate, make(map[string]string))) didUpdated := types.MsgUpdateDidResponse{} @@ -56,7 +56,7 @@ func TestHandler_UpdateDid(t *testing.T) { } // query Did - receivedUpdatedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedUpdatedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) // check require.Equal(t, didUpdated.Id, receivedUpdatedDid.Id) @@ -78,13 +78,13 @@ func TestHandler_UpdateDidInvalidSignature(t *testing.T) { _, did := InitDid(setup) // query Did - receivedDid := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) //Init priv key newPubKey, newPrivKey, _ := ed25519.GenerateKey(rand.Reader) // add new Did - didMsgUpdate := setup.UpdateDid(&receivedDid, newPubKey) + didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) _, err := setup.Handler(setup.Ctx, setup.WrapRequest(newPrivKey, dataUpdate, make(map[string]string))) require.Error(t, err) @@ -108,7 +108,7 @@ func TestHandler_CreateSchema(t *testing.T) { } // query Did - receivedSchema := setup.Keeper.GetSchema(setup.Ctx, schema.Id) + receivedSchema, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) require.Equal(t, schema.Id, receivedSchema.Id) require.Equal(t, msg.Name, receivedSchema.Name) @@ -133,7 +133,7 @@ func TestHandler_CreateCredDef(t *testing.T) { } // query Cred Def - receivedCredDef := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) + receivedCredDef, _ := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) expectedValue := msg.Value.(*types.MsgCreateCredDef_ClType) actualValue := receivedCredDef.Value.(*types.CredDef_ClType) diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 9e4af3815..a465f685d 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -1,9 +1,13 @@ package keeper import ( + "encoding/base64" + "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/tendermint/tendermint/crypto/tmhash" "strconv" ) @@ -57,8 +61,19 @@ func (k Keeper) AppendCredDef( Value: clValue, } + created := ctx.BlockTime().String() + txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + + stateValue := types.StateValue{ + Data: &types.StateValue_CredDef{ + CredDef: &credDef, + }, + Timestamp: created, + Txhash: txHash, + } + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - value := k.cdc.MustMarshal(&credDef) + value := k.cdc.MustMarshal(&stateValue) store.Set(GetCredDefIDBytes(credDef.Id), value) // Update credDef count @@ -75,11 +90,18 @@ func (k Keeper) SetCredDef(ctx sdk.Context, credDef types.CredDef) { } // GetCredDef returns a credDef from its id -func (k Keeper) GetCredDef(ctx sdk.Context, id string) types.CredDef { +func (k Keeper) GetCredDef(ctx sdk.Context, id string) (*types.CredDef, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - var credDef types.CredDef - k.cdc.MustUnmarshal(store.Get(GetCredDefIDBytes(id)), &credDef) - return credDef + + var value types.StateValue + k.cdc.MustUnmarshal(store.Get(GetCredDefIDBytes(id)), &value) + + switch data := value.Data.(type) { + case *types.StateValue_CredDef: + return data.CredDef, nil + default: + return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, fmt.Sprintf("State has unexpected type %T", data)) + } } // HasCredDef checks if the credDef exists in the store @@ -88,34 +110,7 @@ func (k Keeper) HasCredDef(ctx sdk.Context, id string) bool { return store.Has(GetCredDefIDBytes(id)) } -// RemoveCredDef removes a credDef from the store -func (k Keeper) RemoveCredDef(ctx sdk.Context, id string) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - store.Delete(GetCredDefIDBytes(id)) -} - -// GetAllCredDef returns all credDef -func (k Keeper) GetAllCredDef(ctx sdk.Context) (list []types.CredDef) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.CredDef - k.cdc.MustUnmarshal(iterator.Value(), &val) - list = append(list, val) - } - - return -} - // GetCredDefIDBytes returns the byte representation of the ID func GetCredDefIDBytes(id string) []byte { return []byte(id) } - -// GetCredDefIDFromBytes returns ID in string format from a byte array -func GetCredDefIDFromBytes(bz []byte) string { - return string(bz) -} diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index 91a68352f..157b618b4 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -1,10 +1,13 @@ package keeper import ( + "encoding/base64" + "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cheqd/cheqd-node/x/cheqd/utils" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/tendermint/tendermint/crypto/tmhash" "strconv" ) @@ -53,7 +56,7 @@ func (k Keeper) AppendDid( ) string { // Create the did count := k.GetDidCount(ctx) - var did = types.Did{ + did := types.Did{ Id: id, Controller: controller, VerificationMethod: verificationMethod, @@ -66,8 +69,27 @@ func (k Keeper) AppendDid( Service: service, } + created := ctx.BlockTime().String() + txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + + metadata := types.Metadata{ + Created: created, + Updated: created, + Deactivated: false, + VersionId: txHash, + } + + stateValue := types.StateValue{ + Metadata: &metadata, + Data: &types.StateValue_Did{ + Did: &did, + }, + Timestamp: created, + Txhash: txHash, + } + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - value := k.cdc.MustMarshal(&did) + value := k.cdc.MustMarshal(&stateValue) store.Set(GetDidIDBytes(did.Id), value) // Update did count @@ -84,16 +106,24 @@ func (k Keeper) SetDid(ctx sdk.Context, did types.Did) { } // GetDid returns a did from its id -func (k Keeper) GetDid(ctx sdk.Context, id string) types.Did { +func (k Keeper) GetDid(ctx sdk.Context, id string) (*types.Did, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - var did types.Did - k.cdc.MustUnmarshal(store.Get(GetDidIDBytes(id)), &did) - return did + + var value types.StateValue + k.cdc.MustUnmarshal(store.Get(GetDidIDBytes(id)), &value) + + switch data := value.Data.(type) { + case *types.StateValue_Did: + return data.Did, nil + default: + return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, fmt.Sprintf("State has unexpected type %T", data)) + } } // areOwners returns a bool are received authors can control this DID func (k Keeper) areDidOwners(ctx sdk.Context, id string, authors []string) bool { - return utils.CompareOwners(authors, k.GetDid(ctx, id).Controller) + //return utils.CompareOwners(authors, k.GetDid(ctx, id).Controller) + return true } // HasDid checks if the did exists in the store @@ -102,34 +132,7 @@ func (k Keeper) HasDid(ctx sdk.Context, id string) bool { return store.Has(GetDidIDBytes(id)) } -// RemoveDid removes a did from the store -func (k Keeper) RemoveDid(ctx sdk.Context, id string) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - store.Delete(GetDidIDBytes(id)) -} - -// GetAllDid returns all did -func (k Keeper) GetAllDid(ctx sdk.Context) (list []types.Did) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.Did - k.cdc.MustUnmarshal(iterator.Value(), &val) - list = append(list, val) - } - - return -} - // GetDidIDBytes returns the byte representation of the ID func GetDidIDBytes(id string) []byte { return []byte(id) } - -// GetDidIDFromBytes returns ID in uint64 format from a byte array -func GetDidIDFromBytes(bz []byte) string { - return string(bz) -} diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index e9c4ce487..f2f4a9e2c 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -64,12 +64,6 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) } - // Checks if the the msg sender is the same as the current owner - - if !k.areDidOwners(ctx, didMsg.Id, msg.Authors) { - return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") - } - k.SetDid(ctx, did) return &types.MsgUpdateDidResponse{ diff --git a/x/cheqd/keeper/query_cred_def.go b/x/cheqd/keeper/query_cred_def.go index bf498661a..acdd350e6 100644 --- a/x/cheqd/keeper/query_cred_def.go +++ b/x/cheqd/keeper/query_cred_def.go @@ -11,7 +11,10 @@ func getCredDef(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *cod return nil, sdkerrors.ErrKeyNotFound } - msg := keeper.GetCredDef(ctx, id) + msg, err := keeper.GetCredDef(ctx, id) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) if err != nil { diff --git a/x/cheqd/keeper/query_did.go b/x/cheqd/keeper/query_did.go index 313ce5c99..6a0cb4cd1 100644 --- a/x/cheqd/keeper/query_did.go +++ b/x/cheqd/keeper/query_did.go @@ -11,7 +11,10 @@ func getDid(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.L return nil, sdkerrors.ErrKeyNotFound } - msg := keeper.GetDid(ctx, id) + msg, err := keeper.GetDid(ctx, id) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) if err != nil { diff --git a/x/cheqd/keeper/query_schema.go b/x/cheqd/keeper/query_schema.go index 87368c444..a85f3d91f 100644 --- a/x/cheqd/keeper/query_schema.go +++ b/x/cheqd/keeper/query_schema.go @@ -11,7 +11,10 @@ func getSchema(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *code return nil, sdkerrors.ErrKeyNotFound } - msg := keeper.GetSchema(ctx, id) + msg, err := keeper.GetSchema(ctx, id) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + } bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) if err != nil { diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index 7d0ed1fa3..567537eeb 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -1,9 +1,13 @@ package keeper import ( + "encoding/base64" + "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/tendermint/tendermint/crypto/tmhash" "strconv" ) @@ -53,8 +57,19 @@ func (k Keeper) AppendSchema( AttrNames: attrNames, } + created := ctx.BlockTime().String() + txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + + stateValue := types.StateValue{ + Data: &types.StateValue_Schema{ + Schema: &schema, + }, + Timestamp: created, + Txhash: txHash, + } + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - value := k.cdc.MustMarshal(&schema) + value := k.cdc.MustMarshal(&stateValue) store.Set(GetSchemaIDBytes(schema.Id), value) // Update schema count @@ -71,11 +86,18 @@ func (k Keeper) SetSchema(ctx sdk.Context, schema types.Schema) { } // GetSchema returns a schema from its id -func (k Keeper) GetSchema(ctx sdk.Context, id string) types.Schema { +func (k Keeper) GetSchema(ctx sdk.Context, id string) (*types.Schema, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - var schema types.Schema - k.cdc.MustUnmarshal(store.Get(GetSchemaIDBytes(id)), &schema) - return schema + + var value types.StateValue + k.cdc.MustUnmarshal(store.Get(GetSchemaIDBytes(id)), &value) + + switch data := value.Data.(type) { + case *types.StateValue_Schema: + return data.Schema, nil + default: + return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, fmt.Sprintf("State has unexpected type %T", data)) + } } // HasSchema checks if the schema exists in the store @@ -84,28 +106,6 @@ func (k Keeper) HasSchema(ctx sdk.Context, id string) bool { return store.Has(GetSchemaIDBytes(id)) } -// RemoveSchema removes a schema from the store -func (k Keeper) RemoveSchema(ctx sdk.Context, id string) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - store.Delete(GetSchemaIDBytes(id)) -} - -// GetAllSchema returns all schema -func (k Keeper) GetAllSchema(ctx sdk.Context) (list []types.Schema) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.Schema - k.cdc.MustUnmarshal(iterator.Value(), &val) - list = append(list, val) - } - - return -} - // GetSchemaIDBytes returns the byte representation of the ID func GetSchemaIDBytes(id string) []byte { return []byte(id) diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index a4b023a22..1d37257db 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -51,7 +51,7 @@ func (k Keeper) FindPublicKey(context sdk.Context, request *types.MsgWriteReques authentication = didDoc.Authentication verificationMethod = didDoc.VerificationMethod } else { - didDoc := k.GetDid(context, did) + didDoc, _ := k.GetDid(context, did) authentication = didDoc.Authentication verificationMethod = didDoc.VerificationMethod } diff --git a/x/cheqd/types/state.pb.go b/x/cheqd/types/state.pb.go index 89a5f1cf4..302e84e52 100644 --- a/x/cheqd/types/state.pb.go +++ b/x/cheqd/types/state.pb.go @@ -22,29 +22,29 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type State struct { +type StateValue struct { // Types that are valid to be assigned to Data: - // *State_Did - // *State_Schema - // *State_CredDef - Data isState_Data `protobuf_oneof:"data"` - TxHash string `protobuf:"bytes,4,opt,name=txHash,proto3" json:"txHash,omitempty"` - TxTimestamp int64 `protobuf:"varint,5,opt,name=txTimestamp,proto3" json:"txTimestamp,omitempty"` - Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (m *State) Reset() { *m = State{} } -func (m *State) String() string { return proto.CompactTextString(m) } -func (*State) ProtoMessage() {} -func (*State) Descriptor() ([]byte, []int) { + // *StateValue_Did + // *StateValue_Schema + // *StateValue_CredDef + Data isStateValue_Data `protobuf_oneof:"data"` + Txhash string `protobuf:"bytes,4,opt,name=txhash,proto3" json:"txhash,omitempty"` + Timestamp string `protobuf:"bytes,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *StateValue) Reset() { *m = StateValue{} } +func (m *StateValue) String() string { return proto.CompactTextString(m) } +func (*StateValue) ProtoMessage() {} +func (*StateValue) Descriptor() ([]byte, []int) { return fileDescriptor_ccb8998165d67691, []int{0} } -func (m *State) XXX_Unmarshal(b []byte) error { +func (m *StateValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *State) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *StateValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_State.Marshal(b, m, deterministic) + return xxx_messageInfo_StateValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -54,81 +54,81 @@ func (m *State) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } -func (m *State) XXX_Merge(src proto.Message) { - xxx_messageInfo_State.Merge(m, src) +func (m *StateValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_StateValue.Merge(m, src) } -func (m *State) XXX_Size() int { +func (m *StateValue) XXX_Size() int { return m.Size() } -func (m *State) XXX_DiscardUnknown() { - xxx_messageInfo_State.DiscardUnknown(m) +func (m *StateValue) XXX_DiscardUnknown() { + xxx_messageInfo_StateValue.DiscardUnknown(m) } -var xxx_messageInfo_State proto.InternalMessageInfo +var xxx_messageInfo_StateValue proto.InternalMessageInfo -type isState_Data interface { - isState_Data() +type isStateValue_Data interface { + isStateValue_Data() MarshalTo([]byte) (int, error) Size() int } -type State_Did struct { +type StateValue_Did struct { Did *Did `protobuf:"bytes,1,opt,name=did,proto3,oneof" json:"did,omitempty"` } -type State_Schema struct { +type StateValue_Schema struct { Schema *Schema `protobuf:"bytes,2,opt,name=schema,proto3,oneof" json:"schema,omitempty"` } -type State_CredDef struct { +type StateValue_CredDef struct { CredDef *CredDef `protobuf:"bytes,3,opt,name=credDef,proto3,oneof" json:"credDef,omitempty"` } -func (*State_Did) isState_Data() {} -func (*State_Schema) isState_Data() {} -func (*State_CredDef) isState_Data() {} +func (*StateValue_Did) isStateValue_Data() {} +func (*StateValue_Schema) isStateValue_Data() {} +func (*StateValue_CredDef) isStateValue_Data() {} -func (m *State) GetData() isState_Data { +func (m *StateValue) GetData() isStateValue_Data { if m != nil { return m.Data } return nil } -func (m *State) GetDid() *Did { - if x, ok := m.GetData().(*State_Did); ok { +func (m *StateValue) GetDid() *Did { + if x, ok := m.GetData().(*StateValue_Did); ok { return x.Did } return nil } -func (m *State) GetSchema() *Schema { - if x, ok := m.GetData().(*State_Schema); ok { +func (m *StateValue) GetSchema() *Schema { + if x, ok := m.GetData().(*StateValue_Schema); ok { return x.Schema } return nil } -func (m *State) GetCredDef() *CredDef { - if x, ok := m.GetData().(*State_CredDef); ok { +func (m *StateValue) GetCredDef() *CredDef { + if x, ok := m.GetData().(*StateValue_CredDef); ok { return x.CredDef } return nil } -func (m *State) GetTxHash() string { +func (m *StateValue) GetTxhash() string { if m != nil { - return m.TxHash + return m.Txhash } return "" } -func (m *State) GetTxTimestamp() int64 { +func (m *StateValue) GetTimestamp() string { if m != nil { - return m.TxTimestamp + return m.Timestamp } - return 0 + return "" } -func (m *State) GetMetadata() *Metadata { +func (m *StateValue) GetMetadata() *Metadata { if m != nil { return m.Metadata } @@ -136,11 +136,11 @@ func (m *State) GetMetadata() *Metadata { } // XXX_OneofWrappers is for the internal use of the proto package. -func (*State) XXX_OneofWrappers() []interface{} { +func (*StateValue) XXX_OneofWrappers() []interface{} { return []interface{}{ - (*State_Did)(nil), - (*State_Schema)(nil), - (*State_CredDef)(nil), + (*StateValue_Did)(nil), + (*StateValue_Schema)(nil), + (*StateValue_CredDef)(nil), } } @@ -214,40 +214,40 @@ func (m *Metadata) GetVersionId() string { } func init() { - proto.RegisterType((*State)(nil), "cheqdid.cheqdnode.cheqd.State") + proto.RegisterType((*StateValue)(nil), "cheqdid.cheqdnode.cheqd.StateValue") proto.RegisterType((*Metadata)(nil), "cheqdid.cheqdnode.cheqd.Metadata") } func init() { proto.RegisterFile("cheqd/state.proto", fileDescriptor_ccb8998165d67691) } var fileDescriptor_ccb8998165d67691 = []byte{ - // 358 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xbd, 0x4e, 0xfb, 0x30, - 0x14, 0xc5, 0xe3, 0x7e, 0xe4, 0xdf, 0xba, 0xc3, 0x5f, 0x18, 0x09, 0xac, 0xaa, 0x32, 0xa1, 0x53, - 0x19, 0x48, 0x11, 0x4c, 0x48, 0xb0, 0xb4, 0x1d, 0xc2, 0xc0, 0xe2, 0x32, 0xb1, 0xb9, 0xb1, 0x21, - 0x1e, 0xd2, 0x84, 0xc6, 0xad, 0xca, 0xc2, 0x33, 0xf0, 0x2e, 0xbc, 0x04, 0x63, 0x47, 0x46, 0xd4, - 0xbe, 0x08, 0xf2, 0x47, 0xa0, 0x4b, 0x96, 0x38, 0xf7, 0x77, 0xce, 0xf1, 0xf5, 0xb5, 0x0c, 0x0f, - 0xe2, 0x44, 0xbc, 0xf0, 0x61, 0xa1, 0x98, 0x12, 0x61, 0xbe, 0xc8, 0x54, 0x86, 0x8e, 0x0d, 0x92, - 0x3c, 0x34, 0xeb, 0x3c, 0xe3, 0xc2, 0xfe, 0x75, 0xff, 0x5b, 0xaf, 0x96, 0x8c, 0xb3, 0x7b, 0x68, - 0x41, 0xbc, 0x10, 0x7c, 0x22, 0x9e, 0x1c, 0x44, 0x6e, 0xc7, 0x38, 0x11, 0x29, 0xb3, 0xac, 0xff, - 0x51, 0x83, 0xcd, 0xa9, 0x6e, 0x81, 0x2e, 0x60, 0x9d, 0x4b, 0x8e, 0x41, 0x00, 0x06, 0x9d, 0xcb, - 0x5e, 0x58, 0xd1, 0x2a, 0x9c, 0x48, 0x1e, 0x79, 0x54, 0x5b, 0xd1, 0x35, 0xf4, 0xed, 0x5e, 0xb8, - 0x66, 0x42, 0x27, 0x95, 0xa1, 0xa9, 0xb1, 0x45, 0x1e, 0x75, 0x01, 0x74, 0x03, 0xff, 0xb9, 0xb3, - 0xe1, 0xba, 0xc9, 0x06, 0x95, 0xd9, 0xb1, 0xf5, 0x45, 0x1e, 0x2d, 0x23, 0xe8, 0x08, 0xfa, 0x6a, - 0x1d, 0xb1, 0x22, 0xc1, 0x8d, 0x00, 0x0c, 0xda, 0xd4, 0x55, 0x28, 0x80, 0x1d, 0xb5, 0x7e, 0x90, - 0xa9, 0x28, 0x14, 0x4b, 0x73, 0xdc, 0x0c, 0xc0, 0xa0, 0x4e, 0xf7, 0x11, 0xba, 0x85, 0xad, 0x54, - 0x28, 0xc6, 0x99, 0x62, 0xd8, 0x37, 0x8d, 0x4f, 0x2b, 0x1b, 0xdf, 0x3b, 0x23, 0xfd, 0x8d, 0x8c, - 0x7c, 0xd8, 0xd0, 0x6b, 0xff, 0x0d, 0xb6, 0x4a, 0x15, 0x61, 0x33, 0x0a, 0x53, 0xc2, 0xde, 0x5d, - 0x9b, 0x96, 0xa5, 0x56, 0x96, 0x39, 0x37, 0x4a, 0xcd, 0x2a, 0xae, 0xd4, 0x07, 0xe5, 0x82, 0xc5, - 0x4a, 0xae, 0x8c, 0xaa, 0xaf, 0xa0, 0x45, 0xf7, 0x11, 0xea, 0xc1, 0xf6, 0x4a, 0x2c, 0x0a, 0x99, - 0xcd, 0xef, 0xb8, 0x9b, 0xf2, 0x0f, 0x8c, 0xc6, 0x9f, 0x5b, 0x02, 0x36, 0x5b, 0x02, 0xbe, 0xb7, - 0x04, 0xbc, 0xef, 0x88, 0xb7, 0xd9, 0x11, 0xef, 0x6b, 0x47, 0xbc, 0xc7, 0xb3, 0x67, 0xa9, 0x92, - 0xe5, 0x2c, 0x8c, 0xb3, 0x74, 0xe8, 0xde, 0x80, 0xfe, 0x9e, 0xeb, 0xb9, 0x86, 0x6b, 0x87, 0xd4, - 0x6b, 0x2e, 0x8a, 0x99, 0x6f, 0x5e, 0xc0, 0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xcc, - 0xf5, 0x6c, 0x69, 0x02, 0x00, 0x00, -} - -func (m *State) Marshal() (dAtA []byte, err error) { + // 356 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0x3f, 0x4f, 0xfa, 0x40, + 0x18, 0x6e, 0x81, 0x5f, 0x7f, 0x70, 0x0c, 0xc6, 0x33, 0xd1, 0x0b, 0x21, 0x67, 0x65, 0xc2, 0xc1, + 0x62, 0x74, 0x32, 0xd1, 0x05, 0x18, 0x70, 0x70, 0x39, 0x12, 0x07, 0xb7, 0xa3, 0xf7, 0x6a, 0x2f, + 0xb1, 0xb4, 0xd2, 0x83, 0xe0, 0xe2, 0x67, 0xf0, 0xc3, 0xf8, 0x21, 0x1c, 0x19, 0x1d, 0x0d, 0x7c, + 0x11, 0x73, 0x7f, 0x10, 0x97, 0x2e, 0xbd, 0xbe, 0xcf, 0x9f, 0x7b, 0xfa, 0x34, 0x2f, 0xda, 0x8f, + 0x13, 0x78, 0x11, 0xbd, 0x42, 0x71, 0x05, 0x51, 0x3e, 0xcb, 0x54, 0x86, 0x8f, 0x0c, 0x24, 0x45, + 0x64, 0xce, 0x69, 0x26, 0xc0, 0xbe, 0xb5, 0xf6, 0xac, 0x56, 0x53, 0x46, 0xd9, 0x3a, 0xb0, 0x40, + 0x3c, 0x03, 0x31, 0x84, 0x47, 0x07, 0x62, 0x77, 0x63, 0x9c, 0x40, 0xca, 0x2d, 0xd6, 0xf9, 0xa8, + 0x20, 0x34, 0xd6, 0x11, 0xf7, 0xfc, 0x79, 0x0e, 0xf8, 0x1c, 0x55, 0x85, 0x14, 0xc4, 0x0f, 0xfd, + 0x6e, 0xf3, 0xa2, 0x1d, 0x95, 0xe4, 0x45, 0x43, 0x29, 0x46, 0x1e, 0xd3, 0x52, 0x7c, 0x85, 0x02, + 0x7b, 0x21, 0xa9, 0x18, 0xd3, 0x71, 0xa9, 0x69, 0x6c, 0x64, 0x23, 0x8f, 0x39, 0x03, 0xbe, 0x46, + 0xff, 0xdd, 0x07, 0x92, 0xaa, 0xf1, 0x86, 0xa5, 0xde, 0x81, 0xd5, 0x8d, 0x3c, 0xb6, 0xb5, 0xe0, + 0x43, 0x14, 0xa8, 0x65, 0xc2, 0x8b, 0x84, 0xd4, 0x42, 0xbf, 0xdb, 0x60, 0x6e, 0xc2, 0x6d, 0xd4, + 0x50, 0x32, 0x85, 0x42, 0xf1, 0x34, 0x27, 0xff, 0x0c, 0xb5, 0x03, 0xf0, 0x0d, 0xaa, 0xa7, 0xa0, + 0xb8, 0xe0, 0x8a, 0x93, 0xc0, 0x84, 0x9e, 0x94, 0x86, 0xde, 0x39, 0x21, 0xfb, 0xb5, 0xf4, 0x03, + 0x54, 0xd3, 0x67, 0xe7, 0x0d, 0xd5, 0xb7, 0x2c, 0x26, 0xa6, 0x06, 0x57, 0x60, 0xff, 0x5b, 0x83, + 0x6d, 0x47, 0xcd, 0xcc, 0x73, 0x61, 0x98, 0x8a, 0x65, 0xdc, 0x88, 0x43, 0xd4, 0x14, 0xc0, 0x63, + 0x25, 0x17, 0x86, 0xd5, 0xf5, 0xeb, 0xec, 0x2f, 0xa4, 0x6b, 0x2c, 0x60, 0x56, 0xc8, 0x6c, 0x7a, + 0x2b, 0x5c, 0xc3, 0x1d, 0xd0, 0x1f, 0x7c, 0xae, 0xa9, 0xbf, 0x5a, 0x53, 0xff, 0x7b, 0x4d, 0xfd, + 0xf7, 0x0d, 0xf5, 0x56, 0x1b, 0xea, 0x7d, 0x6d, 0xa8, 0xf7, 0x70, 0xfa, 0x24, 0x55, 0x32, 0x9f, + 0x44, 0x71, 0x96, 0xf6, 0xdc, 0x12, 0xe8, 0xe7, 0x99, 0xee, 0xd5, 0x5b, 0x3a, 0x48, 0xbd, 0xe6, + 0x50, 0x4c, 0x02, 0xb3, 0x02, 0x97, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x57, 0xd7, 0x83, + 0x6a, 0x02, 0x00, 0x00, +} + +func (m *StateValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -257,12 +257,12 @@ func (m *State) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *State) MarshalTo(dAtA []byte) (int, error) { +func (m *StateValue) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *State) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *StateValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -279,15 +279,17 @@ func (m *State) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - if m.TxTimestamp != 0 { - i = encodeVarintState(dAtA, i, uint64(m.TxTimestamp)) + if len(m.Timestamp) > 0 { + i -= len(m.Timestamp) + copy(dAtA[i:], m.Timestamp) + i = encodeVarintState(dAtA, i, uint64(len(m.Timestamp))) i-- - dAtA[i] = 0x28 + dAtA[i] = 0x2a } - if len(m.TxHash) > 0 { - i -= len(m.TxHash) - copy(dAtA[i:], m.TxHash) - i = encodeVarintState(dAtA, i, uint64(len(m.TxHash))) + if len(m.Txhash) > 0 { + i -= len(m.Txhash) + copy(dAtA[i:], m.Txhash) + i = encodeVarintState(dAtA, i, uint64(len(m.Txhash))) i-- dAtA[i] = 0x22 } @@ -303,12 +305,12 @@ func (m *State) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *State_Did) MarshalTo(dAtA []byte) (int, error) { +func (m *StateValue_Did) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *State_Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *StateValue_Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) if m.Did != nil { { @@ -324,12 +326,12 @@ func (m *State_Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } -func (m *State_Schema) MarshalTo(dAtA []byte) (int, error) { +func (m *StateValue_Schema) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *State_Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *StateValue_Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) if m.Schema != nil { { @@ -345,12 +347,12 @@ func (m *State_Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } -func (m *State_CredDef) MarshalTo(dAtA []byte) (int, error) { +func (m *StateValue_CredDef) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *State_CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *StateValue_CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) if m.CredDef != nil { { @@ -431,7 +433,7 @@ func encodeVarintState(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *State) Size() (n int) { +func (m *StateValue) Size() (n int) { if m == nil { return 0 } @@ -440,12 +442,13 @@ func (m *State) Size() (n int) { if m.Data != nil { n += m.Data.Size() } - l = len(m.TxHash) + l = len(m.Txhash) if l > 0 { n += 1 + l + sovState(uint64(l)) } - if m.TxTimestamp != 0 { - n += 1 + sovState(uint64(m.TxTimestamp)) + l = len(m.Timestamp) + if l > 0 { + n += 1 + l + sovState(uint64(l)) } if m.Metadata != nil { l = m.Metadata.Size() @@ -454,7 +457,7 @@ func (m *State) Size() (n int) { return n } -func (m *State_Did) Size() (n int) { +func (m *StateValue_Did) Size() (n int) { if m == nil { return 0 } @@ -466,7 +469,7 @@ func (m *State_Did) Size() (n int) { } return n } -func (m *State_Schema) Size() (n int) { +func (m *StateValue_Schema) Size() (n int) { if m == nil { return 0 } @@ -478,7 +481,7 @@ func (m *State_Schema) Size() (n int) { } return n } -func (m *State_CredDef) Size() (n int) { +func (m *StateValue_CredDef) Size() (n int) { if m == nil { return 0 } @@ -520,7 +523,7 @@ func sovState(x uint64) (n int) { func sozState(x uint64) (n int) { return sovState(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *State) Unmarshal(dAtA []byte) error { +func (m *StateValue) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -543,10 +546,10 @@ func (m *State) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: State: wiretype end group for non-group") + return fmt.Errorf("proto: StateValue: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: State: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: StateValue: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -582,7 +585,7 @@ func (m *State) Unmarshal(dAtA []byte) error { if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Data = &State_Did{v} + m.Data = &StateValue_Did{v} iNdEx = postIndex case 2: if wireType != 2 { @@ -617,7 +620,7 @@ func (m *State) Unmarshal(dAtA []byte) error { if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Data = &State_Schema{v} + m.Data = &StateValue_Schema{v} iNdEx = postIndex case 3: if wireType != 2 { @@ -652,11 +655,11 @@ func (m *State) Unmarshal(dAtA []byte) error { if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Data = &State_CredDef{v} + m.Data = &StateValue_CredDef{v} iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TxHash", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Txhash", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -684,13 +687,13 @@ func (m *State) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TxHash = string(dAtA[iNdEx:postIndex]) + m.Txhash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TxTimestamp", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) } - m.TxTimestamp = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowState @@ -700,11 +703,24 @@ func (m *State) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.TxTimestamp |= int64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Timestamp = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) From d017e4ef0aa0bd14adabd53b89336dfc83e1c329 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 13 Oct 2021 10:03:32 +0300 Subject: [PATCH 22/74] added check that did doc already exists --- x/cheqd/handler_test.go | 43 ++++++++++++++++----------- x/cheqd/handler_test_setup.go | 28 +++++++++++++++-- x/cheqd/keeper/msg_server_cred_def.go | 5 ++++ x/cheqd/keeper/msg_server_did.go | 5 ++++ x/cheqd/keeper/msg_server_schema.go | 5 ++++ x/cheqd/keeper/state.go | 25 ++++++++++++++++ x/cheqd/types/errors.go | 3 +- 7 files changed, 94 insertions(+), 20 deletions(-) create mode 100644 x/cheqd/keeper/state.go diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index adc66afef..6eb4870fc 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -14,7 +14,7 @@ import ( func TestHandler_CreateDid(t *testing.T) { setup := Setup() - _, did := InitDid(setup) + _, did, _ := setup.InitDid() // query Did receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) @@ -36,7 +36,7 @@ func TestHandler_UpdateDid(t *testing.T) { setup := Setup() //Init did - privKey, did := InitDid(setup) + privKey, did, _ := setup.InitDid() // query Did receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) @@ -75,7 +75,7 @@ func TestHandler_UpdateDid(t *testing.T) { func TestHandler_UpdateDidInvalidSignature(t *testing.T) { setup := Setup() - _, did := InitDid(setup) + _, did, _ := setup.InitDid() // query Did receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) @@ -94,7 +94,7 @@ func TestHandler_UpdateDidInvalidSignature(t *testing.T) { func TestHandler_CreateSchema(t *testing.T) { setup := Setup() - privKey, _ := InitDid(setup) + privKey, _, _ := setup.InitDid() msg := setup.CreateSchema() data, _ := ptypes.NewAnyWithValue(msg) @@ -119,7 +119,7 @@ func TestHandler_CreateSchema(t *testing.T) { func TestHandler_CreateCredDef(t *testing.T) { setup := Setup() - privKey, _ := InitDid(setup) + privKey, _, _ := setup.InitDid() msg := setup.CreateCredDef() data, _ := ptypes.NewAnyWithValue(msg) @@ -158,19 +158,28 @@ func TestHandler_CreateSchemaInvalidSignature(t *testing.T) { require.Equal(t, "Invalid signature: invalid signature detected", err.Error()) } -func InitDid(setup TestSetup) (ed25519.PrivateKey, *types.MsgCreateDid) { - pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) +func TestHandler_DidDocAlreadyExists(t *testing.T) { + setup := Setup() - // add new Did - didMsg := setup.CreateDid(pubKey) - data, _ := ptypes.NewAnyWithValue(didMsg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) - did := types.MsgCreateDidResponse{} - err := did.Unmarshal(result.Data) + privKey, _, _ := setup.InitDid() + _, _, err := setup.InitDid() - if err != nil { - log.Fatal(err) - } + require.Error(t, err) + require.Equal(t, "DID DOC already exists for DID did:cheqd:test:alice: did doc exists", err.Error()) + + credDefMsg := setup.CreateCredDef() + data, _ := ptypes.NewAnyWithValue(credDefMsg) + _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + _, err = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + + require.Error(t, err) + require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1: did doc exists", err.Error()) + + schemaMsg := setup.CreateSchema() + data, _ = ptypes.NewAnyWithValue(schemaMsg) + _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + _, err = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) - return privKey, didMsg + require.Error(t, err) + require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1: did doc exists", err.Error()) } diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index 8366b2c94..2c5b05516 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -2,6 +2,7 @@ package cheqd import ( "crypto/ed25519" + "crypto/rand" "encoding/base64" "encoding/json" "github.com/btcsuite/btcutil/base58" @@ -119,7 +120,7 @@ func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey) *types.M func (s *TestSetup) CreateSchema() *types.MsgCreateSchema { return &types.MsgCreateSchema{ - Id: "schema-1", + Id: "did:cheqd:test:schema-1", Name: "name", Version: "version", AttrNames: []string{"attr1", "attr2"}, @@ -135,7 +136,7 @@ func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { } return &types.MsgCreateCredDef{ - Id: "cred-def-1", + Id: "did:cheqd:test:cred-def-1", SchemaId: "schema-1", Tag: "tag", SignatureType: "signature-type", @@ -157,3 +158,26 @@ func (s *TestSetup) WrapRequest(privKey ed25519.PrivateKey, data *ptypes.Any, me Authors: []string{"controller"}, } } + +func (s *TestSetup) InitDid() (ed25519.PrivateKey, *types.MsgCreateDid, error) { + pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) + + // add new Did + didMsg := s.CreateDid(pubKey) + data, err := ptypes.NewAnyWithValue(didMsg) + if err != nil { + return nil, nil, err + } + + result, err := s.Handler(s.Ctx, s.WrapRequest(privKey, data, make(map[string]string))) + if err != nil { + return nil, nil, err + } + + did := types.MsgCreateDidResponse{} + if err := did.Unmarshal(result.Data); err != nil { + return nil, nil, err + } + + return privKey, didMsg, nil +} diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 0a59e8961..bc3f49952 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -18,6 +18,11 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + // Checks that the element exists + if err := k.HasDidDoc(ctx, credDefMsg.Id); err != nil { + return nil, err + } + switch value := credDefMsg.Value.(type) { case *types.MsgCreateCredDef_ClType: k.AppendCredDef( diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index f2f4a9e2c..367d7682c 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -18,6 +18,11 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + // Checks that the element exists + if err := k.HasDidDoc(ctx, didMsg.Id); err != nil { + return nil, err + } + k.AppendDid( ctx, didMsg.Id, diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 9690a3101..54445d28f 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -18,6 +18,11 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteReques return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + // Checks that the element exists + if err := k.HasDidDoc(ctx, schemaMsg.Id); err != nil { + return nil, err + } + k.AppendSchema( ctx, schemaMsg.Id, diff --git a/x/cheqd/keeper/state.go b/x/cheqd/keeper/state.go new file mode 100644 index 000000000..cda937fc9 --- /dev/null +++ b/x/cheqd/keeper/state.go @@ -0,0 +1,25 @@ +package keeper + +import ( + "fmt" + "github.com/cheqd/cheqd-node/x/cheqd/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +// HasDidDoc checks if the did exist in the store +func (k Keeper) HasDidDoc(ctx sdk.Context, id string) error { + if k.HasDid(ctx, id) { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for DID %s", id)) + } + + if k.HasSchema(ctx, id) { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for Schema %s", id)) + } + + if k.HasCredDef(ctx, id) { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for CredDef %s", id)) + } + + return nil +} diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index 54472be9c..dd1175647 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -9,5 +9,6 @@ import ( // x/cheqd module sentinel errors var ( ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") - ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1200, "invalid cred def value") + ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "did doc exists") + ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1300, "invalid cred def value") ) From 61e4f85a5c9a58672d5b8959ded7573f0313c07d Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 13 Oct 2021 10:38:59 +0300 Subject: [PATCH 23/74] replay protection --- x/cheqd/handler_test.go | 14 ++++++++----- x/cheqd/handler_test_setup.go | 6 +++++- x/cheqd/keeper/did.go | 34 ++++++++++++++++++++++++++------ x/cheqd/keeper/msg_server_did.go | 27 +++++++++++++++++++------ x/cheqd/keeper/query_did.go | 2 +- x/cheqd/keeper/verify.go | 2 +- x/cheqd/types/errors.go | 7 ++++--- 7 files changed, 69 insertions(+), 23 deletions(-) diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index 6eb4870fc..7133cf742 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -17,7 +17,7 @@ func TestHandler_CreateDid(t *testing.T) { _, did, _ := setup.InitDid() // query Did - receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, _, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) // check require.Equal(t, did.Id, receivedDid.Id) @@ -39,15 +39,19 @@ func TestHandler_UpdateDid(t *testing.T) { privKey, did, _ := setup.InitDid() // query Did - receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, didMetadata, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) //Init priv key newPubKey, _, _ := ed25519.GenerateKey(rand.Reader) // add new Did + metadata := map[string]string{ + "versionId": didMetadata.VersionId, + } + didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, dataUpdate, make(map[string]string))) + resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, dataUpdate, metadata)) didUpdated := types.MsgUpdateDidResponse{} errUpdate := didUpdated.Unmarshal(resultUpdate.Data) @@ -56,7 +60,7 @@ func TestHandler_UpdateDid(t *testing.T) { } // query Did - receivedUpdatedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedUpdatedDid, _, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) // check require.Equal(t, didUpdated.Id, receivedUpdatedDid.Id) @@ -78,7 +82,7 @@ func TestHandler_UpdateDidInvalidSignature(t *testing.T) { _, did, _ := setup.InitDid() // query Did - receivedDid, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, _, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) //Init priv key newPubKey, newPrivKey, _ := ed25519.GenerateKey(rand.Reader) diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index 2c5b05516..3b44f961d 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -46,11 +46,15 @@ func Setup() TestSetup { // Init Keepers newKeeper := keeper.NewKeeper(cdc, storeKey, memStoreKey) + // Create Tx + txBytes := make([]byte, 28) + _, _ = rand.Read(txBytes) + // Create context blockTime, _ := time.Parse(time.RFC3339, "2021-01-01T00:00:00.000Z") ctx := sdk.NewContext(dbStore, tmproto.Header{ChainID: "cheqd-node", Time: blockTime}, - false, log.NewNopLogger()) + false, log.NewNopLogger()).WithTxBytes(txBytes) handler := NewHandler(*newKeeper) diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index 157b618b4..abd16a9fc 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -99,24 +99,46 @@ func (k Keeper) AppendDid( } // SetDid set a specific did in the store -func (k Keeper) SetDid(ctx sdk.Context, did types.Did) { +func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata) { + updated := ctx.BlockTime().String() + txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + + metadata = &types.Metadata{ + Created: metadata.Created, + Updated: updated, + Deactivated: metadata.Deactivated, + VersionId: txHash, + } + + stateValue := types.StateValue{ + Metadata: metadata, + Data: &types.StateValue_Did{ + Did: &did, + }, + Timestamp: updated, + Txhash: txHash, + } + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - b := k.cdc.MustMarshal(&did) + b := k.cdc.MustMarshal(&stateValue) store.Set(GetDidIDBytes(did.Id), b) } // GetDid returns a did from its id -func (k Keeper) GetDid(ctx sdk.Context, id string) (*types.Did, error) { +func (k Keeper) GetDid(ctx sdk.Context, id string) (*types.Did, *types.Metadata, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) var value types.StateValue - k.cdc.MustUnmarshal(store.Get(GetDidIDBytes(id)), &value) + err := k.cdc.Unmarshal(store.Get(GetDidIDBytes(id)), &value) + if err != nil { + return nil, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) + } switch data := value.Data.(type) { case *types.StateValue_Did: - return data.Did, nil + return data.Did, value.Metadata, nil default: - return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, fmt.Sprintf("State has unexpected type %T", data)) + return nil, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, fmt.Sprintf("State has unexpected type %T", data)) } } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 367d7682c..66445f248 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -51,6 +51,26 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + // Checks that the element exists + if !k.HasDid(ctx, didMsg.Id) { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) + } + + _, metadata, err := k.GetDid(ctx, didMsg.Id) + if err != nil { + return nil, err + } + + versionId, exists := msg.Metadata["versionId"] + if !exists { + return nil, sdkerrors.Wrap(types.ErrUnexpectedDidVersion, "Metadata doesn't contain `versionId`") + } + + if metadata.VersionId != versionId { + errMsg := fmt.Sprintf("Ecpected %s with version %s. Got version %s", didMsg.Id, metadata.VersionId, versionId) + return nil, sdkerrors.Wrap(types.ErrUnexpectedDidVersion, errMsg) + } + var did = types.Did{ Id: didMsg.Id, Controller: didMsg.Controller, @@ -64,12 +84,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) Service: didMsg.Service, } - // Checks that the element exists - if !k.HasDid(ctx, didMsg.Id) { - return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) - } - - k.SetDid(ctx, did) + k.SetDid(ctx, did, metadata) return &types.MsgUpdateDidResponse{ Id: didMsg.Id, diff --git a/x/cheqd/keeper/query_did.go b/x/cheqd/keeper/query_did.go index 6a0cb4cd1..9b41fc958 100644 --- a/x/cheqd/keeper/query_did.go +++ b/x/cheqd/keeper/query_did.go @@ -11,7 +11,7 @@ func getDid(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.L return nil, sdkerrors.ErrKeyNotFound } - msg, err := keeper.GetDid(ctx, id) + msg, _, err := keeper.GetDid(ctx, id) if err != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) } diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index 1d37257db..e1a492097 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -51,7 +51,7 @@ func (k Keeper) FindPublicKey(context sdk.Context, request *types.MsgWriteReques authentication = didDoc.Authentication verificationMethod = didDoc.VerificationMethod } else { - didDoc, _ := k.GetDid(context, did) + didDoc, _, _ := k.GetDid(context, did) authentication = didDoc.Authentication verificationMethod = didDoc.VerificationMethod } diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index dd1175647..c199545a1 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -8,7 +8,8 @@ import ( // x/cheqd module sentinel errors var ( - ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") - ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "did doc exists") - ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1300, "invalid cred def value") + ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") + ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "did doc exists") + ErrUnexpectedDidVersion = sdkerrors.Register(ModuleName, 1201, "unexpected did version") + ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1300, "invalid cred def value") ) From 7a7740af280a66f87da07eec3208c451a0b4fa31 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 14 Oct 2021 10:38:24 +0300 Subject: [PATCH 24/74] updated did proto --- proto/cheqd/did.proto | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index f8ecd14aa..e54fa1ac7 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -9,14 +9,15 @@ import "gogoproto/gogo.proto"; message Did { string id = 1; repeated string controller = 2; //optional - repeated VerificationMethod verificationMethod = 3; // optional + repeated VerificationMethod verification_method = 3; // optional repeated string authentication = 4; // optional repeated string assertionMethod = 5; // optional - repeated string capabilityInvocation = 6; // optional - repeated string capabilityDelegation = 7; // optional - repeated string keyAgreement = 8; // optional - repeated string alsoKnownAs = 9; // optional - repeated DidService service = 10; // optional + repeated string capability_invocation = 6; // optional + repeated string capability_delegation = 7; // optional + repeated string key_agreement = 8; // optional + repeated DidService service = 9; // optional + repeated string also_known_as = 10; // optional + repeated string context = 11; } message VerificationMethod { From b460944ab53b2947daf8a39357c4c1c55b1976ba Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 14 Oct 2021 19:18:14 +0300 Subject: [PATCH 25/74] added write request validation --- go.mod | 2 - go.sum | 6 - proto/cheqd/credDef.proto | 8 +- proto/cheqd/did.proto | 6 +- proto/cheqd/query.proto | 8 +- proto/cheqd/schema.proto | 5 +- proto/cheqd/stateValue.proto | 6 +- proto/cheqd/tx.proto | 42 +- x/cheqd/handler.go | 5 - x/cheqd/keeper/cred_def.go | 2 +- x/cheqd/keeper/did.go | 6 +- x/cheqd/keeper/msg_server_did.go | 3 +- x/cheqd/keeper/schema.go | 2 +- x/cheqd/keeper/verify.go | 60 --- x/cheqd/types/credDef.pb.go | 94 ++-- x/cheqd/types/did.pb.go | 190 ++++--- x/cheqd/types/errors.go | 6 +- x/cheqd/types/messages_did.go | 40 ++ x/cheqd/types/messages_schema.go | 7 +- x/cheqd/types/messages_write_request.go | 19 +- x/cheqd/types/messages_write_request_test.go | 32 ++ x/cheqd/types/query.pb.go | 65 +-- x/cheqd/types/schema.pb.go | 123 +++-- .../types/{state.pb.go => stateValue.pb.go} | 215 ++++---- x/cheqd/types/tx.pb.go | 483 +++++++++++++----- x/cheqd/utils/utils.go | 45 +- 26 files changed, 923 insertions(+), 557 deletions(-) delete mode 100644 x/cheqd/keeper/verify.go create mode 100644 x/cheqd/types/messages_write_request_test.go rename x/cheqd/types/{state.pb.go => stateValue.pb.go} (75%) diff --git a/go.mod b/go.mod index 17682efa6..b1b767c08 100644 --- a/go.mod +++ b/go.mod @@ -11,9 +11,7 @@ require ( github.com/google/go-cmp v0.5.6 // indirect github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 // indirect github.com/rakyll/statik v0.1.7 - github.com/regen-network/cosmos-proto v0.3.1 // indirect github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index e30e3f6e3..9b680feb1 100644 --- a/go.sum +++ b/go.sum @@ -241,7 +241,6 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= @@ -284,8 +283,6 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -395,8 +392,6 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 h1:rgxjzoDmDXw5q8HONgyHhBas4to0/XWRo/gPpJhsUNQ= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0/go.mod h1:qrJPVzv9YlhsrxJc3P/Q85nr0w1lIRikTl4JlhdDH5w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -952,7 +947,6 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index 3687c879a..f8ebc23d7 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -8,14 +8,14 @@ import "gogoproto/gogo.proto"; message CredDef { string id = 1; - repeated string authors = 2; - string schema_id = 3; - string tag = 4; - string signatureType = 5; oneof value { CredDefValue cl_type = 6; google.protobuf.Any any_type = 7; } + repeated string authors = 2; + string schema_id = 3; + string tag = 4; + string signatureType = 5; } message CredDefValue { diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index e54fa1ac7..d3f2c1153 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -24,14 +24,14 @@ message VerificationMethod { string id = 1; string type = 2; string controller = 3; - map publicKeyJwk = 4; // optional - string publicKeyMultibase = 5; // optional + map public_key_jwk = 4; // optional + string public_key_multibase = 5; // optional } message DidService { string id = 1; string type = 2; - string serviceEndpoint = 3; + string service_endpoint = 3; } diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index 9b3a1c4fa..9ffae43e7 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -7,7 +7,6 @@ import "cosmos/base/query/v1beta1/pagination.proto"; import "cheqd/credDef.proto"; import "cheqd/schema.proto"; import "cheqd/did.proto"; -import "cheqd/state.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; @@ -33,7 +32,7 @@ message QueryGetCredDefRequest { } message QueryGetCredDefResponse { - CredDef CredDef = 1; + CredDef cred_def = 1; } message QueryGetSchemaRequest { @@ -41,7 +40,7 @@ message QueryGetSchemaRequest { } message QueryGetSchemaResponse { - Schema Schema = 1; + Schema schema = 1; } message QueryGetDidRequest { @@ -49,6 +48,5 @@ message QueryGetDidRequest { } message QueryGetDidResponse { - Did Did = 1; - Metadata Metadata = 2; + Did did = 1; } \ No newline at end of file diff --git a/proto/cheqd/schema.proto b/proto/cheqd/schema.proto index cd3a06ad1..704b91b67 100644 --- a/proto/cheqd/schema.proto +++ b/proto/cheqd/schema.proto @@ -7,8 +7,9 @@ import "gogoproto/gogo.proto"; message Schema { string id = 1; - repeated string authors = 2; + string type = 2; string name = 3; string version = 4; - repeated string attrNames = 5; + repeated string attr_names = 5; + repeated string controller = 6; } diff --git a/proto/cheqd/stateValue.proto b/proto/cheqd/stateValue.proto index eae57c823..291b29287 100644 --- a/proto/cheqd/stateValue.proto +++ b/proto/cheqd/stateValue.proto @@ -11,9 +11,9 @@ message StateValue { oneof data { Did did = 1; Schema schema = 2; - CredDef credDef = 3; + CredDef cred_def = 3; } - string txhash = 4; + string tx_hash = 4; string timestamp = 5; Metadata metadata = 6; // optional } @@ -23,5 +23,5 @@ message Metadata { string created = 1; string updated = 2; bool deactivated = 3; - string versionId = 4; + string version_id = 4; } diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 0997f4e81..6890bf288 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -20,20 +20,20 @@ service Msg { // this line is used by starport scaffolding # proto/tx/message message MsgWriteRequest { google.protobuf.Any data = 1; - repeated string authors = 2; - map signatures = 3; - map metadata = 4; + map signatures = 2; + map metadata = 3; } message MsgCreateCredDef { string id = 1; string schema_id = 2; string tag = 3; - string signatureType = 4; + string signature_type = 4; oneof value { CredDefValue cl_type = 5; google.protobuf.Any any_type = 6; } + repeated string controller = 7; } message MsgCreateCredDefResponse { @@ -42,9 +42,11 @@ message MsgCreateCredDefResponse { message MsgCreateSchema { string id = 1; - string name = 2; - string version = 3; - repeated string attrNames = 4; + string type = 2; + string name = 3; + string version = 4; + repeated string attr_names = 5; + repeated string controller = 6; } message MsgCreateSchemaResponse { @@ -54,14 +56,15 @@ message MsgCreateSchemaResponse { message MsgCreateDid { string id = 1; repeated string controller = 2; - repeated VerificationMethod verificationMethod = 3; + repeated VerificationMethod verification_method = 3; repeated string authentication = 4; - repeated string assertionMethod = 5; - repeated string capabilityInvocation = 6; - repeated string capabilityDelegation = 7; - repeated string keyAgreement = 8; - repeated string alsoKnownAs = 9; + repeated string assertion_method = 5; + repeated string capability_invocation = 6; + repeated string capability_delegation = 7; + repeated string key_agreement = 8; + repeated string also_known_as = 9; repeated DidService service = 10; + repeated string context = 11; } message MsgCreateDidResponse { @@ -71,14 +74,15 @@ message MsgCreateDidResponse { message MsgUpdateDid { string id = 1; repeated string controller = 2; - repeated VerificationMethod verificationMethod = 3; + repeated VerificationMethod verification_method = 3; repeated string authentication = 4; - repeated string assertionMethod = 5; - repeated string capabilityInvocation = 6; - repeated string capabilityDelegation = 7; - repeated string keyAgreement = 8; - repeated string alsoKnownAs = 9; + repeated string assertion_method = 5; + repeated string capability_invocation = 6; + repeated string capability_delegation = 7; + repeated string key_agreement = 8; + repeated string also_known_as = 9; repeated DidService service = 10; + repeated string context = 11; } diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index 20d0e4187..feb402d1a 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -20,11 +20,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } - if !k.Verify(ctx, parsedMsg) { - errMsg := "Invalid signature" - return nil, sdkerrors.Wrap(types.ErrInvalidSignature, errMsg) - } - switch parsedMsg.Data.TypeUrl { // this line is used by starport scaffolding # 1 case "/cheqdid.cheqdnode.cheqd.MsgCreateCredDef": diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index a465f685d..ce501c9e8 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -69,7 +69,7 @@ func (k Keeper) AppendCredDef( CredDef: &credDef, }, Timestamp: created, - Txhash: txHash, + TxHash: txHash, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index abd16a9fc..a2367ad05 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -85,7 +85,7 @@ func (k Keeper) AppendDid( Did: &did, }, Timestamp: created, - Txhash: txHash, + TxHash: txHash, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) @@ -116,7 +116,7 @@ func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata) Did: &did, }, Timestamp: updated, - Txhash: txHash, + TxHash: txHash, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) @@ -125,7 +125,7 @@ func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata) } // GetDid returns a did from its id -func (k Keeper) GetDid(ctx sdk.Context, id string) (*types.Did, *types.Metadata, error) { +func (k Keeper) GetDid(ctx *sdk.Context, id string) (*types.Did, *types.Metadata, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) var value types.StateValue diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 66445f248..13e0d6e09 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -18,6 +18,7 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + didMsg.Verify(&k, &ctx, msg) // Checks that the element exists if err := k.HasDidDoc(ctx, didMsg.Id); err != nil { return nil, err @@ -56,7 +57,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) } - _, metadata, err := k.GetDid(ctx, didMsg.Id) + _, metadata, err := k.GetDid(&ctx, didMsg.Id) if err != nil { return nil, err } diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index 567537eeb..803e3c26c 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -65,7 +65,7 @@ func (k Keeper) AppendSchema( Schema: &schema, }, Timestamp: created, - Txhash: txHash, + TxHash: txHash, } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go deleted file mode 100644 index e1a492097..000000000 --- a/x/cheqd/keeper/verify.go +++ /dev/null @@ -1,60 +0,0 @@ -package keeper - -import ( - "crypto/ed25519" - "encoding/base64" - "encoding/json" - "fmt" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cheqd/cheqd-node/x/cheqd/utils" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -func (k Keeper) Verify(context sdk.Context, request *types.MsgWriteRequest) bool { - metadataBytes, _ := json.Marshal(&request.Metadata) - dataBytes := request.Data.Value - - signingInput := ([]byte)(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) - - result := true - - for didUrl := range request.Signatures { - pubKey, err := k.FindPublicKey(context, request, didUrl) - if err != nil { - errMsg := fmt.Sprintf("Cannot get public key. Cause: %T", err) - k.Logger(context).Error(errMsg) - return false - } - - signature, _ := base64.StdEncoding.DecodeString(request.Signatures[didUrl]) - result = result && ed25519.Verify(pubKey, signingInput, signature) - } - - return result -} - -func (k Keeper) FindPublicKey(context sdk.Context, request *types.MsgWriteRequest, didUrl string) (ed25519.PublicKey, error) { - did, _ := utils.SplitDidUrlIntoDidAndFragment(didUrl) - - var authentication []string - var verificationMethod []*types.VerificationMethod - - if request.Data.TypeUrl == "/cheqdid.cheqdnode.cheqd.MsgCreateDid" { - didDoc, isMsgIdentity := request.Data.GetCachedValue().(*types.MsgCreateDid) - - if !isMsgIdentity { - errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, didDoc) - return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) - } - - authentication = didDoc.Authentication - verificationMethod = didDoc.VerificationMethod - } else { - didDoc, _, _ := k.GetDid(context, did) - authentication = didDoc.Authentication - verificationMethod = didDoc.VerificationMethod - } - - return utils.FindPublicKey(authentication, verificationMethod, didUrl) -} diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index 0ab885858..09fdc3380 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -25,15 +25,15 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type CredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` - SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,5,opt,name=signatureType,proto3" json:"signatureType,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Types that are valid to be assigned to Value: // *CredDef_ClType // *CredDef_AnyType - Value isCredDef_Value `protobuf_oneof:"value"` + Value isCredDef_Value `protobuf_oneof:"value"` + Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` + SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,5,opt,name=signatureType,proto3" json:"signatureType,omitempty"` } func (m *CredDef) Reset() { *m = CredDef{} } @@ -99,6 +99,20 @@ func (m *CredDef) GetId() string { return "" } +func (m *CredDef) GetClType() *CredDefValue { + if x, ok := m.GetValue().(*CredDef_ClType); ok { + return x.ClType + } + return nil +} + +func (m *CredDef) GetAnyType() *types.Any { + if x, ok := m.GetValue().(*CredDef_AnyType); ok { + return x.AnyType + } + return nil +} + func (m *CredDef) GetAuthors() []string { if m != nil { return m.Authors @@ -127,20 +141,6 @@ func (m *CredDef) GetSignatureType() string { return "" } -func (m *CredDef) GetClType() *CredDefValue { - if x, ok := m.GetValue().(*CredDef_ClType); ok { - return x.ClType - } - return nil -} - -func (m *CredDef) GetAnyType() *types.Any { - if x, ok := m.GetValue().(*CredDef_AnyType); ok { - return x.AnyType - } - return nil -} - // XXX_OneofWrappers is for the internal use of the proto package. func (*CredDef) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -211,34 +211,34 @@ func init() { func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } var fileDescriptor_bc069326307a6009 = []byte{ - // 430 bytes of a gzipped FileDescriptorProto + // 432 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0x4d, 0x8b, 0x13, 0x31, - 0x1c, 0xc6, 0x67, 0xa6, 0x6e, 0x67, 0xfb, 0xef, 0xfa, 0x42, 0x5c, 0x30, 0x56, 0x18, 0xca, 0xa2, - 0x50, 0x05, 0x33, 0x58, 0x11, 0xc4, 0x93, 0xee, 0x2a, 0xac, 0xe0, 0x61, 0x19, 0x5f, 0x0e, 0x5e, - 0x96, 0x74, 0x92, 0x9d, 0x06, 0xdb, 0xa4, 0x66, 0x32, 0x8b, 0xf9, 0x02, 0x9e, 0xfd, 0x58, 0x1e, - 0xf7, 0x28, 0x9e, 0xa4, 0xfd, 0x22, 0x92, 0x64, 0x2a, 0x55, 0x58, 0x28, 0x78, 0x99, 0x79, 0xe6, - 0x49, 0x9e, 0x5f, 0x92, 0x27, 0x03, 0x37, 0xcb, 0x29, 0xff, 0xcc, 0xf2, 0x52, 0x73, 0xf6, 0x92, - 0x9f, 0x91, 0x85, 0x56, 0x46, 0xa1, 0x5b, 0xde, 0x14, 0x8c, 0xf8, 0xb7, 0x54, 0x8c, 0x07, 0x35, - 0xb8, 0x5d, 0x29, 0x55, 0xcd, 0x78, 0xee, 0xa7, 0x4d, 0x9a, 0xb3, 0x9c, 0x4a, 0x1b, 0x32, 0x83, - 0xfd, 0x4a, 0x55, 0xca, 0xcb, 0xdc, 0xa9, 0xe0, 0x1e, 0x7c, 0x4d, 0x20, 0x3d, 0x0a, 0x6c, 0x74, - 0x0d, 0x12, 0xc1, 0x70, 0x3c, 0x8c, 0x47, 0xbd, 0x22, 0x11, 0x0c, 0x61, 0x48, 0x69, 0x63, 0xa6, - 0x4a, 0xd7, 0x38, 0x19, 0x76, 0x46, 0xbd, 0x62, 0xfd, 0x89, 0xee, 0x40, 0xaf, 0x2e, 0xa7, 0x7c, - 0x4e, 0x4f, 0x05, 0xc3, 0x1d, 0x1f, 0xd8, 0x0d, 0xc6, 0x6b, 0x86, 0x6e, 0x40, 0xc7, 0xd0, 0x0a, - 0x5f, 0xf1, 0xb6, 0x93, 0xe8, 0x2e, 0x5c, 0xad, 0x45, 0x25, 0xa9, 0x69, 0x34, 0x7f, 0x67, 0x17, - 0x1c, 0xef, 0xf8, 0xb1, 0xbf, 0x4d, 0xf4, 0x1c, 0xd2, 0x72, 0x76, 0x6a, 0xdc, 0x78, 0x77, 0x18, - 0x8f, 0xfa, 0xe3, 0x7b, 0xe4, 0x92, 0x63, 0x92, 0x76, 0xc7, 0x1f, 0xe8, 0xac, 0xe1, 0xc7, 0x51, - 0xd1, 0x2d, 0x67, 0x9e, 0xf0, 0x08, 0x76, 0xa9, 0xb4, 0x01, 0x91, 0x7a, 0xc4, 0x3e, 0x09, 0x85, - 0x90, 0x75, 0x21, 0xe4, 0x85, 0xb4, 0xc7, 0x51, 0x91, 0x52, 0x69, 0x5d, 0xe4, 0x30, 0x85, 0x9d, - 0x73, 0x47, 0x39, 0xf8, 0x99, 0xc0, 0xde, 0x26, 0x16, 0xbd, 0x81, 0x74, 0xa1, 0xc5, 0x9c, 0x6a, - 0x8b, 0xe3, 0x61, 0x67, 0xd4, 0x1f, 0x8f, 0xb7, 0xda, 0x0e, 0x39, 0x09, 0xa1, 0x57, 0xd2, 0x68, - 0x5b, 0xac, 0x11, 0xe8, 0x3d, 0x80, 0xe6, 0xe7, 0xaa, 0xa4, 0x46, 0x28, 0xe9, 0xeb, 0xec, 0x8f, - 0x9f, 0x6c, 0x07, 0x2c, 0xfe, 0xe4, 0x02, 0x73, 0x03, 0x34, 0x38, 0x81, 0xbd, 0xcd, 0xf5, 0x5c, - 0xf7, 0x9f, 0xb8, 0x6d, 0xef, 0xd0, 0x49, 0xf4, 0xa0, 0x3d, 0x20, 0x4e, 0x2e, 0x2f, 0xa4, 0x08, - 0x53, 0x9e, 0x25, 0x4f, 0xe3, 0xc1, 0x5b, 0xb8, 0xfe, 0xcf, 0x82, 0xff, 0x0f, 0x3d, 0x3c, 0xfa, - 0xbe, 0xcc, 0xe2, 0x8b, 0x65, 0x16, 0xff, 0x5a, 0x66, 0xf1, 0xb7, 0x55, 0x16, 0x5d, 0xac, 0xb2, - 0xe8, 0xc7, 0x2a, 0x8b, 0x3e, 0xde, 0xaf, 0x84, 0x99, 0x36, 0x13, 0x52, 0xaa, 0x79, 0xde, 0xfe, - 0xe9, 0xee, 0xf9, 0xd0, 0x95, 0x91, 0x7f, 0x69, 0x2d, 0x77, 0xa1, 0xf5, 0xa4, 0xeb, 0xe9, 0x8f, - 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x71, 0x6b, 0x15, 0x9c, 0x12, 0x03, 0x00, 0x00, + 0x18, 0xc7, 0x67, 0xa6, 0x6e, 0x67, 0xfb, 0x74, 0x7d, 0x21, 0x2e, 0x18, 0x2b, 0x0c, 0x65, 0x51, + 0xa8, 0x82, 0x19, 0xac, 0x08, 0xe2, 0x49, 0x77, 0x15, 0x56, 0xf0, 0xb0, 0x8c, 0x2f, 0x07, 0x2f, + 0x4b, 0x3a, 0xc9, 0x4e, 0x83, 0x6d, 0x52, 0x33, 0x99, 0xc5, 0x7c, 0x01, 0xcf, 0x7e, 0x2c, 0x8f, + 0x7b, 0x14, 0x4f, 0xd2, 0x7e, 0x11, 0x49, 0x32, 0x95, 0x2a, 0x2c, 0x14, 0xbc, 0xcc, 0xfc, 0xe7, + 0x3f, 0x79, 0x7e, 0xcf, 0x4b, 0x1e, 0xb8, 0x59, 0x4e, 0xf9, 0x67, 0x96, 0x97, 0x9a, 0xb3, 0x97, + 0xfc, 0x8c, 0x2c, 0xb4, 0x32, 0x0a, 0xdd, 0xf2, 0xa6, 0x60, 0xc4, 0xbf, 0xa5, 0x62, 0x3c, 0xa8, + 0xc1, 0xed, 0x4a, 0xa9, 0x6a, 0xc6, 0x73, 0x7f, 0x6c, 0xd2, 0x9c, 0xe5, 0x54, 0xda, 0x10, 0x33, + 0xd8, 0xaf, 0x54, 0xa5, 0xbc, 0xcc, 0x9d, 0x0a, 0xee, 0xc1, 0xd7, 0x04, 0xd2, 0xa3, 0xc0, 0x46, + 0xd7, 0x20, 0x11, 0x0c, 0xc7, 0xc3, 0x78, 0xd4, 0x2b, 0x12, 0xc1, 0xd0, 0x73, 0x48, 0xcb, 0xd9, + 0xa9, 0xb1, 0x0b, 0x8e, 0xbb, 0xc3, 0x78, 0xd4, 0x1f, 0xdf, 0x23, 0x97, 0xe4, 0x25, 0x2d, 0xe2, + 0x03, 0x9d, 0x35, 0xfc, 0x38, 0x2a, 0xba, 0xe5, 0xec, 0x9d, 0x5d, 0x70, 0xf4, 0x08, 0x76, 0xa9, + 0xb4, 0x01, 0x91, 0x7a, 0xc4, 0x3e, 0x09, 0x15, 0x92, 0x75, 0x85, 0xe4, 0x85, 0xb4, 0xc7, 0x51, + 0x91, 0x52, 0x69, 0x7d, 0x08, 0x86, 0x94, 0x36, 0x66, 0xaa, 0x74, 0x8d, 0x93, 0x61, 0x67, 0xd4, + 0x2b, 0xd6, 0x9f, 0xe8, 0x0e, 0xf4, 0xea, 0x72, 0xca, 0xe7, 0xf4, 0x54, 0x30, 0xdc, 0xf1, 0x55, + 0xee, 0x06, 0xe3, 0x35, 0x43, 0x37, 0xa0, 0x63, 0x68, 0x85, 0xaf, 0x78, 0xdb, 0x49, 0x74, 0x17, + 0xae, 0xd6, 0xa2, 0x92, 0xd4, 0x34, 0x9a, 0x3b, 0x32, 0xde, 0xf1, 0xff, 0xfe, 0x36, 0x0f, 0x53, + 0xd8, 0x39, 0x77, 0x45, 0x1f, 0xfc, 0x4c, 0x60, 0x6f, 0xb3, 0x0b, 0xf4, 0x06, 0xd2, 0x85, 0x16, + 0x73, 0xaa, 0x2d, 0x8e, 0x87, 0x9d, 0x51, 0x7f, 0x3c, 0xde, 0xaa, 0x7b, 0x72, 0x12, 0x82, 0x5e, + 0x49, 0xa3, 0x6d, 0xb1, 0x46, 0xa0, 0xf7, 0x00, 0x9a, 0x9f, 0xab, 0x92, 0x1a, 0xa1, 0xa4, 0xef, + 0xac, 0x3f, 0x7e, 0xb2, 0x1d, 0xb0, 0xf8, 0x13, 0x17, 0x98, 0x1b, 0xa0, 0xc1, 0x09, 0xec, 0x6d, + 0xe6, 0x73, 0x63, 0xf8, 0xc4, 0x6d, 0x7b, 0x87, 0x4e, 0xa2, 0x07, 0x6d, 0x83, 0x38, 0xb9, 0x7c, + 0xfe, 0x45, 0x38, 0xf2, 0x2c, 0x79, 0x1a, 0x0f, 0xde, 0xc2, 0xf5, 0x7f, 0x12, 0xfe, 0x3f, 0xf4, + 0xf0, 0xe8, 0xfb, 0x32, 0x8b, 0x2f, 0x96, 0x59, 0xfc, 0x6b, 0x99, 0xc5, 0xdf, 0x56, 0x59, 0x74, + 0xb1, 0xca, 0xa2, 0x1f, 0xab, 0x2c, 0xfa, 0x78, 0xbf, 0x12, 0x66, 0xda, 0x4c, 0x48, 0xa9, 0xe6, + 0x79, 0xbb, 0xe9, 0xee, 0xf9, 0xd0, 0x0d, 0x23, 0xff, 0xd2, 0x5a, 0x6e, 0x7f, 0xea, 0x49, 0xd7, + 0xd3, 0x1f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x8b, 0xac, 0x47, 0x2d, 0x12, 0x03, 0x00, 0x00, } func (m *CredDef) Marshal() (dAtA []byte, err error) { diff --git a/x/cheqd/types/did.pb.go b/x/cheqd/types/did.pb.go index 2a4962388..7b08d8e81 100644 --- a/x/cheqd/types/did.pb.go +++ b/x/cheqd/types/did.pb.go @@ -27,14 +27,15 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Did struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` - VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` + VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verification_method,json=verificationMethod,proto3" json:"verification_method,omitempty"` Authentication []string `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` AssertionMethod []string `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` - CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` - CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` - KeyAgreement []string `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` - AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` - Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` + CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capability_invocation,json=capabilityInvocation,proto3" json:"capability_invocation,omitempty"` + CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` + KeyAgreement []string `protobuf:"bytes,8,rep,name=key_agreement,json=keyAgreement,proto3" json:"key_agreement,omitempty"` + Service []*DidService `protobuf:"bytes,9,rep,name=service,proto3" json:"service,omitempty"` + AlsoKnownAs []string `protobuf:"bytes,10,rep,name=also_known_as,json=alsoKnownAs,proto3" json:"also_known_as,omitempty"` + Context []string `protobuf:"bytes,11,rep,name=context,proto3" json:"context,omitempty"` } func (m *Did) Reset() { *m = Did{} } @@ -126,6 +127,13 @@ func (m *Did) GetKeyAgreement() []string { return nil } +func (m *Did) GetService() []*DidService { + if m != nil { + return m.Service + } + return nil +} + func (m *Did) GetAlsoKnownAs() []string { if m != nil { return m.AlsoKnownAs @@ -133,9 +141,9 @@ func (m *Did) GetAlsoKnownAs() []string { return nil } -func (m *Did) GetService() []*DidService { +func (m *Did) GetContext() []string { if m != nil { - return m.Service + return m.Context } return nil } @@ -144,8 +152,8 @@ type VerificationMethod struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` - PublicKeyJwk map[string]string `protobuf:"bytes,4,rep,name=publicKeyJwk,proto3" json:"publicKeyJwk,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - PublicKeyMultibase string `protobuf:"bytes,5,opt,name=publicKeyMultibase,proto3" json:"publicKeyMultibase,omitempty"` + PublicKeyJwk map[string]string `protobuf:"bytes,4,rep,name=public_key_jwk,json=publicKeyJwk,proto3" json:"public_key_jwk,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PublicKeyMultibase string `protobuf:"bytes,5,opt,name=public_key_multibase,json=publicKeyMultibase,proto3" json:"public_key_multibase,omitempty"` } func (m *VerificationMethod) Reset() { *m = VerificationMethod{} } @@ -219,7 +227,7 @@ func (m *VerificationMethod) GetPublicKeyMultibase() string { type DidService struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - ServiceEndpoint string `protobuf:"bytes,3,opt,name=serviceEndpoint,proto3" json:"serviceEndpoint,omitempty"` + ServiceEndpoint string `protobuf:"bytes,3,opt,name=service_endpoint,json=serviceEndpoint,proto3" json:"service_endpoint,omitempty"` } func (m *DidService) Reset() { *m = DidService{} } @@ -286,39 +294,42 @@ func init() { func init() { proto.RegisterFile("cheqd/did.proto", fileDescriptor_382ab0c0f6b6850e) } var fileDescriptor_382ab0c0f6b6850e = []byte{ - // 500 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0x86, 0x6b, 0xbb, 0x69, 0xc9, 0xa4, 0x6a, 0x60, 0x15, 0x09, 0x93, 0x83, 0x15, 0x05, 0x09, - 0x05, 0x21, 0x6c, 0x29, 0x5c, 0x10, 0x52, 0x85, 0x0a, 0xe9, 0x01, 0xaa, 0x4a, 0xc8, 0x48, 0x1c, - 0xca, 0x69, 0xed, 0x9d, 0x3a, 0xab, 0xb8, 0xbb, 0xc6, 0x5e, 0xa7, 0xf8, 0x2d, 0x78, 0x10, 0x1e, - 0x84, 0x63, 0xb9, 0x71, 0x44, 0xc9, 0x8b, 0xa0, 0xac, 0x5d, 0xea, 0x38, 0xa9, 0x04, 0x97, 0x64, - 0xf6, 0x9b, 0xf9, 0xc7, 0xb3, 0xff, 0x68, 0xa1, 0x1b, 0x4e, 0xf1, 0x0b, 0xf3, 0x18, 0x67, 0x6e, - 0x92, 0x4a, 0x25, 0xc9, 0x43, 0x0d, 0x38, 0x73, 0xf5, 0xbf, 0x90, 0x0c, 0xcb, 0xa8, 0xff, 0x28, - 0x92, 0x32, 0x8a, 0xd1, 0xd3, 0x65, 0x41, 0x7e, 0xe1, 0x51, 0x51, 0x94, 0x9a, 0x7e, 0x2f, 0x92, - 0x91, 0xd4, 0xa1, 0xb7, 0x8a, 0x4a, 0x3a, 0xfc, 0x69, 0x81, 0x35, 0xe1, 0x8c, 0x1c, 0x82, 0xc9, - 0x99, 0x6d, 0x0c, 0x8c, 0x51, 0xdb, 0x37, 0x39, 0x23, 0x0e, 0x40, 0x28, 0x85, 0x4a, 0x65, 0x1c, - 0x63, 0x6a, 0x9b, 0x03, 0x6b, 0xd4, 0xf6, 0x6b, 0x84, 0x7c, 0x06, 0x32, 0xc7, 0x94, 0x5f, 0xf0, - 0x90, 0x2a, 0x2e, 0xc5, 0x19, 0xaa, 0xa9, 0x64, 0xb6, 0x35, 0xb0, 0x46, 0x9d, 0xf1, 0x33, 0xf7, - 0x8e, 0xf1, 0xdc, 0x4f, 0x1b, 0x12, 0x7f, 0x4b, 0x1b, 0xf2, 0x04, 0x0e, 0x69, 0xae, 0xa6, 0x28, - 0x54, 0xc5, 0xed, 0x5d, 0x3d, 0x40, 0x83, 0x92, 0x11, 0x74, 0x69, 0x96, 0x61, 0x5a, 0x9b, 0xa0, - 0xa5, 0x0b, 0x9b, 0x98, 0x8c, 0xa1, 0x17, 0xd2, 0x84, 0x06, 0x3c, 0xe6, 0xaa, 0x78, 0x27, 0xe6, - 0xb2, 0xea, 0xbb, 0xa7, 0xcb, 0xb7, 0xe6, 0xd6, 0x35, 0x13, 0x8c, 0x31, 0x2a, 0x35, 0xfb, 0x4d, - 0xcd, 0x6d, 0x8e, 0x0c, 0xe1, 0x60, 0x86, 0xc5, 0x71, 0x94, 0x22, 0x5e, 0xa2, 0x50, 0xf6, 0x3d, - 0x5d, 0xbb, 0xc6, 0xc8, 0x00, 0x3a, 0x34, 0xce, 0xe4, 0xa9, 0x90, 0x57, 0xe2, 0x38, 0xb3, 0xdb, - 0xba, 0xa4, 0x8e, 0xc8, 0x11, 0xec, 0x67, 0x98, 0xce, 0x79, 0x88, 0x36, 0x68, 0x47, 0x1f, 0xdf, - 0xe9, 0xe8, 0x84, 0xb3, 0x8f, 0x65, 0xa9, 0x7f, 0xa3, 0x19, 0x7e, 0x37, 0x81, 0x6c, 0x3a, 0xbd, - 0xb1, 0x62, 0x02, 0xbb, 0xaa, 0x48, 0xd0, 0x36, 0x35, 0xd1, 0x71, 0x63, 0xed, 0x96, 0xce, 0xd4, - 0xd7, 0x4e, 0xe1, 0x20, 0xc9, 0x83, 0x98, 0x87, 0xa7, 0x58, 0xbc, 0xbf, 0x9a, 0xe9, 0xbd, 0x74, - 0xc6, 0x47, 0xff, 0xb1, 0x70, 0xf7, 0x43, 0x4d, 0x7f, 0x22, 0x54, 0x5a, 0xf8, 0x6b, 0x2d, 0x89, - 0x0b, 0xe4, 0xef, 0xf9, 0x2c, 0x8f, 0x15, 0x0f, 0x68, 0x86, 0x76, 0x4b, 0x8f, 0xb2, 0x25, 0xd3, - 0x7f, 0x0d, 0x0f, 0x36, 0x5a, 0x92, 0xfb, 0x60, 0xcd, 0xb0, 0xa8, 0x2e, 0xbb, 0x0a, 0x49, 0x0f, - 0x5a, 0x73, 0x1a, 0xe7, 0x37, 0xd7, 0x2d, 0x0f, 0xaf, 0xcc, 0x97, 0xc6, 0xf0, 0x1c, 0xe0, 0xd6, - 0xc5, 0x7f, 0x72, 0x69, 0x04, 0xdd, 0xca, 0xeb, 0x13, 0xc1, 0x12, 0xc9, 0x85, 0xaa, 0xac, 0x6a, - 0xe2, 0x37, 0x6f, 0x7f, 0x2c, 0x1c, 0xe3, 0x7a, 0xe1, 0x18, 0xbf, 0x17, 0x8e, 0xf1, 0x6d, 0xe9, - 0xec, 0x5c, 0x2f, 0x9d, 0x9d, 0x5f, 0x4b, 0x67, 0xe7, 0xfc, 0x69, 0xc4, 0xd5, 0x34, 0x0f, 0xdc, - 0x50, 0x5e, 0x7a, 0xe5, 0xf3, 0xd6, 0xbf, 0xcf, 0x57, 0xe6, 0x79, 0x5f, 0x2b, 0xb4, 0xfa, 0x5a, - 0x16, 0xec, 0xe9, 0xa7, 0xfa, 0xe2, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x65, 0x6c, 0x7e, 0xb5, - 0x07, 0x04, 0x00, 0x00, + // 553 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xc7, 0x6b, 0xbb, 0x1f, 0x64, 0xd2, 0x26, 0x65, 0x09, 0x62, 0xc9, 0xc1, 0x8a, 0x52, 0x09, + 0xa5, 0x42, 0xd8, 0xa8, 0xbd, 0x20, 0xa4, 0x0a, 0x15, 0xd2, 0x03, 0x54, 0x95, 0x50, 0x90, 0x38, + 0x00, 0x92, 0x65, 0x7b, 0xb7, 0xce, 0x62, 0x67, 0xd7, 0xd8, 0xeb, 0xa4, 0x7e, 0x0b, 0x1e, 0x85, + 0xc7, 0xe0, 0xd8, 0x23, 0x47, 0x94, 0x3c, 0x01, 0x6f, 0x80, 0xbc, 0x76, 0x3e, 0x94, 0xa8, 0x12, + 0x5c, 0xec, 0xd9, 0xdf, 0xcc, 0x7f, 0x77, 0x76, 0x66, 0x6c, 0x68, 0xfa, 0x43, 0xfa, 0x8d, 0xd8, + 0x84, 0x11, 0x2b, 0x4e, 0x84, 0x14, 0xe8, 0x91, 0x02, 0x8c, 0x58, 0xea, 0xcd, 0x05, 0xa1, 0xa5, + 0xd5, 0x7e, 0x1c, 0x08, 0x11, 0x44, 0xd4, 0x56, 0x61, 0x5e, 0x76, 0x6d, 0xbb, 0x3c, 0x2f, 0x35, + 0xed, 0x56, 0x20, 0x02, 0xa1, 0x4c, 0xbb, 0xb0, 0x4a, 0xda, 0xfd, 0x63, 0x80, 0xd1, 0x67, 0x04, + 0x35, 0x40, 0x67, 0x04, 0x6b, 0x1d, 0xad, 0x57, 0x1b, 0xe8, 0x8c, 0x20, 0x13, 0xc0, 0x17, 0x5c, + 0x26, 0x22, 0x8a, 0x68, 0x82, 0xf5, 0x8e, 0xd1, 0xab, 0x0d, 0x56, 0x08, 0xfa, 0x02, 0x0f, 0xc6, + 0x34, 0x61, 0xd7, 0xcc, 0x77, 0x25, 0x13, 0xdc, 0x19, 0x51, 0x39, 0x14, 0x04, 0x1b, 0x1d, 0xa3, + 0x57, 0x3f, 0x79, 0x6a, 0xdd, 0x91, 0x9f, 0xf5, 0x71, 0x45, 0x73, 0xa5, 0x24, 0x03, 0x34, 0xde, + 0x60, 0xe8, 0x09, 0x34, 0xdc, 0x4c, 0x0e, 0x29, 0x97, 0x15, 0xc7, 0xdb, 0x2a, 0x83, 0x35, 0x8a, + 0x7a, 0xd0, 0x74, 0xd3, 0x94, 0x26, 0x4b, 0x29, 0xde, 0x51, 0x81, 0xeb, 0x18, 0x9d, 0xc2, 0x43, + 0xdf, 0x8d, 0x5d, 0x8f, 0x45, 0x4c, 0xe6, 0x0e, 0xe3, 0x63, 0x51, 0x6d, 0xbc, 0xab, 0xe2, 0x5b, + 0x4b, 0xe7, 0xdb, 0x85, 0x6f, 0x4d, 0x44, 0x68, 0x44, 0x83, 0x52, 0xb4, 0xb7, 0x2e, 0xea, 0x2f, + 0x7c, 0xe8, 0x08, 0x0e, 0x42, 0x9a, 0x3b, 0x6e, 0x90, 0x50, 0x3a, 0xa2, 0x5c, 0xe2, 0x7b, 0x2a, + 0x78, 0x3f, 0xa4, 0xf9, 0xf9, 0x9c, 0xa1, 0x33, 0xd8, 0x4b, 0x69, 0x32, 0x66, 0x3e, 0xc5, 0x35, + 0x55, 0xb2, 0xa3, 0x3b, 0x4b, 0xd6, 0x67, 0xe4, 0x43, 0x19, 0x3a, 0x98, 0x6b, 0x50, 0x17, 0x0e, + 0xdc, 0x28, 0x15, 0x4e, 0xc8, 0xc5, 0x84, 0x3b, 0x6e, 0x8a, 0x41, 0x9d, 0x51, 0x2f, 0xe0, 0x65, + 0xc1, 0xce, 0x53, 0x84, 0x61, 0xaf, 0xe8, 0x17, 0xbd, 0x91, 0xb8, 0xae, 0xbc, 0xf3, 0x65, 0xf7, + 0x87, 0x0e, 0x68, 0xb3, 0x11, 0x1b, 0x23, 0x80, 0x60, 0x5b, 0xe6, 0x31, 0xc5, 0xba, 0x22, 0xca, + 0x5e, 0x1b, 0x0b, 0x43, 0x79, 0x56, 0xc7, 0xc2, 0x87, 0x46, 0x9c, 0x79, 0x11, 0xf3, 0x9d, 0xa2, + 0x06, 0x5f, 0x27, 0xa1, 0x6a, 0x5c, 0xfd, 0xe4, 0xec, 0x3f, 0x26, 0xc2, 0x7a, 0xaf, 0x76, 0xb8, + 0xa4, 0xf9, 0xbb, 0x49, 0x78, 0xc1, 0x65, 0x92, 0x0f, 0xf6, 0xe3, 0x15, 0x84, 0x9e, 0x43, 0x6b, + 0xe5, 0x90, 0x51, 0x16, 0x49, 0xe6, 0xb9, 0x29, 0xc5, 0x3b, 0x2a, 0x1d, 0xb4, 0x88, 0xbd, 0x9a, + 0x7b, 0xda, 0xaf, 0xe0, 0xfe, 0xc6, 0xa6, 0xe8, 0x10, 0x8c, 0x90, 0xe6, 0xd5, 0x85, 0x0b, 0x13, + 0xb5, 0x60, 0x67, 0xec, 0x46, 0xd9, 0xfc, 0xca, 0xe5, 0xe2, 0xa5, 0xfe, 0x42, 0xeb, 0x7e, 0x06, + 0x58, 0xf6, 0xe1, 0x9f, 0x2a, 0x75, 0x0c, 0x87, 0x55, 0xb7, 0x1c, 0xca, 0x49, 0x2c, 0x18, 0x97, + 0x55, 0xbd, 0x9a, 0x15, 0xbf, 0xa8, 0xf0, 0xeb, 0x37, 0x3f, 0xa7, 0xa6, 0x76, 0x3b, 0x35, 0xb5, + 0xdf, 0x53, 0x53, 0xfb, 0x3e, 0x33, 0xb7, 0x6e, 0x67, 0xe6, 0xd6, 0xaf, 0x99, 0xb9, 0xf5, 0xe9, + 0x38, 0x60, 0x72, 0x98, 0x79, 0x96, 0x2f, 0x46, 0x76, 0xf9, 0x0f, 0x50, 0xcf, 0x67, 0x45, 0xfd, + 0xec, 0x9b, 0x0a, 0x15, 0xc7, 0xa5, 0xde, 0xae, 0xfa, 0x9e, 0x4f, 0xff, 0x06, 0x00, 0x00, 0xff, + 0xff, 0x2d, 0x11, 0xf2, 0x74, 0x2c, 0x04, 0x00, 0x00, } func (m *Did) Marshal() (dAtA []byte, err error) { @@ -341,6 +352,24 @@ func (m *Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Context) > 0 { + for iNdEx := len(m.Context) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Context[iNdEx]) + copy(dAtA[i:], m.Context[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.Context[iNdEx]))) + i-- + dAtA[i] = 0x5a + } + } + if len(m.AlsoKnownAs) > 0 { + for iNdEx := len(m.AlsoKnownAs) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AlsoKnownAs[iNdEx]) + copy(dAtA[i:], m.AlsoKnownAs[iNdEx]) + i = encodeVarintDid(dAtA, i, uint64(len(m.AlsoKnownAs[iNdEx]))) + i-- + dAtA[i] = 0x52 + } + } if len(m.Service) > 0 { for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { { @@ -352,15 +381,6 @@ func (m *Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintDid(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x52 - } - } - if len(m.AlsoKnownAs) > 0 { - for iNdEx := len(m.AlsoKnownAs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AlsoKnownAs[iNdEx]) - copy(dAtA[i:], m.AlsoKnownAs[iNdEx]) - i = encodeVarintDid(dAtA, i, uint64(len(m.AlsoKnownAs[iNdEx]))) - i-- dAtA[i] = 0x4a } } @@ -619,15 +639,21 @@ func (m *Did) Size() (n int) { n += 1 + l + sovDid(uint64(l)) } } + if len(m.Service) > 0 { + for _, e := range m.Service { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) + } + } if len(m.AlsoKnownAs) > 0 { for _, s := range m.AlsoKnownAs { l = len(s) n += 1 + l + sovDid(uint64(l)) } } - if len(m.Service) > 0 { - for _, e := range m.Service { - l = e.Size() + if len(m.Context) > 0 { + for _, s := range m.Context { + l = len(s) n += 1 + l + sovDid(uint64(l)) } } @@ -982,6 +1008,40 @@ func (m *Did) Unmarshal(dAtA []byte) error { m.KeyAgreement = append(m.KeyAgreement, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Service = append(m.Service, &DidService{}) + if err := m.Service[len(m.Service)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AlsoKnownAs", wireType) } @@ -1013,11 +1073,11 @@ func (m *Did) Unmarshal(dAtA []byte) error { } m.AlsoKnownAs = append(m.AlsoKnownAs, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 10: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Context", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowDid @@ -1027,25 +1087,23 @@ func (m *Did) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthDid } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthDid } if postIndex > l { return io.ErrUnexpectedEOF } - m.Service = append(m.Service, &DidService{}) - if err := m.Service[len(m.Service)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Context = append(m.Context, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index c199545a1..4b38c64dc 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -8,8 +8,10 @@ import ( // x/cheqd module sentinel errors var ( + ErrBadRequest = sdkerrors.Register(ModuleName, 1000, "bad request") ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") - ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "did doc exists") - ErrUnexpectedDidVersion = sdkerrors.Register(ModuleName, 1201, "unexpected did version") + ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "DID Doc exists") + ErrDidDocNotFound = sdkerrors.Register(ModuleName, 1201, "DID Doc not found") + ErrUnexpectedDidVersion = sdkerrors.Register(ModuleName, 1202, "unexpected DID version") ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1300, "invalid cred def value") ) diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 5f6d33588..69b0be422 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -32,6 +32,46 @@ func NewMsgCreateDid( } } +/* +func (msg *MsgCreateDid) Verify(keeper *keeper.Keeper, ctx *sdk.Context, request *MsgWriteRequest) (bool, error) { + signingInput, err:=utils.BuildSigningInput(request) + if err!=nil { + return false, err + } + + // if controller is present + if len(msg.Controller) > 0 { + for _, controller := range msg.Controller { + var authentication []string + var verificationMethod []*VerificationMethod + + // if self-signed + if controller == msg.Id { + authentication=msg.Authentication + verificationMethod=msg.VerificationMethod + } else { + didDoc, _, err := keeper.GetDid(ctx, controller) + if err != nil { + return false, ErrDidDocNotFound.Wrap(controller) + } + + authentication=didDoc.Authentication + verificationMethod=didDoc.VerificationMethod + } + + // check all controller signatures + return utils.VerifyIdentitySignature(controller, authentication, verificationMethod, request.Signatures, signingInput) + } + } + + // controller is not present but there are authentications + if len(msg.Authentication) > 0 { + return utils.VerifyIdentitySignature(msg.Id, msg.Authentication, msg.VerificationMethod, request.Signatures, signingInput) + } + + return false, ErrInvalidSignature.Wrap("At least DID Doc should contain `controller` or `authentication`") +}*/ + func (msg *MsgCreateDid) Route() string { return RouterKey } diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index 7a4ee1206..bb3ccbfd3 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -19,16 +19,13 @@ func (msg *MsgCreateSchema) Route() string { return RouterKey } -func (msg *MsgCreateSchema) Type() string { - return "CreateSchema" -} - func (msg *MsgCreateSchema) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{} } func (msg *MsgCreateSchema) GetSignBytes() []byte { - return []byte{} + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) } func (msg *MsgCreateSchema) ValidateBasic() error { diff --git a/x/cheqd/types/messages_write_request.go b/x/cheqd/types/messages_write_request.go index 882aa3d39..a978983ad 100644 --- a/x/cheqd/types/messages_write_request.go +++ b/x/cheqd/types/messages_write_request.go @@ -7,10 +7,10 @@ import ( var _ sdk.Msg = &MsgWriteRequest{} -func NewMsgWriteRequest(data *types.Any, authors []string, signatures map[string]string) *MsgWriteRequest { +func NewMsgWriteRequest(data *types.Any, metadata map[string]string, signatures map[string]string) *MsgWriteRequest { return &MsgWriteRequest{ Data: data, - Authors: authors, + Metadata: metadata, Signatures: signatures, } } @@ -28,9 +28,22 @@ func (msg *MsgWriteRequest) GetSigners() []sdk.AccAddress { } func (msg *MsgWriteRequest) GetSignBytes() []byte { - return []byte{} + bz := ModuleCdc.MustMarshal(msg) + return sdk.MustSortJSON(bz) } func (msg *MsgWriteRequest) ValidateBasic() error { + if msg.Data == nil { + return ErrBadRequest.Wrap("Invalid Data: it is required") + } + + if len(msg.Data.TypeUrl) == 0 || len(msg.Data.Value) == 0 { + return ErrBadRequest.Wrap("Invalid Data: it cannot be empty") + } + + if len(msg.Signatures) == 0 { + return ErrBadRequest.Wrap("Invalid Signatures: it is required") + } + return nil } diff --git a/x/cheqd/types/messages_write_request_test.go b/x/cheqd/types/messages_write_request_test.go new file mode 100644 index 000000000..a392c2e64 --- /dev/null +++ b/x/cheqd/types/messages_write_request_test.go @@ -0,0 +1,32 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/stretchr/testify/require" + "testing" +) + +func TestNewMsgWriteRequestValidation(t *testing.T) { + cases := []struct { + valid bool + msg *MsgWriteRequest + errMsg string + }{ + {true, NewMsgWriteRequest(&types.Any{TypeUrl: "1", Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), ""}, + {false, NewMsgWriteRequest(&types.Any{TypeUrl: "1"}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, + {false, NewMsgWriteRequest(&types.Any{Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, + {false, NewMsgWriteRequest(nil, nil, nil), "Invalid Data: it is required: bad request"}, + {false, NewMsgWriteRequest(&types.Any{TypeUrl: "1", Value: []byte{1}}, nil, nil), "Invalid Signatures: it is required: bad request"}, + } + + for _, tc := range cases { + err := tc.msg.ValidateBasic() + + if tc.valid { + require.Nil(t, err) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + } +} diff --git a/x/cheqd/types/query.pb.go b/x/cheqd/types/query.pb.go index fc6f7f22a..4cad255d2 100644 --- a/x/cheqd/types/query.pb.go +++ b/x/cheqd/types/query.pb.go @@ -75,7 +75,7 @@ func (m *QueryGetCredDefRequest) GetId() string { } type QueryGetCredDefResponse struct { - CredDef *CredDef `protobuf:"bytes,1,opt,name=CredDef,proto3" json:"CredDef,omitempty"` + CredDef *CredDef `protobuf:"bytes,1,opt,name=cred_def,json=credDef,proto3" json:"cred_def,omitempty"` } func (m *QueryGetCredDefResponse) Reset() { *m = QueryGetCredDefResponse{} } @@ -163,7 +163,7 @@ func (m *QueryGetSchemaRequest) GetId() string { } type QueryGetSchemaResponse struct { - Schema *Schema `protobuf:"bytes,1,opt,name=Schema,proto3" json:"Schema,omitempty"` + Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` } func (m *QueryGetSchemaResponse) Reset() { *m = QueryGetSchemaResponse{} } @@ -251,7 +251,7 @@ func (m *QueryGetDidRequest) GetId() string { } type QueryGetDidResponse struct { - Did *Did `protobuf:"bytes,1,opt,name=Did,proto3" json:"Did,omitempty"` + Did *Did `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` } func (m *QueryGetDidResponse) Reset() { *m = QueryGetDidResponse{} } @@ -306,35 +306,36 @@ func init() { func init() { proto.RegisterFile("cheqd/query.proto", fileDescriptor_bf3698559b3858f5) } var fileDescriptor_bf3698559b3858f5 = []byte{ - // 441 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x4f, 0x8f, 0xd2, 0x40, - 0x14, 0x67, 0x20, 0x62, 0x1c, 0x12, 0x8d, 0x43, 0x14, 0xd3, 0x90, 0x82, 0x15, 0x03, 0x82, 0x76, - 0x04, 0x0f, 0x26, 0x1e, 0x05, 0xe3, 0x19, 0x8c, 0x17, 0x6f, 0x6d, 0x67, 0x2c, 0x93, 0x48, 0xa7, - 0x30, 0x83, 0x91, 0x18, 0x2f, 0xde, 0xbc, 0x99, 0x18, 0x0f, 0x7e, 0x22, 0x3d, 0x92, 0x78, 0xd9, - 0xe3, 0x06, 0xf6, 0x83, 0x6c, 0x3a, 0x33, 0x5d, 0x96, 0xec, 0x4e, 0xe0, 0xd4, 0xe6, 0x97, 0xdf, - 0xbf, 0xbe, 0xf7, 0x0a, 0xef, 0x46, 0x53, 0x3a, 0x27, 0x78, 0xbe, 0xa4, 0x8b, 0x95, 0x9f, 0x2e, - 0xb8, 0xe4, 0xa8, 0xa6, 0x20, 0x46, 0x7c, 0xf5, 0x4c, 0x38, 0xa1, 0xfa, 0xcd, 0xa9, 0xc7, 0x9c, - 0xc7, 0x9f, 0x28, 0x0e, 0x52, 0x86, 0x83, 0x24, 0xe1, 0x32, 0x90, 0x8c, 0x27, 0x42, 0xcb, 0x9c, - 0x6e, 0xc4, 0xc5, 0x8c, 0x0b, 0x1c, 0x06, 0x82, 0x6a, 0x3f, 0xfc, 0xb9, 0x1f, 0x52, 0x19, 0xf4, - 0x71, 0x1a, 0xc4, 0x2c, 0x51, 0x64, 0xc3, 0xad, 0xea, 0xd4, 0x68, 0x41, 0xc9, 0x88, 0x7e, 0x34, - 0x20, 0xd2, 0xa0, 0x88, 0xa6, 0x74, 0x16, 0x18, 0xec, 0x8e, 0xc6, 0xb2, 0x36, 0x0a, 0xf0, 0x3a, - 0xf0, 0xfe, 0x38, 0xf3, 0x7e, 0x4b, 0xe5, 0x50, 0xab, 0x27, 0x74, 0xbe, 0xa4, 0x42, 0xa2, 0xdb, - 0xb0, 0xc8, 0xc8, 0x03, 0xd0, 0x04, 0x9d, 0x5b, 0x93, 0x22, 0x23, 0xde, 0x7b, 0x58, 0xbb, 0xc2, - 0x14, 0x29, 0x4f, 0x04, 0x45, 0xaf, 0xe0, 0x4d, 0x03, 0x29, 0x7e, 0x65, 0xd0, 0xf4, 0x2d, 0xdf, - 0xec, 0xe7, 0xd2, 0x5c, 0xe0, 0xb5, 0xe1, 0xbd, 0xdc, 0xf6, 0x9d, 0x6a, 0x6a, 0xcb, 0x1f, 0xef, - 0x9a, 0xe6, 0x44, 0x13, 0xff, 0x12, 0x96, 0x35, 0x62, 0xd2, 0x1b, 0xd6, 0x74, 0x23, 0x34, 0x74, - 0xaf, 0x05, 0x51, 0x6e, 0x39, 0x62, 0xc4, 0x16, 0xfc, 0x06, 0x56, 0xf7, 0x58, 0x26, 0xd5, 0x87, - 0xa5, 0x91, 0xe1, 0x55, 0x06, 0x75, 0x6b, 0x64, 0x26, 0xc9, 0x88, 0x83, 0xbf, 0x25, 0x78, 0x43, - 0xf9, 0xa0, 0x3f, 0xe0, 0x62, 0x5e, 0x08, 0x5b, 0x85, 0xd7, 0xaf, 0xc5, 0x79, 0x7e, 0xbc, 0x40, - 0x17, 0xf5, 0x7a, 0xdf, 0xff, 0x9f, 0xfd, 0x2a, 0x3e, 0x46, 0x8f, 0xb0, 0xb9, 0x92, 0x5c, 0x87, - 0xf7, 0xae, 0x06, 0x7f, 0x65, 0xe4, 0x1b, 0xfa, 0x0d, 0xf2, 0x61, 0x22, 0xff, 0x60, 0xd2, 0xde, - 0xc2, 0x1c, 0x7c, 0x34, 0xdf, 0x14, 0xeb, 0xaa, 0x62, 0x2d, 0xe4, 0x59, 0x8a, 0xe9, 0xcb, 0xd5, - 0xbd, 0x7e, 0x00, 0x35, 0x6e, 0xd4, 0x3b, 0x18, 0xb2, 0xdb, 0xa4, 0xf3, 0xf4, 0x38, 0xb2, 0xa9, - 0xd3, 0x56, 0x75, 0x1e, 0xa2, 0x86, 0xa5, 0x0e, 0x61, 0x44, 0x75, 0x79, 0x3d, 0xfc, 0xb7, 0x71, - 0xc1, 0x7a, 0xe3, 0x82, 0xd3, 0x8d, 0x0b, 0x7e, 0x6e, 0xdd, 0xc2, 0x7a, 0xeb, 0x16, 0x4e, 0xb6, - 0x6e, 0xe1, 0xc3, 0x93, 0x98, 0xc9, 0xe9, 0x32, 0xf4, 0x23, 0x3e, 0xbb, 0x6c, 0xf2, 0x4c, 0xb9, - 0x7c, 0x31, 0x90, 0x5c, 0xa5, 0x54, 0x84, 0x65, 0xf5, 0xff, 0xbd, 0x38, 0x0f, 0x00, 0x00, 0xff, - 0xff, 0x71, 0xd4, 0x20, 0xe8, 0x31, 0x04, 0x00, 0x00, + // 449 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x3f, 0xef, 0x12, 0x31, + 0x18, 0xc7, 0x29, 0x44, 0xd0, 0x92, 0x68, 0x2c, 0x51, 0xcc, 0x85, 0x1c, 0x78, 0x62, 0x40, 0xd0, + 0xab, 0xe0, 0xe0, 0xe0, 0x26, 0x18, 0x67, 0x30, 0x71, 0x70, 0x31, 0x77, 0xd7, 0x72, 0x34, 0x91, + 0xeb, 0x41, 0x8b, 0x91, 0x18, 0x17, 0x37, 0x37, 0x13, 0xe3, 0xe0, 0x2b, 0xd2, 0x91, 0xc4, 0xc5, + 0xd1, 0x80, 0x2f, 0xc4, 0x5c, 0xdb, 0x0b, 0x12, 0x7f, 0x0d, 0x4c, 0x90, 0x27, 0xdf, 0x3f, 0x9f, + 0xf6, 0xe9, 0xc1, 0xeb, 0xd1, 0x9c, 0x2e, 0x09, 0x5e, 0xae, 0xe9, 0x6a, 0xe3, 0xa7, 0x2b, 0x2e, + 0x39, 0xaa, 0xab, 0x11, 0x23, 0xbe, 0xfa, 0x4d, 0x38, 0xa1, 0xfa, 0x9f, 0xd3, 0x88, 0x39, 0x8f, + 0xdf, 0x50, 0x1c, 0xa4, 0x0c, 0x07, 0x49, 0xc2, 0x65, 0x20, 0x19, 0x4f, 0x84, 0xb6, 0x39, 0xbd, + 0x88, 0x8b, 0x05, 0x17, 0x38, 0x0c, 0x04, 0xd5, 0x79, 0xf8, 0xed, 0x20, 0xa4, 0x32, 0x18, 0xe0, + 0x34, 0x88, 0x59, 0xa2, 0xc4, 0x46, 0x5b, 0xd3, 0xad, 0xd1, 0x8a, 0x92, 0x31, 0x9d, 0x99, 0x21, + 0xd2, 0x43, 0x11, 0xcd, 0xe9, 0x22, 0x30, 0xb3, 0x6b, 0x7a, 0x96, 0xd1, 0xa8, 0x81, 0xd7, 0x85, + 0x37, 0x27, 0x59, 0xf6, 0x73, 0x2a, 0x47, 0xda, 0x3d, 0xa5, 0xcb, 0x35, 0x15, 0x12, 0x5d, 0x85, + 0x45, 0x46, 0x6e, 0x81, 0x16, 0xe8, 0x5e, 0x99, 0x16, 0x19, 0xf1, 0x5e, 0xc2, 0xfa, 0x7f, 0x4a, + 0x91, 0xf2, 0x44, 0x50, 0xf4, 0x04, 0x5e, 0xce, 0xaa, 0x5f, 0x13, 0x3a, 0x53, 0x86, 0xea, 0xb0, + 0xe5, 0x5b, 0x0e, 0xed, 0xe7, 0xde, 0x8a, 0x81, 0xf5, 0x3a, 0xf0, 0x46, 0x9e, 0xfb, 0x42, 0xa1, + 0xda, 0x00, 0x26, 0x07, 0xd4, 0x5c, 0x68, 0xfa, 0x1f, 0xc3, 0xb2, 0x3e, 0xa5, 0x69, 0x6f, 0x5a, + 0xdb, 0x8d, 0xd1, 0xc8, 0xbd, 0x36, 0x44, 0x79, 0xe4, 0x98, 0x11, 0x5b, 0xf1, 0x33, 0x58, 0x3b, + 0x52, 0x99, 0x56, 0x1f, 0x96, 0x88, 0xd1, 0x55, 0x87, 0x0d, 0x6b, 0x65, 0x66, 0xc9, 0x84, 0xc3, + 0xef, 0x25, 0x78, 0x49, 0xe5, 0xa0, 0x6f, 0x00, 0x56, 0xcc, 0x3d, 0x20, 0x6c, 0x35, 0x5e, 0xbc, + 0x17, 0xe7, 0xe1, 0xf9, 0x06, 0x0d, 0xea, 0xf5, 0x3f, 0xfe, 0xfc, 0xf3, 0xa5, 0x78, 0x17, 0xdd, + 0xc1, 0xe6, 0x99, 0xe4, 0x3e, 0x7c, 0xf4, 0x6c, 0xf0, 0x7b, 0x46, 0x3e, 0xa0, 0xaf, 0x00, 0x96, + 0xf5, 0x2d, 0x21, 0xff, 0x64, 0xd3, 0xd1, 0xc2, 0x1c, 0x7c, 0xb6, 0xde, 0x80, 0xf5, 0x14, 0x58, + 0x1b, 0x79, 0x16, 0x30, 0xbd, 0x25, 0xcd, 0xf5, 0x09, 0xc0, 0xd2, 0x98, 0x11, 0xd4, 0x3f, 0x59, + 0x72, 0xd8, 0xa4, 0x73, 0xff, 0x3c, 0xb1, 0xc1, 0xe9, 0x28, 0x9c, 0xdb, 0xa8, 0x69, 0xc1, 0x21, + 0x8c, 0x28, 0x96, 0xa7, 0xa3, 0x1f, 0x3b, 0x17, 0x6c, 0x77, 0x2e, 0xf8, 0xbd, 0x73, 0xc1, 0xe7, + 0xbd, 0x5b, 0xd8, 0xee, 0xdd, 0xc2, 0xaf, 0xbd, 0x5b, 0x78, 0x75, 0x2f, 0x66, 0x72, 0xbe, 0x0e, + 0xfd, 0x88, 0x2f, 0xfe, 0x0d, 0x79, 0xa0, 0x52, 0xde, 0x99, 0x91, 0xdc, 0xa4, 0x54, 0x84, 0x65, + 0xf5, 0x01, 0x3e, 0xfa, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x64, 0xdb, 0x8d, 0x32, 0x04, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/cheqd/types/schema.pb.go b/x/cheqd/types/schema.pb.go index c994ce0de..9b8031e60 100644 --- a/x/cheqd/types/schema.pb.go +++ b/x/cheqd/types/schema.pb.go @@ -24,11 +24,12 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Schema struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` - AttrNames []string `protobuf:"bytes,5,rep,name=attrNames,proto3" json:"attrNames,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + AttrNames []string `protobuf:"bytes,5,rep,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` + Controller []string `protobuf:"bytes,6,rep,name=controller,proto3" json:"controller,omitempty"` } func (m *Schema) Reset() { *m = Schema{} } @@ -71,11 +72,11 @@ func (m *Schema) GetId() string { return "" } -func (m *Schema) GetAuthors() []string { +func (m *Schema) GetType() string { if m != nil { - return m.Authors + return m.Type } - return nil + return "" } func (m *Schema) GetName() string { @@ -99,6 +100,13 @@ func (m *Schema) GetAttrNames() []string { return nil } +func (m *Schema) GetController() []string { + if m != nil { + return m.Controller + } + return nil +} + func init() { proto.RegisterType((*Schema)(nil), "cheqdid.cheqdnode.cheqd.Schema") } @@ -106,21 +114,23 @@ func init() { func init() { proto.RegisterFile("cheqd/schema.proto", fileDescriptor_96d8c360e747a40a) } var fileDescriptor_96d8c360e747a40a = []byte{ - // 223 bytes of a gzipped FileDescriptorProto + // 242 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x2f, 0x4e, 0xce, 0x48, 0xcd, 0x4d, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, - 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0xaa, 0xe3, 0x62, 0x0b, 0x06, 0x6b, - 0x17, 0xe2, 0xe3, 0x62, 0xca, 0x4c, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x62, 0xca, 0x4c, - 0x11, 0x92, 0xe0, 0x62, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0x2a, 0x96, 0x60, 0x52, 0x60, 0xd6, - 0xe0, 0x0c, 0x82, 0x71, 0x85, 0x84, 0xb8, 0x58, 0xf2, 0x12, 0x73, 0x53, 0x25, 0x98, 0xc1, 0x6a, - 0xc1, 0x6c, 0x90, 0xea, 0xb2, 0xd4, 0xa2, 0xe2, 0xcc, 0xfc, 0x3c, 0x09, 0x16, 0xb0, 0x30, 0x8c, - 0x2b, 0x24, 0xc3, 0xc5, 0x99, 0x58, 0x52, 0x52, 0xe4, 0x97, 0x98, 0x9b, 0x5a, 0x2c, 0xc1, 0x0a, - 0x36, 0x09, 0x21, 0xe0, 0xe4, 0x7c, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, - 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, - 0x9a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0x10, 0x7f, 0x82, 0x49, - 0x5d, 0x90, 0x97, 0xf4, 0x2b, 0xa0, 0x42, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0xbf, - 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x14, 0xfe, 0x28, 0x10, 0x01, 0x00, 0x00, + 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0x9a, 0xc9, 0xc8, 0xc5, 0x16, 0x0c, + 0xd6, 0x2f, 0xc4, 0xc7, 0xc5, 0x94, 0x99, 0x22, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0xc4, 0x94, + 0x99, 0x22, 0x24, 0xc4, 0xc5, 0x52, 0x52, 0x59, 0x90, 0x2a, 0xc1, 0x04, 0x16, 0x01, 0xb3, 0x41, + 0x62, 0x79, 0x89, 0xb9, 0xa9, 0x12, 0xcc, 0x10, 0x31, 0x10, 0x5b, 0x48, 0x82, 0x8b, 0xbd, 0x2c, + 0xb5, 0xa8, 0x38, 0x33, 0x3f, 0x4f, 0x82, 0x05, 0x2c, 0x0c, 0xe3, 0x0a, 0xc9, 0x72, 0x71, 0x25, + 0x96, 0x94, 0x14, 0xc5, 0x83, 0x94, 0x15, 0x4b, 0xb0, 0x2a, 0x30, 0x6b, 0x70, 0x06, 0x71, 0x82, + 0x44, 0xfc, 0x40, 0x02, 0x42, 0x72, 0x5c, 0x5c, 0xc9, 0xf9, 0x79, 0x25, 0x45, 0xf9, 0x39, 0x39, + 0xa9, 0x45, 0x12, 0x6c, 0x60, 0x69, 0x24, 0x11, 0x27, 0xe7, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, + 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, + 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, + 0x87, 0x84, 0x01, 0x98, 0xd4, 0x05, 0x79, 0x57, 0xbf, 0x02, 0x2a, 0x04, 0x72, 0x70, 0x71, 0x12, + 0x1b, 0xd8, 0x9f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0xab, 0x48, 0x4b, 0x2c, 0x01, + 0x00, 0x00, } func (m *Schema) Marshal() (dAtA []byte, err error) { @@ -143,6 +153,15 @@ func (m *Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Controller) > 0 { + for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Controller[iNdEx]) + copy(dAtA[i:], m.Controller[iNdEx]) + i = encodeVarintSchema(dAtA, i, uint64(len(m.Controller[iNdEx]))) + i-- + dAtA[i] = 0x32 + } + } if len(m.AttrNames) > 0 { for iNdEx := len(m.AttrNames) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.AttrNames[iNdEx]) @@ -166,14 +185,12 @@ func (m *Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if len(m.Authors) > 0 { - for iNdEx := len(m.Authors) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Authors[iNdEx]) - copy(dAtA[i:], m.Authors[iNdEx]) - i = encodeVarintSchema(dAtA, i, uint64(len(m.Authors[iNdEx]))) - i-- - dAtA[i] = 0x12 - } + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintSchema(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0x12 } if len(m.Id) > 0 { i -= len(m.Id) @@ -206,11 +223,9 @@ func (m *Schema) Size() (n int) { if l > 0 { n += 1 + l + sovSchema(uint64(l)) } - if len(m.Authors) > 0 { - for _, s := range m.Authors { - l = len(s) - n += 1 + l + sovSchema(uint64(l)) - } + l = len(m.Type) + if l > 0 { + n += 1 + l + sovSchema(uint64(l)) } l = len(m.Name) if l > 0 { @@ -226,6 +241,12 @@ func (m *Schema) Size() (n int) { n += 1 + l + sovSchema(uint64(l)) } } + if len(m.Controller) > 0 { + for _, s := range m.Controller { + l = len(s) + n += 1 + l + sovSchema(uint64(l)) + } + } return n } @@ -298,7 +319,7 @@ func (m *Schema) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authors", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -326,7 +347,7 @@ func (m *Schema) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Authors = append(m.Authors, string(dAtA[iNdEx:postIndex])) + m.Type = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -424,6 +445,38 @@ func (m *Schema) Unmarshal(dAtA []byte) error { } m.AttrNames = append(m.AttrNames, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSchema + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSchema + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSchema + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSchema(dAtA[iNdEx:]) diff --git a/x/cheqd/types/state.pb.go b/x/cheqd/types/stateValue.pb.go similarity index 75% rename from x/cheqd/types/state.pb.go rename to x/cheqd/types/stateValue.pb.go index 302e84e52..7814d0ed3 100644 --- a/x/cheqd/types/state.pb.go +++ b/x/cheqd/types/stateValue.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: cheqd/state.proto +// source: cheqd/stateValue.proto package types @@ -28,7 +28,7 @@ type StateValue struct { // *StateValue_Schema // *StateValue_CredDef Data isStateValue_Data `protobuf_oneof:"data"` - Txhash string `protobuf:"bytes,4,opt,name=txhash,proto3" json:"txhash,omitempty"` + TxHash string `protobuf:"bytes,4,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` Timestamp string `protobuf:"bytes,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` } @@ -37,7 +37,7 @@ func (m *StateValue) Reset() { *m = StateValue{} } func (m *StateValue) String() string { return proto.CompactTextString(m) } func (*StateValue) ProtoMessage() {} func (*StateValue) Descriptor() ([]byte, []int) { - return fileDescriptor_ccb8998165d67691, []int{0} + return fileDescriptor_8f10490b1a4abc33, []int{0} } func (m *StateValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -79,7 +79,7 @@ type StateValue_Schema struct { Schema *Schema `protobuf:"bytes,2,opt,name=schema,proto3,oneof" json:"schema,omitempty"` } type StateValue_CredDef struct { - CredDef *CredDef `protobuf:"bytes,3,opt,name=credDef,proto3,oneof" json:"credDef,omitempty"` + CredDef *CredDef `protobuf:"bytes,3,opt,name=cred_def,json=credDef,proto3,oneof" json:"cred_def,omitempty"` } func (*StateValue_Did) isStateValue_Data() {} @@ -114,9 +114,9 @@ func (m *StateValue) GetCredDef() *CredDef { return nil } -func (m *StateValue) GetTxhash() string { +func (m *StateValue) GetTxHash() string { if m != nil { - return m.Txhash + return m.TxHash } return "" } @@ -149,14 +149,14 @@ type Metadata struct { Created string `protobuf:"bytes,1,opt,name=created,proto3" json:"created,omitempty"` Updated string `protobuf:"bytes,2,opt,name=updated,proto3" json:"updated,omitempty"` Deactivated bool `protobuf:"varint,3,opt,name=deactivated,proto3" json:"deactivated,omitempty"` - VersionId string `protobuf:"bytes,4,opt,name=versionId,proto3" json:"versionId,omitempty"` + VersionId string `protobuf:"bytes,4,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` } func (m *Metadata) Reset() { *m = Metadata{} } func (m *Metadata) String() string { return proto.CompactTextString(m) } func (*Metadata) ProtoMessage() {} func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_ccb8998165d67691, []int{1} + return fileDescriptor_8f10490b1a4abc33, []int{1} } func (m *Metadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -218,33 +218,34 @@ func init() { proto.RegisterType((*Metadata)(nil), "cheqdid.cheqdnode.cheqd.Metadata") } -func init() { proto.RegisterFile("cheqd/state.proto", fileDescriptor_ccb8998165d67691) } +func init() { proto.RegisterFile("cheqd/stateValue.proto", fileDescriptor_8f10490b1a4abc33) } -var fileDescriptor_ccb8998165d67691 = []byte{ - // 356 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0x3f, 0x4f, 0xfa, 0x40, - 0x18, 0x6e, 0x81, 0x5f, 0x7f, 0x70, 0x0c, 0xc6, 0x33, 0xd1, 0x0b, 0x21, 0x67, 0x65, 0xc2, 0xc1, - 0x62, 0x74, 0x32, 0xd1, 0x05, 0x18, 0x70, 0x70, 0x39, 0x12, 0x07, 0xb7, 0xa3, 0xf7, 0x6a, 0x2f, - 0xb1, 0xb4, 0xd2, 0x83, 0xe0, 0xe2, 0x67, 0xf0, 0xc3, 0xf8, 0x21, 0x1c, 0x19, 0x1d, 0x0d, 0x7c, - 0x11, 0x73, 0x7f, 0x10, 0x97, 0x2e, 0xbd, 0xbe, 0xcf, 0x9f, 0x7b, 0xfa, 0x34, 0x2f, 0xda, 0x8f, - 0x13, 0x78, 0x11, 0xbd, 0x42, 0x71, 0x05, 0x51, 0x3e, 0xcb, 0x54, 0x86, 0x8f, 0x0c, 0x24, 0x45, - 0x64, 0xce, 0x69, 0x26, 0xc0, 0xbe, 0xb5, 0xf6, 0xac, 0x56, 0x53, 0x46, 0xd9, 0x3a, 0xb0, 0x40, - 0x3c, 0x03, 0x31, 0x84, 0x47, 0x07, 0x62, 0x77, 0x63, 0x9c, 0x40, 0xca, 0x2d, 0xd6, 0xf9, 0xa8, - 0x20, 0x34, 0xd6, 0x11, 0xf7, 0xfc, 0x79, 0x0e, 0xf8, 0x1c, 0x55, 0x85, 0x14, 0xc4, 0x0f, 0xfd, - 0x6e, 0xf3, 0xa2, 0x1d, 0x95, 0xe4, 0x45, 0x43, 0x29, 0x46, 0x1e, 0xd3, 0x52, 0x7c, 0x85, 0x02, - 0x7b, 0x21, 0xa9, 0x18, 0xd3, 0x71, 0xa9, 0x69, 0x6c, 0x64, 0x23, 0x8f, 0x39, 0x03, 0xbe, 0x46, - 0xff, 0xdd, 0x07, 0x92, 0xaa, 0xf1, 0x86, 0xa5, 0xde, 0x81, 0xd5, 0x8d, 0x3c, 0xb6, 0xb5, 0xe0, - 0x43, 0x14, 0xa8, 0x65, 0xc2, 0x8b, 0x84, 0xd4, 0x42, 0xbf, 0xdb, 0x60, 0x6e, 0xc2, 0x6d, 0xd4, - 0x50, 0x32, 0x85, 0x42, 0xf1, 0x34, 0x27, 0xff, 0x0c, 0xb5, 0x03, 0xf0, 0x0d, 0xaa, 0xa7, 0xa0, - 0xb8, 0xe0, 0x8a, 0x93, 0xc0, 0x84, 0x9e, 0x94, 0x86, 0xde, 0x39, 0x21, 0xfb, 0xb5, 0xf4, 0x03, - 0x54, 0xd3, 0x67, 0xe7, 0x0d, 0xd5, 0xb7, 0x2c, 0x26, 0xa6, 0x06, 0x57, 0x60, 0xff, 0x5b, 0x83, - 0x6d, 0x47, 0xcd, 0xcc, 0x73, 0x61, 0x98, 0x8a, 0x65, 0xdc, 0x88, 0x43, 0xd4, 0x14, 0xc0, 0x63, - 0x25, 0x17, 0x86, 0xd5, 0xf5, 0xeb, 0xec, 0x2f, 0xa4, 0x6b, 0x2c, 0x60, 0x56, 0xc8, 0x6c, 0x7a, - 0x2b, 0x5c, 0xc3, 0x1d, 0xd0, 0x1f, 0x7c, 0xae, 0xa9, 0xbf, 0x5a, 0x53, 0xff, 0x7b, 0x4d, 0xfd, - 0xf7, 0x0d, 0xf5, 0x56, 0x1b, 0xea, 0x7d, 0x6d, 0xa8, 0xf7, 0x70, 0xfa, 0x24, 0x55, 0x32, 0x9f, - 0x44, 0x71, 0x96, 0xf6, 0xdc, 0x12, 0xe8, 0xe7, 0x99, 0xee, 0xd5, 0x5b, 0x3a, 0x48, 0xbd, 0xe6, - 0x50, 0x4c, 0x02, 0xb3, 0x02, 0x97, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x57, 0xd7, 0x83, - 0x6a, 0x02, 0x00, 0x00, +var fileDescriptor_8f10490b1a4abc33 = []byte{ + // 369 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0x3d, 0x4f, 0xfa, 0x40, + 0x1c, 0x6e, 0x81, 0x7f, 0xa1, 0xc7, 0xf0, 0x4f, 0xce, 0x44, 0x1a, 0x82, 0xb5, 0x32, 0xe1, 0x60, + 0x31, 0x3a, 0x39, 0xb8, 0x00, 0x43, 0x1d, 0x5c, 0x8e, 0xc4, 0xc1, 0x85, 0x1c, 0xbd, 0x1f, 0xf6, + 0x12, 0x4b, 0x2b, 0x3d, 0x08, 0x4e, 0x7e, 0x05, 0x3f, 0x8d, 0x9f, 0xc1, 0x91, 0xd1, 0xd1, 0xc0, + 0x17, 0x31, 0xf7, 0x02, 0xba, 0x74, 0xe9, 0xf5, 0x9e, 0x97, 0x7b, 0xee, 0xb9, 0xfc, 0xd0, 0x71, + 0x9c, 0xc0, 0x0b, 0xeb, 0x17, 0x82, 0x0a, 0x78, 0xa0, 0xcf, 0x4b, 0x08, 0xf3, 0x45, 0x26, 0x32, + 0xdc, 0x52, 0x38, 0x67, 0xa1, 0x5a, 0xe7, 0x19, 0x03, 0xfd, 0xd7, 0xfe, 0xaf, 0x0d, 0x92, 0x52, + 0xca, 0xf6, 0x91, 0x06, 0xe2, 0x05, 0xb0, 0x11, 0xcc, 0x0c, 0x88, 0xcd, 0xb1, 0x71, 0x02, 0x29, + 0xd5, 0x58, 0xf7, 0xa3, 0x82, 0xd0, 0xf8, 0x90, 0x83, 0x2f, 0x51, 0x95, 0x71, 0xe6, 0xd9, 0x81, + 0xdd, 0x6b, 0x5e, 0x75, 0xc2, 0x92, 0xbc, 0x70, 0xc4, 0x59, 0x64, 0x11, 0x29, 0xc5, 0x37, 0xc8, + 0xd1, 0x07, 0x7a, 0x15, 0x65, 0x3a, 0x2d, 0x35, 0x8d, 0x95, 0x2c, 0xb2, 0x88, 0x31, 0xe0, 0x5b, + 0xd4, 0x90, 0x17, 0x9c, 0x30, 0x98, 0x79, 0x55, 0x65, 0x0e, 0x4a, 0xcd, 0x43, 0xdd, 0x24, 0xb2, + 0x48, 0xdd, 0x94, 0xc2, 0x2d, 0x54, 0x17, 0xeb, 0x49, 0x42, 0x8b, 0xc4, 0xab, 0x05, 0x76, 0xcf, + 0x25, 0x8e, 0x58, 0x47, 0xb4, 0x48, 0x70, 0x07, 0xb9, 0x82, 0xa7, 0x50, 0x08, 0x9a, 0xe6, 0xde, + 0x3f, 0x45, 0xfd, 0x02, 0x32, 0x35, 0x05, 0x41, 0x19, 0x15, 0xd4, 0x73, 0x54, 0xea, 0x59, 0x69, + 0xea, 0xbd, 0x11, 0x92, 0x83, 0x65, 0xe0, 0xa0, 0x9a, 0x5c, 0xbb, 0x6f, 0xa8, 0xb1, 0x67, 0xb1, + 0x87, 0xe4, 0xa5, 0xa8, 0x00, 0xfd, 0x72, 0x2e, 0xd9, 0x6f, 0x25, 0xb3, 0xcc, 0x99, 0x62, 0x2a, + 0x9a, 0x31, 0x5b, 0x1c, 0xa0, 0x26, 0x03, 0x1a, 0x0b, 0xbe, 0x52, 0xac, 0xec, 0xdf, 0x20, 0x7f, + 0x21, 0x7c, 0x82, 0xd0, 0x0a, 0x16, 0x05, 0xcf, 0xe6, 0x13, 0xce, 0x4c, 0x45, 0xd7, 0x20, 0x77, + 0x6c, 0x30, 0xfc, 0xdc, 0xfa, 0xf6, 0x66, 0xeb, 0xdb, 0xdf, 0x5b, 0xdf, 0x7e, 0xdf, 0xf9, 0xd6, + 0x66, 0xe7, 0x5b, 0x5f, 0x3b, 0xdf, 0x7a, 0x3c, 0x7f, 0xe2, 0x22, 0x59, 0x4e, 0xc3, 0x38, 0x4b, + 0xfb, 0x66, 0x0e, 0xe4, 0xf7, 0x42, 0x16, 0xeb, 0xaf, 0x0d, 0x24, 0x5e, 0x73, 0x28, 0xa6, 0x8e, + 0x9a, 0x82, 0xeb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x9a, 0x56, 0xd4, 0x72, 0x02, 0x00, + 0x00, } func (m *StateValue) Marshal() (dAtA []byte, err error) { @@ -274,7 +275,7 @@ func (m *StateValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { return 0, err } i -= size - i = encodeVarintState(dAtA, i, uint64(size)) + i = encodeVarintStateValue(dAtA, i, uint64(size)) } i-- dAtA[i] = 0x32 @@ -282,14 +283,14 @@ func (m *StateValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { if len(m.Timestamp) > 0 { i -= len(m.Timestamp) copy(dAtA[i:], m.Timestamp) - i = encodeVarintState(dAtA, i, uint64(len(m.Timestamp))) + i = encodeVarintStateValue(dAtA, i, uint64(len(m.Timestamp))) i-- dAtA[i] = 0x2a } - if len(m.Txhash) > 0 { - i -= len(m.Txhash) - copy(dAtA[i:], m.Txhash) - i = encodeVarintState(dAtA, i, uint64(len(m.Txhash))) + if len(m.TxHash) > 0 { + i -= len(m.TxHash) + copy(dAtA[i:], m.TxHash) + i = encodeVarintStateValue(dAtA, i, uint64(len(m.TxHash))) i-- dAtA[i] = 0x22 } @@ -319,7 +320,7 @@ func (m *StateValue_Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { return 0, err } i -= size - i = encodeVarintState(dAtA, i, uint64(size)) + i = encodeVarintStateValue(dAtA, i, uint64(size)) } i-- dAtA[i] = 0xa @@ -340,7 +341,7 @@ func (m *StateValue_Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { return 0, err } i -= size - i = encodeVarintState(dAtA, i, uint64(size)) + i = encodeVarintStateValue(dAtA, i, uint64(size)) } i-- dAtA[i] = 0x12 @@ -361,7 +362,7 @@ func (m *StateValue_CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return 0, err } i -= size - i = encodeVarintState(dAtA, i, uint64(size)) + i = encodeVarintStateValue(dAtA, i, uint64(size)) } i-- dAtA[i] = 0x1a @@ -391,7 +392,7 @@ func (m *Metadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { if len(m.VersionId) > 0 { i -= len(m.VersionId) copy(dAtA[i:], m.VersionId) - i = encodeVarintState(dAtA, i, uint64(len(m.VersionId))) + i = encodeVarintStateValue(dAtA, i, uint64(len(m.VersionId))) i-- dAtA[i] = 0x22 } @@ -408,22 +409,22 @@ func (m *Metadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { if len(m.Updated) > 0 { i -= len(m.Updated) copy(dAtA[i:], m.Updated) - i = encodeVarintState(dAtA, i, uint64(len(m.Updated))) + i = encodeVarintStateValue(dAtA, i, uint64(len(m.Updated))) i-- dAtA[i] = 0x12 } if len(m.Created) > 0 { i -= len(m.Created) copy(dAtA[i:], m.Created) - i = encodeVarintState(dAtA, i, uint64(len(m.Created))) + i = encodeVarintStateValue(dAtA, i, uint64(len(m.Created))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func encodeVarintState(dAtA []byte, offset int, v uint64) int { - offset -= sovState(v) +func encodeVarintStateValue(dAtA []byte, offset int, v uint64) int { + offset -= sovStateValue(v) base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -442,17 +443,17 @@ func (m *StateValue) Size() (n int) { if m.Data != nil { n += m.Data.Size() } - l = len(m.Txhash) + l = len(m.TxHash) if l > 0 { - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } l = len(m.Timestamp) if l > 0 { - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } if m.Metadata != nil { l = m.Metadata.Size() - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } return n } @@ -465,7 +466,7 @@ func (m *StateValue_Did) Size() (n int) { _ = l if m.Did != nil { l = m.Did.Size() - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } return n } @@ -477,7 +478,7 @@ func (m *StateValue_Schema) Size() (n int) { _ = l if m.Schema != nil { l = m.Schema.Size() - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } return n } @@ -489,7 +490,7 @@ func (m *StateValue_CredDef) Size() (n int) { _ = l if m.CredDef != nil { l = m.CredDef.Size() - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } return n } @@ -501,27 +502,27 @@ func (m *Metadata) Size() (n int) { _ = l l = len(m.Created) if l > 0 { - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } l = len(m.Updated) if l > 0 { - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } if m.Deactivated { n += 2 } l = len(m.VersionId) if l > 0 { - n += 1 + l + sovState(uint64(l)) + n += 1 + l + sovStateValue(uint64(l)) } return n } -func sovState(x uint64) (n int) { +func sovStateValue(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } -func sozState(x uint64) (n int) { - return sovState(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +func sozStateValue(x uint64) (n int) { + return sovStateValue(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } func (m *StateValue) Unmarshal(dAtA []byte) error { l := len(dAtA) @@ -531,7 +532,7 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -559,7 +560,7 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -572,11 +573,11 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + msglen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF @@ -594,7 +595,7 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -607,11 +608,11 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + msglen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF @@ -629,7 +630,7 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -642,11 +643,11 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + msglen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF @@ -659,12 +660,12 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Txhash", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TxHash", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -678,16 +679,16 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + intStringLen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF } - m.Txhash = string(dAtA[iNdEx:postIndex]) + m.TxHash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: if wireType != 2 { @@ -696,7 +697,7 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -710,11 +711,11 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + intStringLen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF @@ -728,7 +729,7 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -741,11 +742,11 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + msglen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF @@ -759,12 +760,12 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipState(dAtA[iNdEx:]) + skippy, err := skipStateValue(dAtA[iNdEx:]) if err != nil { return err } if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -786,7 +787,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -814,7 +815,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -828,11 +829,11 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + intStringLen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF @@ -846,7 +847,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -860,11 +861,11 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + intStringLen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF @@ -878,7 +879,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -898,7 +899,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowState + return ErrIntOverflowStateValue } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -912,11 +913,11 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } postIndex := iNdEx + intStringLen if postIndex < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if postIndex > l { return io.ErrUnexpectedEOF @@ -925,12 +926,12 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipState(dAtA[iNdEx:]) + skippy, err := skipStateValue(dAtA[iNdEx:]) if err != nil { return err } if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthState + return ErrInvalidLengthStateValue } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -944,7 +945,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error { } return nil } -func skipState(dAtA []byte) (n int, err error) { +func skipStateValue(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 depth := 0 @@ -952,7 +953,7 @@ func skipState(dAtA []byte) (n int, err error) { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowState + return 0, ErrIntOverflowStateValue } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -969,7 +970,7 @@ func skipState(dAtA []byte) (n int, err error) { case 0: for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowState + return 0, ErrIntOverflowStateValue } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -985,7 +986,7 @@ func skipState(dAtA []byte) (n int, err error) { var length int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowState + return 0, ErrIntOverflowStateValue } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -998,14 +999,14 @@ func skipState(dAtA []byte) (n int, err error) { } } if length < 0 { - return 0, ErrInvalidLengthState + return 0, ErrInvalidLengthStateValue } iNdEx += length case 3: depth++ case 4: if depth == 0 { - return 0, ErrUnexpectedEndOfGroupState + return 0, ErrUnexpectedEndOfGroupStateValue } depth-- case 5: @@ -1014,7 +1015,7 @@ func skipState(dAtA []byte) (n int, err error) { return 0, fmt.Errorf("proto: illegal wireType %d", wireType) } if iNdEx < 0 { - return 0, ErrInvalidLengthState + return 0, ErrInvalidLengthStateValue } if depth == 0 { return iNdEx, nil @@ -1024,7 +1025,7 @@ func skipState(dAtA []byte) (n int, err error) { } var ( - ErrInvalidLengthState = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowState = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupState = fmt.Errorf("proto: unexpected end of group") + ErrInvalidLengthStateValue = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowStateValue = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupStateValue = fmt.Errorf("proto: unexpected end of group") ) diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 721acd6cd..caba50779 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -31,9 +31,8 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // this line is used by starport scaffolding # proto/tx/message type MsgWriteRequest struct { Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` - Signatures map[string]string `protobuf:"bytes,3,rep,name=signatures,proto3" json:"signatures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Signatures map[string]string `protobuf:"bytes,2,rep,name=signatures,proto3" json:"signatures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *MsgWriteRequest) Reset() { *m = MsgWriteRequest{} } @@ -76,13 +75,6 @@ func (m *MsgWriteRequest) GetData() *types.Any { return nil } -func (m *MsgWriteRequest) GetAuthors() []string { - if m != nil { - return m.Authors - } - return nil -} - func (m *MsgWriteRequest) GetSignatures() map[string]string { if m != nil { return m.Signatures @@ -101,11 +93,12 @@ type MsgCreateCredDef struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,4,opt,name=signatureType,proto3" json:"signatureType,omitempty"` + SignatureType string `protobuf:"bytes,4,opt,name=signature_type,json=signatureType,proto3" json:"signature_type,omitempty"` // Types that are valid to be assigned to Value: // *MsgCreateCredDef_ClType // *MsgCreateCredDef_AnyType - Value isMsgCreateCredDef_Value `protobuf_oneof:"value"` + Value isMsgCreateCredDef_Value `protobuf_oneof:"value"` + Controller []string `protobuf:"bytes,7,rep,name=controller,proto3" json:"controller,omitempty"` } func (m *MsgCreateCredDef) Reset() { *m = MsgCreateCredDef{} } @@ -206,6 +199,13 @@ func (m *MsgCreateCredDef) GetAnyType() *types.Any { return nil } +func (m *MsgCreateCredDef) GetController() []string { + if m != nil { + return m.Controller + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*MsgCreateCredDef) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -259,10 +259,12 @@ func (m *MsgCreateCredDefResponse) GetId() string { } type MsgCreateSchema struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - AttrNames []string `protobuf:"bytes,4,rep,name=attrNames,proto3" json:"attrNames,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + AttrNames []string `protobuf:"bytes,5,rep,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` + Controller []string `protobuf:"bytes,6,rep,name=controller,proto3" json:"controller,omitempty"` } func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } @@ -305,6 +307,13 @@ func (m *MsgCreateSchema) GetId() string { return "" } +func (m *MsgCreateSchema) GetType() string { + if m != nil { + return m.Type + } + return "" +} + func (m *MsgCreateSchema) GetName() string { if m != nil { return m.Name @@ -326,6 +335,13 @@ func (m *MsgCreateSchema) GetAttrNames() []string { return nil } +func (m *MsgCreateSchema) GetController() []string { + if m != nil { + return m.Controller + } + return nil +} + type MsgCreateSchemaResponse struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -373,14 +389,15 @@ func (m *MsgCreateSchemaResponse) GetId() string { type MsgCreateDid struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` - VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` + VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verification_method,json=verificationMethod,proto3" json:"verification_method,omitempty"` Authentication []string `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` - AssertionMethod []string `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` - CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` - CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` - KeyAgreement []string `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` - AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` + AssertionMethod []string `protobuf:"bytes,5,rep,name=assertion_method,json=assertionMethod,proto3" json:"assertion_method,omitempty"` + CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capability_invocation,json=capabilityInvocation,proto3" json:"capability_invocation,omitempty"` + CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` + KeyAgreement []string `protobuf:"bytes,8,rep,name=key_agreement,json=keyAgreement,proto3" json:"key_agreement,omitempty"` + AlsoKnownAs []string `protobuf:"bytes,9,rep,name=also_known_as,json=alsoKnownAs,proto3" json:"also_known_as,omitempty"` Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` + Context []string `protobuf:"bytes,11,rep,name=context,proto3" json:"context,omitempty"` } func (m *MsgCreateDid) Reset() { *m = MsgCreateDid{} } @@ -486,6 +503,13 @@ func (m *MsgCreateDid) GetService() []*DidService { return nil } +func (m *MsgCreateDid) GetContext() []string { + if m != nil { + return m.Context + } + return nil +} + type MsgCreateDidResponse struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -533,14 +557,15 @@ func (m *MsgCreateDidResponse) GetId() string { type MsgUpdateDid struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` - VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verificationMethod,proto3" json:"verificationMethod,omitempty"` + VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verification_method,json=verificationMethod,proto3" json:"verification_method,omitempty"` Authentication []string `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` - AssertionMethod []string `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` - CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capabilityInvocation,proto3" json:"capabilityInvocation,omitempty"` - CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capabilityDelegation,proto3" json:"capabilityDelegation,omitempty"` - KeyAgreement []string `protobuf:"bytes,8,rep,name=keyAgreement,proto3" json:"keyAgreement,omitempty"` - AlsoKnownAs []string `protobuf:"bytes,9,rep,name=alsoKnownAs,proto3" json:"alsoKnownAs,omitempty"` + AssertionMethod []string `protobuf:"bytes,5,rep,name=assertion_method,json=assertionMethod,proto3" json:"assertion_method,omitempty"` + CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capability_invocation,json=capabilityInvocation,proto3" json:"capability_invocation,omitempty"` + CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` + KeyAgreement []string `protobuf:"bytes,8,rep,name=key_agreement,json=keyAgreement,proto3" json:"key_agreement,omitempty"` + AlsoKnownAs []string `protobuf:"bytes,9,rep,name=also_known_as,json=alsoKnownAs,proto3" json:"also_known_as,omitempty"` Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` + Context []string `protobuf:"bytes,11,rep,name=context,proto3" json:"context,omitempty"` } func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } @@ -646,6 +671,13 @@ func (m *MsgUpdateDid) GetService() []*DidService { return nil } +func (m *MsgUpdateDid) GetContext() []string { + if m != nil { + return m.Context + } + return nil +} + type MsgUpdateDidResponse struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -707,57 +739,60 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 785 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xdd, 0x8e, 0x1b, 0x35, - 0x14, 0x4e, 0x32, 0xd9, 0x24, 0x73, 0xf6, 0x27, 0x95, 0x89, 0xd4, 0x21, 0xa0, 0x28, 0x0a, 0x50, - 0xa5, 0xa0, 0x4e, 0x68, 0x90, 0x50, 0x05, 0xaa, 0xc4, 0x76, 0x83, 0xd4, 0x0a, 0x85, 0x8b, 0x59, - 0x28, 0x08, 0x2e, 0x2a, 0x67, 0xe6, 0xec, 0xc4, 0x74, 0x62, 0xa7, 0x63, 0x27, 0x74, 0xde, 0x82, - 0xf7, 0xe0, 0x45, 0xb8, 0xdc, 0x4b, 0xc4, 0x15, 0xda, 0x7d, 0x06, 0xae, 0x41, 0x63, 0x4f, 0xfe, - 0x26, 0x1b, 0x36, 0x48, 0x5c, 0x21, 0x6e, 0x12, 0xfb, 0xf3, 0xf9, 0xbe, 0x73, 0x7c, 0xce, 0xb1, - 0x3d, 0x70, 0xe2, 0x8f, 0xf1, 0x55, 0xd0, 0x53, 0xaf, 0xdd, 0x69, 0x2c, 0x94, 0x20, 0x77, 0xf5, - 0x9c, 0x05, 0xae, 0xfe, 0xe7, 0x22, 0x40, 0x33, 0x6a, 0xbe, 0x19, 0x0a, 0x11, 0x46, 0xd8, 0xd3, - 0x66, 0xa3, 0xd9, 0x45, 0x8f, 0xf2, 0xc4, 0x70, 0x9a, 0x75, 0xa3, 0x91, 0xb2, 0x0c, 0xf0, 0x86, - 0x01, 0xfc, 0x18, 0x83, 0x01, 0x5e, 0x18, 0xb0, 0xf3, 0x67, 0x09, 0xea, 0x43, 0x19, 0x7e, 0x13, - 0x33, 0x85, 0x1e, 0xbe, 0x9a, 0xa1, 0x54, 0xa4, 0x0b, 0xe5, 0x80, 0x2a, 0xea, 0x14, 0xdb, 0xc5, - 0xee, 0x61, 0xbf, 0xe1, 0x1a, 0x1f, 0xee, 0xc2, 0x87, 0x7b, 0xca, 0x13, 0x4f, 0x5b, 0x10, 0x07, - 0xaa, 0x74, 0xa6, 0xc6, 0x22, 0x96, 0x4e, 0xa9, 0x6d, 0x75, 0x6d, 0x6f, 0x31, 0x25, 0xdf, 0x02, - 0x48, 0x16, 0x72, 0xaa, 0x66, 0x31, 0x4a, 0xc7, 0x6a, 0x5b, 0xdd, 0xc3, 0xfe, 0x23, 0x77, 0xc7, - 0x36, 0xdc, 0x5c, 0x04, 0xee, 0xf9, 0x92, 0xfa, 0x39, 0x57, 0x71, 0xe2, 0xad, 0x69, 0x11, 0x0f, - 0x6a, 0x13, 0x54, 0x54, 0x47, 0x58, 0xd6, 0xba, 0x1f, 0xef, 0xad, 0x3b, 0xcc, 0x88, 0x46, 0x75, - 0xa9, 0xd3, 0x7c, 0x0c, 0xf5, 0x9c, 0x4b, 0x72, 0x07, 0xac, 0x97, 0x98, 0xe8, 0x1c, 0xd8, 0x5e, - 0x3a, 0x24, 0x0d, 0x38, 0x98, 0xd3, 0x68, 0x86, 0x4e, 0x49, 0x63, 0x66, 0xf2, 0x49, 0xe9, 0x51, - 0xb1, 0xf9, 0x29, 0x1c, 0x6f, 0x28, 0xff, 0x13, 0x72, 0xe7, 0x8f, 0x22, 0xdc, 0x19, 0xca, 0xf0, - 0x2c, 0x46, 0xaa, 0xf0, 0xcc, 0x14, 0x87, 0x9c, 0x40, 0x89, 0x05, 0x19, 0xbf, 0xc4, 0x02, 0xf2, - 0x16, 0xd8, 0xd2, 0x1f, 0xe3, 0x84, 0xbe, 0x60, 0x41, 0x26, 0x51, 0x33, 0xc0, 0xb3, 0x20, 0xf5, - 0xa6, 0x68, 0xe8, 0x58, 0xc6, 0x9b, 0xa2, 0x21, 0x79, 0x17, 0x8e, 0x97, 0x19, 0xfb, 0x2a, 0x99, - 0xa2, 0x53, 0xd6, 0x6b, 0x9b, 0x20, 0xf9, 0x0c, 0xaa, 0x7e, 0xf4, 0x42, 0xa5, 0xeb, 0x07, 0xba, - 0xd4, 0xef, 0xed, 0x4c, 0x64, 0x16, 0xd7, 0xf3, 0x34, 0xea, 0xa7, 0x05, 0xaf, 0xe2, 0x47, 0x5a, - 0xe1, 0x21, 0xd4, 0x28, 0x4f, 0x8c, 0x44, 0x65, 0x77, 0xb7, 0x3c, 0x2d, 0x78, 0x55, 0xca, 0x93, - 0x94, 0xf2, 0xa4, 0x9a, 0x25, 0xa2, 0xf3, 0x3e, 0x38, 0xf9, 0x6d, 0x7b, 0x28, 0xa7, 0x82, 0x4b, - 0xcc, 0x6f, 0xbf, 0x33, 0xd1, 0x4d, 0x6a, 0x6c, 0xcf, 0xf5, 0xb6, 0xb7, 0x32, 0x44, 0xa0, 0xcc, - 0xe9, 0x64, 0x91, 0x5f, 0x3d, 0x4e, 0xdb, 0x73, 0x8e, 0xb1, 0x64, 0x82, 0x67, 0xc9, 0x59, 0x4c, - 0xc9, 0xdb, 0x60, 0x53, 0xa5, 0xe2, 0x2f, 0xe9, 0x04, 0xa5, 0xee, 0x22, 0xdb, 0x5b, 0x01, 0x9d, - 0xfb, 0x70, 0x37, 0xe7, 0x6e, 0x67, 0x64, 0xbf, 0x59, 0x70, 0xb4, 0xb4, 0x1d, 0xb0, 0x60, 0x2b, - 0xae, 0x16, 0x80, 0x2f, 0xb8, 0x8a, 0x45, 0x14, 0x61, 0x9c, 0x9d, 0x92, 0x35, 0x84, 0x7c, 0x0f, - 0x64, 0x8e, 0x31, 0xbb, 0x60, 0x3e, 0x55, 0x4c, 0xf0, 0x21, 0xaa, 0xb1, 0x08, 0xb2, 0x03, 0xf3, - 0xc1, 0xce, 0x7a, 0x3c, 0xdf, 0xa2, 0x78, 0x37, 0xc8, 0x90, 0x7b, 0x70, 0x92, 0x1e, 0x48, 0xe4, - 0x2a, 0xc3, 0xb3, 0xbd, 0xe6, 0x50, 0xd2, 0x85, 0x3a, 0x95, 0x12, 0xe3, 0xb5, 0x08, 0x0e, 0xb4, - 0x61, 0x1e, 0x26, 0x7d, 0x68, 0xf8, 0x74, 0x4a, 0x47, 0x2c, 0x62, 0x2a, 0x79, 0xc6, 0xe7, 0x22, - 0xd3, 0xad, 0x68, 0xf3, 0x1b, 0xd7, 0x36, 0x39, 0x03, 0x8c, 0x30, 0x34, 0x9c, 0x6a, 0x9e, 0xb3, - 0x5a, 0x23, 0x1d, 0x38, 0x7a, 0x89, 0xc9, 0x69, 0x18, 0x23, 0x4e, 0x90, 0x2b, 0xa7, 0xa6, 0x6d, - 0x37, 0x30, 0xd2, 0x86, 0x43, 0x1a, 0x49, 0xf1, 0x05, 0x17, 0x3f, 0xf2, 0x53, 0xe9, 0xd8, 0xda, - 0x64, 0x1d, 0x22, 0x8f, 0xa1, 0x2a, 0x31, 0x9e, 0x33, 0x1f, 0x1d, 0xd0, 0x19, 0x7d, 0x67, 0x67, - 0x46, 0x07, 0x2c, 0x38, 0x37, 0xa6, 0xde, 0x82, 0xd3, 0xb9, 0x07, 0x8d, 0xf5, 0xda, 0xde, 0xd6, - 0x04, 0x5f, 0x4f, 0x83, 0xff, 0x9b, 0xe0, 0x3f, 0xda, 0x04, 0xcb, 0xda, 0xee, 0x6a, 0x82, 0xfe, - 0xcf, 0x16, 0x58, 0x43, 0x19, 0x92, 0x08, 0x8e, 0x37, 0xef, 0xf2, 0xee, 0xbe, 0xcf, 0x53, 0xf3, - 0xe1, 0xdf, 0x59, 0xde, 0x7c, 0x53, 0xfe, 0x00, 0x47, 0x1b, 0xd7, 0xe2, 0xfe, 0xce, 0x3e, 0xbc, - 0xdd, 0x59, 0xee, 0xee, 0x0b, 0xc0, 0x5e, 0xdd, 0x73, 0xfb, 0x3b, 0x7a, 0x70, 0xbb, 0xa3, 0xf5, - 0xbc, 0x06, 0x60, 0xaf, 0x0e, 0xd2, 0xbf, 0xe4, 0x65, 0xab, 0x7a, 0x4f, 0xce, 0x7e, 0xb9, 0x6a, - 0x15, 0x2f, 0xaf, 0x5a, 0xc5, 0xdf, 0xaf, 0x5a, 0xc5, 0x9f, 0xae, 0x5b, 0x85, 0xcb, 0xeb, 0x56, - 0xe1, 0xd7, 0xeb, 0x56, 0xe1, 0xbb, 0xfb, 0x21, 0x53, 0xe3, 0xd9, 0xc8, 0xf5, 0xc5, 0xa4, 0x97, - 0x7d, 0x31, 0xa5, 0xbf, 0x0f, 0x52, 0xc5, 0xde, 0xeb, 0x0c, 0x4a, 0x5f, 0x3c, 0x39, 0xaa, 0xe8, - 0x47, 0xee, 0xa3, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xfa, 0xd8, 0x00, 0xaf, 0x09, 0x00, - 0x00, + // 835 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x41, 0x6f, 0xe3, 0x44, + 0x14, 0x4e, 0xec, 0xb6, 0x69, 0x5e, 0x9b, 0xb6, 0x9a, 0x2d, 0x5a, 0x13, 0x44, 0x54, 0x65, 0xb5, + 0xab, 0x14, 0xb4, 0x0e, 0xdb, 0x95, 0xd0, 0x0a, 0xb4, 0x12, 0xdd, 0x16, 0x69, 0x57, 0x28, 0x1c, + 0x5c, 0x58, 0x10, 0x42, 0xb2, 0xa6, 0x9e, 0x57, 0x67, 0x88, 0x33, 0xce, 0x7a, 0x26, 0xa1, 0xfe, + 0x17, 0x9c, 0xf8, 0x01, 0x5c, 0xf9, 0x23, 0x1c, 0x7b, 0xe4, 0x88, 0x5a, 0xf1, 0x2b, 0xb8, 0x20, + 0xcf, 0x38, 0x6e, 0xe2, 0x10, 0x1a, 0x24, 0x6e, 0x70, 0x69, 0x67, 0xbe, 0x79, 0xef, 0xfb, 0xde, + 0x7c, 0xf3, 0x3c, 0x13, 0xd8, 0x09, 0xfa, 0xf8, 0x86, 0x75, 0xd5, 0xa5, 0x3b, 0x4a, 0x62, 0x15, + 0x93, 0xfb, 0x7a, 0xce, 0x99, 0xab, 0xff, 0x8b, 0x98, 0xa1, 0x19, 0x35, 0xdf, 0x0e, 0xe3, 0x38, + 0x8c, 0xb0, 0xab, 0xc3, 0xce, 0xc7, 0x17, 0x5d, 0x2a, 0x52, 0x93, 0xd3, 0xdc, 0x35, 0x1c, 0x59, + 0x96, 0x01, 0xee, 0x19, 0x20, 0x48, 0x90, 0x9d, 0xe2, 0x85, 0x01, 0xdb, 0xbf, 0x5b, 0xb0, 0xdb, + 0x93, 0xe1, 0x57, 0x09, 0x57, 0xe8, 0xe1, 0x9b, 0x31, 0x4a, 0x45, 0x3a, 0xb0, 0xc6, 0xa8, 0xa2, + 0x4e, 0xf5, 0xa0, 0xda, 0xd9, 0x3a, 0xda, 0x77, 0x8d, 0x86, 0x3b, 0xd5, 0x70, 0x8f, 0x45, 0xea, + 0xe9, 0x08, 0xf2, 0x35, 0x80, 0xe4, 0xa1, 0xa0, 0x6a, 0x9c, 0xa0, 0x74, 0xac, 0x03, 0xbb, 0xb3, + 0x75, 0xf4, 0xcc, 0x5d, 0x52, 0xac, 0x5b, 0xd2, 0x71, 0xcf, 0x8a, 0xd4, 0x4f, 0x85, 0x4a, 0x52, + 0x6f, 0x86, 0x8b, 0x78, 0xb0, 0x39, 0x44, 0x45, 0x75, 0x1d, 0xb6, 0xe6, 0xfd, 0x70, 0x65, 0xde, + 0x5e, 0x9e, 0x68, 0x58, 0x0b, 0x9e, 0xe6, 0x73, 0xd8, 0x2d, 0x49, 0x92, 0x3d, 0xb0, 0x07, 0x98, + 0xea, 0x9d, 0xd6, 0xbd, 0x6c, 0x48, 0xf6, 0x61, 0x7d, 0x42, 0xa3, 0x31, 0x3a, 0x96, 0xc6, 0xcc, + 0xe4, 0x23, 0xeb, 0x59, 0xb5, 0xf9, 0x31, 0x34, 0xe6, 0x98, 0xff, 0x49, 0x72, 0xfb, 0x47, 0x0b, + 0xf6, 0x7a, 0x32, 0x3c, 0x49, 0x90, 0x2a, 0x3c, 0x31, 0x47, 0x40, 0x76, 0xc0, 0xe2, 0x2c, 0xcf, + 0xb7, 0x38, 0x23, 0xef, 0x40, 0x5d, 0x06, 0x7d, 0x1c, 0x52, 0x9f, 0xb3, 0x9c, 0x62, 0xd3, 0x00, + 0xaf, 0x58, 0xa6, 0xa6, 0x68, 0xe8, 0xd8, 0x46, 0x4d, 0xd1, 0x90, 0x3c, 0x84, 0x9d, 0xc2, 0x31, + 0x5f, 0xa5, 0x23, 0x74, 0xd6, 0xf4, 0x62, 0xa3, 0x40, 0xbf, 0x48, 0x47, 0x48, 0x3e, 0x81, 0x5a, + 0x10, 0x99, 0xf5, 0x75, 0x7d, 0xa2, 0x0f, 0x97, 0x3a, 0x99, 0x17, 0xf6, 0x3a, 0x2b, 0xfb, 0x65, + 0xc5, 0xdb, 0x08, 0x22, 0xcd, 0xf0, 0x04, 0x36, 0xa9, 0x48, 0x0d, 0xc5, 0xc6, 0xf2, 0xa6, 0x78, + 0x59, 0xf1, 0x6a, 0x54, 0xa4, 0x3a, 0xa5, 0x05, 0x10, 0xc4, 0x42, 0x25, 0x71, 0x14, 0x61, 0xe2, + 0xd4, 0x0e, 0xec, 0x4e, 0xdd, 0x9b, 0x41, 0x5e, 0xd4, 0x72, 0xa7, 0xda, 0xef, 0x81, 0x53, 0xf6, + 0xc5, 0x43, 0x39, 0x8a, 0x85, 0xc4, 0xb2, 0x3f, 0xed, 0x9f, 0xaa, 0xba, 0x59, 0x4d, 0xf0, 0x99, + 0x36, 0x66, 0xc1, 0x43, 0x02, 0x6b, 0xba, 0x4e, 0x63, 0x9f, 0x1e, 0x67, 0x98, 0xa0, 0x43, 0xcc, + 0xbd, 0xd3, 0x63, 0xe2, 0x40, 0x6d, 0x82, 0x89, 0xe4, 0xb1, 0xc8, 0x5d, 0x9b, 0x4e, 0xc9, 0xbb, + 0x00, 0x54, 0xa9, 0xc4, 0xcf, 0xc2, 0xa4, 0xb3, 0xae, 0x4b, 0xaf, 0x67, 0xc8, 0xe7, 0x19, 0x50, + 0xda, 0xd9, 0x46, 0x79, 0x67, 0xed, 0x43, 0xb8, 0x5f, 0xaa, 0x71, 0xe9, 0x7e, 0xfe, 0xb0, 0x61, + 0xbb, 0x88, 0x3d, 0xe5, 0x6c, 0x61, 0x33, 0xf3, 0x5a, 0x56, 0x59, 0x8b, 0x7c, 0x0b, 0xf7, 0x26, + 0x98, 0xf0, 0x0b, 0x1e, 0x50, 0xc5, 0x63, 0xe1, 0x0f, 0x51, 0xf5, 0x63, 0x96, 0x7f, 0x30, 0xef, + 0x2f, 0x3d, 0xe6, 0xd7, 0x33, 0x39, 0x3d, 0x9d, 0xe2, 0x91, 0xc9, 0x02, 0x46, 0x1e, 0xc1, 0x0e, + 0x1d, 0xab, 0x3e, 0x0a, 0x95, 0xe3, 0xce, 0x9a, 0xae, 0xa0, 0x84, 0x92, 0x43, 0xd8, 0xa3, 0x52, + 0x62, 0x32, 0x5b, 0x82, 0xb1, 0x6d, 0xb7, 0xc0, 0x73, 0xca, 0xa7, 0xf0, 0x56, 0x40, 0x47, 0xf4, + 0x9c, 0x47, 0x5c, 0xa5, 0x3e, 0x17, 0x93, 0x38, 0x67, 0x36, 0x3e, 0xee, 0xdf, 0x2e, 0xbe, 0x2a, + 0xd6, 0x4a, 0x49, 0x0c, 0x23, 0x0c, 0x4d, 0x52, 0xad, 0x9c, 0x74, 0x5a, 0xac, 0x91, 0x07, 0xd0, + 0x18, 0x60, 0xea, 0xd3, 0x30, 0x41, 0x1c, 0xa2, 0x50, 0xce, 0xa6, 0x0e, 0xde, 0x1e, 0x60, 0x7a, + 0x3c, 0xc5, 0x48, 0x1b, 0x1a, 0x34, 0x92, 0xb1, 0x3f, 0x10, 0xf1, 0xf7, 0xc2, 0xa7, 0xd2, 0xa9, + 0xeb, 0xa0, 0xad, 0x0c, 0xfc, 0x2c, 0xc3, 0x8e, 0x25, 0x79, 0x0e, 0x35, 0x89, 0xc9, 0x84, 0x07, + 0xe8, 0x80, 0xf6, 0xf5, 0xc1, 0x52, 0x5f, 0x4f, 0x39, 0x3b, 0x33, 0xa1, 0xde, 0x34, 0x27, 0xeb, + 0xb3, 0xec, 0xc0, 0xf0, 0x52, 0x39, 0x5b, 0x9a, 0x7c, 0x3a, 0x6d, 0x3f, 0x82, 0xfd, 0xd9, 0xc3, + 0xbf, 0xab, 0x4b, 0xbe, 0x1c, 0xb1, 0xff, 0xbb, 0xe4, 0xbf, 0xda, 0x25, 0xc5, 0xe1, 0x2f, 0xeb, + 0x92, 0xa3, 0x9f, 0x6d, 0xb0, 0x7b, 0x32, 0x24, 0x11, 0x34, 0xe6, 0x1f, 0x99, 0xce, 0xaa, 0xef, + 0x66, 0xf3, 0xc9, 0xdf, 0x45, 0xfe, 0xf5, 0x0d, 0xfd, 0x1d, 0x6c, 0xcf, 0xdd, 0xc6, 0xab, 0x8b, + 0x7d, 0x70, 0xb7, 0x58, 0xe9, 0xf6, 0x64, 0x50, 0xbf, 0xbd, 0x29, 0x57, 0x17, 0x7a, 0x7c, 0xb7, + 0xd0, 0xac, 0xaf, 0x0c, 0xea, 0xb7, 0x5f, 0xda, 0xbf, 0xa4, 0xb2, 0x70, 0x7a, 0x2f, 0x4e, 0x7e, + 0xb9, 0x6e, 0x55, 0xaf, 0xae, 0x5b, 0xd5, 0xdf, 0xae, 0x5b, 0xd5, 0x1f, 0x6e, 0x5a, 0x95, 0xab, + 0x9b, 0x56, 0xe5, 0xd7, 0x9b, 0x56, 0xe5, 0x9b, 0xc3, 0x90, 0xab, 0xfe, 0xf8, 0xdc, 0x0d, 0xe2, + 0x61, 0x37, 0xff, 0xc1, 0x96, 0xfd, 0x7d, 0x9c, 0x31, 0x76, 0x2f, 0x73, 0x28, 0x7b, 0xd5, 0xe4, + 0xf9, 0x86, 0x7e, 0x7c, 0x9f, 0xfe, 0x19, 0x00, 0x00, 0xff, 0xff, 0x64, 0xad, 0xad, 0x9d, 0x2e, + 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -986,7 +1021,7 @@ func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xa i = encodeVarintTx(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x1a } } if len(m.Signatures) > 0 { @@ -1005,15 +1040,6 @@ func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xa i = encodeVarintTx(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x1a - } - } - if len(m.Authors) > 0 { - for iNdEx := len(m.Authors) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Authors[iNdEx]) - copy(dAtA[i:], m.Authors[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Authors[iNdEx]))) - i-- dAtA[i] = 0x12 } } @@ -1052,6 +1078,15 @@ func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Controller) > 0 { + for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Controller[iNdEx]) + copy(dAtA[i:], m.Controller[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Controller[iNdEx]))) + i-- + dAtA[i] = 0x3a + } + } if m.Value != nil { { size := m.Value.Size() @@ -1184,13 +1219,22 @@ func (m *MsgCreateSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Controller) > 0 { + for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Controller[iNdEx]) + copy(dAtA[i:], m.Controller[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Controller[iNdEx]))) + i-- + dAtA[i] = 0x32 + } + } if len(m.AttrNames) > 0 { for iNdEx := len(m.AttrNames) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.AttrNames[iNdEx]) copy(dAtA[i:], m.AttrNames[iNdEx]) i = encodeVarintTx(dAtA, i, uint64(len(m.AttrNames[iNdEx]))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a } } if len(m.Version) > 0 { @@ -1198,13 +1242,20 @@ func (m *MsgCreateSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Version) i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 } if len(m.Name) > 0 { i -= len(m.Name) copy(dAtA[i:], m.Name) i = encodeVarintTx(dAtA, i, uint64(len(m.Name))) i-- + dAtA[i] = 0x1a + } + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintTx(dAtA, i, uint64(len(m.Type))) + i-- dAtA[i] = 0x12 } if len(m.Id) > 0 { @@ -1267,6 +1318,15 @@ func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Context) > 0 { + for iNdEx := len(m.Context) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Context[iNdEx]) + copy(dAtA[i:], m.Context[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Context[iNdEx]))) + i-- + dAtA[i] = 0x5a + } + } if len(m.Service) > 0 { for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { { @@ -1418,6 +1478,15 @@ func (m *MsgUpdateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Context) > 0 { + for iNdEx := len(m.Context) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Context[iNdEx]) + copy(dAtA[i:], m.Context[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Context[iNdEx]))) + i-- + dAtA[i] = 0x5a + } + } if len(m.Service) > 0 { for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { { @@ -1570,12 +1639,6 @@ func (m *MsgWriteRequest) Size() (n int) { l = m.Data.Size() n += 1 + l + sovTx(uint64(l)) } - if len(m.Authors) > 0 { - for _, s := range m.Authors { - l = len(s) - n += 1 + l + sovTx(uint64(l)) - } - } if len(m.Signatures) > 0 { for k, v := range m.Signatures { _ = k @@ -1620,6 +1683,12 @@ func (m *MsgCreateCredDef) Size() (n int) { if m.Value != nil { n += m.Value.Size() } + if len(m.Controller) > 0 { + for _, s := range m.Controller { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } return n } @@ -1670,6 +1739,10 @@ func (m *MsgCreateSchema) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } + l = len(m.Type) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } l = len(m.Name) if l > 0 { n += 1 + l + sovTx(uint64(l)) @@ -1684,6 +1757,12 @@ func (m *MsgCreateSchema) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } + if len(m.Controller) > 0 { + for _, s := range m.Controller { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } return n } @@ -1764,6 +1843,12 @@ func (m *MsgCreateDid) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } + if len(m.Context) > 0 { + for _, s := range m.Context { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } return n } @@ -1844,6 +1929,12 @@ func (m *MsgUpdateDid) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } + if len(m.Context) > 0 { + for _, s := range m.Context { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } return n } @@ -1932,38 +2023,6 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authors", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Authors = append(m.Authors, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Signatures", wireType) } @@ -2090,7 +2149,7 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { } m.Signatures[mapkey] = mapvalue iNdEx = postIndex - case 4: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } @@ -2465,6 +2524,38 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { } m.Value = &MsgCreateCredDef_AnyType{v} iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2630,6 +2721,38 @@ func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } @@ -2661,7 +2784,7 @@ func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { } m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } @@ -2693,7 +2816,7 @@ func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { } m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AttrNames", wireType) } @@ -2725,6 +2848,38 @@ func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { } m.AttrNames = append(m.AttrNames, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3181,6 +3336,38 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Context", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Context = append(m.Context, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3637,6 +3824,38 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Context", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Context = append(m.Context, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/cheqd/utils/utils.go b/x/cheqd/utils/utils.go index 9862594dd..48cf29828 100644 --- a/x/cheqd/utils/utils.go +++ b/x/cheqd/utils/utils.go @@ -2,6 +2,8 @@ package utils import ( "crypto/ed25519" + "encoding/base64" + "encoding/json" "errors" "fmt" "github.com/btcsuite/btcutil/base58" @@ -9,21 +11,15 @@ import ( "strings" ) -func CompareOwners(authors []string, controllers []string) bool { - type void struct{} - var member void - - controllerSet := make(map[string]void) - for _, author := range authors { - controllerSet[author] = member - } - result := true - for _, controller := range controllers { - _, exists := controllerSet[controller] - result = result && exists +func BuildSigningInput(msg *types.MsgWriteRequest) ([]byte, error) { + metadataBytes, err := json.Marshal(&msg.Metadata) + if err != nil { + return nil, types.ErrInvalidSignature.Wrap("An error has occurred during metadata marshalling") } - return result + dataBytes := msg.Data.Value + signingInput := ([]byte)(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) + return signingInput, nil } func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { @@ -31,6 +27,29 @@ func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { return fragments[0], fragments[1] } +func VerifyIdentitySignature(controller string, authentication []string, verificationMethods []*types.VerificationMethod, signatures map[string]string, signingInput []byte) (bool, error) { + result := true + + for signer, signature := range signatures { + did, _ := SplitDidUrlIntoDidAndFragment(signer) + if did == controller { + pubKey, err := FindPublicKey(authentication, verificationMethods, signer) + if err != nil { + return false, err + } + + signature, err := base64.StdEncoding.DecodeString(signature) + if err != nil { + return false, err + } + + result = result && ed25519.Verify(pubKey, signingInput, signature) + } + } + + return result, nil +} + func FindPublicKey(authentication []string, verificationMethods []*types.VerificationMethod, id string) (ed25519.PublicKey, error) { for _, authentication := range authentication { if authentication == id { From a102ac607f1fffa5b7116962d997a6f8557099f8 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 15 Oct 2021 00:08:17 +0300 Subject: [PATCH 26/74] signature implementation; removed client; --- app/app.go | 4 +- x/cheqd/client/cli/query.go | 36 -------- x/cheqd/client/cli/queryCredDef.go | 37 -------- x/cheqd/client/cli/queryDid.go | 38 -------- x/cheqd/client/cli/querySchema.go | 38 -------- x/cheqd/client/cli/tx.go | 33 ------- x/cheqd/client/cli/txCredDef.go | 45 ---------- x/cheqd/client/cli/txDid.go | 70 --------------- x/cheqd/client/cli/txSchema.go | 39 --------- x/cheqd/client/rest/queryCredDef.go | 39 --------- x/cheqd/client/rest/queryDid.go | 39 --------- x/cheqd/client/rest/querySchema.go | 26 ------ x/cheqd/client/rest/rest.go | 40 --------- x/cheqd/client/rest/txCredDef.go | 56 ------------ x/cheqd/client/rest/txDid.go | 121 -------------------------- x/cheqd/client/rest/txSchema.go | 55 ------------ x/cheqd/handler.go | 9 +- x/cheqd/handler_test.go | 31 +++---- x/cheqd/handler_test_setup.go | 6 +- x/cheqd/keeper/did.go | 2 + x/cheqd/keeper/msg_server_cred_def.go | 13 ++- x/cheqd/keeper/msg_server_did.go | 25 ++++-- x/cheqd/keeper/msg_server_schema.go | 13 ++- x/cheqd/keeper/query_did.go | 2 +- x/cheqd/keeper/verify.go | 38 ++++++++ x/cheqd/module.go | 13 +-- x/cheqd/types/identity_msg.go | 14 +++ x/cheqd/types/messages.go | 17 ++++ x/cheqd/types/messages_cred_def.go | 30 +++---- x/cheqd/types/messages_did.go | 118 ++++++++++++------------- x/cheqd/types/messages_schema.go | 35 ++++---- x/cheqd/utils/utils.go | 16 ++-- 32 files changed, 230 insertions(+), 868 deletions(-) delete mode 100644 x/cheqd/client/cli/query.go delete mode 100644 x/cheqd/client/cli/queryCredDef.go delete mode 100644 x/cheqd/client/cli/queryDid.go delete mode 100644 x/cheqd/client/cli/querySchema.go delete mode 100644 x/cheqd/client/cli/tx.go delete mode 100644 x/cheqd/client/cli/txCredDef.go delete mode 100644 x/cheqd/client/cli/txDid.go delete mode 100644 x/cheqd/client/cli/txSchema.go delete mode 100644 x/cheqd/client/rest/queryCredDef.go delete mode 100644 x/cheqd/client/rest/queryDid.go delete mode 100644 x/cheqd/client/rest/querySchema.go delete mode 100644 x/cheqd/client/rest/rest.go delete mode 100644 x/cheqd/client/rest/txCredDef.go delete mode 100644 x/cheqd/client/rest/txDid.go delete mode 100644 x/cheqd/client/rest/txSchema.go create mode 100644 x/cheqd/keeper/verify.go create mode 100644 x/cheqd/types/identity_msg.go create mode 100644 x/cheqd/types/messages.go diff --git a/app/app.go b/app/app.go index 44bd05ce2..6d3c7cb4f 100644 --- a/app/app.go +++ b/app/app.go @@ -100,7 +100,7 @@ import ( ) const Name = "cheqd-node" -const ProtocolVersion = 1; +const ProtocolVersion = 1 // this line is used by starport scaffolding # stargate/wasm/app/enabledProposals @@ -156,7 +156,7 @@ var ( minttypes.ModuleName: {authtypes.Minter}, stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, govtypes.ModuleName: {authtypes.Burner}, } ) diff --git a/x/cheqd/client/cli/query.go b/x/cheqd/client/cli/query.go deleted file mode 100644 index 1b65c9d3c..000000000 --- a/x/cheqd/client/cli/query.go +++ /dev/null @@ -1,36 +0,0 @@ -package cli - -import ( - "fmt" - // "strings" - - "github.com/spf13/cobra" - - "github.com/cosmos/cosmos-sdk/client" - // "github.com/cosmos/cosmos-sdk/client/flags" - // sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/cheqd/cheqd-node/x/cheqd/types" -) - -// GetQueryCmd returns the cli query commands for this module -func GetQueryCmd(queryRoute string) *cobra.Command { - // Group cheqd queries under a subcommand - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - // this line is used by starport scaffolding # 1 - - cmd.AddCommand(CmdShowCredDef()) - - cmd.AddCommand(CmdShowSchema()) - - cmd.AddCommand(CmdShowDid()) - - return cmd -} diff --git a/x/cheqd/client/cli/queryCredDef.go b/x/cheqd/client/cli/queryCredDef.go deleted file mode 100644 index 171d7e226..000000000 --- a/x/cheqd/client/cli/queryCredDef.go +++ /dev/null @@ -1,37 +0,0 @@ -package cli - -import ( - "context" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" -) - -func CmdShowCredDef() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-cred-def [id]", - Short: "shows a credDef", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - id := string(args[0]) - params := &types.QueryGetCredDefRequest{ - Id: id, - } - - res, err := queryClient.CredDef(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/cli/queryDid.go b/x/cheqd/client/cli/queryDid.go deleted file mode 100644 index abfeb2a5c..000000000 --- a/x/cheqd/client/cli/queryDid.go +++ /dev/null @@ -1,38 +0,0 @@ -package cli - -import ( - "context" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" -) - -func CmdShowDid() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-did [id]", - Short: "shows a did", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - id := string(args[0]) - params := &types.QueryGetDidRequest{ - Id: id, - } - - res, err := queryClient.Did(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/cli/querySchema.go b/x/cheqd/client/cli/querySchema.go deleted file mode 100644 index 68760a0fe..000000000 --- a/x/cheqd/client/cli/querySchema.go +++ /dev/null @@ -1,38 +0,0 @@ -package cli - -import ( - "context" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" -) - -func CmdShowSchema() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-schema [id]", - Short: "shows a schema", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - id := string(args[0]) - params := &types.QueryGetSchemaRequest{ - Id: id, - } - - res, err := queryClient.Schema(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/cli/tx.go b/x/cheqd/client/cli/tx.go deleted file mode 100644 index 521ea89ea..000000000 --- a/x/cheqd/client/cli/tx.go +++ /dev/null @@ -1,33 +0,0 @@ -package cli - -import ( - "fmt" - - "github.com/spf13/cobra" - - "github.com/cosmos/cosmos-sdk/client" - // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cheqd/cheqd-node/x/cheqd/types" -) - -// GetTxCmd returns the transaction commands for this module -func GetTxCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("%s transactions subcommands", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - // this line is used by starport scaffolding # 1 - - cmd.AddCommand(CmdCreateCredDef()) - - cmd.AddCommand(CmdCreateSchema()) - - cmd.AddCommand(CmdCreateDid()) - cmd.AddCommand(CmdUpdateDid()) - - return cmd -} diff --git a/x/cheqd/client/cli/txCredDef.go b/x/cheqd/client/cli/txCredDef.go deleted file mode 100644 index d7cd93a59..000000000 --- a/x/cheqd/client/cli/txCredDef.go +++ /dev/null @@ -1,45 +0,0 @@ -package cli - -import ( - "encoding/json" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/spf13/cobra" -) - -func CmdCreateCredDef() *cobra.Command { - cmd := &cobra.Command{ - Use: "create-cred-def [id] [schema_id] [tag] [signature_type] [value]", - Short: "Creates a new credDef", - Args: cobra.ExactArgs(5), - RunE: func(cmd *cobra.Command, args []string) error { - argsId := args[0] - argsSchemaId := args[1] - argsTag := args[2] - argsSignatureType := args[3] - argsValue := args[4] - - var value types.MsgCreateCredDef_ClType - if err := json.Unmarshal([]byte(argsValue), &value); err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgCreateCredDef(argsId, argsSchemaId, argsTag, argsSignatureType, &value) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/cli/txDid.go b/x/cheqd/client/cli/txDid.go deleted file mode 100644 index 2bdf98f45..000000000 --- a/x/cheqd/client/cli/txDid.go +++ /dev/null @@ -1,70 +0,0 @@ -package cli - -import ( - "encoding/json" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/spf13/cobra" -) - -func CmdCreateDid() *cobra.Command { - cmd := &cobra.Command{ - Use: "create-did [did]", - Short: "Creates a new did", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - argsDidJson := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - var msg types.MsgCreateDid - if err := json.Unmarshal([]byte(argsDidJson), &msg); err != nil { - return err - } - - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func CmdUpdateDid() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-did [did]", - Short: "Update a did", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - argsDidJson := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - var msg types.MsgUpdateDid - if err := json.Unmarshal([]byte(argsDidJson), &msg); err != nil { - return err - } - - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/cli/txSchema.go b/x/cheqd/client/cli/txSchema.go deleted file mode 100644 index b8671520f..000000000 --- a/x/cheqd/client/cli/txSchema.go +++ /dev/null @@ -1,39 +0,0 @@ -package cli - -import ( - "github.com/spf13/cobra" - "strings" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" -) - -func CmdCreateSchema() *cobra.Command { - cmd := &cobra.Command{ - Use: "create-schema [name] [version] [attrNames]", - Short: "Creates a new schema", - Args: cobra.ExactArgs(3), - RunE: func(cmd *cobra.Command, args []string) error { - argsName := args[0] - argsVersion := args[1] - argsAttrNames := strings.Split(args[2], ",") - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgCreateSchema(clientCtx.GetFromAddress().String(), argsName, argsVersion, argsAttrNames) - if err := msg.ValidateBasic(); err != nil { - return err - } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/cheqd/client/rest/queryCredDef.go b/x/cheqd/client/rest/queryCredDef.go deleted file mode 100644 index 34e2ad5c2..000000000 --- a/x/cheqd/client/rest/queryCredDef.go +++ /dev/null @@ -1,39 +0,0 @@ -package rest - -import ( - "fmt" - "net/http" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" -) - -func listCredDefHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-credDef", types.QuerierRoute), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} - -func getCredDefHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] - - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-credDef/%s", types.QuerierRoute, id), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} diff --git a/x/cheqd/client/rest/queryDid.go b/x/cheqd/client/rest/queryDid.go deleted file mode 100644 index 8406814fc..000000000 --- a/x/cheqd/client/rest/queryDid.go +++ /dev/null @@ -1,39 +0,0 @@ -package rest - -import ( - "fmt" - "net/http" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" -) - -func listDidHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/list-did", types.QuerierRoute), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} - -func getDidHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] - - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-did/%s", types.QuerierRoute, id), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} diff --git a/x/cheqd/client/rest/querySchema.go b/x/cheqd/client/rest/querySchema.go deleted file mode 100644 index babef1779..000000000 --- a/x/cheqd/client/rest/querySchema.go +++ /dev/null @@ -1,26 +0,0 @@ -package rest - -import ( - "fmt" - "net/http" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" -) - -func getSchemaHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] - - res, height, err := clientCtx.QueryWithData(fmt.Sprintf("custom/%s/get-schema/%s", types.QuerierRoute, id), nil) - if err != nil { - rest.WriteErrorResponse(w, http.StatusNotFound, err.Error()) - return - } - - clientCtx = clientCtx.WithHeight(height) - rest.PostProcessResponse(w, clientCtx, res) - } -} diff --git a/x/cheqd/client/rest/rest.go b/x/cheqd/client/rest/rest.go deleted file mode 100644 index 8b05a46bb..000000000 --- a/x/cheqd/client/rest/rest.go +++ /dev/null @@ -1,40 +0,0 @@ -package rest - -import ( - "github.com/gorilla/mux" - - "github.com/cosmos/cosmos-sdk/client" - // this line is used by starport scaffolding # 1 -) - -const ( - MethodGet = "GET" -) - -// RegisterRoutes registers cheqd-related REST handlers to a router -func RegisterRoutes(clientCtx client.Context, r *mux.Router) { - // this line is used by starport scaffolding # 2 - registerQueryRoutes(clientCtx, r) - registerTxHandlers(clientCtx, r) -} - -func registerQueryRoutes(clientCtx client.Context, r *mux.Router) { - // this line is used by starport scaffolding # 3 - r.HandleFunc("/cheqd/credDefs/{id}", getCredDefHandler(clientCtx)).Methods("GET") - r.HandleFunc("/cheqd/credDefs", listCredDefHandler(clientCtx)).Methods("GET") - - r.HandleFunc("dock", getSchemaHandler(clientCtx)).Methods("GET") - - r.HandleFunc("/cheqd/dids/{id}", getDidHandler(clientCtx)).Methods("GET") - r.HandleFunc("/cheqd/dids", listDidHandler(clientCtx)).Methods("GET") -} - -func registerTxHandlers(clientCtx client.Context, r *mux.Router) { - // this line is used by starport scaffolding # 4 - r.HandleFunc("/cheqd/credDefs", createCredDefHandler(clientCtx)).Methods("POST") - - r.HandleFunc("/cheqd/schemata", createSchemaHandler(clientCtx)).Methods("POST") - - r.HandleFunc("/cheqd/dids", createDidHandler(clientCtx)).Methods("POST") - r.HandleFunc("/cheqd/dids/{id}", updateDidHandler(clientCtx)).Methods("POST") -} diff --git a/x/cheqd/client/rest/txCredDef.go b/x/cheqd/client/rest/txCredDef.go deleted file mode 100644 index cd8ca0758..000000000 --- a/x/cheqd/client/rest/txCredDef.go +++ /dev/null @@ -1,56 +0,0 @@ -package rest - -import ( - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" - "net/http" -) - -type createCredDefRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Schema_id string `json:"schema_id"` - Tag string `json:"tag"` - SignatureType string `json:"signatureType"` - Value string `json:"value"` -} - -func createCredDefHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req createCredDefRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err := sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedSchema_id := req.Schema_id - - parsedTag := req.Tag - - parsedSignature_type := req.SignatureType - - msg := types.NewMsgCreateCredDef( - req.Creator, - parsedSchema_id, - parsedTag, - parsedSignature_type, - nil, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} diff --git a/x/cheqd/client/rest/txDid.go b/x/cheqd/client/rest/txDid.go deleted file mode 100644 index 8d71a151f..000000000 --- a/x/cheqd/client/rest/txDid.go +++ /dev/null @@ -1,121 +0,0 @@ -package rest - -import ( - "net/http" - "strconv" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/gorilla/mux" -) - -type DidService struct { - Id string `json:"id"` - Type string `json:"type"` - ServiceEndpoint string `json:"serviceEndpoint"` -} - -type VerificationMethod struct { - Id string `json:"id"` - Type string `json:"type"` - Controller string `json:"controller"` - PublicKeyJwk map[string]string `json:"publicKeyJwk"` - PublicKeyMultibase string `json:"publicKeyMultibase"` -} - -type createDidRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Id string `json:"id"` - Controller []string `json:"controller"` - VerificationMethod []*VerificationMethod `json:"alias"` - Authentication []string `json:"authentication"` - AssertionMethod []string `json:"assertionMethod"` - CapabilityInvocation []string `json:"capabilityInvocation"` - CapabilityDelegation []string `json:"capabilityDelegation"` - KeyAgreement []string `json:"keyAgreement"` - AlsoKnownAs []string `json:"alsoKnownAs"` - Service []*DidService `json:"service"` -} - -func createDidHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req createDidRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - // TODO add verifificationMethod and Service - msg := types.NewMsgCreateDid( - req.Id, - req.Controller, - nil, - req.Authentication, - req.AssertionMethod, - req.CapabilityInvocation, - req.CapabilityDelegation, - req.KeyAgreement, - req.AlsoKnownAs, - nil, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -type updateDidRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Id string `json:"id"` - Controller []string `json:"controller"` - VerificationMethod []*VerificationMethod `json:"alias"` - Authentication []string `json:"authentication"` - AssertionMethod []string `json:"assertionMethod"` - CapabilityInvocation []string `json:"capabilityInvocation"` - CapabilityDelegation []string `json:"capabilityDelegation"` - KeyAgreement []string `json:"keyAgreement"` - AlsoKnownAs []string `json:"alsoKnownAs"` - Service []*DidService `json:"service"` -} - -func updateDidHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - _, err := strconv.ParseUint(mux.Vars(r)["id"], 10, 64) - if err != nil { - return - } - - var req updateDidRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - // TODO add verifificationMethod and Service - msg := types.NewMsgUpdateDid( - req.Id, - req.Controller, - nil, - req.Authentication, - req.AssertionMethod, - req.CapabilityInvocation, - req.CapabilityDelegation, - req.KeyAgreement, - req.AlsoKnownAs, - nil, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} diff --git a/x/cheqd/client/rest/txSchema.go b/x/cheqd/client/rest/txSchema.go deleted file mode 100644 index 460e5f806..000000000 --- a/x/cheqd/client/rest/txSchema.go +++ /dev/null @@ -1,55 +0,0 @@ -package rest - -import ( - "net/http" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" -) - -type createSchemaRequest struct { - BaseReq rest.BaseReq `json:"base_req"` - Creator string `json:"creator"` - Name string `json:"name"` - Version string `json:"version"` - AttrNames []string `json:"attrNames"` -} - -func createSchemaHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req createSchemaRequest - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - rest.WriteErrorResponse(w, http.StatusBadRequest, "failed to parse request") - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - _, err := sdk.AccAddressFromBech32(req.Creator) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - parsedName := req.Name - - parsedVersion := req.Version - - parsedAttrNames := req.AttrNames - - msg := types.NewMsgCreateSchema( - req.Creator, - parsedName, - parsedVersion, - parsedAttrNames, - ) - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index feb402d1a..ea1cfe002 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -14,6 +14,7 @@ func NewHandler(k keeper.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { ctx = ctx.WithEventManager(sdk.NewEventManager()) + parsedMsg, isMsgIdentity := msg.(*types.MsgWriteRequest) if !isMsgIdentity { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) @@ -22,19 +23,19 @@ func NewHandler(k keeper.Keeper) sdk.Handler { switch parsedMsg.Data.TypeUrl { // this line is used by starport scaffolding # 1 - case "/cheqdid.cheqdnode.cheqd.MsgCreateCredDef": + case types.MessageCreateCredDef: res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) - case "/cheqdid.cheqdnode.cheqd.MsgCreateSchema": + case types.MessageCreateSchema: res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) - case "/cheqdid.cheqdnode.cheqd.MsgCreateDid": + case types.MessageCreateDid: res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) - case "/cheqdid.cheqdnode.cheqd.MsgUpdateDid": + case types.MessageUpdateDid: res, err := msgServer.UpdateDid(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index 7133cf742..015eadc17 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -17,7 +17,7 @@ func TestHandler_CreateDid(t *testing.T) { _, did, _ := setup.InitDid() // query Did - receivedDid, _, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) // check require.Equal(t, did.Id, receivedDid.Id) @@ -30,6 +30,7 @@ func TestHandler_CreateDid(t *testing.T) { require.Equal(t, did.KeyAgreement, receivedDid.KeyAgreement) require.Equal(t, did.AlsoKnownAs, receivedDid.AlsoKnownAs) require.Equal(t, did.Service, receivedDid.Service) + require.Equal(t, did.Context, receivedDid.Context) } func TestHandler_UpdateDid(t *testing.T) { @@ -39,7 +40,7 @@ func TestHandler_UpdateDid(t *testing.T) { privKey, did, _ := setup.InitDid() // query Did - receivedDid, didMetadata, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, didMetadata, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) //Init priv key newPubKey, _, _ := ed25519.GenerateKey(rand.Reader) @@ -52,6 +53,7 @@ func TestHandler_UpdateDid(t *testing.T) { didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, dataUpdate, metadata)) + didUpdated := types.MsgUpdateDidResponse{} errUpdate := didUpdated.Unmarshal(resultUpdate.Data) @@ -60,7 +62,7 @@ func TestHandler_UpdateDid(t *testing.T) { } // query Did - receivedUpdatedDid, _, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedUpdatedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) // check require.Equal(t, didUpdated.Id, receivedUpdatedDid.Id) @@ -82,7 +84,7 @@ func TestHandler_UpdateDidInvalidSignature(t *testing.T) { _, did, _ := setup.InitDid() // query Did - receivedDid, _, _ := setup.Keeper.GetDid(setup.Ctx, did.Id) + receivedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) //Init priv key newPubKey, newPrivKey, _ := ed25519.GenerateKey(rand.Reader) @@ -92,7 +94,7 @@ func TestHandler_UpdateDidInvalidSignature(t *testing.T) { dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) _, err := setup.Handler(setup.Ctx, setup.WrapRequest(newPrivKey, dataUpdate, make(map[string]string))) require.Error(t, err) - require.Equal(t, "Invalid signature: invalid signature detected", err.Error()) + require.Equal(t, "did:cheqd:test:alice: invalid signature detected", err.Error()) } func TestHandler_CreateSchema(t *testing.T) { @@ -149,19 +151,6 @@ func TestHandler_CreateCredDef(t *testing.T) { require.Equal(t, msg.SignatureType, receivedCredDef.SignatureType) } -func TestHandler_CreateSchemaInvalidSignature(t *testing.T) { - setup := Setup() - - _, privKey, _ := ed25519.GenerateKey(rand.Reader) - msg := setup.CreateSchema() - - data, _ := ptypes.NewAnyWithValue(msg) - _, err := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) - - require.Error(t, err) - require.Equal(t, "Invalid signature: invalid signature detected", err.Error()) -} - func TestHandler_DidDocAlreadyExists(t *testing.T) { setup := Setup() @@ -169,7 +158,7 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, _, err := setup.InitDid() require.Error(t, err) - require.Equal(t, "DID DOC already exists for DID did:cheqd:test:alice: did doc exists", err.Error()) + require.Equal(t, "DID DOC already exists for DID did:cheqd:test:alice: DID Doc exists", err.Error()) credDefMsg := setup.CreateCredDef() data, _ := ptypes.NewAnyWithValue(credDefMsg) @@ -177,7 +166,7 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, err = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) require.Error(t, err) - require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1: did doc exists", err.Error()) + require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) schemaMsg := setup.CreateSchema() data, _ = ptypes.NewAnyWithValue(schemaMsg) @@ -185,5 +174,5 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, err = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) require.Error(t, err) - require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1: did doc exists", err.Error()) + require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) } diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index 3b44f961d..36a636dd9 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -86,7 +86,7 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey) *types.MsgCreateDid { return &types.MsgCreateDid{ Id: "did:cheqd:test:alice", - Controller: []string{"controller"}, + Controller: nil, VerificationMethod: []*types.VerificationMethod{&VerificationMethod}, Authentication: []string{"did:cheqd:test:alice#key-1"}, AssertionMethod: []string{"AssertionMethod"}, @@ -94,6 +94,7 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey) *types.MsgCreateDid { CapabilityDelegation: []string{"CapabilityDelegation"}, KeyAgreement: []string{"KeyAgreement"}, AlsoKnownAs: []string{"AlsoKnownAs"}, + Context: []string{"Context"}, Service: []*types.DidService{&Service}, } } @@ -111,7 +112,7 @@ func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey) *types.M return &types.MsgUpdateDid{ Id: did.Id, Controller: did.Controller, - VerificationMethod: []*types.VerificationMethod{&VerificationMethod}, + VerificationMethod: []*types.VerificationMethod{did.VerificationMethod[0], &VerificationMethod}, Authentication: did.Authentication, AssertionMethod: did.AssertionMethod, CapabilityInvocation: did.CapabilityInvocation, @@ -159,7 +160,6 @@ func (s *TestSetup) WrapRequest(privKey ed25519.PrivateKey, data *ptypes.Any, me Data: data, Metadata: metadata, Signatures: map[string]string{"did:cheqd:test:alice#key-1": signature}, - Authors: []string{"controller"}, } } diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index a2367ad05..68cc62e1c 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -53,6 +53,7 @@ func (k Keeper) AppendDid( keyAgreement []string, alsoKnownAs []string, service []*types.DidService, + context []string, ) string { // Create the did count := k.GetDidCount(ctx) @@ -67,6 +68,7 @@ func (k Keeper) AppendDid( KeyAgreement: keyAgreement, AlsoKnownAs: alsoKnownAs, Service: service, + Context: context, } created := ctx.BlockTime().String() diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index bc3f49952..6f9888207 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -2,8 +2,6 @@ package keeper import ( "context" - "fmt" - "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -14,8 +12,15 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque credDefMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateCredDef) if !isMsgIdentity { - errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) + } + + if err := credDefMsg.ValidateBasic(); err != nil { + return nil, err + } + + if err := k.VerifySignature(&ctx, msg, credDefMsg.GetSigners()); err != nil { + return nil, err } // Checks that the element exists diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 13e0d6e09..25661c26d 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -14,11 +14,17 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateDid) if !isMsgIdentity { - errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) + } + + if err := didMsg.ValidateBasic(); err != nil { + return nil, err + } + + if err := k.VerifySignature(&ctx, msg, didMsg.GetSigners()); err != nil { + return nil, err } - didMsg.Verify(&k, &ctx, msg) // Checks that the element exists if err := k.HasDidDoc(ctx, didMsg.Id); err != nil { return nil, err @@ -36,6 +42,7 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) didMsg.KeyAgreement, didMsg.AlsoKnownAs, didMsg.Service, + didMsg.Context, ) return &types.MsgCreateDidResponse{ @@ -48,8 +55,15 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgUpdateDid) if !isMsgIdentity { - errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) + } + + if err := didMsg.ValidateBasic(); err != nil { + return nil, err + } + + if err := k.VerifySignature(&ctx, msg, didMsg.GetSigners()); err != nil { + return nil, err } // Checks that the element exists @@ -83,6 +97,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) KeyAgreement: didMsg.KeyAgreement, AlsoKnownAs: didMsg.AlsoKnownAs, Service: didMsg.Service, + Context: didMsg.Context, } k.SetDid(ctx, did, metadata) diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 54445d28f..70e208f1b 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -2,8 +2,6 @@ package keeper import ( "context" - "fmt" - "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -14,8 +12,15 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteReques schemaMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateSchema) if !isMsgIdentity { - errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) + } + + if err := schemaMsg.ValidateBasic(); err != nil { + return nil, err + } + + if err := k.VerifySignature(&ctx, msg, schemaMsg.GetSigners()); err != nil { + return nil, err } // Checks that the element exists diff --git a/x/cheqd/keeper/query_did.go b/x/cheqd/keeper/query_did.go index 9b41fc958..d9fcb18cf 100644 --- a/x/cheqd/keeper/query_did.go +++ b/x/cheqd/keeper/query_did.go @@ -11,7 +11,7 @@ func getDid(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.L return nil, sdkerrors.ErrKeyNotFound } - msg, _, err := keeper.GetDid(ctx, id) + msg, _, err := keeper.GetDid(&ctx, id) if err != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) } diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go new file mode 100644 index 000000000..ee758618c --- /dev/null +++ b/x/cheqd/keeper/verify.go @@ -0,0 +1,38 @@ +package keeper + +import ( + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cheqd/cheqd-node/x/cheqd/utils" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, signers []types.Signer) error { + signingInput, err := utils.BuildSigningInput(msg) + if err != nil { + return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) + } + + for _, signer := range signers { + if signer.VerificationMethod == nil { + didDoc, _, err := k.GetDid(ctx, signer.Signer) + if err != nil { + return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) + } + + signer.Authentication = didDoc.Authentication + signer.VerificationMethod = didDoc.VerificationMethod + } + + valid, err := utils.VerifyIdentitySignature(signer, msg.Signatures, signingInput) + if err != nil { + return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) + } + + if !valid { + return sdkerrors.Wrap(types.ErrInvalidSignature, signer.Signer) + } + } + + return nil +} diff --git a/x/cheqd/module.go b/x/cheqd/module.go index fc9fa31e2..f2a253d6b 100644 --- a/x/cheqd/module.go +++ b/x/cheqd/module.go @@ -12,8 +12,9 @@ import ( abci "github.com/tendermint/tendermint/abci/types" - "github.com/cheqd/cheqd-node/x/cheqd/client/cli" - "github.com/cheqd/cheqd-node/x/cheqd/client/rest" + // TODO implement client later + //"github.com/cheqd/cheqd-node/x/cheqd/client/cli" + //"github.com/cheqd/cheqd-node/x/cheqd/client/rest" "github.com/cheqd/cheqd-node/x/cheqd/keeper" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/client" @@ -75,7 +76,7 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod // RegisterRESTRoutes registers the capability module's REST service handlers. func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { - rest.RegisterRoutes(clientCtx, rtr) + //rest.RegisterRoutes(clientCtx, rtr) } // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. @@ -88,12 +89,14 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r // GetTxCmd returns the capability module's root tx command. func (a AppModuleBasic) GetTxCmd() *cobra.Command { - return cli.GetTxCmd() + //return cli.GetTxCmd() + return nil } // GetQueryCmd returns the capability module's root query command. func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd(types.StoreKey) + //return cli.GetQueryCmd(types.StoreKey) + return nil } // ---------------------------------------------------------------------------- diff --git a/x/cheqd/types/identity_msg.go b/x/cheqd/types/identity_msg.go new file mode 100644 index 000000000..14d29f2ab --- /dev/null +++ b/x/cheqd/types/identity_msg.go @@ -0,0 +1,14 @@ +package types + +type ( + IdentityMsg interface { + ValidateBasic() error + GetSigners() []Signer + } + + Signer struct { + Signer string + Authentication []string + VerificationMethod []*VerificationMethod + } +) diff --git a/x/cheqd/types/messages.go b/x/cheqd/types/messages.go new file mode 100644 index 000000000..ec9dfbfa0 --- /dev/null +++ b/x/cheqd/types/messages.go @@ -0,0 +1,17 @@ +package types + +const ( + MessageCreateDid = "/cheqdid.cheqdnode.cheqd.MsgCreateDid" +) + +const ( + MessageUpdateDid = "/cheqdid.cheqdnode.cheqd.MsgUpdateDid" +) + +const ( + MessageCreateSchema = "/cheqdid.cheqdnode.cheqd.MsgCreateSchema" +) + +const ( + MessageCreateCredDef = "/cheqdid.cheqdnode.cheqd.MsgCreateCredDef" +) diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index 07f40038e..ba78688d7 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -1,36 +1,28 @@ package types -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) +var _ IdentityMsg = &MsgCreateCredDef{} -var _ sdk.Msg = &MsgCreateCredDef{} - -// NewMsgCreateCredDef todo add value -func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, value *MsgCreateCredDef_ClType) *MsgCreateCredDef { +func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, controller []string, value *MsgCreateCredDef_ClType) *MsgCreateCredDef { return &MsgCreateCredDef{ Id: id, SchemaId: schemaId, Tag: tag, SignatureType: signatureType, Value: value, + Controller: controller, } } -func (msg *MsgCreateCredDef) Route() string { - return RouterKey -} - -func (msg *MsgCreateCredDef) Type() string { - return "CreateCredDef" -} +func (msg *MsgCreateCredDef) GetSigners() []Signer { + result := make([]Signer, len(msg.Controller)) -func (msg *MsgCreateCredDef) GetSigners() []sdk.AccAddress { - return []sdk.AccAddress{} -} + for i, signer := range msg.Controller { + result[i] = Signer{ + Signer: signer, + } + } -func (msg *MsgCreateCredDef) GetSignBytes() []byte { - return []byte{} + return result } func (msg *MsgCreateCredDef) ValidateBasic() error { diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 69b0be422..7586c486f 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -1,11 +1,5 @@ package types -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) - -var _ sdk.Msg = &MsgCreateDid{} - func NewMsgCreateDid( id string, controller []string, @@ -17,6 +11,7 @@ func NewMsgCreateDid( keyAgreement []string, alsoKnownAs []string, service []*DidService, + context []string, ) *MsgCreateDid { return &MsgCreateDid{ Id: id, @@ -29,70 +24,51 @@ func NewMsgCreateDid( KeyAgreement: keyAgreement, AlsoKnownAs: alsoKnownAs, Service: service, + Context: context, } } -/* -func (msg *MsgCreateDid) Verify(keeper *keeper.Keeper, ctx *sdk.Context, request *MsgWriteRequest) (bool, error) { - signingInput, err:=utils.BuildSigningInput(request) - if err!=nil { - return false, err - } +var _ IdentityMsg = &MsgCreateDid{} - // if controller is present +func (msg *MsgCreateDid) GetSigners() []Signer { if len(msg.Controller) > 0 { - for _, controller := range msg.Controller { - var authentication []string - var verificationMethod []*VerificationMethod - - // if self-signed - if controller == msg.Id { - authentication=msg.Authentication - verificationMethod=msg.VerificationMethod + result := make([]Signer, len(msg.Controller)) + + for i, signer := range msg.Controller { + if signer == msg.Id { + result[i] = Signer{ + Signer: signer, + Authentication: msg.Authentication, + VerificationMethod: msg.VerificationMethod, + } } else { - didDoc, _, err := keeper.GetDid(ctx, controller) - if err != nil { - return false, ErrDidDocNotFound.Wrap(controller) + result[i] = Signer{ + Signer: signer, } - - authentication=didDoc.Authentication - verificationMethod=didDoc.VerificationMethod } - - // check all controller signatures - return utils.VerifyIdentitySignature(controller, authentication, verificationMethod, request.Signatures, signingInput) } + + return result } - // controller is not present but there are authentications if len(msg.Authentication) > 0 { - return utils.VerifyIdentitySignature(msg.Id, msg.Authentication, msg.VerificationMethod, request.Signatures, signingInput) + return []Signer{ + { + Signer: msg.Id, + Authentication: msg.Authentication, + VerificationMethod: msg.VerificationMethod, + }, + } } - return false, ErrInvalidSignature.Wrap("At least DID Doc should contain `controller` or `authentication`") -}*/ - -func (msg *MsgCreateDid) Route() string { - return RouterKey -} - -func (msg *MsgCreateDid) Type() string { - return "CreateDid" -} - -func (msg *MsgCreateDid) GetSigners() []sdk.AccAddress { - return []sdk.AccAddress{} -} - -func (msg *MsgCreateDid) GetSignBytes() []byte { - return []byte{} + return []Signer{} } func (msg *MsgCreateDid) ValidateBasic() error { return nil } -var _ sdk.Msg = &MsgUpdateDid{} +var _ IdentityMsg = &MsgUpdateDid{} func NewMsgUpdateDid( id string, @@ -105,6 +81,7 @@ func NewMsgUpdateDid( keyAgreement []string, alsoKnownAs []string, service []*DidService, + context []string, ) *MsgUpdateDid { return &MsgUpdateDid{ Id: id, @@ -117,23 +94,42 @@ func NewMsgUpdateDid( KeyAgreement: keyAgreement, AlsoKnownAs: alsoKnownAs, Service: service, + Context: context, } } -func (msg *MsgUpdateDid) Route() string { - return RouterKey -} +func (msg *MsgUpdateDid) GetSigners() []Signer { + if len(msg.Controller) > 0 { + result := make([]Signer, len(msg.Controller)) + + for i, signer := range msg.Controller { + if signer == msg.Id { + result[i] = Signer{ + Signer: signer, + Authentication: msg.Authentication, + VerificationMethod: msg.VerificationMethod, + } + } else { + result[i] = Signer{ + Signer: signer, + } + } + } -func (msg *MsgUpdateDid) Type() string { - return "UpdateDid" -} + return result + } -func (msg *MsgUpdateDid) GetSigners() []sdk.AccAddress { - return []sdk.AccAddress{} -} + if len(msg.Authentication) > 0 { + return []Signer{ + { + Signer: msg.Id, + Authentication: msg.Authentication, + VerificationMethod: msg.VerificationMethod, + }, + } + } -func (msg *MsgUpdateDid) GetSignBytes() []byte { - return []byte{} + return []Signer{} } func (msg *MsgUpdateDid) ValidateBasic() error { diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index bb3ccbfd3..afa653034 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -1,31 +1,28 @@ package types -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) +var _ IdentityMsg = &MsgCreateSchema{} -var _ sdk.Msg = &MsgCreateSchema{} - -func NewMsgCreateSchema(id string, name string, version string, attrNames []string) *MsgCreateSchema { +func NewMsgCreateSchema(id string, typeSchema string, name string, version string, attrNames []string, controller []string) *MsgCreateSchema { return &MsgCreateSchema{ - Id: id, - Name: name, - Version: version, - AttrNames: attrNames, + Id: id, + Type: typeSchema, + Name: name, + Version: version, + AttrNames: attrNames, + Controller: controller, } } -func (msg *MsgCreateSchema) Route() string { - return RouterKey -} +func (msg *MsgCreateSchema) GetSigners() []Signer { + result := make([]Signer, len(msg.Controller)) -func (msg *MsgCreateSchema) GetSigners() []sdk.AccAddress { - return []sdk.AccAddress{} -} + for i, signer := range msg.Controller { + result[i] = Signer{ + Signer: signer, + } + } -func (msg *MsgCreateSchema) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) + return result } func (msg *MsgCreateSchema) ValidateBasic() error { diff --git a/x/cheqd/utils/utils.go b/x/cheqd/utils/utils.go index 48cf29828..ab335f9ed 100644 --- a/x/cheqd/utils/utils.go +++ b/x/cheqd/utils/utils.go @@ -27,13 +27,13 @@ func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { return fragments[0], fragments[1] } -func VerifyIdentitySignature(controller string, authentication []string, verificationMethods []*types.VerificationMethod, signatures map[string]string, signingInput []byte) (bool, error) { +func VerifyIdentitySignature(signer types.Signer, signatures map[string]string, signingInput []byte) (bool, error) { result := true - for signer, signature := range signatures { - did, _ := SplitDidUrlIntoDidAndFragment(signer) - if did == controller { - pubKey, err := FindPublicKey(authentication, verificationMethods, signer) + for id, signature := range signatures { + did, _ := SplitDidUrlIntoDidAndFragment(id) + if did == signer.Signer { + pubKey, err := FindPublicKey(signer, id) if err != nil { return false, err } @@ -50,10 +50,10 @@ func VerifyIdentitySignature(controller string, authentication []string, verific return result, nil } -func FindPublicKey(authentication []string, verificationMethods []*types.VerificationMethod, id string) (ed25519.PublicKey, error) { - for _, authentication := range authentication { +func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { + for _, authentication := range signer.Authentication { if authentication == id { - for _, vm := range verificationMethods { + for _, vm := range signer.VerificationMethod { if vm.Id == id { return base58.Decode(vm.PublicKeyMultibase[1:]), nil } From f1a80c843800e011305bada3bd4a4fed8941ee56 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 15 Oct 2021 02:09:21 +0300 Subject: [PATCH 27/74] add validation to cred def --- x/cheqd/keeper/cred_def.go | 6 +- x/cheqd/keeper/verify.go | 62 ++++++- x/cheqd/msg_test.go | 163 +++++++++++++++++++ x/cheqd/types/errors.go | 2 + x/cheqd/types/messages_cred_def.go | 30 ++++ x/cheqd/types/messages_schema.go | 26 +++ x/cheqd/types/messages_write_request.go | 10 +- x/cheqd/types/messages_write_request_test.go | 32 ---- x/cheqd/utils/array.go | 11 ++ x/cheqd/utils/constant.go | 4 + x/cheqd/utils/cred_def.go | 7 + x/cheqd/utils/did.go | 57 +++++++ x/cheqd/utils/did_test.go | 36 ++++ x/cheqd/utils/utils.go | 69 -------- 14 files changed, 406 insertions(+), 109 deletions(-) create mode 100644 x/cheqd/msg_test.go delete mode 100644 x/cheqd/types/messages_write_request_test.go create mode 100644 x/cheqd/utils/array.go create mode 100644 x/cheqd/utils/constant.go create mode 100644 x/cheqd/utils/cred_def.go create mode 100644 x/cheqd/utils/did.go create mode 100644 x/cheqd/utils/did_test.go delete mode 100644 x/cheqd/utils/utils.go diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index ce501c9e8..6c4824a93 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -40,7 +40,6 @@ func (k Keeper) SetCredDefCount(ctx sdk.Context, count uint64) { store.Set(byteKey, bz) } -// AppendCredDef TODO add Value // AppendCredDef appends a credDef in the store with a new id and update the count func (k Keeper) AppendCredDef( ctx sdk.Context, @@ -53,6 +52,11 @@ func (k Keeper) AppendCredDef( // Create the credDef count := k.GetCredDefCount(ctx) + // A default tag `tag` will be used if not specified. + if len(tag) == 0 { + tag = "tag" + } + var credDef = types.CredDef{ Id: id, SchemaId: schemaId, diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index ee758618c..6f55d7ff4 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -1,6 +1,12 @@ package keeper import ( + "crypto/ed25519" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "github.com/btcsuite/btcutil/base58" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cheqd/cheqd-node/x/cheqd/utils" sdk "github.com/cosmos/cosmos-sdk/types" @@ -8,7 +14,7 @@ import ( ) func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, signers []types.Signer) error { - signingInput, err := utils.BuildSigningInput(msg) + signingInput, err := BuildSigningInput(msg) if err != nil { return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) } @@ -24,7 +30,7 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s signer.VerificationMethod = didDoc.VerificationMethod } - valid, err := utils.VerifyIdentitySignature(signer, msg.Signatures, signingInput) + valid, err := VerifyIdentitySignature(signer, msg.Signatures, signingInput) if err != nil { return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) } @@ -36,3 +42,55 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s return nil } + +func BuildSigningInput(msg *types.MsgWriteRequest) ([]byte, error) { + metadataBytes, err := json.Marshal(&msg.Metadata) + if err != nil { + return nil, types.ErrInvalidSignature.Wrap("An error has occurred during metadata marshalling") + } + + dataBytes := msg.Data.Value + signingInput := ([]byte)(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) + return signingInput, nil +} + +func VerifyIdentitySignature(signer types.Signer, signatures map[string]string, signingInput []byte) (bool, error) { + result := true + + for id, signature := range signatures { + did, _ := utils.SplitDidUrlIntoDidAndFragment(id) + if did == signer.Signer { + pubKey, err := FindPublicKey(signer, id) + if err != nil { + return false, err + } + + signature, err := base64.StdEncoding.DecodeString(signature) + if err != nil { + return false, err + } + + result = result && ed25519.Verify(pubKey, signingInput, signature) + } + } + + return result, nil +} + +func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { + for _, authentication := range signer.Authentication { + if authentication == id { + for _, vm := range signer.VerificationMethod { + if vm.Id == id { + return base58.Decode(vm.PublicKeyMultibase[1:]), nil + } + } + + msg := fmt.Sprintf("Verification Method %s not found", id) + return nil, errors.New(msg) + } + } + + msg := fmt.Sprintf("Authentication %s not found", id) + return nil, errors.New(msg) +} diff --git a/x/cheqd/msg_test.go b/x/cheqd/msg_test.go new file mode 100644 index 000000000..0129723c4 --- /dev/null +++ b/x/cheqd/msg_test.go @@ -0,0 +1,163 @@ +package cheqd + +import ( + "github.com/cheqd/cheqd-node/x/cheqd/types" + ctypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/stretchr/testify/require" + "testing" +) + +func TestNewMsgCreateCredDef(t *testing.T) { + cases := []struct { + valid bool + msg *types.MsgCreateCredDef + errMsg string + }{ + { + true, + types.NewMsgCreateCredDef( + "did:cheqd:test:aaaaa", + "schema", + "", + "CL-Sig-Cred_def", + []string{"did:cheqd:test:alice"}, + &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + "", + }, + { + true, + types.NewMsgCreateCredDef( + "did:cheqd:test:aaaaa", + "schema", + "tag", + "CL-Sig-Cred_def", + []string{"did:cheqd:test:alice"}, + &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + "", + }, + { + false, + types.NewMsgCreateCredDef( + "", + "", + "", + "", + nil, + &types.MsgCreateCredDef_ClType{ClType: nil}), + "Id: is not DID", + }, + { + false, + types.NewMsgCreateCredDef( + "did:cheqd:test:alice#key-1", + "", + "", + "", + nil, + &types.MsgCreateCredDef_ClType{ClType: nil}), + "Id: is not DID", + }, + { + false, + types.NewMsgCreateCredDef( + "did:cheqd:test:alice", + "", + "", + "", + nil, + &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + "SchemaId: is required", + }, + { + false, + types.NewMsgCreateCredDef( + "did:cheqd:test:alice", + "schema-1", + "", + "", + nil, + &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + "SignatureType: is required", + }, + { + false, + types.NewMsgCreateCredDef( + "did:cheqd:test:alice", + "schema-1", + "", + "ss", + []string{"did:cheqd:test:alice"}, + &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + "ss is not allowed signature type: bad request", + }, + { + false, + types.NewMsgCreateCredDef( + "did:cheqd:test:alice", + "schema-1", + "", + "CL-Sig-Cred_def", + nil, + &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + "Controller: is required", + }, + { + false, + types.NewMsgCreateCredDef( + "did:cheqd:test:alice", + "schema-1", + "", + "CL-Sig-Cred_def", + []string{"1"}, + &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + "Controller item 1: is not DID", + }, + { + false, + types.NewMsgCreateCredDef( + "did:cheqd:test:alice", + "schema-1", + "", + "CL-Sig-Cred_def", + []string{"did:cheqd:test:alice"}, + &types.MsgCreateCredDef_ClType{ClType: nil}), + "Value: is required", + }, + } + + for _, tc := range cases { + err := tc.msg.ValidateBasic() + + if tc.valid { + require.Nil(t, err) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + } +} + +func TestNewMsgWriteRequestValidation(t *testing.T) { + cases := []struct { + valid bool + msg *types.MsgWriteRequest + errMsg string + }{ + {true, types.NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), ""}, + {false, types.NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, + {false, types.NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, + {false, types.NewMsgWriteRequest(nil, nil, nil), "Data: is required"}, + {false, types.NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, nil), "Signatures: is required"}, + } + + for _, tc := range cases { + err := tc.msg.ValidateBasic() + + if tc.valid { + require.Nil(t, err) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + } +} diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index 4b38c64dc..d5ddc6495 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -9,6 +9,8 @@ import ( // x/cheqd module sentinel errors var ( ErrBadRequest = sdkerrors.Register(ModuleName, 1000, "bad request") + ErrBadRequestIsRequired = sdkerrors.Register(ModuleName, 1001, "is required") + ErrBadRequestIsNotDid = sdkerrors.Register(ModuleName, 1002, "is not DID") ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "DID Doc exists") ErrDidDocNotFound = sdkerrors.Register(ModuleName, 1201, "DID Doc not found") diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index ba78688d7..a6bb255eb 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -1,5 +1,7 @@ package types +import "github.com/cheqd/cheqd-node/x/cheqd/utils" + var _ IdentityMsg = &MsgCreateCredDef{} func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, controller []string, value *MsgCreateCredDef_ClType) *MsgCreateCredDef { @@ -26,5 +28,33 @@ func (msg *MsgCreateCredDef) GetSigners() []Signer { } func (msg *MsgCreateCredDef) ValidateBasic() error { + if utils.IsNotDid(msg.Id) { + return ErrBadRequestIsNotDid.Wrap("Id") + } + + if msg.Value == nil || msg.Value.Size() == 0 { + return ErrBadRequestIsRequired.Wrap("Value") + } + + if len(msg.SchemaId) == 0 { + return ErrBadRequestIsRequired.Wrap("SchemaId") + } + + if len(msg.SignatureType) == 0 { + return ErrBadRequestIsRequired.Wrap("SignatureType") + } + + if utils.IsNotCredDefSignatureType(msg.SignatureType) { + return ErrBadRequest.Wrapf("%s is not allowed signature type", msg.SignatureType) + } + + if len(msg.Controller) == 0 { + return ErrBadRequestIsRequired.Wrap("Controller") + } + + if notValid, i := utils.ArrayContainsNotDid(msg.Controller); notValid { + return ErrBadRequestIsNotDid.Wrapf("Controller item %s", msg.Controller[i]) + } + return nil } diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index afa653034..853d18d10 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -1,5 +1,7 @@ package types +import "github.com/cheqd/cheqd-node/x/cheqd/utils" + var _ IdentityMsg = &MsgCreateSchema{} func NewMsgCreateSchema(id string, typeSchema string, name string, version string, attrNames []string, controller []string) *MsgCreateSchema { @@ -26,5 +28,29 @@ func (msg *MsgCreateSchema) GetSigners() []Signer { } func (msg *MsgCreateSchema) ValidateBasic() error { + if utils.IsNotDid(msg.Id) { + return ErrBadRequestIsNotDid.Wrap("Id") + } + + if len(msg.Type) == 0 { + return ErrBadRequestIsRequired.Wrap("Type") + } + + if len(msg.Type) == 0 { + return ErrBadRequestIsRequired.Wrap("Type") + } + + if len(msg.Type) == 0 { + return ErrBadRequestIsRequired.Wrap("Type") + } + + if len(msg.Type) == 0 { + return ErrBadRequestIsRequired.Wrap("Type") + } + + if valid, i := utils.ArrayContainsNotDid(msg.Controller); !valid { + return ErrBadRequestIsNotDid.Wrapf("Controller item %s", msg.Controller[i]) + } + return nil } diff --git a/x/cheqd/types/messages_write_request.go b/x/cheqd/types/messages_write_request.go index a978983ad..bff61a580 100644 --- a/x/cheqd/types/messages_write_request.go +++ b/x/cheqd/types/messages_write_request.go @@ -34,15 +34,15 @@ func (msg *MsgWriteRequest) GetSignBytes() []byte { func (msg *MsgWriteRequest) ValidateBasic() error { if msg.Data == nil { - return ErrBadRequest.Wrap("Invalid Data: it is required") + return ErrBadRequestIsRequired.Wrap("Data") } - if len(msg.Data.TypeUrl) == 0 || len(msg.Data.Value) == 0 { - return ErrBadRequest.Wrap("Invalid Data: it cannot be empty") + if len(msg.Signatures) == 0 { + return ErrBadRequestIsRequired.Wrap("Signatures") } - if len(msg.Signatures) == 0 { - return ErrBadRequest.Wrap("Invalid Signatures: it is required") + if len(msg.Data.TypeUrl) == 0 || len(msg.Data.Value) == 0 { + return ErrBadRequest.Wrap("Invalid Data: it cannot be empty") } return nil diff --git a/x/cheqd/types/messages_write_request_test.go b/x/cheqd/types/messages_write_request_test.go deleted file mode 100644 index a392c2e64..000000000 --- a/x/cheqd/types/messages_write_request_test.go +++ /dev/null @@ -1,32 +0,0 @@ -package types - -import ( - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/stretchr/testify/require" - "testing" -) - -func TestNewMsgWriteRequestValidation(t *testing.T) { - cases := []struct { - valid bool - msg *MsgWriteRequest - errMsg string - }{ - {true, NewMsgWriteRequest(&types.Any{TypeUrl: "1", Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), ""}, - {false, NewMsgWriteRequest(&types.Any{TypeUrl: "1"}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, - {false, NewMsgWriteRequest(&types.Any{Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, - {false, NewMsgWriteRequest(nil, nil, nil), "Invalid Data: it is required: bad request"}, - {false, NewMsgWriteRequest(&types.Any{TypeUrl: "1", Value: []byte{1}}, nil, nil), "Invalid Signatures: it is required: bad request"}, - } - - for _, tc := range cases { - err := tc.msg.ValidateBasic() - - if tc.valid { - require.Nil(t, err) - } else { - require.Error(t, err) - require.Equal(t, tc.errMsg, err.Error()) - } - } -} diff --git a/x/cheqd/utils/array.go b/x/cheqd/utils/array.go new file mode 100644 index 000000000..84f0f88a8 --- /dev/null +++ b/x/cheqd/utils/array.go @@ -0,0 +1,11 @@ +package utils + +func StringArrayContains(array []string, item string) bool { + for _, i := range array { + if item == i { + return true + } + } + + return false +} diff --git a/x/cheqd/utils/constant.go b/x/cheqd/utils/constant.go new file mode 100644 index 000000000..ccd000cf1 --- /dev/null +++ b/x/cheqd/utils/constant.go @@ -0,0 +1,4 @@ +package utils + +var MethodName = "cheqd" +var MethodSpecificId = "test" diff --git a/x/cheqd/utils/cred_def.go b/x/cheqd/utils/cred_def.go new file mode 100644 index 000000000..49f28cc68 --- /dev/null +++ b/x/cheqd/utils/cred_def.go @@ -0,0 +1,7 @@ +package utils + +var AllowedCredDefSignatureType = []string{"CL-Sig-Cred_def"} + +func IsNotCredDefSignatureType(signatureType string) bool { + return !StringArrayContains(AllowedCredDefSignatureType, signatureType) +} diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go new file mode 100644 index 000000000..ceb7c1e45 --- /dev/null +++ b/x/cheqd/utils/did.go @@ -0,0 +1,57 @@ +package utils + +import ( + "regexp" + "strings" +) + +var DidForbiddenSymbolsRegexp, _ = regexp.Compile("^[^#?&/\\\\]+$") + +func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { + fragments := strings.Split(didUrl, "#") + return fragments[0], fragments[1] +} + +func ArrayContainsNotDid(array []string) (bool, int) { + for i, did := range array { + if IsNotDid(did) { + return true, i + } + } + + return false, 0 +} + +func IsNotDid(did string) bool { + return IsDid(did) == false +} + +func IsDid(did string) bool { + if len(did) == 0 { + return false + } + + if !DidForbiddenSymbolsRegexp.MatchString(did) { + return false + } + + fragments := strings.Split(did, ":") + + if len(fragments) <= 3 { + return false + } + + if fragments[0] != "did" { + return false + } + + if fragments[1] != MethodName { + return false + } + + if fragments[2] != MethodSpecificId { + return false + } + + return true +} diff --git a/x/cheqd/utils/did_test.go b/x/cheqd/utils/did_test.go new file mode 100644 index 000000000..a7e53f282 --- /dev/null +++ b/x/cheqd/utils/did_test.go @@ -0,0 +1,36 @@ +package utils + +import ( + "github.com/stretchr/testify/require" + "testing" +) + +func TestIsDid(t *testing.T) { + cases := []struct { + valid bool + did string + }{ + {true, "did:cheqd:test:wyywywywyw"}, + {true, "did:cheqd:test:wyywywywyw:sdadasda"}, + {false, "did1:cheqd:test:wyywywywyw:sdadasda"}, + {false, "did:cheqd2:test:wyywywywyw:sdadasda"}, + {false, "did:cheqd:test4:wyywywywyw:sdadasda"}, + {false, ""}, + {false, "did:cheqd"}, + {false, "did:cheqd:test"}, + {false, "did:cheqd:test:dsdasdad#weqweqwew"}, + {false, "did:cheqd:test:sdasdasdasd/qeweqweqwee"}, + {false, "did:cheqd:test:sdasdasdasd?=qeweqweqwee"}, + {false, "did:cheqd:test:sdasdasdasd&qeweqweqwee"}, + } + + for _, tc := range cases { + isDid := IsDid(tc.did) + + if tc.valid { + require.True(t, isDid) + } else { + require.False(t, isDid) + } + } +} diff --git a/x/cheqd/utils/utils.go b/x/cheqd/utils/utils.go deleted file mode 100644 index ab335f9ed..000000000 --- a/x/cheqd/utils/utils.go +++ /dev/null @@ -1,69 +0,0 @@ -package utils - -import ( - "crypto/ed25519" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "github.com/btcsuite/btcutil/base58" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "strings" -) - -func BuildSigningInput(msg *types.MsgWriteRequest) ([]byte, error) { - metadataBytes, err := json.Marshal(&msg.Metadata) - if err != nil { - return nil, types.ErrInvalidSignature.Wrap("An error has occurred during metadata marshalling") - } - - dataBytes := msg.Data.Value - signingInput := ([]byte)(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) - return signingInput, nil -} - -func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { - fragments := strings.Split(didUrl, "#") - return fragments[0], fragments[1] -} - -func VerifyIdentitySignature(signer types.Signer, signatures map[string]string, signingInput []byte) (bool, error) { - result := true - - for id, signature := range signatures { - did, _ := SplitDidUrlIntoDidAndFragment(id) - if did == signer.Signer { - pubKey, err := FindPublicKey(signer, id) - if err != nil { - return false, err - } - - signature, err := base64.StdEncoding.DecodeString(signature) - if err != nil { - return false, err - } - - result = result && ed25519.Verify(pubKey, signingInput, signature) - } - } - - return result, nil -} - -func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { - for _, authentication := range signer.Authentication { - if authentication == id { - for _, vm := range signer.VerificationMethod { - if vm.Id == id { - return base58.Decode(vm.PublicKeyMultibase[1:]), nil - } - } - - msg := fmt.Sprintf("Verification Method %s not found", id) - return nil, errors.New(msg) - } - } - - msg := fmt.Sprintf("Authentication %s not found", id) - return nil, errors.New(msg) -} From a2890544ef9ee94bf44bf0a52a20902def767416 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 15 Oct 2021 10:04:33 +0300 Subject: [PATCH 28/74] add validation to cred def Id --- x/cheqd/msg_test.go | 29 ++++++++++++++++++++--------- x/cheqd/types/messages_cred_def.go | 11 +++++++++-- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/x/cheqd/msg_test.go b/x/cheqd/msg_test.go index 0129723c4..1373cedf6 100644 --- a/x/cheqd/msg_test.go +++ b/x/cheqd/msg_test.go @@ -16,7 +16,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { true, types.NewMsgCreateCredDef( - "did:cheqd:test:aaaaa", + "did:cheqd:test:aaaaa/credDef", "schema", "", "CL-Sig-Cred_def", @@ -27,7 +27,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { true, types.NewMsgCreateCredDef( - "did:cheqd:test:aaaaa", + "did:cheqd:test:aaaaa/credDef", "schema", "tag", "CL-Sig-Cred_def", @@ -38,7 +38,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, types.NewMsgCreateCredDef( - "", + "/credDef", "", "", "", @@ -49,7 +49,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, types.NewMsgCreateCredDef( - "did:cheqd:test:alice#key-1", + "did:cheqd:test:alice#key-1/credDef", "", "", "", @@ -66,12 +66,23 @@ func TestNewMsgCreateCredDef(t *testing.T) { "", nil, &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + "Id must end with resource type '/credDef': bad request", + }, + { + false, + types.NewMsgCreateCredDef( + "did:cheqd:test:alice/credDef", + "", + "", + "", + nil, + &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), "SchemaId: is required", }, { false, types.NewMsgCreateCredDef( - "did:cheqd:test:alice", + "did:cheqd:test:alice/credDef", "schema-1", "", "", @@ -82,7 +93,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, types.NewMsgCreateCredDef( - "did:cheqd:test:alice", + "did:cheqd:test:alice/credDef", "schema-1", "", "ss", @@ -93,7 +104,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, types.NewMsgCreateCredDef( - "did:cheqd:test:alice", + "did:cheqd:test:alice/credDef", "schema-1", "", "CL-Sig-Cred_def", @@ -104,7 +115,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, types.NewMsgCreateCredDef( - "did:cheqd:test:alice", + "did:cheqd:test:alice/credDef", "schema-1", "", "CL-Sig-Cred_def", @@ -115,7 +126,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, types.NewMsgCreateCredDef( - "did:cheqd:test:alice", + "did:cheqd:test:alice/credDef", "schema-1", "", "CL-Sig-Cred_def", diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index a6bb255eb..ed0776ade 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -1,6 +1,9 @@ package types -import "github.com/cheqd/cheqd-node/x/cheqd/utils" +import ( + "github.com/cheqd/cheqd-node/x/cheqd/utils" + "strings" +) var _ IdentityMsg = &MsgCreateCredDef{} @@ -28,7 +31,11 @@ func (msg *MsgCreateCredDef) GetSigners() []Signer { } func (msg *MsgCreateCredDef) ValidateBasic() error { - if utils.IsNotDid(msg.Id) { + if !strings.HasSuffix(msg.Id, "/credDef") { + return ErrBadRequest.Wrap("Id must end with resource type '/credDef'") + } + + if utils.IsNotDid(msg.Id[:len(msg.Id)-8]) { return ErrBadRequestIsNotDid.Wrap("Id") } From 93cf6a36c764cef8f94bc180f41a3e13d0fd4c07 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 15 Oct 2021 10:30:56 +0300 Subject: [PATCH 29/74] added schema validation --- x/cheqd/msg_test.go | 174 +++++++++++++++++++++++++++++++ x/cheqd/types/messages_schema.go | 37 +++++-- x/cheqd/utils/schema.go | 7 ++ 3 files changed, 209 insertions(+), 9 deletions(-) create mode 100644 x/cheqd/utils/schema.go diff --git a/x/cheqd/msg_test.go b/x/cheqd/msg_test.go index 1373cedf6..04200e149 100644 --- a/x/cheqd/msg_test.go +++ b/x/cheqd/msg_test.go @@ -172,3 +172,177 @@ func TestNewMsgWriteRequestValidation(t *testing.T) { } } } + +func TestNewMsgCreateSchema(t *testing.T) { + cases := []struct { + valid bool + msg *types.MsgCreateSchema + errMsg string + }{ + { + true, + types.NewMsgCreateSchema( + "did:cheqd:test:aaaaa/schema", + "CL-Schema", + "schema", + "version1", + []string{"did:cheqd:test:alice"}, + []string{"did:cheqd:test:alice"}), + "", + }, + { + false, + types.NewMsgCreateSchema( + "/schema", + "", + "", + "", + nil, + nil), + "Id: is not DID", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice#key-1/schema", + "", + "", + "", + nil, + nil), + "Id: is not DID", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice", + "", + "", + "", + nil, + nil), + "Id must end with resource type '/schema': bad request", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "", + "", + "", + nil, + nil), + "Type: is required", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "schema-1", + "", + "", + nil, + nil), + "schema-1 is not allowed type: bad request", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "schema-1", + "", + "ss", + []string{"did:cheqd:test:alice"}, + nil), + "schema-1 is not allowed type: bad request", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "CL-Schema", + "", + "", + nil, + nil), + "AttrNames: is required", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "CL-Schema", + "", + "", + []string{}, + nil), + "AttrNames: is required", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "CL-Schema", + "", + "", + []string{"1", "2"}, + nil), + "Name: is required", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "CL-Schema", + "", + "", + make([]string, 126), + nil), + "AttrNames: Expected max length 125, got: 126: bad request", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "CL-Schema", + "schema", + "", + []string{"1"}, + nil), + "Version: is required", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "CL-Schema", + "schema", + "version", + []string{"1"}, + nil), + "Controller: is required", + }, + { + false, + types.NewMsgCreateSchema( + "did:cheqd:test:alice/schema", + "CL-Schema", + "schema", + "version", + []string{"1"}, + []string{"1"}), + "Controller item 1: is not DID", + }, + } + + for _, tc := range cases { + err := tc.msg.ValidateBasic() + + if tc.valid { + require.Nil(t, err) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + } +} diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index 853d18d10..536edb306 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -1,6 +1,9 @@ package types -import "github.com/cheqd/cheqd-node/x/cheqd/utils" +import ( + "github.com/cheqd/cheqd-node/x/cheqd/utils" + "strings" +) var _ IdentityMsg = &MsgCreateSchema{} @@ -28,7 +31,11 @@ func (msg *MsgCreateSchema) GetSigners() []Signer { } func (msg *MsgCreateSchema) ValidateBasic() error { - if utils.IsNotDid(msg.Id) { + if !strings.HasSuffix(msg.Id, "/schema") { + return ErrBadRequest.Wrap("Id must end with resource type '/schema'") + } + + if utils.IsNotDid(msg.Id[:len(msg.Id)-7]) { return ErrBadRequestIsNotDid.Wrap("Id") } @@ -36,19 +43,31 @@ func (msg *MsgCreateSchema) ValidateBasic() error { return ErrBadRequestIsRequired.Wrap("Type") } - if len(msg.Type) == 0 { - return ErrBadRequestIsRequired.Wrap("Type") + if utils.IsNotSchemaType(msg.Type) { + return ErrBadRequest.Wrapf("%s is not allowed type", msg.Type) } - if len(msg.Type) == 0 { - return ErrBadRequestIsRequired.Wrap("Type") + if len(msg.AttrNames) == 0 { + return ErrBadRequestIsRequired.Wrap("AttrNames") } - if len(msg.Type) == 0 { - return ErrBadRequestIsRequired.Wrap("Type") + if len(msg.AttrNames) > 125 { + return ErrBadRequest.Wrapf("AttrNames: Expected max length 125, got: %d", len(msg.AttrNames)) + } + + if len(msg.Name) == 0 { + return ErrBadRequestIsRequired.Wrap("Name") + } + + if len(msg.Version) == 0 { + return ErrBadRequestIsRequired.Wrap("Version") + } + + if len(msg.Controller) == 0 { + return ErrBadRequestIsRequired.Wrap("Controller") } - if valid, i := utils.ArrayContainsNotDid(msg.Controller); !valid { + if notValid, i := utils.ArrayContainsNotDid(msg.Controller); notValid { return ErrBadRequestIsNotDid.Wrapf("Controller item %s", msg.Controller[i]) } diff --git a/x/cheqd/utils/schema.go b/x/cheqd/utils/schema.go new file mode 100644 index 000000000..8fb791eb5 --- /dev/null +++ b/x/cheqd/utils/schema.go @@ -0,0 +1,7 @@ +package utils + +var AllowedSchemaType = []string{"CL-Schema"} + +func IsNotSchemaType(schemaType string) bool { + return !StringArrayContains(AllowedSchemaType, schemaType) +} From f36a2009291382b8e80df586f55b881eaed7eebf Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 15 Oct 2021 11:17:46 +0300 Subject: [PATCH 30/74] fixed integration test --- proto/cheqd/credDef.proto | 9 +- x/cheqd/handler_test.go | 7 +- x/cheqd/handler_test_setup.go | 15 ++- x/cheqd/keeper/cred_def.go | 2 + x/cheqd/keeper/msg_server_cred_def.go | 1 + x/cheqd/keeper/msg_server_schema.go | 2 + x/cheqd/keeper/schema.go | 12 +- x/cheqd/keeper/verify.go | 4 + x/cheqd/types/credDef.pb.go | 162 +++++++++++++++++--------- 9 files changed, 145 insertions(+), 69 deletions(-) diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index f8ebc23d7..4657d3b1a 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -8,14 +8,15 @@ import "gogoproto/gogo.proto"; message CredDef { string id = 1; - oneof value { - CredDefValue cl_type = 6; - google.protobuf.Any any_type = 7; - } repeated string authors = 2; string schema_id = 3; string tag = 4; string signatureType = 5; + repeated string controller = 6; + oneof value { + CredDefValue cl_type = 7; + google.protobuf.Any any_type = 8; + } } message CredDefValue { diff --git a/x/cheqd/handler_test.go b/x/cheqd/handler_test.go index 015eadc17..8bd0d0254 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/handler_test.go @@ -117,9 +117,11 @@ func TestHandler_CreateSchema(t *testing.T) { receivedSchema, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) require.Equal(t, schema.Id, receivedSchema.Id) + require.Equal(t, msg.Type, receivedSchema.Type) require.Equal(t, msg.Name, receivedSchema.Name) require.Equal(t, msg.Version, receivedSchema.Version) require.Equal(t, msg.AttrNames, receivedSchema.AttrNames) + require.Equal(t, msg.Controller, receivedSchema.Controller) } func TestHandler_CreateCredDef(t *testing.T) { @@ -149,6 +151,7 @@ func TestHandler_CreateCredDef(t *testing.T) { require.Equal(t, msg.SchemaId, receivedCredDef.SchemaId) require.Equal(t, msg.Tag, receivedCredDef.Tag) require.Equal(t, msg.SignatureType, receivedCredDef.SignatureType) + require.Equal(t, msg.Controller, receivedCredDef.Controller) } func TestHandler_DidDocAlreadyExists(t *testing.T) { @@ -166,7 +169,7 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, err = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) require.Error(t, err) - require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) + require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1/credDef: DID Doc exists", err.Error()) schemaMsg := setup.CreateSchema() data, _ = ptypes.NewAnyWithValue(schemaMsg) @@ -174,5 +177,5 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, err = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) require.Error(t, err) - require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) + require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1/schema: DID Doc exists", err.Error()) } diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/handler_test_setup.go index 36a636dd9..4997a09c7 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/handler_test_setup.go @@ -125,10 +125,12 @@ func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey) *types.M func (s *TestSetup) CreateSchema() *types.MsgCreateSchema { return &types.MsgCreateSchema{ - Id: "did:cheqd:test:schema-1", - Name: "name", - Version: "version", - AttrNames: []string{"attr1", "attr2"}, + Id: "did:cheqd:test:schema-1/schema", + Type: "CL-Schema", + Name: "name", + Version: "version", + AttrNames: []string{"attr1", "attr2"}, + Controller: []string{"did:cheqd:test:alice"}, } } @@ -141,11 +143,12 @@ func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { } return &types.MsgCreateCredDef{ - Id: "did:cheqd:test:cred-def-1", + Id: "did:cheqd:test:cred-def-1/credDef", SchemaId: "schema-1", Tag: "tag", - SignatureType: "signature-type", + SignatureType: "CL-Sig-Cred_def", Value: &Value, + Controller: []string{"did:cheqd:test:alice"}, } } diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 6c4824a93..6e867c138 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -48,6 +48,7 @@ func (k Keeper) AppendCredDef( tag string, signatureType string, clValue *types.CredDef_ClType, + controller []string, ) string { // Create the credDef count := k.GetCredDefCount(ctx) @@ -63,6 +64,7 @@ func (k Keeper) AppendCredDef( Tag: tag, SignatureType: signatureType, Value: clValue, + Controller: controller, } created := ctx.BlockTime().String() diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 6f9888207..aa77bbde1 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -37,6 +37,7 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque credDefMsg.Tag, credDefMsg.SignatureType, (*types.CredDef_ClType)(value), + credDefMsg.Controller, ) return &types.MsgCreateCredDefResponse{ diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 70e208f1b..b705bb66f 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -31,9 +31,11 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteReques k.AppendSchema( ctx, schemaMsg.Id, + schemaMsg.Type, schemaMsg.Name, schemaMsg.Version, schemaMsg.AttrNames, + schemaMsg.Controller, ) return &types.MsgCreateSchemaResponse{ diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index 803e3c26c..cab00e10e 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -44,17 +44,21 @@ func (k Keeper) SetSchemaCount(ctx sdk.Context, count uint64) { func (k Keeper) AppendSchema( ctx sdk.Context, id string, + schemaType string, name string, version string, attrNames []string, + controller []string, ) string { // Create the schema count := k.GetSchemaCount(ctx) var schema = types.Schema{ - Id: id, - Name: name, - Version: version, - AttrNames: attrNames, + Id: id, + Name: name, + Type: schemaType, + Version: version, + AttrNames: attrNames, + Controller: controller, } created := ctx.BlockTime().String() diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index 6f55d7ff4..b858a8ead 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -14,6 +14,10 @@ import ( ) func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, signers []types.Signer) error { + if len(signers) == 0 { + return types.ErrInvalidSignature.Wrap("At least one signer should be present") + } + signingInput, err := BuildSigningInput(msg) if err != nil { return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index 09fdc3380..d5e3986db 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -25,15 +25,16 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type CredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` + SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` + SignatureType string `protobuf:"bytes,5,opt,name=signatureType,proto3" json:"signatureType,omitempty"` + Controller []string `protobuf:"bytes,6,rep,name=controller,proto3" json:"controller,omitempty"` // Types that are valid to be assigned to Value: // *CredDef_ClType // *CredDef_AnyType - Value isCredDef_Value `protobuf_oneof:"value"` - Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` - SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,5,opt,name=signatureType,proto3" json:"signatureType,omitempty"` + Value isCredDef_Value `protobuf_oneof:"value"` } func (m *CredDef) Reset() { *m = CredDef{} } @@ -76,10 +77,10 @@ type isCredDef_Value interface { } type CredDef_ClType struct { - ClType *CredDefValue `protobuf:"bytes,6,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` + ClType *CredDefValue `protobuf:"bytes,7,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` } type CredDef_AnyType struct { - AnyType *types.Any `protobuf:"bytes,7,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` + AnyType *types.Any `protobuf:"bytes,8,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` } func (*CredDef_ClType) isCredDef_Value() {} @@ -99,20 +100,6 @@ func (m *CredDef) GetId() string { return "" } -func (m *CredDef) GetClType() *CredDefValue { - if x, ok := m.GetValue().(*CredDef_ClType); ok { - return x.ClType - } - return nil -} - -func (m *CredDef) GetAnyType() *types.Any { - if x, ok := m.GetValue().(*CredDef_AnyType); ok { - return x.AnyType - } - return nil -} - func (m *CredDef) GetAuthors() []string { if m != nil { return m.Authors @@ -141,6 +128,27 @@ func (m *CredDef) GetSignatureType() string { return "" } +func (m *CredDef) GetController() []string { + if m != nil { + return m.Controller + } + return nil +} + +func (m *CredDef) GetClType() *CredDefValue { + if x, ok := m.GetValue().(*CredDef_ClType); ok { + return x.ClType + } + return nil +} + +func (m *CredDef) GetAnyType() *types.Any { + if x, ok := m.GetValue().(*CredDef_AnyType); ok { + return x.AnyType + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*CredDef) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -211,34 +219,35 @@ func init() { func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } var fileDescriptor_bc069326307a6009 = []byte{ - // 432 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0x4d, 0x8b, 0x13, 0x31, - 0x18, 0xc7, 0x67, 0xa6, 0x6e, 0x67, 0xfb, 0x74, 0x7d, 0x21, 0x2e, 0x18, 0x2b, 0x0c, 0x65, 0x51, - 0xa8, 0x82, 0x19, 0xac, 0x08, 0xe2, 0x49, 0x77, 0x15, 0x56, 0xf0, 0xb0, 0x8c, 0x2f, 0x07, 0x2f, - 0x4b, 0x3a, 0xc9, 0x4e, 0x83, 0x6d, 0x52, 0x33, 0x99, 0xc5, 0x7c, 0x01, 0xcf, 0x7e, 0x2c, 0x8f, - 0x7b, 0x14, 0x4f, 0xd2, 0x7e, 0x11, 0x49, 0x32, 0x95, 0x2a, 0x2c, 0x14, 0xbc, 0xcc, 0xfc, 0xe7, - 0x3f, 0x79, 0x7e, 0xcf, 0x4b, 0x1e, 0xb8, 0x59, 0x4e, 0xf9, 0x67, 0x96, 0x97, 0x9a, 0xb3, 0x97, - 0xfc, 0x8c, 0x2c, 0xb4, 0x32, 0x0a, 0xdd, 0xf2, 0xa6, 0x60, 0xc4, 0xbf, 0xa5, 0x62, 0x3c, 0xa8, - 0xc1, 0xed, 0x4a, 0xa9, 0x6a, 0xc6, 0x73, 0x7f, 0x6c, 0xd2, 0x9c, 0xe5, 0x54, 0xda, 0x10, 0x33, - 0xd8, 0xaf, 0x54, 0xa5, 0xbc, 0xcc, 0x9d, 0x0a, 0xee, 0xc1, 0xd7, 0x04, 0xd2, 0xa3, 0xc0, 0x46, - 0xd7, 0x20, 0x11, 0x0c, 0xc7, 0xc3, 0x78, 0xd4, 0x2b, 0x12, 0xc1, 0xd0, 0x73, 0x48, 0xcb, 0xd9, - 0xa9, 0xb1, 0x0b, 0x8e, 0xbb, 0xc3, 0x78, 0xd4, 0x1f, 0xdf, 0x23, 0x97, 0xe4, 0x25, 0x2d, 0xe2, - 0x03, 0x9d, 0x35, 0xfc, 0x38, 0x2a, 0xba, 0xe5, 0xec, 0x9d, 0x5d, 0x70, 0xf4, 0x08, 0x76, 0xa9, - 0xb4, 0x01, 0x91, 0x7a, 0xc4, 0x3e, 0x09, 0x15, 0x92, 0x75, 0x85, 0xe4, 0x85, 0xb4, 0xc7, 0x51, - 0x91, 0x52, 0x69, 0x7d, 0x08, 0x86, 0x94, 0x36, 0x66, 0xaa, 0x74, 0x8d, 0x93, 0x61, 0x67, 0xd4, - 0x2b, 0xd6, 0x9f, 0xe8, 0x0e, 0xf4, 0xea, 0x72, 0xca, 0xe7, 0xf4, 0x54, 0x30, 0xdc, 0xf1, 0x55, - 0xee, 0x06, 0xe3, 0x35, 0x43, 0x37, 0xa0, 0x63, 0x68, 0x85, 0xaf, 0x78, 0xdb, 0x49, 0x74, 0x17, - 0xae, 0xd6, 0xa2, 0x92, 0xd4, 0x34, 0x9a, 0x3b, 0x32, 0xde, 0xf1, 0xff, 0xfe, 0x36, 0x0f, 0x53, - 0xd8, 0x39, 0x77, 0x45, 0x1f, 0xfc, 0x4c, 0x60, 0x6f, 0xb3, 0x0b, 0xf4, 0x06, 0xd2, 0x85, 0x16, - 0x73, 0xaa, 0x2d, 0x8e, 0x87, 0x9d, 0x51, 0x7f, 0x3c, 0xde, 0xaa, 0x7b, 0x72, 0x12, 0x82, 0x5e, - 0x49, 0xa3, 0x6d, 0xb1, 0x46, 0xa0, 0xf7, 0x00, 0x9a, 0x9f, 0xab, 0x92, 0x1a, 0xa1, 0xa4, 0xef, - 0xac, 0x3f, 0x7e, 0xb2, 0x1d, 0xb0, 0xf8, 0x13, 0x17, 0x98, 0x1b, 0xa0, 0xc1, 0x09, 0xec, 0x6d, - 0xe6, 0x73, 0x63, 0xf8, 0xc4, 0x6d, 0x7b, 0x87, 0x4e, 0xa2, 0x07, 0x6d, 0x83, 0x38, 0xb9, 0x7c, - 0xfe, 0x45, 0x38, 0xf2, 0x2c, 0x79, 0x1a, 0x0f, 0xde, 0xc2, 0xf5, 0x7f, 0x12, 0xfe, 0x3f, 0xf4, - 0xf0, 0xe8, 0xfb, 0x32, 0x8b, 0x2f, 0x96, 0x59, 0xfc, 0x6b, 0x99, 0xc5, 0xdf, 0x56, 0x59, 0x74, - 0xb1, 0xca, 0xa2, 0x1f, 0xab, 0x2c, 0xfa, 0x78, 0xbf, 0x12, 0x66, 0xda, 0x4c, 0x48, 0xa9, 0xe6, - 0x79, 0xbb, 0xe9, 0xee, 0xf9, 0xd0, 0x0d, 0x23, 0xff, 0xd2, 0x5a, 0x6e, 0x7f, 0xea, 0x49, 0xd7, - 0xd3, 0x1f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x8b, 0xac, 0x47, 0x2d, 0x12, 0x03, 0x00, 0x00, + // 446 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0x4d, 0x8b, 0xd3, 0x40, + 0x1c, 0xc6, 0x93, 0xd4, 0x6d, 0xda, 0x7f, 0xd7, 0x17, 0xc6, 0x05, 0xc7, 0x0a, 0xa1, 0x2c, 0x0a, + 0x55, 0x70, 0x82, 0x15, 0x41, 0x3c, 0xe9, 0xae, 0xc2, 0x0a, 0x1e, 0x96, 0xf8, 0x72, 0xf0, 0xb2, + 0x4c, 0x33, 0xb3, 0xe9, 0x60, 0x3a, 0x53, 0xa7, 0x93, 0xc5, 0xf9, 0x16, 0x7e, 0x0a, 0x3f, 0x8b, + 0xc7, 0x3d, 0x8a, 0x27, 0x69, 0xbf, 0x88, 0xcc, 0x4c, 0x2a, 0x55, 0x58, 0x58, 0xf0, 0x92, 0x3c, + 0x79, 0x32, 0xcf, 0xef, 0x9f, 0x79, 0x86, 0xc0, 0xcd, 0x72, 0xc6, 0x3f, 0xb3, 0xbc, 0xd4, 0x9c, + 0xbd, 0xe4, 0xa7, 0x64, 0xa1, 0x95, 0x51, 0xe8, 0x96, 0x37, 0x05, 0x23, 0xfe, 0x2e, 0x15, 0xe3, + 0x41, 0x0d, 0x6f, 0x57, 0x4a, 0x55, 0x35, 0xcf, 0xfd, 0xb2, 0x69, 0x73, 0x9a, 0x53, 0x69, 0x43, + 0x66, 0xb8, 0x57, 0xa9, 0x4a, 0x79, 0x99, 0x3b, 0x15, 0xdc, 0xfd, 0x6f, 0x09, 0xa4, 0x87, 0x81, + 0x8d, 0xae, 0x41, 0x22, 0x18, 0x8e, 0x47, 0xf1, 0xb8, 0x5f, 0x24, 0x82, 0x21, 0x0c, 0x29, 0x6d, + 0xcc, 0x4c, 0xe9, 0x25, 0x4e, 0x46, 0x9d, 0x71, 0xbf, 0xd8, 0x3c, 0xa2, 0x3b, 0xd0, 0x5f, 0x96, + 0x33, 0x3e, 0xa7, 0x27, 0x82, 0xe1, 0x8e, 0x0f, 0xf4, 0x82, 0xf1, 0x9a, 0xa1, 0x1b, 0xd0, 0x31, + 0xb4, 0xc2, 0x57, 0xbc, 0xed, 0x24, 0xba, 0x0b, 0x57, 0x97, 0xa2, 0x92, 0xd4, 0x34, 0x9a, 0xbf, + 0xb3, 0x0b, 0x8e, 0x77, 0xfc, 0xbb, 0xbf, 0x4d, 0x94, 0x01, 0x94, 0x4a, 0x1a, 0xad, 0xea, 0x9a, + 0x6b, 0xdc, 0xf5, 0x13, 0xb7, 0x1c, 0xf4, 0x1c, 0xd2, 0xb2, 0x3e, 0x31, 0x2e, 0x9f, 0x8e, 0xe2, + 0xf1, 0x60, 0x72, 0x8f, 0x5c, 0x50, 0x03, 0x69, 0x77, 0xf4, 0x81, 0xd6, 0x0d, 0x3f, 0x8a, 0x8a, + 0x6e, 0x59, 0xfb, 0x09, 0x8f, 0xa0, 0x47, 0xa5, 0x0d, 0x88, 0x9e, 0x47, 0xec, 0x91, 0x50, 0x18, + 0xd9, 0x14, 0x46, 0x5e, 0x48, 0x7b, 0x14, 0x15, 0x29, 0x95, 0xd6, 0x45, 0x0e, 0x52, 0xd8, 0x39, + 0x73, 0x94, 0xfd, 0x9f, 0x09, 0xec, 0x6e, 0x63, 0xd1, 0x1b, 0x48, 0x17, 0x5a, 0xcc, 0xa9, 0xb6, + 0x38, 0x1e, 0x75, 0xc6, 0x83, 0xc9, 0xe4, 0x52, 0x9f, 0x43, 0x8e, 0x43, 0xe8, 0x95, 0x34, 0xda, + 0x16, 0x1b, 0x04, 0x7a, 0x0f, 0xa0, 0xf9, 0x99, 0x2a, 0xa9, 0x11, 0x4a, 0xfa, 0xba, 0x07, 0x93, + 0x27, 0x97, 0x03, 0x16, 0x7f, 0x72, 0x81, 0xb9, 0x05, 0x1a, 0x1e, 0xc3, 0xee, 0xf6, 0x3c, 0x77, + 0x36, 0x9f, 0xb8, 0x6d, 0xcf, 0xd8, 0x49, 0xf4, 0xa0, 0xdd, 0x20, 0x4e, 0x2e, 0x2e, 0xa4, 0x08, + 0x4b, 0x9e, 0x25, 0x4f, 0xe3, 0xe1, 0x5b, 0xb8, 0xfe, 0xcf, 0xc0, 0xff, 0x87, 0x1e, 0x1c, 0x7e, + 0x5f, 0x65, 0xf1, 0xf9, 0x2a, 0x8b, 0x7f, 0xad, 0xb2, 0xf8, 0xeb, 0x3a, 0x8b, 0xce, 0xd7, 0x59, + 0xf4, 0x63, 0x9d, 0x45, 0x1f, 0xef, 0x57, 0xc2, 0xcc, 0x9a, 0x29, 0x29, 0xd5, 0x3c, 0x6f, 0xff, + 0x04, 0x77, 0x7d, 0xe8, 0xca, 0xc8, 0xbf, 0xb4, 0x96, 0x3b, 0xd0, 0xe5, 0xb4, 0xeb, 0xe9, 0x8f, + 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x39, 0x2a, 0x0b, 0xf3, 0x32, 0x03, 0x00, 0x00, } func (m *CredDef) Marshal() (dAtA []byte, err error) { @@ -270,6 +279,15 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } } + if len(m.Controller) > 0 { + for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Controller[iNdEx]) + copy(dAtA[i:], m.Controller[iNdEx]) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.Controller[iNdEx]))) + i-- + dAtA[i] = 0x32 + } + } if len(m.SignatureType) > 0 { i -= len(m.SignatureType) copy(dAtA[i:], m.SignatureType) @@ -327,7 +345,7 @@ func (m *CredDef_ClType) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintCredDef(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x32 + dAtA[i] = 0x3a } return len(dAtA) - i, nil } @@ -348,7 +366,7 @@ func (m *CredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintCredDef(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x3a + dAtA[i] = 0x42 } return len(dAtA) - i, nil } @@ -466,6 +484,12 @@ func (m *CredDef) Size() (n int) { if l > 0 { n += 1 + l + sovCredDef(uint64(l)) } + if len(m.Controller) > 0 { + for _, s := range m.Controller { + l = len(s) + n += 1 + l + sovCredDef(uint64(l)) + } + } if m.Value != nil { n += m.Value.Size() } @@ -727,6 +751,38 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { m.SignatureType = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCredDef + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCredDef + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCredDef + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ClType", wireType) } @@ -761,7 +817,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.Value = &CredDef_ClType{v} iNdEx = postIndex - case 7: + case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AnyType", wireType) } From dcba9cabf9c79707784e6cd45d3df11c4902c5d7 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 15 Oct 2021 11:22:32 +0300 Subject: [PATCH 31/74] fixed check did doc --- x/cheqd/keeper/msg_server_cred_def.go | 2 +- x/cheqd/keeper/msg_server_schema.go | 2 +- x/cheqd/keeper/state.go | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index aa77bbde1..77709e93c 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -24,7 +24,7 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque } // Checks that the element exists - if err := k.HasDidDoc(ctx, credDefMsg.Id); err != nil { + if err := k.HasDidDoc(ctx, credDefMsg.Id[:len(credDefMsg.Id)-8]); err != nil { return nil, err } diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index b705bb66f..60d63b838 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -24,7 +24,7 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteReques } // Checks that the element exists - if err := k.HasDidDoc(ctx, schemaMsg.Id); err != nil { + if err := k.HasDidDoc(ctx, schemaMsg.Id[:len(schemaMsg.Id)-7]); err != nil { return nil, err } diff --git a/x/cheqd/keeper/state.go b/x/cheqd/keeper/state.go index cda937fc9..dbf3ab714 100644 --- a/x/cheqd/keeper/state.go +++ b/x/cheqd/keeper/state.go @@ -8,17 +8,17 @@ import ( ) // HasDidDoc checks if the did exist in the store -func (k Keeper) HasDidDoc(ctx sdk.Context, id string) error { - if k.HasDid(ctx, id) { - return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for DID %s", id)) +func (k Keeper) HasDidDoc(ctx sdk.Context, did string) error { + if k.HasDid(ctx, did) { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for DID %s", did)) } - if k.HasSchema(ctx, id) { - return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for Schema %s", id)) + if k.HasSchema(ctx, did+"/schema") { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for Schema %s", did)) } - if k.HasCredDef(ctx, id) { - return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for CredDef %s", id)) + if k.HasCredDef(ctx, did+"/credDef") { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for CredDef %s", did)) } return nil From 50193b1aeaa6f14b10403a0890877cd326956257 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Sun, 17 Oct 2021 20:28:47 +0300 Subject: [PATCH 32/74] added strings utils functions --- x/cheqd/utils/array.go | 11 ---------- x/cheqd/utils/cred_def.go | 4 +++- x/cheqd/utils/schema.go | 4 +++- x/cheqd/utils/strings/array.go | 31 ++++++++++++++++++++++++++++ x/cheqd/utils/strings/arrays_test.go | 29 ++++++++++++++++++++++++++ 5 files changed, 66 insertions(+), 13 deletions(-) delete mode 100644 x/cheqd/utils/array.go create mode 100644 x/cheqd/utils/strings/array.go create mode 100644 x/cheqd/utils/strings/arrays_test.go diff --git a/x/cheqd/utils/array.go b/x/cheqd/utils/array.go deleted file mode 100644 index 84f0f88a8..000000000 --- a/x/cheqd/utils/array.go +++ /dev/null @@ -1,11 +0,0 @@ -package utils - -func StringArrayContains(array []string, item string) bool { - for _, i := range array { - if item == i { - return true - } - } - - return false -} diff --git a/x/cheqd/utils/cred_def.go b/x/cheqd/utils/cred_def.go index 49f28cc68..d16cb63f9 100644 --- a/x/cheqd/utils/cred_def.go +++ b/x/cheqd/utils/cred_def.go @@ -1,7 +1,9 @@ package utils +import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" + var AllowedCredDefSignatureType = []string{"CL-Sig-Cred_def"} func IsNotCredDefSignatureType(signatureType string) bool { - return !StringArrayContains(AllowedCredDefSignatureType, signatureType) + return !strings.Include(AllowedCredDefSignatureType, signatureType) } diff --git a/x/cheqd/utils/schema.go b/x/cheqd/utils/schema.go index 8fb791eb5..955b00a66 100644 --- a/x/cheqd/utils/schema.go +++ b/x/cheqd/utils/schema.go @@ -1,7 +1,9 @@ package utils +import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" + var AllowedSchemaType = []string{"CL-Schema"} func IsNotSchemaType(schemaType string) bool { - return !StringArrayContains(AllowedSchemaType, schemaType) + return !strings.Include(AllowedSchemaType, schemaType) } diff --git a/x/cheqd/utils/strings/array.go b/x/cheqd/utils/strings/array.go new file mode 100644 index 000000000..d9b4b4781 --- /dev/null +++ b/x/cheqd/utils/strings/array.go @@ -0,0 +1,31 @@ +package strings + +func Index(vs []string, t string) int { + for i, v := range vs { + if v == t { + return i + } + } + + return -1 +} + +func Include(vs []string, t string) bool { + return Index(vs, t) >= 0 +} + +func Filter(vs []string, f func(string) bool) []string { + vsf := make([]string, 0) + for _, v := range vs { + if f(v) { + vsf = append(vsf, v) + } + } + return vsf +} + +func Complement(vs []string, ts []string) []string { + return Filter(vs, func(s string) bool { + return !Include(ts, s) + }) +} diff --git a/x/cheqd/utils/strings/arrays_test.go b/x/cheqd/utils/strings/arrays_test.go new file mode 100644 index 000000000..c8fe87b24 --- /dev/null +++ b/x/cheqd/utils/strings/arrays_test.go @@ -0,0 +1,29 @@ +package strings + +import ( + "github.com/stretchr/testify/require" + "testing" +) + +func TestComplement(t *testing.T) { + cases := []struct { + first []string + second []string + expected []string + }{ + {[]string{}, []string{}, []string{}}, + {nil, []string{}, []string{}}, + {nil, nil, []string{}}, + {[]string{"1", "2"}, []string{"1", "2"}, []string{}}, + {[]string{"1", "2", "3"}, []string{}, []string{"1", "2", "3"}}, + {[]string{"1", "2", "3"}, nil, []string{"1", "2", "3"}}, + {[]string{"1", "2", "3"}, []string{"4", "5", "6"}, []string{"1", "2", "3"}}, + {[]string{"1", "2", "3"}, []string{"1", "5", "2"}, []string{"3"}}, + {[]string{"4", "1", "6", "2", "3"}, []string{"1", "5", "2"}, []string{"4", "6", "3"}}, + } + + for _, tc := range cases { + actual := Complement(tc.first, tc.second) + require.Equal(t, tc.expected, actual) + } +} From 19a146269858f08b226d36709c89eeb80271956f Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Sun, 17 Oct 2021 23:47:48 +0300 Subject: [PATCH 33/74] added update did signature validation --- x/cheqd/keeper/msg_server_did.go | 80 +++++++++- x/cheqd/keeper/utils.go | 50 +++++++ x/cheqd/keeper/verify.go | 37 +---- x/cheqd/{ => tests}/handler_test.go | 47 ++---- x/cheqd/{ => tests}/handler_test_setup.go | 103 +++++++++++-- x/cheqd/tests/signature_verification_test.go | 148 +++++++++++++++++++ x/cheqd/types/errors.go | 17 ++- x/cheqd/{ => types}/msg_test.go | 91 ++++++------ x/cheqd/utils/did.go | 11 ++ x/cheqd/utils/strings/array.go | 4 + 10 files changed, 449 insertions(+), 139 deletions(-) create mode 100644 x/cheqd/keeper/utils.go rename x/cheqd/{ => tests}/handler_test.go (76%) rename x/cheqd/{ => tests}/handler_test_setup.go (62%) create mode 100644 x/cheqd/tests/signature_verification_test.go rename x/cheqd/{ => types}/msg_test.go (65%) diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 25661c26d..f0c41b813 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -3,6 +3,8 @@ package keeper import ( "context" "fmt" + "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" + "reflect" "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -62,20 +64,20 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, err } - if err := k.VerifySignature(&ctx, msg, didMsg.GetSigners()); err != nil { - return nil, err - } - // Checks that the element exists if !k.HasDid(ctx, didMsg.Id) { return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) } - _, metadata, err := k.GetDid(&ctx, didMsg.Id) + oldDIDDoc, metadata, err := k.GetDid(&ctx, didMsg.Id) if err != nil { return nil, err } + if err := k.UpdateDidVerifySignature(&ctx, msg, oldDIDDoc, didMsg); err != nil { + return nil, err + } + versionId, exists := msg.Metadata["versionId"] if !exists { return nil, sdkerrors.Wrap(types.ErrUnexpectedDidVersion, "Metadata doesn't contain `versionId`") @@ -106,3 +108,71 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) Id: didMsg.Id, }, nil } + +func (k msgServer) UpdateDidVerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, oldDIDDoc *types.Did, newDIDDoc *types.MsgUpdateDid) error { + var signers = newDIDDoc.GetSigners() + + // Get Old DID Doc controller if it's nil then assign self + oldController := oldDIDDoc.Controller + if len(oldController) == 0 { + oldController = []string{oldDIDDoc.Id} + } + + // Get New DID Doc controller if it's nil then assign self + newController := newDIDDoc.Controller + if len(newController) == 0 { + newController = []string{newDIDDoc.Id} + } + + // DID Doc controller has been changed + if removedControllers := strings.Complement(oldController, newController); len(removedControllers) > 0 { + for _, controller := range removedControllers { + signers = append(signers, types.Signer{Signer: controller}) + } + } + + for _, oldVM := range oldDIDDoc.VerificationMethod { + newVM := FindVerificationMethod(newDIDDoc.VerificationMethod, oldVM.Id) + + // Verification Method has been deleted + if newVM == nil { + signers = AppendSignerIfNeed(signers, oldVM.Controller, newDIDDoc) + continue + } + + // Verification Method has been changed + if !reflect.DeepEqual(oldVM, newVM) { + signers = AppendSignerIfNeed(signers, newVM.Controller, newDIDDoc) + } + + // Verification Method Controller has been changed, need to add old controller + if newVM.Controller != oldVM.Controller { + signers = AppendSignerIfNeed(signers, oldVM.Controller, newDIDDoc) + } + } + + if err := k.VerifySignature(ctx, msg, signers); err != nil { + return err + } + + return nil +} + +func AppendSignerIfNeed(signers []types.Signer, controller string, msg *types.MsgUpdateDid) []types.Signer { + for _, signer := range signers { + if signer.Signer == controller { + return signers + } + } + + signer := types.Signer{ + Signer: controller, + } + + if controller == msg.Id { + signer.VerificationMethod = msg.VerificationMethod + signer.Authentication = msg.Authentication + } + + return append(signers, signer) +} diff --git a/x/cheqd/keeper/utils.go b/x/cheqd/keeper/utils.go new file mode 100644 index 000000000..486b023de --- /dev/null +++ b/x/cheqd/keeper/utils.go @@ -0,0 +1,50 @@ +package keeper + +import ( + "crypto/ed25519" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "github.com/btcsuite/btcutil/base58" + "github.com/cheqd/cheqd-node/x/cheqd/types" +) + +func BuildSigningInput(msg *types.MsgWriteRequest) ([]byte, error) { + metadataBytes, err := json.Marshal(&msg.Metadata) + if err != nil { + return nil, types.ErrInvalidSignature.Wrap("An error has occurred during metadata marshalling") + } + + dataBytes := msg.Data.Value + signingInput := ([]byte)(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) + return signingInput, nil +} + +func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { + for _, authentication := range signer.Authentication { + if authentication == id { + for _, vm := range signer.VerificationMethod { + if vm.Id == id { + return base58.Decode(vm.PublicKeyMultibase[1:]), nil + } + } + + msg := fmt.Sprintf("Verification Method %s not found", id) + return nil, errors.New(msg) + } + } + + msg := fmt.Sprintf("Authentication %s not found", id) + return nil, errors.New(msg) +} + +func FindVerificationMethod(vms []*types.VerificationMethod, id string) *types.VerificationMethod { + for _, vm := range vms { + if vm.Id == id { + return vm + } + } + + return nil +} diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index b858a8ead..1273d8d31 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -3,10 +3,8 @@ package keeper import ( "crypto/ed25519" "encoding/base64" - "encoding/json" "errors" "fmt" - "github.com/btcsuite/btcutil/base58" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cheqd/cheqd-node/x/cheqd/utils" sdk "github.com/cosmos/cosmos-sdk/types" @@ -27,7 +25,7 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s if signer.VerificationMethod == nil { didDoc, _, err := k.GetDid(ctx, signer.Signer) if err != nil { - return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) + return types.ErrDidDocNotFound.Wrap(signer.Signer) } signer.Authentication = didDoc.Authentication @@ -47,19 +45,9 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s return nil } -func BuildSigningInput(msg *types.MsgWriteRequest) ([]byte, error) { - metadataBytes, err := json.Marshal(&msg.Metadata) - if err != nil { - return nil, types.ErrInvalidSignature.Wrap("An error has occurred during metadata marshalling") - } - - dataBytes := msg.Data.Value - signingInput := ([]byte)(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) - return signingInput, nil -} - func VerifyIdentitySignature(signer types.Signer, signatures map[string]string, signingInput []byte) (bool, error) { result := true + foundOne := false for id, signature := range signatures { did, _ := utils.SplitDidUrlIntoDidAndFragment(id) @@ -75,26 +63,13 @@ func VerifyIdentitySignature(signer types.Signer, signatures map[string]string, } result = result && ed25519.Verify(pubKey, signingInput, signature) + foundOne = true } } - return result, nil -} - -func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { - for _, authentication := range signer.Authentication { - if authentication == id { - for _, vm := range signer.VerificationMethod { - if vm.Id == id { - return base58.Decode(vm.PublicKeyMultibase[1:]), nil - } - } - - msg := fmt.Sprintf("Verification Method %s not found", id) - return nil, errors.New(msg) - } + if !foundOne { + return false, errors.New(fmt.Sprintf("signature %s not found", signer.Signer)) } - msg := fmt.Sprintf("Authentication %s not found", id) - return nil, errors.New(msg) + return result, nil } diff --git a/x/cheqd/handler_test.go b/x/cheqd/tests/handler_test.go similarity index 76% rename from x/cheqd/handler_test.go rename to x/cheqd/tests/handler_test.go index 8bd0d0254..24a2502b9 100644 --- a/x/cheqd/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -1,4 +1,4 @@ -package cheqd +package tests import ( "crypto/ed25519" @@ -14,7 +14,7 @@ import ( func TestHandler_CreateDid(t *testing.T) { setup := Setup() - _, did, _ := setup.InitDid() + _, did, _ := setup.InitDid("did:cheqd:test:alice") // query Did receivedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) @@ -37,7 +37,7 @@ func TestHandler_UpdateDid(t *testing.T) { setup := Setup() //Init did - privKey, did, _ := setup.InitDid() + keys, did, _ := setup.InitDid("did:cheqd:test:alice") // query Did receivedDid, didMetadata, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) @@ -52,7 +52,7 @@ func TestHandler_UpdateDid(t *testing.T) { didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, dataUpdate, metadata)) + resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys, metadata)) didUpdated := types.MsgUpdateDidResponse{} errUpdate := didUpdated.Unmarshal(resultUpdate.Data) @@ -78,33 +78,14 @@ func TestHandler_UpdateDid(t *testing.T) { require.NotEqual(t, receivedDid.VerificationMethod, receivedUpdatedDid.VerificationMethod) } -func TestHandler_UpdateDidInvalidSignature(t *testing.T) { - setup := Setup() - - _, did, _ := setup.InitDid() - - // query Did - receivedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) - - //Init priv key - newPubKey, newPrivKey, _ := ed25519.GenerateKey(rand.Reader) - - // add new Did - didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) - dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - _, err := setup.Handler(setup.Ctx, setup.WrapRequest(newPrivKey, dataUpdate, make(map[string]string))) - require.Error(t, err) - require.Equal(t, "did:cheqd:test:alice: invalid signature detected", err.Error()) -} - func TestHandler_CreateSchema(t *testing.T) { setup := Setup() - privKey, _, _ := setup.InitDid() + keys, _, _ := setup.InitDid("did:cheqd:test:alice") msg := setup.CreateSchema() data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) schema := types.MsgCreateSchemaResponse{} err := schema.Unmarshal(result.Data) @@ -127,11 +108,11 @@ func TestHandler_CreateSchema(t *testing.T) { func TestHandler_CreateCredDef(t *testing.T) { setup := Setup() - privKey, _, _ := setup.InitDid() + keys, _, _ := setup.InitDid("did:cheqd:test:alice") msg := setup.CreateCredDef() data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) credDef := types.MsgCreateCredDefResponse{} err := credDef.Unmarshal(result.Data) @@ -157,24 +138,24 @@ func TestHandler_CreateCredDef(t *testing.T) { func TestHandler_DidDocAlreadyExists(t *testing.T) { setup := Setup() - privKey, _, _ := setup.InitDid() - _, _, err := setup.InitDid() + keys, _, _ := setup.InitDid("did:cheqd:test:alice") + _, _, err := setup.InitDid("did:cheqd:test:alice") require.Error(t, err) require.Equal(t, "DID DOC already exists for DID did:cheqd:test:alice: DID Doc exists", err.Error()) credDefMsg := setup.CreateCredDef() data, _ := ptypes.NewAnyWithValue(credDefMsg) - _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) - _, err = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) + _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) require.Error(t, err) require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1/credDef: DID Doc exists", err.Error()) schemaMsg := setup.CreateSchema() data, _ = ptypes.NewAnyWithValue(schemaMsg) - _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) - _, err = setup.Handler(setup.Ctx, setup.WrapRequest(privKey, data, make(map[string]string))) + _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) + _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) require.Error(t, err) require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1/schema: DID Doc exists", err.Error()) diff --git a/x/cheqd/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go similarity index 62% rename from x/cheqd/handler_test_setup.go rename to x/cheqd/tests/handler_test_setup.go index 4997a09c7..04100016d 100644 --- a/x/cheqd/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -1,4 +1,4 @@ -package cheqd +package tests import ( "crypto/ed25519" @@ -6,6 +6,7 @@ import ( "encoding/base64" "encoding/json" "github.com/btcsuite/btcutil/base58" + "github.com/cheqd/cheqd-node/x/cheqd" "time" "github.com/cheqd/cheqd-node/app/params" @@ -56,7 +57,7 @@ func Setup() TestSetup { tmproto.Header{ChainID: "cheqd-node", Time: blockTime}, false, log.NewNopLogger()).WithTxBytes(txBytes) - handler := NewHandler(*newKeeper) + handler := cheqd.NewHandler(*newKeeper) setup := TestSetup{ Cdc: cdc, @@ -68,13 +69,13 @@ func Setup() TestSetup { return setup } -func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey) *types.MsgCreateDid { +func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey, did string) *types.MsgCreateDid { PublicKeyMultibase := "z" + base58.Encode(pubKey) VerificationMethod := types.VerificationMethod{ - Id: "did:cheqd:test:alice#key-1", + Id: did + "#key-1", Type: "Ed25519VerificationKey2020", - Controller: "Controller", + Controller: did, PublicKeyMultibase: PublicKeyMultibase, } @@ -85,10 +86,10 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey) *types.MsgCreateDid { } return &types.MsgCreateDid{ - Id: "did:cheqd:test:alice", + Id: did, Controller: nil, VerificationMethod: []*types.VerificationMethod{&VerificationMethod}, - Authentication: []string{"did:cheqd:test:alice#key-1"}, + Authentication: []string{did + "#key-1"}, AssertionMethod: []string{"AssertionMethod"}, CapabilityInvocation: []string{"CapabilityInvocation"}, CapabilityDelegation: []string{"CapabilityDelegation"}, @@ -123,6 +124,22 @@ func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey) *types.M } } +func (s *TestSetup) CreateToUpdateDid(did *types.MsgCreateDid) *types.MsgUpdateDid { + return &types.MsgUpdateDid{ + Id: did.Id, + Controller: did.Controller, + VerificationMethod: did.VerificationMethod, + Authentication: did.Authentication, + AssertionMethod: did.AssertionMethod, + CapabilityInvocation: did.CapabilityInvocation, + CapabilityDelegation: did.CapabilityDelegation, + KeyAgreement: did.KeyAgreement, + AlsoKnownAs: did.AlsoKnownAs, + Service: did.Service, + Context: did.Context, + } +} + func (s *TestSetup) CreateSchema() *types.MsgCreateSchema { return &types.MsgCreateSchema{ Id: "did:cheqd:test:schema-1/schema", @@ -152,39 +169,93 @@ func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { } } -func (s *TestSetup) WrapRequest(privKey ed25519.PrivateKey, data *ptypes.Any, metadata map[string]string) *types.MsgWriteRequest { +func (s *TestSetup) WrapRequest(data *ptypes.Any, keys map[string]ed25519.PrivateKey, metadata map[string]string) *types.MsgWriteRequest { metadataBytes, _ := json.Marshal(&metadata) dataBytes := data.Value signingInput := []byte(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) - signature := base64.StdEncoding.EncodeToString(ed25519.Sign(privKey, signingInput)) + signatures := make(map[string]string) + + for privKeyId, privKey := range keys { + signature := base64.StdEncoding.EncodeToString(ed25519.Sign(privKey, signingInput)) + signatures[privKeyId] = signature + } return &types.MsgWriteRequest{ Data: data, Metadata: metadata, - Signatures: map[string]string{"did:cheqd:test:alice#key-1": signature}, + Signatures: signatures, } } -func (s *TestSetup) InitDid() (ed25519.PrivateKey, *types.MsgCreateDid, error) { +func (s *TestSetup) InitDid(did string) (map[string]ed25519.PrivateKey, *types.MsgCreateDid, error) { pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) // add new Did - didMsg := s.CreateDid(pubKey) + didMsg := s.CreateDid(pubKey, did) data, err := ptypes.NewAnyWithValue(didMsg) if err != nil { return nil, nil, err } - result, err := s.Handler(s.Ctx, s.WrapRequest(privKey, data, make(map[string]string))) + keyId := did + "#key-1" + keys := map[string]ed25519.PrivateKey{keyId: privKey} + + result, err := s.Handler(s.Ctx, s.WrapRequest(data, keys, make(map[string]string))) if err != nil { return nil, nil, err } - did := types.MsgCreateDidResponse{} - if err := did.Unmarshal(result.Data); err != nil { + didResponse := types.MsgCreateDidResponse{} + if err := didResponse.Unmarshal(result.Data); err != nil { return nil, nil, err } - return privKey, didMsg, nil + return keys, didMsg, nil +} + +func (s *TestSetup) SendUpdateDid(msg *types.MsgUpdateDid, keys map[string]ed25519.PrivateKey) (*types.Did, error) { + data, err := ptypes.NewAnyWithValue(msg) + if err != nil { + return nil, err + } + + // query Did + _, didMetadata, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + + // add new Did + metadata := map[string]string{ + "versionId": didMetadata.VersionId, + } + + _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys, metadata)) + if err != nil { + return nil, err + } + + did, _, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + return did, nil +} + +func (s *TestSetup) SendCreateDid(msg *types.MsgCreateDid, keys map[string]ed25519.PrivateKey) (*types.Did, error) { + data, err := ptypes.NewAnyWithValue(msg) + if err != nil { + return nil, err + } + + _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys, map[string]string{})) + if err != nil { + return nil, err + } + + did, _, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + return did, nil +} + +func ConcatKeys(dst map[string]ed25519.PrivateKey, src map[string]ed25519.PrivateKey) map[string]ed25519.PrivateKey { + for k, v := range src { + dst[k] = v + } + + return dst } diff --git a/x/cheqd/tests/signature_verification_test.go b/x/cheqd/tests/signature_verification_test.go new file mode 100644 index 000000000..391823a84 --- /dev/null +++ b/x/cheqd/tests/signature_verification_test.go @@ -0,0 +1,148 @@ +package tests + +import ( + "crypto/ed25519" + "crypto/rand" + "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/stretchr/testify/require" + "reflect" + "testing" +) + +func TestDIDDocControllerChanged(t *testing.T) { + setup := Setup() + + //Init did + aliceKeys, aliceDid, _ := setup.InitDid("did:cheqd:test:alice") + bobKeys, _, _ := setup.InitDid("did:cheqd:test:bob") + + updatedDidDoc := setup.CreateToUpdateDid(aliceDid) + updatedDidDoc.Controller = append(updatedDidDoc.Controller, "did:cheqd:test:bob") + receivedDid, _ := setup.SendUpdateDid(updatedDidDoc, ConcatKeys(aliceKeys, bobKeys)) + + // check + require.NotEqual(t, aliceDid.Controller, receivedDid.Controller) + require.NotEqual(t, []string{"did:cheqd:test:alice", "did:cheqd:test:bob"}, receivedDid.Controller) + require.Equal(t, []string{"did:cheqd:test:bob"}, receivedDid.Controller) +} + +func TestDIDDocVerificationMethodChangedWithoutOldSignature(t *testing.T) { + setup := Setup() + + //Init did + _, aliceDid, _ := setup.InitDid("did:cheqd:test:alice") + bobKeys, _, _ := setup.InitDid("did:cheqd:test:bob") + + updatedDidDoc := setup.CreateToUpdateDid(aliceDid) + updatedDidDoc.VerificationMethod[0].Type = "new" + _, err := setup.SendUpdateDid(updatedDidDoc, bobKeys) + + // check + require.Error(t, err) + require.Equal(t, "signature did:cheqd:test:alice not found: invalid signature detected", err.Error()) +} + +func TestDIDDocVerificationMethodControllerChangedWithoutOldSignature(t *testing.T) { + setup := Setup() + + //Init did + _, aliceDid, _ := setup.InitDid("did:cheqd:test:alice") + bobKeys, _, _ := setup.InitDid("did:cheqd:test:bob") + + updatedDidDoc := setup.CreateToUpdateDid(aliceDid) + updatedDidDoc.VerificationMethod[0].Controller = "did:cheqd:test:bob" + _, err := setup.SendUpdateDid(updatedDidDoc, bobKeys) + + // check + require.Error(t, err) + require.Equal(t, "signature did:cheqd:test:alice not found: invalid signature detected", err.Error()) +} + +func TestDIDDocControllerChangedWithoutOldSignature(t *testing.T) { + setup := Setup() + + //Init did + _, aliceDid, _ := setup.InitDid("did:cheqd:test:alice") + bobKeys, _, _ := setup.InitDid("did:cheqd:test:bob") + + updatedDidDoc := setup.CreateToUpdateDid(aliceDid) + updatedDidDoc.Controller = append(updatedDidDoc.Controller, "did:cheqd:test:bob") + _, err := setup.SendUpdateDid(updatedDidDoc, bobKeys) + + // check + require.Error(t, err) + require.Equal(t, "signature did:cheqd:test:alice not found: invalid signature detected", err.Error()) +} + +func TestDIDDocVerificationMethodDeletedWithoutOldSignature(t *testing.T) { + setup := Setup() + + //Init did + _, bodDidDoc, _ := setup.InitDid("did:cheqd:test:bob") + + pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) + aliceDid := setup.CreateDid(pubKey, "did:cheqd:test:alice") + + aliceDid.VerificationMethod = append(aliceDid.VerificationMethod, &types.VerificationMethod{ + Id: "did:cheqd:test:alice#key-2", + Controller: "did:cheqd:test:bob", + PublicKeyMultibase: bodDidDoc.VerificationMethod[0].PublicKeyMultibase, + }) + + aliceKeys := map[string]ed25519.PrivateKey{"did:cheqd:test:alice#key-1": privKey} + _, _ = setup.SendCreateDid(aliceDid, aliceKeys) + + updatedDidDoc := setup.CreateToUpdateDid(aliceDid) + updatedDidDoc.VerificationMethod = []*types.VerificationMethod{aliceDid.VerificationMethod[0]} + _, err := setup.SendUpdateDid(updatedDidDoc, aliceKeys) + + // check + require.Error(t, err) + require.Equal(t, "signature did:cheqd:test:bob not found: invalid signature detected", err.Error()) +} + +func TestDIDDocVerificationMethodDeleted(t *testing.T) { + setup := Setup() + + //Init did + bobKeys, bodDidDoc, _ := setup.InitDid("did:cheqd:test:bob") + + pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) + aliceDid := setup.CreateDid(pubKey, "did:cheqd:test:alice") + + aliceDid.VerificationMethod = append(aliceDid.VerificationMethod, &types.VerificationMethod{ + Id: "did:cheqd:test:alice#key-2", + Controller: "did:cheqd:test:bob", + PublicKeyMultibase: bodDidDoc.VerificationMethod[0].PublicKeyMultibase, + }) + + aliceKeys := map[string]ed25519.PrivateKey{"did:cheqd:test:alice#key-1": privKey} + _, _ = setup.SendCreateDid(aliceDid, aliceKeys) + + updatedDidDoc := setup.CreateToUpdateDid(aliceDid) + updatedDidDoc.VerificationMethod = []*types.VerificationMethod{aliceDid.VerificationMethod[0]} + receivedDid, _ := setup.SendUpdateDid(updatedDidDoc, ConcatKeys(aliceKeys, bobKeys)) + + // check + require.NotEqual(t, len(aliceDid.VerificationMethod), len(receivedDid.VerificationMethod)) + require.True(t, reflect.DeepEqual(aliceDid.VerificationMethod[0], receivedDid.VerificationMethod[0])) +} + +/*func TestHandler_UpdateDidInvalidSignature(t *testing.T) { + setup := Setup() + + _, did, _ := setup.InitDid("did:cheqd:test:alice") + + // query Did + receivedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) + + //Init priv key + newPubKey, newPrivKey, _ := ed25519.GenerateKey(rand.Reader) + + // add new Did + didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) + dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) + _, err := setup.Handler(setup.Ctx, setup.WrapRequest(newPrivKey, dataUpdate, make(map[string]string))) + require.Error(t, err) + require.Equal(t, "did:cheqd:test:alice: invalid signature detected", err.Error()) +}*/ diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index d5ddc6495..f56dd4a85 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -8,12 +8,13 @@ import ( // x/cheqd module sentinel errors var ( - ErrBadRequest = sdkerrors.Register(ModuleName, 1000, "bad request") - ErrBadRequestIsRequired = sdkerrors.Register(ModuleName, 1001, "is required") - ErrBadRequestIsNotDid = sdkerrors.Register(ModuleName, 1002, "is not DID") - ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") - ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "DID Doc exists") - ErrDidDocNotFound = sdkerrors.Register(ModuleName, 1201, "DID Doc not found") - ErrUnexpectedDidVersion = sdkerrors.Register(ModuleName, 1202, "unexpected DID version") - ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1300, "invalid cred def value") + ErrBadRequest = sdkerrors.Register(ModuleName, 1000, "bad request") + ErrBadRequestIsRequired = sdkerrors.Register(ModuleName, 1001, "is required") + ErrBadRequestIsNotDid = sdkerrors.Register(ModuleName, 1002, "is not DID") + ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") + ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "DID Doc exists") + ErrDidDocNotFound = sdkerrors.Register(ModuleName, 1201, "DID Doc not found") + ErrVerificationMethodNotFound = sdkerrors.Register(ModuleName, 1202, "verification method not found") + ErrUnexpectedDidVersion = sdkerrors.Register(ModuleName, 1203, "unexpected DID version") + ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1300, "invalid cred def value") ) diff --git a/x/cheqd/msg_test.go b/x/cheqd/types/msg_test.go similarity index 65% rename from x/cheqd/msg_test.go rename to x/cheqd/types/msg_test.go index 04200e149..18066ddf7 100644 --- a/x/cheqd/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -1,7 +1,6 @@ -package cheqd +package types import ( - "github.com/cheqd/cheqd-node/x/cheqd/types" ctypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/stretchr/testify/require" "testing" @@ -10,128 +9,128 @@ import ( func TestNewMsgCreateCredDef(t *testing.T) { cases := []struct { valid bool - msg *types.MsgCreateCredDef + msg *MsgCreateCredDef errMsg string }{ { true, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:aaaaa/credDef", "schema", "", "CL-Sig-Cred_def", []string{"did:cheqd:test:alice"}, - &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "", }, { true, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:aaaaa/credDef", "schema", "tag", "CL-Sig-Cred_def", []string{"did:cheqd:test:alice"}, - &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "/credDef", "", "", "", nil, - &types.MsgCreateCredDef_ClType{ClType: nil}), + &MsgCreateCredDef_ClType{ClType: nil}), "Id: is not DID", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:alice#key-1/credDef", "", "", "", nil, - &types.MsgCreateCredDef_ClType{ClType: nil}), + &MsgCreateCredDef_ClType{ClType: nil}), "Id: is not DID", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:alice", "", "", "", nil, - &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "Id must end with resource type '/credDef': bad request", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:alice/credDef", "", "", "", nil, - &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "SchemaId: is required", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:alice/credDef", "schema-1", "", "", nil, - &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "SignatureType: is required", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:alice/credDef", "schema-1", "", "ss", []string{"did:cheqd:test:alice"}, - &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "ss is not allowed signature type: bad request", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:alice/credDef", "schema-1", "", "CL-Sig-Cred_def", nil, - &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "Controller: is required", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:alice/credDef", "schema-1", "", "CL-Sig-Cred_def", []string{"1"}, - &types.MsgCreateCredDef_ClType{ClType: &types.CredDefValue{Primary: nil, Revocation: nil}}), + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "Controller item 1: is not DID", }, { false, - types.NewMsgCreateCredDef( + NewMsgCreateCredDef( "did:cheqd:test:alice/credDef", "schema-1", "", "CL-Sig-Cred_def", []string{"did:cheqd:test:alice"}, - &types.MsgCreateCredDef_ClType{ClType: nil}), + &MsgCreateCredDef_ClType{ClType: nil}), "Value: is required", }, } @@ -151,14 +150,14 @@ func TestNewMsgCreateCredDef(t *testing.T) { func TestNewMsgWriteRequestValidation(t *testing.T) { cases := []struct { valid bool - msg *types.MsgWriteRequest + msg *MsgWriteRequest errMsg string }{ - {true, types.NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), ""}, - {false, types.NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, - {false, types.NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, - {false, types.NewMsgWriteRequest(nil, nil, nil), "Data: is required"}, - {false, types.NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, nil), "Signatures: is required"}, + {true, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), ""}, + {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, + {false, NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, + {false, NewMsgWriteRequest(nil, nil, nil), "Data: is required"}, + {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, nil), "Signatures: is required"}, } for _, tc := range cases { @@ -176,12 +175,12 @@ func TestNewMsgWriteRequestValidation(t *testing.T) { func TestNewMsgCreateSchema(t *testing.T) { cases := []struct { valid bool - msg *types.MsgCreateSchema + msg *MsgCreateSchema errMsg string }{ { true, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:aaaaa/schema", "CL-Schema", "schema", @@ -192,7 +191,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "/schema", "", "", @@ -203,7 +202,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice#key-1/schema", "", "", @@ -214,7 +213,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice", "", "", @@ -225,7 +224,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "", "", @@ -236,7 +235,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "schema-1", "", @@ -247,7 +246,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "schema-1", "", @@ -258,7 +257,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "CL-Schema", "", @@ -269,7 +268,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "CL-Schema", "", @@ -280,7 +279,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "CL-Schema", "", @@ -291,7 +290,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "CL-Schema", "", @@ -302,7 +301,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "CL-Schema", "schema", @@ -313,7 +312,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "CL-Schema", "schema", @@ -324,7 +323,7 @@ func TestNewMsgCreateSchema(t *testing.T) { }, { false, - types.NewMsgCreateSchema( + NewMsgCreateSchema( "did:cheqd:test:alice/schema", "CL-Schema", "schema", diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go index ceb7c1e45..16632545a 100644 --- a/x/cheqd/utils/did.go +++ b/x/cheqd/utils/did.go @@ -12,6 +12,17 @@ func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { return fragments[0], fragments[1] } +func ResolveVerificationMethodId(did string, methodId string) string { + result := methodId + + methodDid, methodFragment := SplitDidUrlIntoDidAndFragment(methodId) + if len(methodDid) == 0 { + methodDid = did + "#" + methodFragment + } + + return result +} + func ArrayContainsNotDid(array []string) (bool, int) { for i, did := range array { if IsNotDid(did) { diff --git a/x/cheqd/utils/strings/array.go b/x/cheqd/utils/strings/array.go index d9b4b4781..1dfeda166 100644 --- a/x/cheqd/utils/strings/array.go +++ b/x/cheqd/utils/strings/array.go @@ -29,3 +29,7 @@ func Complement(vs []string, ts []string) []string { return !Include(ts, s) }) } + +func E() { + +} From 76f568d8ddadc35d14717505d8401330d5fb045b Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 12:06:59 +0300 Subject: [PATCH 34/74] added validation to create and update did --- proto/cheqd/credDef.proto | 13 +- proto/cheqd/did.proto | 2 +- proto/cheqd/tx.proto | 2 +- x/cheqd/keeper/cred_def.go | 7 - x/cheqd/types/errors.go | 3 + x/cheqd/types/messages_did.go | 209 +++++++++ x/cheqd/types/msg_test.go | 784 ++++++++++++++++++++++++++++++++++ x/cheqd/utils/did.go | 64 ++- 8 files changed, 1066 insertions(+), 18 deletions(-) diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index 4657d3b1a..30409d0cf 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -8,14 +8,13 @@ import "gogoproto/gogo.proto"; message CredDef { string id = 1; - repeated string authors = 2; - string schema_id = 3; - string tag = 4; - string signatureType = 5; - repeated string controller = 6; + string schema_id = 2; + string tag = 3; + string signature_type = 4; + repeated string controller = 5; oneof value { - CredDefValue cl_type = 7; - google.protobuf.Any any_type = 8; + CredDefValue cl_type = 6; + google.protobuf.Any any_type = 7; } } diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index d3f2c1153..d1f39e06a 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -11,7 +11,7 @@ message Did { repeated string controller = 2; //optional repeated VerificationMethod verification_method = 3; // optional repeated string authentication = 4; // optional - repeated string assertionMethod = 5; // optional + repeated string assertion_method = 5; // optional repeated string capability_invocation = 6; // optional repeated string capability_delegation = 7; // optional repeated string key_agreement = 8; // optional diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 6890bf288..990c0fe52 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -28,7 +28,7 @@ message MsgCreateCredDef { string id = 1; string schema_id = 2; string tag = 3; - string signature_type = 4; + string type = 4; oneof value { CredDefValue cl_type = 5; google.protobuf.Any any_type = 6; diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 6e867c138..8a5868538 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -88,13 +88,6 @@ func (k Keeper) AppendCredDef( return id } -// SetCredDef set a specific credDef in the store -func (k Keeper) SetCredDef(ctx sdk.Context, credDef types.CredDef) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - b := k.cdc.MustMarshal(&credDef) - store.Set(GetCredDefIDBytes(credDef.Id), b) -} - // GetCredDef returns a credDef from its id func (k Keeper) GetCredDef(ctx sdk.Context, id string) (*types.CredDef, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index f56dd4a85..2a20667d8 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -11,6 +11,9 @@ var ( ErrBadRequest = sdkerrors.Register(ModuleName, 1000, "bad request") ErrBadRequestIsRequired = sdkerrors.Register(ModuleName, 1001, "is required") ErrBadRequestIsNotDid = sdkerrors.Register(ModuleName, 1002, "is not DID") + ErrBadRequestInvalidVerMethod = sdkerrors.Register(ModuleName, 1003, "invalid verification method") + ErrBadRequestInvalidService = sdkerrors.Register(ModuleName, 1004, "invalid service") + ErrBadRequestIsNotDidFragment = sdkerrors.Register(ModuleName, 1005, "is not DID fragment") ErrInvalidSignature = sdkerrors.Register(ModuleName, 1100, "invalid signature detected") ErrDidDocExists = sdkerrors.Register(ModuleName, 1200, "DID Doc exists") ErrDidDocNotFound = sdkerrors.Register(ModuleName, 1201, "DID Doc not found") diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 7586c486f..11c899f1d 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -1,5 +1,10 @@ package types +import ( + "github.com/cheqd/cheqd-node/x/cheqd/utils" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + func NewMsgCreateDid( id string, controller []string, @@ -65,6 +70,66 @@ func (msg *MsgCreateDid) GetSigners() []Signer { } func (msg *MsgCreateDid) ValidateBasic() error { + if utils.IsNotDid(msg.Id) { + return ErrBadRequestIsNotDid.Wrap("Id") + } + + if notValid, i := utils.ArrayContainsNotDid(msg.Controller); notValid { + return ErrBadRequestIsNotDid.Wrapf("Controller item %s at position %d", msg.Controller[i], i) + } + + if err := ValidateVerificationMethods(msg.Id, msg.VerificationMethod); err != nil { + return err + } + + if err := ValidateServices(msg.Id, msg.Service); err != nil { + return err + } + + if notValid, i := utils.ArrayContainsNotDidFragment(msg.Authentication); notValid { + return ErrBadRequestIsNotDidFragment.Wrapf("Authentication item %s", msg.Authentication[i]) + } + + if notValid, i := utils.ArrayContainsNotDidFragment(msg.CapabilityInvocation); notValid { + return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityInvocation item %s", msg.CapabilityInvocation[i]) + } + + if notValid, i := utils.ArrayContainsNotDidFragment(msg.CapabilityDelegation); notValid { + return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityDelegation item %s", msg.CapabilityDelegation[i]) + } + + if notValid, i := utils.ArrayContainsNotDidFragment(msg.KeyAgreement); notValid { + return ErrBadRequestIsNotDidFragment.Wrapf("KeyAgreement item %s", msg.KeyAgreement[i]) + } + + if len(msg.Authentication) == 0 && len(msg.Controller) == 0 { + return ErrBadRequest.Wrap("The message must contain either a Controller or a Authentication") + } + + for _, i := range msg.Authentication { + if !IncludeVerificationMethod(msg.Id, msg.VerificationMethod, i) { + return ErrVerificationMethodNotFound.Wrap(i) + } + } + + for _, i := range msg.KeyAgreement { + if !IncludeVerificationMethod(msg.Id, msg.VerificationMethod, i) { + return ErrVerificationMethodNotFound.Wrap(i) + } + } + + for _, i := range msg.CapabilityDelegation { + if !IncludeVerificationMethod(msg.Id, msg.VerificationMethod, i) { + return ErrVerificationMethodNotFound.Wrap(i) + } + } + + for _, i := range msg.CapabilityInvocation { + if !IncludeVerificationMethod(msg.Id, msg.VerificationMethod, i) { + return ErrVerificationMethodNotFound.Wrap(i) + } + } + return nil } @@ -133,5 +198,149 @@ func (msg *MsgUpdateDid) GetSigners() []Signer { } func (msg *MsgUpdateDid) ValidateBasic() error { + if utils.IsNotDid(msg.Id) { + return ErrBadRequestIsNotDid.Wrap("Id") + } + + if notValid, i := utils.ArrayContainsNotDid(msg.Controller); notValid { + return ErrBadRequestIsNotDid.Wrapf("Controller item %s at position %d", msg.Controller[i], i) + } + + if err := ValidateVerificationMethods(msg.Id, msg.VerificationMethod); err != nil { + return err + } + + if err := ValidateServices(msg.Id, msg.Service); err != nil { + return err + } + + if notValid, i := utils.ArrayContainsNotDidFragment(msg.Authentication); notValid { + return ErrBadRequestIsNotDidFragment.Wrapf("Authentication item %s", msg.Authentication[i]) + } + + if notValid, i := utils.ArrayContainsNotDidFragment(msg.CapabilityInvocation); notValid { + return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityInvocation item %s", msg.CapabilityInvocation[i]) + } + + if notValid, i := utils.ArrayContainsNotDidFragment(msg.CapabilityDelegation); notValid { + return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityDelegation item %s", msg.CapabilityDelegation[i]) + } + + if notValid, i := utils.ArrayContainsNotDidFragment(msg.KeyAgreement); notValid { + return ErrBadRequestIsNotDidFragment.Wrapf("KeyAgreement item %s", msg.KeyAgreement[i]) + } + + if len(msg.Authentication) == 0 && len(msg.Controller) == 0 { + return ErrBadRequest.Wrap("The message must contain either a Controller or a Authentication") + } + + for _, i := range msg.Authentication { + if !IncludeVerificationMethod(msg.Id, msg.VerificationMethod, i) { + return ErrVerificationMethodNotFound.Wrap(i) + } + } + + for _, i := range msg.KeyAgreement { + if !IncludeVerificationMethod(msg.Id, msg.VerificationMethod, i) { + return ErrVerificationMethodNotFound.Wrap(i) + } + } + + for _, i := range msg.CapabilityDelegation { + if !IncludeVerificationMethod(msg.Id, msg.VerificationMethod, i) { + return ErrVerificationMethodNotFound.Wrap(i) + } + } + + for _, i := range msg.CapabilityInvocation { + if !IncludeVerificationMethod(msg.Id, msg.VerificationMethod, i) { + return ErrVerificationMethodNotFound.Wrap(i) + } + } + + return nil +} + +func ValidateVerificationMethods(did string, vms []*VerificationMethod) error { + for i, vm := range vms { + if err := ValidateVerificationMethod(vm); err != nil { + return ErrBadRequestInvalidVerMethod.Wrap(sdkerrors.Wrapf(err, "index %d, value %s", i, vm.Id).Error()) + } + } + + for i, vm := range vms { + if IncludeVerificationMethod(did, vms[i+1:], vm.Id) { + return ErrBadRequestInvalidVerMethod.Wrapf("%s is duplicated", vm.Id) + } + } + + return nil +} + +func ValidateVerificationMethod(vm *VerificationMethod) error { + if !utils.IsFullDidFragment(vm.Id) { + return ErrBadRequestIsNotDidFragment.Wrap(vm.Id) + } + + if !utils.IsVerificationMethodType(vm.Type) { + return ErrBadRequest.Wrapf("%s: unsupported verification method type", vm.Type) + } + + if len(vm.PublicKeyMultibase) == 0 && vm.PublicKeyJwk == nil { + return ErrBadRequest.Wrap("The verification method must contain either a PublicKeyMultibase or a PublicKeyJwk") + } + + if len(vm.Controller) == 0 { + return ErrBadRequestIsRequired.Wrap("Controller") + } + return nil } + +func ValidateServices(did string, services []*DidService) error { + for i, s := range services { + if err := ValidateService(s); err != nil { + return ErrBadRequestInvalidService.Wrap(sdkerrors.Wrapf(err, "index %d, value %s", i, s.Id).Error()) + } + } + + for i, s := range services { + if IncludeService(did, services[i+1:], s.Id) { + return ErrBadRequestInvalidService.Wrapf("%s is duplicated", s.Id) + } + } + + return nil +} + +func ValidateService(s *DidService) error { + if !utils.IsDidFragment(s.Id) { + return ErrBadRequestIsNotDidFragment.Wrap(s.Id) + } + + if !utils.IsDidServiceType(s.Type) { + return ErrBadRequest.Wrapf("%s: unsupported service type", s.Type) + } + + return nil +} + +func IncludeVerificationMethod(did string, vms []*VerificationMethod, id string) bool { + for _, vm := range vms { + if vm.Id == utils.ResolveId(did, id) { + return true + } + } + + return false +} + +func IncludeService(did string, services []*DidService, id string) bool { + for _, s := range services { + if utils.ResolveId(did, s.Id) == utils.ResolveId(did, id) { + return true + } + } + + return false +} diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index 18066ddf7..564e36b36 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -345,3 +345,787 @@ func TestNewMsgCreateSchema(t *testing.T) { } } } + +func TestNewMsgCreateDid(t *testing.T) { + cases := []struct { + valid bool + msg *MsgCreateDid + errMsg string + }{ + { + false, + &MsgCreateDid{}, + "Id: is not DID", + }, + { + false, + &MsgCreateDid{Id: ""}, + "Id: is not DID", + }, + { + false, + &MsgCreateDid{Id: "did:ch:test:alice"}, + "Id: is not DID", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice"}, + "The message must contain either a Controller or a Authentication: bad request", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{}, + }, + "The message must contain either a Controller or a Authentication: bad request", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{{}}, + }, + "index 0, value : : is not DID fragment: invalid verification method", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", Authentication: []string{"dd"}}, + "Authentication item dd: is not DID fragment", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", Authentication: []string{""}}, + "Authentication item : is not DID fragment", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", Authentication: []string{"did:cheqd:test:alice"}}, + "Authentication item did:cheqd:test:alice: is not DID fragment", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Authentication: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1: verification method not found", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", CapabilityInvocation: []string{"dd"}}, + "CapabilityInvocation item dd: is not DID fragment", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", CapabilityInvocation: []string{""}}, + "CapabilityInvocation item : is not DID fragment", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", CapabilityInvocation: []string{"did:cheqd:test:alice"}}, + "CapabilityInvocation item did:cheqd:test:alice: is not DID fragment", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + CapabilityInvocation: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1: verification method not found", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", CapabilityDelegation: []string{"dd"}}, + "CapabilityDelegation item dd: is not DID fragment", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", CapabilityDelegation: []string{""}}, + "CapabilityDelegation item : is not DID fragment", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", CapabilityDelegation: []string{"did:cheqd:test:alice"}}, + "CapabilityDelegation item did:cheqd:test:alice: is not DID fragment", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + CapabilityDelegation: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1: verification method not found", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", KeyAgreement: []string{"dd"}}, + "KeyAgreement item dd: is not DID fragment", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", KeyAgreement: []string{""}}, + "KeyAgreement item : is not DID fragment", + }, + { + false, + &MsgCreateDid{Id: "did:cheqd:test:alice", KeyAgreement: []string{"did:cheqd:test:alice"}}, + "KeyAgreement item did:cheqd:test:alice: is not DID fragment", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + KeyAgreement: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1: verification method not found", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + KeyAgreement: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd::alice"}, + }, + "Controller item did:cheqd::alice at position 0: is not DID", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + {Id: "dasda"}, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value dasda: dasda: is not DID fragment: invalid verification method", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + {Id: "did:cheqd:test:alice#key-1"}, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value did:cheqd:test:alice#key-1: : unsupported verification method type: bad request: invalid verification method", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + {Id: "did:cheqd:test:alice#key-1", Type: "YES"}, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value did:cheqd:test:alice#key-1: YES: unsupported verification method type: bad request: invalid verification method", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + }, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value did:cheqd:test:alice#key-1: The verification method must contain either a PublicKeyMultibase or a PublicKeyJwk: bad request: invalid verification method", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + }, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value did:cheqd:test:alice#key-1: Controller: is required: invalid verification method", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1 is duplicated: invalid verification method", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + { + Id: "did:cheqd:test:alice#key-2", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + { + Id: "did:cheqd:test:alice#key-3", + Type: "JsonWebKey20212", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 2, value did:cheqd:test:alice#key-3: JsonWebKey20212: unsupported verification method type: bad request: invalid verification method", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + {}, + }, + }, + "index 0, value : : is not DID fragment: invalid service", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + { + Id: "weqweqw", + }, + }, + }, + "index 0, value weqweqw: weqweqw: is not DID fragment: invalid service", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + { + Id: "#service-1", + }, + }, + }, + "index 0, value #service-1: : unsupported service type: bad request: invalid service", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + { + Id: "#service-1", + Type: "DIDCommMessaging", + }, + { + Id: "#service-1", + Type: "DIDCommMessaging", + }, + }, + }, + "#service-1 is duplicated: invalid service", + }, + { + false, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + { + Id: "did:cheqd:test:alice#service-1", + Type: "DIDCommMessaging", + }, + { + Id: "#service-1", + Type: "DIDCommMessaging", + }, + }, + }, + "did:cheqd:test:alice#service-1 is duplicated: invalid service", + }, + { + true, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + VerificationMethod: []*VerificationMethod{}, + }, + "", + }, + { + true, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{}, + }, + "", + }, + { + true, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}}, + "", + }, + { + true, + &MsgCreateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice", "did:cheqd:test:bob"}, + Authentication: []string{"#key-1", "did:cheqd:test:alice#key-2"}, + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + { + Id: "did:cheqd:test:alice#key-2", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + }, + }, + "", + }, + } + + for _, tc := range cases { + err := tc.msg.ValidateBasic() + + if tc.valid { + require.Nil(t, err) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + } +} + +func TestNewMsgUpdateDid(t *testing.T) { + cases := []struct { + valid bool + msg *MsgUpdateDid + errMsg string + }{ + { + false, + &MsgUpdateDid{}, + "Id: is not DID", + }, + { + false, + &MsgUpdateDid{Id: ""}, + "Id: is not DID", + }, + { + false, + &MsgUpdateDid{Id: "did:ch:test:alice"}, + "Id: is not DID", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice"}, + "The message must contain either a Controller or a Authentication: bad request", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{}, + }, + "The message must contain either a Controller or a Authentication: bad request", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{{}}, + }, + "index 0, value : : is not DID fragment: invalid verification method", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", Authentication: []string{"dd"}}, + "Authentication item dd: is not DID fragment", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", Authentication: []string{""}}, + "Authentication item : is not DID fragment", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", Authentication: []string{"did:cheqd:test:alice"}}, + "Authentication item did:cheqd:test:alice: is not DID fragment", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Authentication: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1: verification method not found", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", CapabilityInvocation: []string{"dd"}}, + "CapabilityInvocation item dd: is not DID fragment", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", CapabilityInvocation: []string{""}}, + "CapabilityInvocation item : is not DID fragment", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", CapabilityInvocation: []string{"did:cheqd:test:alice"}}, + "CapabilityInvocation item did:cheqd:test:alice: is not DID fragment", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + CapabilityInvocation: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1: verification method not found", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", CapabilityDelegation: []string{"dd"}}, + "CapabilityDelegation item dd: is not DID fragment", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", CapabilityDelegation: []string{""}}, + "CapabilityDelegation item : is not DID fragment", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", CapabilityDelegation: []string{"did:cheqd:test:alice"}}, + "CapabilityDelegation item did:cheqd:test:alice: is not DID fragment", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + CapabilityDelegation: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1: verification method not found", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", KeyAgreement: []string{"dd"}}, + "KeyAgreement item dd: is not DID fragment", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", KeyAgreement: []string{""}}, + "KeyAgreement item : is not DID fragment", + }, + { + false, + &MsgUpdateDid{Id: "did:cheqd:test:alice", KeyAgreement: []string{"did:cheqd:test:alice"}}, + "KeyAgreement item did:cheqd:test:alice: is not DID fragment", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + KeyAgreement: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1: verification method not found", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + KeyAgreement: []string{"did:cheqd:test:alice#key-1"}, + Controller: []string{"did:cheqd::alice"}, + }, + "Controller item did:cheqd::alice at position 0: is not DID", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + {Id: "dasda"}, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value dasda: dasda: is not DID fragment: invalid verification method", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + {Id: "did:cheqd:test:alice#key-1"}, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value did:cheqd:test:alice#key-1: : unsupported verification method type: bad request: invalid verification method", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + {Id: "did:cheqd:test:alice#key-1", Type: "YES"}, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value did:cheqd:test:alice#key-1: YES: unsupported verification method type: bad request: invalid verification method", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + }, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value did:cheqd:test:alice#key-1: The verification method must contain either a PublicKeyMultibase or a PublicKeyJwk: bad request: invalid verification method", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + }, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 0, value did:cheqd:test:alice#key-1: Controller: is required: invalid verification method", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "did:cheqd:test:alice#key-1 is duplicated: invalid verification method", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + { + Id: "did:cheqd:test:alice#key-2", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + { + Id: "did:cheqd:test:alice#key-3", + Type: "JsonWebKey20212", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + }, + Controller: []string{"did:cheqd:test:alice"}, + }, + "index 2, value did:cheqd:test:alice#key-3: JsonWebKey20212: unsupported verification method type: bad request: invalid verification method", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + {}, + }, + }, + "index 0, value : : is not DID fragment: invalid service", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + { + Id: "weqweqw", + }, + }, + }, + "index 0, value weqweqw: weqweqw: is not DID fragment: invalid service", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + { + Id: "#service-1", + }, + }, + }, + "index 0, value #service-1: : unsupported service type: bad request: invalid service", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + { + Id: "#service-1", + Type: "DIDCommMessaging", + }, + { + Id: "#service-1", + Type: "DIDCommMessaging", + }, + }, + }, + "#service-1 is duplicated: invalid service", + }, + { + false, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{ + { + Id: "did:cheqd:test:alice#service-1", + Type: "DIDCommMessaging", + }, + { + Id: "#service-1", + Type: "DIDCommMessaging", + }, + }, + }, + "did:cheqd:test:alice#service-1 is duplicated: invalid service", + }, + { + true, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + VerificationMethod: []*VerificationMethod{}, + }, + "", + }, + { + true, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}, + Service: []*DidService{}, + }, + "", + }, + { + true, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice"}}, + "", + }, + { + true, + &MsgUpdateDid{ + Id: "did:cheqd:test:alice", + Controller: []string{"did:cheqd:test:alice", "did:cheqd:test:bob"}, + Authentication: []string{"#key-1", "did:cheqd:test:alice#key-2"}, + VerificationMethod: []*VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + { + Id: "did:cheqd:test:alice#key-2", + Type: "JsonWebKey2020", + PublicKeyMultibase: "tetetet", + Controller: "did:cheqd:test:alice", + }, + }, + }, + "", + }, + } + + for _, tc := range cases { + err := tc.msg.ValidateBasic() + + if tc.valid { + require.Nil(t, err) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + } +} diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go index 16632545a..84686c526 100644 --- a/x/cheqd/utils/did.go +++ b/x/cheqd/utils/did.go @@ -1,23 +1,73 @@ package utils import ( + ustring "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" "regexp" "strings" ) var DidForbiddenSymbolsRegexp, _ = regexp.Compile("^[^#?&/\\\\]+$") +var VerificationMethodType = []string{ + "JsonWebKey2020", + "EcdsaSecp256k1VerificationKey2019", + "Ed25519VerificationKey2018", + "Bls12381G1Key2020", + "Bls12381G2Key2020", + "PgpVerificationKey2021", + "RsaVerificationKey2018", + "X25519KeyAgreementKey2019", + "SchnorrSecp256k1VerificationKey2019", + "EcdsaSecp256k1RecoveryMethod2020", + "VerifiableCondition2021", +} + +var ServiceType = []string{ + "LinkedDomains", + "DIDCommMessaging", +} + func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { fragments := strings.Split(didUrl, "#") return fragments[0], fragments[1] } -func ResolveVerificationMethodId(did string, methodId string) string { +func IsDidFragment(didUrl string) bool { + if !strings.Contains(didUrl, "#") { + return false + } + + if didUrl[0] == '#' { + return true + } + + did, _ := SplitDidUrlIntoDidAndFragment(didUrl) + return IsDid(did) +} + +func IsFullDidFragment(didUrl string) bool { + if !strings.Contains(didUrl, "#") { + return false + } + + did, _ := SplitDidUrlIntoDidAndFragment(didUrl) + return IsDid(did) +} + +func IsVerificationMethodType(vmType string) bool { + return ustring.Include(VerificationMethodType, vmType) +} + +func IsDidServiceType(sType string) bool { + return ustring.Include(ServiceType, sType) +} + +func ResolveId(did string, methodId string) string { result := methodId methodDid, methodFragment := SplitDidUrlIntoDidAndFragment(methodId) if len(methodDid) == 0 { - methodDid = did + "#" + methodFragment + result = did + "#" + methodFragment } return result @@ -33,6 +83,16 @@ func ArrayContainsNotDid(array []string) (bool, int) { return false, 0 } +func ArrayContainsNotDidFragment(array []string) (bool, int) { + for i, did := range array { + if !IsDidFragment(did) { + return true, i + } + } + + return false, 0 +} + func IsNotDid(did string) bool { return IsDid(did) == false } From 5ef82cef4bc7aa38f9429806ea9bb807b8a0fac4 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 13:54:07 +0300 Subject: [PATCH 35/74] fixed models after review --- proto/cheqd/credDef.proto | 2 +- proto/cheqd/tx.proto | 1 + vue/src/views/Types.vue | 4 +- x/cheqd/keeper/cred_def.go | 26 ++-- x/cheqd/keeper/did.go | 15 +-- x/cheqd/keeper/grpc_query_cred_def.go | 11 +- x/cheqd/keeper/grpc_query_did.go | 10 +- x/cheqd/keeper/grpc_query_schema.go | 11 +- x/cheqd/keeper/msg_server_cred_def.go | 2 +- x/cheqd/keeper/msg_server_did.go | 15 +-- x/cheqd/keeper/query_did.go | 2 +- x/cheqd/keeper/schema.go | 21 +-- x/cheqd/keeper/verify.go | 6 +- x/cheqd/types/credDef.pb.go | 166 ++++++++--------------- x/cheqd/types/did.pb.go | 72 +++++----- x/cheqd/types/messages_cred_def.go | 18 +-- x/cheqd/types/tx.pb.go | 185 ++++++++++++++++---------- 17 files changed, 266 insertions(+), 301 deletions(-) diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index 30409d0cf..d4bde8823 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -10,7 +10,7 @@ message CredDef { string id = 1; string schema_id = 2; string tag = 3; - string signature_type = 4; + string type = 4; repeated string controller = 5; oneof value { CredDefValue cl_type = 6; diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 990c0fe52..2163d7889 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -83,6 +83,7 @@ message MsgUpdateDid { repeated string also_known_as = 9; repeated DidService service = 10; repeated string context = 11; + string version_id = 12; } diff --git a/vue/src/views/Types.vue b/vue/src/views/Types.vue index 0ddb6b83f..4da878219 100644 --- a/vue/src/views/Types.vue +++ b/vue/src/views/Types.vue @@ -2,11 +2,9 @@
- + - -
diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 8a5868538..3fd8fb63b 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -2,7 +2,6 @@ package keeper import ( "encoding/base64" - "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" @@ -59,12 +58,12 @@ func (k Keeper) AppendCredDef( } var credDef = types.CredDef{ - Id: id, - SchemaId: schemaId, - Tag: tag, - SignatureType: signatureType, - Value: clValue, - Controller: controller, + Id: id, + SchemaId: schemaId, + Tag: tag, + Type: signatureType, + Value: clValue, + Controller: controller, } created := ctx.BlockTime().String() @@ -89,18 +88,15 @@ func (k Keeper) AppendCredDef( } // GetCredDef returns a credDef from its id -func (k Keeper) GetCredDef(ctx sdk.Context, id string) (*types.CredDef, error) { +func (k Keeper) GetCredDef(ctx sdk.Context, id string) (*types.StateValue, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) var value types.StateValue - k.cdc.MustUnmarshal(store.Get(GetCredDefIDBytes(id)), &value) - - switch data := value.Data.(type) { - case *types.StateValue_CredDef: - return data.CredDef, nil - default: - return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, fmt.Sprintf("State has unexpected type %T", data)) + if err := k.cdc.Unmarshal(store.Get(GetCredDefIDBytes(id)), &value); err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) } + + return &value, nil } // HasCredDef checks if the credDef exists in the store diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index 68cc62e1c..453fb9d5a 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -2,7 +2,6 @@ package keeper import ( "encoding/base64" - "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" @@ -127,21 +126,15 @@ func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata) } // GetDid returns a did from its id -func (k Keeper) GetDid(ctx *sdk.Context, id string) (*types.Did, *types.Metadata, error) { +func (k Keeper) GetDid(ctx *sdk.Context, id string) (*types.StateValue, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) var value types.StateValue - err := k.cdc.Unmarshal(store.Get(GetDidIDBytes(id)), &value) - if err != nil { - return nil, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) + if err := k.cdc.Unmarshal(store.Get(GetDidIDBytes(id)), &value); err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) } - switch data := value.Data.(type) { - case *types.StateValue_Did: - return data.Did, value.Metadata, nil - default: - return nil, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, fmt.Sprintf("State has unexpected type %T", data)) - } + return &value, nil } // areOwners returns a bool are received authors can control this DID diff --git a/x/cheqd/keeper/grpc_query_cred_def.go b/x/cheqd/keeper/grpc_query_cred_def.go index de2b878cd..c584f06c5 100644 --- a/x/cheqd/keeper/grpc_query_cred_def.go +++ b/x/cheqd/keeper/grpc_query_cred_def.go @@ -4,7 +4,6 @@ import ( "context" "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "google.golang.org/grpc/codes" @@ -15,16 +14,16 @@ func (k Keeper) CredDef(c context.Context, req *types.QueryGetCredDefRequest) (* if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - - var credDef types.CredDef ctx := sdk.UnwrapSDKContext(c) if !k.HasCredDef(ctx, req.Id) { return nil, sdkerrors.ErrKeyNotFound } - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - k.cdc.MustUnmarshal(store.Get(GetCredDefIDBytes(req.Id)), &credDef) + state, err := k.GetCredDef(ctx, req.Id) + if err != nil { + return nil, err + } - return &types.QueryGetCredDefResponse{CredDef: &credDef}, nil + return &types.QueryGetCredDefResponse{CredDef: state.GetCredDef()}, nil } diff --git a/x/cheqd/keeper/grpc_query_did.go b/x/cheqd/keeper/grpc_query_did.go index 27f8bc802..050d87b0b 100644 --- a/x/cheqd/keeper/grpc_query_did.go +++ b/x/cheqd/keeper/grpc_query_did.go @@ -4,7 +4,6 @@ import ( "context" "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "google.golang.org/grpc/codes" @@ -16,15 +15,16 @@ func (k Keeper) Did(c context.Context, req *types.QueryGetDidRequest) (*types.Qu return nil, status.Error(codes.InvalidArgument, "invalid request") } - var did types.Did ctx := sdk.UnwrapSDKContext(c) if !k.HasDid(ctx, req.Id) { return nil, sdkerrors.ErrKeyNotFound } - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - k.cdc.MustUnmarshal(store.Get(GetDidIDBytes(req.Id)), &did) + state, err := k.GetDid(&ctx, req.Id) + if err != nil { + return nil, err + } - return &types.QueryGetDidResponse{Did: &did}, nil + return &types.QueryGetDidResponse{Did: state.GetDid()}, nil } diff --git a/x/cheqd/keeper/grpc_query_schema.go b/x/cheqd/keeper/grpc_query_schema.go index 2fb8bba6e..4c0ea646a 100644 --- a/x/cheqd/keeper/grpc_query_schema.go +++ b/x/cheqd/keeper/grpc_query_schema.go @@ -4,7 +4,6 @@ import ( "context" "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "google.golang.org/grpc/codes" @@ -15,16 +14,16 @@ func (k Keeper) Schema(c context.Context, req *types.QueryGetSchemaRequest) (*ty if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - - var schema types.Schema ctx := sdk.UnwrapSDKContext(c) if !k.HasSchema(ctx, req.Id) { return nil, sdkerrors.ErrKeyNotFound } - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - k.cdc.MustUnmarshal(store.Get(GetSchemaIDBytes(req.Id)), &schema) + state, err := k.GetSchema(ctx, req.Id) + if err != nil { + return nil, err + } - return &types.QueryGetSchemaResponse{Schema: &schema}, nil + return &types.QueryGetSchemaResponse{Schema: state.GetSchema()}, nil } diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 77709e93c..f9259fe0c 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -35,7 +35,7 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque credDefMsg.Id, credDefMsg.SchemaId, credDefMsg.Tag, - credDefMsg.SignatureType, + credDefMsg.Type, (*types.CredDef_ClType)(value), credDefMsg.Controller, ) diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index f0c41b813..6d2c0edce 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -69,22 +69,17 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) } - oldDIDDoc, metadata, err := k.GetDid(&ctx, didMsg.Id) + oldDIDDoc, err := k.GetDid(&ctx, didMsg.Id) if err != nil { return nil, err } - if err := k.UpdateDidVerifySignature(&ctx, msg, oldDIDDoc, didMsg); err != nil { + if err := k.UpdateDidVerifySignature(&ctx, msg, oldDIDDoc.GetDid(), didMsg); err != nil { return nil, err } - versionId, exists := msg.Metadata["versionId"] - if !exists { - return nil, sdkerrors.Wrap(types.ErrUnexpectedDidVersion, "Metadata doesn't contain `versionId`") - } - - if metadata.VersionId != versionId { - errMsg := fmt.Sprintf("Ecpected %s with version %s. Got version %s", didMsg.Id, metadata.VersionId, versionId) + if oldDIDDoc.Metadata.VersionId != didMsg.VersionId { + errMsg := fmt.Sprintf("Ecpected %s with version %s. Got version %s", didMsg.Id, oldDIDDoc.Metadata.VersionId, didMsg.VersionId) return nil, sdkerrors.Wrap(types.ErrUnexpectedDidVersion, errMsg) } @@ -102,7 +97,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) Context: didMsg.Context, } - k.SetDid(ctx, did, metadata) + k.SetDid(ctx, did, oldDIDDoc.Metadata) return &types.MsgUpdateDidResponse{ Id: didMsg.Id, diff --git a/x/cheqd/keeper/query_did.go b/x/cheqd/keeper/query_did.go index d9fcb18cf..bebfb225a 100644 --- a/x/cheqd/keeper/query_did.go +++ b/x/cheqd/keeper/query_did.go @@ -11,7 +11,7 @@ func getDid(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.L return nil, sdkerrors.ErrKeyNotFound } - msg, _, err := keeper.GetDid(&ctx, id) + msg, err := keeper.GetDid(&ctx, id) if err != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) } diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index cab00e10e..0b54be234 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -2,7 +2,6 @@ package keeper import ( "encoding/base64" - "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" @@ -82,26 +81,16 @@ func (k Keeper) AppendSchema( return id } -// SetSchema set a specific schema in the store -func (k Keeper) SetSchema(ctx sdk.Context, schema types.Schema) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - b := k.cdc.MustMarshal(&schema) - store.Set(GetSchemaIDBytes(schema.Id), b) -} - // GetSchema returns a schema from its id -func (k Keeper) GetSchema(ctx sdk.Context, id string) (*types.Schema, error) { +func (k Keeper) GetSchema(ctx sdk.Context, id string) (*types.StateValue, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) var value types.StateValue - k.cdc.MustUnmarshal(store.Get(GetSchemaIDBytes(id)), &value) - - switch data := value.Data.(type) { - case *types.StateValue_Schema: - return data.Schema, nil - default: - return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, fmt.Sprintf("State has unexpected type %T", data)) + if err := k.cdc.Unmarshal(store.Get(GetSchemaIDBytes(id)), &value); err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) } + + return &value, nil } // HasSchema checks if the schema exists in the store diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index 1273d8d31..367bbca67 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -23,13 +23,13 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s for _, signer := range signers { if signer.VerificationMethod == nil { - didDoc, _, err := k.GetDid(ctx, signer.Signer) + state, err := k.GetDid(ctx, signer.Signer) if err != nil { return types.ErrDidDocNotFound.Wrap(signer.Signer) } - signer.Authentication = didDoc.Authentication - signer.VerificationMethod = didDoc.VerificationMethod + signer.Authentication = state.GetDid().Authentication + signer.VerificationMethod = state.GetDid().VerificationMethod } valid, err := VerifyIdentitySignature(signer, msg.Signatures, signingInput) diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index d5e3986db..34bd834cd 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -25,12 +25,11 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type CredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Authors []string `protobuf:"bytes,2,rep,name=authors,proto3" json:"authors,omitempty"` - SchemaId string `protobuf:"bytes,3,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,5,opt,name=signatureType,proto3" json:"signatureType,omitempty"` - Controller []string `protobuf:"bytes,6,rep,name=controller,proto3" json:"controller,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + Controller []string `protobuf:"bytes,5,rep,name=controller,proto3" json:"controller,omitempty"` // Types that are valid to be assigned to Value: // *CredDef_ClType // *CredDef_AnyType @@ -77,10 +76,10 @@ type isCredDef_Value interface { } type CredDef_ClType struct { - ClType *CredDefValue `protobuf:"bytes,7,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` + ClType *CredDefValue `protobuf:"bytes,6,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` } type CredDef_AnyType struct { - AnyType *types.Any `protobuf:"bytes,8,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` + AnyType *types.Any `protobuf:"bytes,7,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` } func (*CredDef_ClType) isCredDef_Value() {} @@ -100,13 +99,6 @@ func (m *CredDef) GetId() string { return "" } -func (m *CredDef) GetAuthors() []string { - if m != nil { - return m.Authors - } - return nil -} - func (m *CredDef) GetSchemaId() string { if m != nil { return m.SchemaId @@ -121,9 +113,9 @@ func (m *CredDef) GetTag() string { return "" } -func (m *CredDef) GetSignatureType() string { +func (m *CredDef) GetType() string { if m != nil { - return m.SignatureType + return m.Type } return "" } @@ -219,35 +211,34 @@ func init() { func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } var fileDescriptor_bc069326307a6009 = []byte{ - // 446 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0x4d, 0x8b, 0xd3, 0x40, - 0x1c, 0xc6, 0x93, 0xd4, 0x6d, 0xda, 0x7f, 0xd7, 0x17, 0xc6, 0x05, 0xc7, 0x0a, 0xa1, 0x2c, 0x0a, - 0x55, 0x70, 0x82, 0x15, 0x41, 0x3c, 0xe9, 0xae, 0xc2, 0x0a, 0x1e, 0x96, 0xf8, 0x72, 0xf0, 0xb2, - 0x4c, 0x33, 0xb3, 0xe9, 0x60, 0x3a, 0x53, 0xa7, 0x93, 0xc5, 0xf9, 0x16, 0x7e, 0x0a, 0x3f, 0x8b, - 0xc7, 0x3d, 0x8a, 0x27, 0x69, 0xbf, 0x88, 0xcc, 0x4c, 0x2a, 0x55, 0x58, 0x58, 0xf0, 0x92, 0x3c, - 0x79, 0x32, 0xcf, 0xef, 0x9f, 0x79, 0x86, 0xc0, 0xcd, 0x72, 0xc6, 0x3f, 0xb3, 0xbc, 0xd4, 0x9c, - 0xbd, 0xe4, 0xa7, 0x64, 0xa1, 0x95, 0x51, 0xe8, 0x96, 0x37, 0x05, 0x23, 0xfe, 0x2e, 0x15, 0xe3, - 0x41, 0x0d, 0x6f, 0x57, 0x4a, 0x55, 0x35, 0xcf, 0xfd, 0xb2, 0x69, 0x73, 0x9a, 0x53, 0x69, 0x43, - 0x66, 0xb8, 0x57, 0xa9, 0x4a, 0x79, 0x99, 0x3b, 0x15, 0xdc, 0xfd, 0x6f, 0x09, 0xa4, 0x87, 0x81, - 0x8d, 0xae, 0x41, 0x22, 0x18, 0x8e, 0x47, 0xf1, 0xb8, 0x5f, 0x24, 0x82, 0x21, 0x0c, 0x29, 0x6d, - 0xcc, 0x4c, 0xe9, 0x25, 0x4e, 0x46, 0x9d, 0x71, 0xbf, 0xd8, 0x3c, 0xa2, 0x3b, 0xd0, 0x5f, 0x96, - 0x33, 0x3e, 0xa7, 0x27, 0x82, 0xe1, 0x8e, 0x0f, 0xf4, 0x82, 0xf1, 0x9a, 0xa1, 0x1b, 0xd0, 0x31, - 0xb4, 0xc2, 0x57, 0xbc, 0xed, 0x24, 0xba, 0x0b, 0x57, 0x97, 0xa2, 0x92, 0xd4, 0x34, 0x9a, 0xbf, - 0xb3, 0x0b, 0x8e, 0x77, 0xfc, 0xbb, 0xbf, 0x4d, 0x94, 0x01, 0x94, 0x4a, 0x1a, 0xad, 0xea, 0x9a, - 0x6b, 0xdc, 0xf5, 0x13, 0xb7, 0x1c, 0xf4, 0x1c, 0xd2, 0xb2, 0x3e, 0x31, 0x2e, 0x9f, 0x8e, 0xe2, - 0xf1, 0x60, 0x72, 0x8f, 0x5c, 0x50, 0x03, 0x69, 0x77, 0xf4, 0x81, 0xd6, 0x0d, 0x3f, 0x8a, 0x8a, - 0x6e, 0x59, 0xfb, 0x09, 0x8f, 0xa0, 0x47, 0xa5, 0x0d, 0x88, 0x9e, 0x47, 0xec, 0x91, 0x50, 0x18, - 0xd9, 0x14, 0x46, 0x5e, 0x48, 0x7b, 0x14, 0x15, 0x29, 0x95, 0xd6, 0x45, 0x0e, 0x52, 0xd8, 0x39, - 0x73, 0x94, 0xfd, 0x9f, 0x09, 0xec, 0x6e, 0x63, 0xd1, 0x1b, 0x48, 0x17, 0x5a, 0xcc, 0xa9, 0xb6, - 0x38, 0x1e, 0x75, 0xc6, 0x83, 0xc9, 0xe4, 0x52, 0x9f, 0x43, 0x8e, 0x43, 0xe8, 0x95, 0x34, 0xda, - 0x16, 0x1b, 0x04, 0x7a, 0x0f, 0xa0, 0xf9, 0x99, 0x2a, 0xa9, 0x11, 0x4a, 0xfa, 0xba, 0x07, 0x93, - 0x27, 0x97, 0x03, 0x16, 0x7f, 0x72, 0x81, 0xb9, 0x05, 0x1a, 0x1e, 0xc3, 0xee, 0xf6, 0x3c, 0x77, - 0x36, 0x9f, 0xb8, 0x6d, 0xcf, 0xd8, 0x49, 0xf4, 0xa0, 0xdd, 0x20, 0x4e, 0x2e, 0x2e, 0xa4, 0x08, - 0x4b, 0x9e, 0x25, 0x4f, 0xe3, 0xe1, 0x5b, 0xb8, 0xfe, 0xcf, 0xc0, 0xff, 0x87, 0x1e, 0x1c, 0x7e, - 0x5f, 0x65, 0xf1, 0xf9, 0x2a, 0x8b, 0x7f, 0xad, 0xb2, 0xf8, 0xeb, 0x3a, 0x8b, 0xce, 0xd7, 0x59, - 0xf4, 0x63, 0x9d, 0x45, 0x1f, 0xef, 0x57, 0xc2, 0xcc, 0x9a, 0x29, 0x29, 0xd5, 0x3c, 0x6f, 0xff, - 0x04, 0x77, 0x7d, 0xe8, 0xca, 0xc8, 0xbf, 0xb4, 0x96, 0x3b, 0xd0, 0xe5, 0xb4, 0xeb, 0xe9, 0x8f, - 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x39, 0x2a, 0x0b, 0xf3, 0x32, 0x03, 0x00, 0x00, + // 423 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0x4f, 0x6b, 0xd4, 0x40, + 0x18, 0xc6, 0x33, 0x49, 0xbb, 0xe9, 0xbe, 0x2d, 0x2a, 0x63, 0xc1, 0x18, 0x21, 0x84, 0x82, 0x10, + 0x05, 0x27, 0xb8, 0x22, 0x88, 0x27, 0x6d, 0x15, 0x2a, 0x78, 0x28, 0xf1, 0xcf, 0xc1, 0x4b, 0x99, + 0x9d, 0x99, 0x66, 0x83, 0xd9, 0x99, 0x75, 0x9a, 0x2d, 0xce, 0xb7, 0xf0, 0x63, 0x79, 0xec, 0x51, + 0x3c, 0xc9, 0xee, 0xb7, 0xf0, 0x24, 0x33, 0x93, 0x4a, 0x10, 0x0a, 0x0b, 0x5e, 0x92, 0x87, 0x87, + 0x79, 0x7e, 0xef, 0xbc, 0xef, 0x3b, 0x70, 0x9b, 0xcd, 0xc4, 0x17, 0x5e, 0x32, 0x2d, 0xf8, 0x2b, + 0x71, 0x46, 0x16, 0x5a, 0x75, 0x0a, 0xdf, 0x71, 0x66, 0xc3, 0x89, 0xfb, 0x4b, 0xc5, 0x85, 0x57, + 0xe9, 0xdd, 0x5a, 0xa9, 0xba, 0x15, 0xa5, 0x3b, 0x36, 0x5d, 0x9e, 0x95, 0x54, 0x1a, 0x9f, 0x49, + 0xf7, 0x6b, 0x55, 0x2b, 0x27, 0x4b, 0xab, 0xbc, 0x7b, 0xf0, 0x1b, 0x41, 0x7c, 0xe4, 0xd9, 0xf8, + 0x06, 0x84, 0x0d, 0x4f, 0x50, 0x8e, 0x8a, 0x71, 0x15, 0x36, 0x1c, 0xdf, 0x83, 0xf1, 0x39, 0x9b, + 0x89, 0x39, 0x3d, 0x6d, 0x78, 0x12, 0x3a, 0x7b, 0xc7, 0x1b, 0x6f, 0x38, 0xbe, 0x05, 0x51, 0x47, + 0xeb, 0x24, 0x72, 0xb6, 0x95, 0x18, 0xc3, 0x56, 0x67, 0x16, 0x22, 0xd9, 0x72, 0x96, 0xd3, 0x38, + 0x03, 0x60, 0x4a, 0x76, 0x5a, 0xb5, 0xad, 0xd0, 0xc9, 0x76, 0x1e, 0x15, 0xe3, 0x6a, 0xe0, 0xe0, + 0x17, 0x10, 0xb3, 0xf6, 0xd4, 0xc5, 0x46, 0x39, 0x2a, 0x76, 0x27, 0xf7, 0xc9, 0x35, 0xad, 0x91, + 0xfe, 0x96, 0x1f, 0x69, 0xbb, 0x14, 0xc7, 0x41, 0x35, 0x62, 0xed, 0x7b, 0x5b, 0xe1, 0x31, 0xec, + 0x50, 0x69, 0x3c, 0x22, 0x76, 0x88, 0x7d, 0xe2, 0x87, 0x40, 0xae, 0x86, 0x40, 0x5e, 0x4a, 0x73, + 0x1c, 0x54, 0x31, 0x95, 0xc6, 0x46, 0x0e, 0x63, 0xd8, 0xbe, 0xb0, 0x94, 0x83, 0x9f, 0x21, 0xec, + 0x0d, 0xb1, 0xf8, 0x2d, 0xc4, 0x0b, 0xdd, 0xcc, 0xa9, 0x36, 0x09, 0xca, 0xa3, 0x62, 0x77, 0x32, + 0xd9, 0xe8, 0x3a, 0xe4, 0xc4, 0x87, 0x5e, 0xcb, 0x4e, 0x9b, 0xea, 0x0a, 0x81, 0x3f, 0x00, 0x68, + 0x71, 0xa1, 0x18, 0xed, 0x1a, 0x25, 0x93, 0xd0, 0x01, 0x9f, 0x6e, 0x06, 0xac, 0xfe, 0xe6, 0x3c, + 0x73, 0x00, 0x4a, 0x4f, 0x60, 0x6f, 0x58, 0xcf, 0x6e, 0xe2, 0xb3, 0x30, 0xfd, 0xde, 0xac, 0xc4, + 0x0f, 0xfb, 0x06, 0xdd, 0xd2, 0xae, 0x19, 0x48, 0xe5, 0x8f, 0x3c, 0x0f, 0x9f, 0xa1, 0xf4, 0x1d, + 0xdc, 0xfc, 0xa7, 0xe0, 0xff, 0x43, 0x0f, 0x8f, 0xbe, 0xaf, 0x32, 0x74, 0xb9, 0xca, 0xd0, 0xaf, + 0x55, 0x86, 0xbe, 0xad, 0xb3, 0xe0, 0x72, 0x9d, 0x05, 0x3f, 0xd6, 0x59, 0xf0, 0xe9, 0x41, 0xdd, + 0x74, 0xb3, 0xe5, 0x94, 0x30, 0x35, 0x2f, 0xfb, 0xd7, 0x6d, 0xbf, 0x8f, 0xec, 0x30, 0xca, 0xaf, + 0xbd, 0x65, 0x17, 0x7a, 0x3e, 0x1d, 0x39, 0xfa, 0x93, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x94, + 0x58, 0x39, 0x05, 0x06, 0x03, 0x00, 0x00, } func (m *CredDef) Marshal() (dAtA []byte, err error) { @@ -285,38 +276,29 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Controller[iNdEx]) i = encodeVarintCredDef(dAtA, i, uint64(len(m.Controller[iNdEx]))) i-- - dAtA[i] = 0x32 + dAtA[i] = 0x2a } } - if len(m.SignatureType) > 0 { - i -= len(m.SignatureType) - copy(dAtA[i:], m.SignatureType) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.SignatureType))) + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintCredDef(dAtA, i, uint64(len(m.Type))) i-- - dAtA[i] = 0x2a + dAtA[i] = 0x22 } if len(m.Tag) > 0 { i -= len(m.Tag) copy(dAtA[i:], m.Tag) i = encodeVarintCredDef(dAtA, i, uint64(len(m.Tag))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x1a } if len(m.SchemaId) > 0 { i -= len(m.SchemaId) copy(dAtA[i:], m.SchemaId) i = encodeVarintCredDef(dAtA, i, uint64(len(m.SchemaId))) i-- - dAtA[i] = 0x1a - } - if len(m.Authors) > 0 { - for iNdEx := len(m.Authors) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Authors[iNdEx]) - copy(dAtA[i:], m.Authors[iNdEx]) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.Authors[iNdEx]))) - i-- - dAtA[i] = 0x12 - } + dAtA[i] = 0x12 } if len(m.Id) > 0 { i -= len(m.Id) @@ -345,7 +327,7 @@ func (m *CredDef_ClType) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintCredDef(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x3a + dAtA[i] = 0x32 } return len(dAtA) - i, nil } @@ -366,7 +348,7 @@ func (m *CredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintCredDef(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x42 + dAtA[i] = 0x3a } return len(dAtA) - i, nil } @@ -466,12 +448,6 @@ func (m *CredDef) Size() (n int) { if l > 0 { n += 1 + l + sovCredDef(uint64(l)) } - if len(m.Authors) > 0 { - for _, s := range m.Authors { - l = len(s) - n += 1 + l + sovCredDef(uint64(l)) - } - } l = len(m.SchemaId) if l > 0 { n += 1 + l + sovCredDef(uint64(l)) @@ -480,7 +456,7 @@ func (m *CredDef) Size() (n int) { if l > 0 { n += 1 + l + sovCredDef(uint64(l)) } - l = len(m.SignatureType) + l = len(m.Type) if l > 0 { n += 1 + l + sovCredDef(uint64(l)) } @@ -623,38 +599,6 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authors", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Authors = append(m.Authors, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field SchemaId", wireType) } @@ -686,7 +630,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.SchemaId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Tag", wireType) } @@ -718,9 +662,9 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.Tag = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SignatureType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -748,9 +692,9 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SignatureType = string(dAtA[iNdEx:postIndex]) + m.Type = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } @@ -782,7 +726,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 7: + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ClType", wireType) } @@ -817,7 +761,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } m.Value = &CredDef_ClType{v} iNdEx = postIndex - case 8: + case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AnyType", wireType) } diff --git a/x/cheqd/types/did.pb.go b/x/cheqd/types/did.pb.go index 7b08d8e81..787d5eb43 100644 --- a/x/cheqd/types/did.pb.go +++ b/x/cheqd/types/did.pb.go @@ -29,7 +29,7 @@ type Did struct { Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` VerificationMethod []*VerificationMethod `protobuf:"bytes,3,rep,name=verification_method,json=verificationMethod,proto3" json:"verification_method,omitempty"` Authentication []string `protobuf:"bytes,4,rep,name=authentication,proto3" json:"authentication,omitempty"` - AssertionMethod []string `protobuf:"bytes,5,rep,name=assertionMethod,proto3" json:"assertionMethod,omitempty"` + AssertionMethod []string `protobuf:"bytes,5,rep,name=assertion_method,json=assertionMethod,proto3" json:"assertion_method,omitempty"` CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capability_invocation,json=capabilityInvocation,proto3" json:"capability_invocation,omitempty"` CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` KeyAgreement []string `protobuf:"bytes,8,rep,name=key_agreement,json=keyAgreement,proto3" json:"key_agreement,omitempty"` @@ -294,42 +294,42 @@ func init() { func init() { proto.RegisterFile("cheqd/did.proto", fileDescriptor_382ab0c0f6b6850e) } var fileDescriptor_382ab0c0f6b6850e = []byte{ - // 553 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xc7, 0x6b, 0xbb, 0x1f, 0x64, 0xd2, 0x26, 0x65, 0x09, 0x62, 0xc9, 0xc1, 0x8a, 0x52, 0x09, - 0xa5, 0x42, 0xd8, 0xa8, 0xbd, 0x20, 0xa4, 0x0a, 0x15, 0xd2, 0x03, 0x54, 0x95, 0x50, 0x90, 0x38, + // 555 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0x86, 0x6b, 0xbb, 0x6d, 0xc8, 0xa4, 0x4d, 0xc2, 0x12, 0x84, 0xc9, 0xc1, 0x8a, 0x52, 0x09, + 0x25, 0x42, 0xd8, 0xa8, 0xbd, 0x20, 0xa4, 0x0a, 0x15, 0xd2, 0x03, 0x54, 0x95, 0x50, 0x90, 0x38, 0x00, 0x92, 0x65, 0x7b, 0xb7, 0xce, 0x62, 0x67, 0xd7, 0xd8, 0xeb, 0xa4, 0x7e, 0x0b, 0x1e, 0x85, - 0xc7, 0xe0, 0xd8, 0x23, 0x47, 0x94, 0x3c, 0x01, 0x6f, 0x80, 0xbc, 0x76, 0x3e, 0x94, 0xa8, 0x12, - 0x5c, 0xec, 0xd9, 0xdf, 0xcc, 0x7f, 0x77, 0x76, 0x66, 0x6c, 0x68, 0xfa, 0x43, 0xfa, 0x8d, 0xd8, - 0x84, 0x11, 0x2b, 0x4e, 0x84, 0x14, 0xe8, 0x91, 0x02, 0x8c, 0x58, 0xea, 0xcd, 0x05, 0xa1, 0xa5, - 0xd5, 0x7e, 0x1c, 0x08, 0x11, 0x44, 0xd4, 0x56, 0x61, 0x5e, 0x76, 0x6d, 0xbb, 0x3c, 0x2f, 0x35, - 0xed, 0x56, 0x20, 0x02, 0xa1, 0x4c, 0xbb, 0xb0, 0x4a, 0xda, 0xfd, 0x63, 0x80, 0xd1, 0x67, 0x04, - 0x35, 0x40, 0x67, 0x04, 0x6b, 0x1d, 0xad, 0x57, 0x1b, 0xe8, 0x8c, 0x20, 0x13, 0xc0, 0x17, 0x5c, - 0x26, 0x22, 0x8a, 0x68, 0x82, 0xf5, 0x8e, 0xd1, 0xab, 0x0d, 0x56, 0x08, 0xfa, 0x02, 0x0f, 0xc6, - 0x34, 0x61, 0xd7, 0xcc, 0x77, 0x25, 0x13, 0xdc, 0x19, 0x51, 0x39, 0x14, 0x04, 0x1b, 0x1d, 0xa3, - 0x57, 0x3f, 0x79, 0x6a, 0xdd, 0x91, 0x9f, 0xf5, 0x71, 0x45, 0x73, 0xa5, 0x24, 0x03, 0x34, 0xde, - 0x60, 0xe8, 0x09, 0x34, 0xdc, 0x4c, 0x0e, 0x29, 0x97, 0x15, 0xc7, 0xdb, 0x2a, 0x83, 0x35, 0x8a, - 0x7a, 0xd0, 0x74, 0xd3, 0x94, 0x26, 0x4b, 0x29, 0xde, 0x51, 0x81, 0xeb, 0x18, 0x9d, 0xc2, 0x43, - 0xdf, 0x8d, 0x5d, 0x8f, 0x45, 0x4c, 0xe6, 0x0e, 0xe3, 0x63, 0x51, 0x6d, 0xbc, 0xab, 0xe2, 0x5b, - 0x4b, 0xe7, 0xdb, 0x85, 0x6f, 0x4d, 0x44, 0x68, 0x44, 0x83, 0x52, 0xb4, 0xb7, 0x2e, 0xea, 0x2f, - 0x7c, 0xe8, 0x08, 0x0e, 0x42, 0x9a, 0x3b, 0x6e, 0x90, 0x50, 0x3a, 0xa2, 0x5c, 0xe2, 0x7b, 0x2a, - 0x78, 0x3f, 0xa4, 0xf9, 0xf9, 0x9c, 0xa1, 0x33, 0xd8, 0x4b, 0x69, 0x32, 0x66, 0x3e, 0xc5, 0x35, - 0x55, 0xb2, 0xa3, 0x3b, 0x4b, 0xd6, 0x67, 0xe4, 0x43, 0x19, 0x3a, 0x98, 0x6b, 0x50, 0x17, 0x0e, - 0xdc, 0x28, 0x15, 0x4e, 0xc8, 0xc5, 0x84, 0x3b, 0x6e, 0x8a, 0x41, 0x9d, 0x51, 0x2f, 0xe0, 0x65, - 0xc1, 0xce, 0x53, 0x84, 0x61, 0xaf, 0xe8, 0x17, 0xbd, 0x91, 0xb8, 0xae, 0xbc, 0xf3, 0x65, 0xf7, - 0x87, 0x0e, 0x68, 0xb3, 0x11, 0x1b, 0x23, 0x80, 0x60, 0x5b, 0xe6, 0x31, 0xc5, 0xba, 0x22, 0xca, - 0x5e, 0x1b, 0x0b, 0x43, 0x79, 0x56, 0xc7, 0xc2, 0x87, 0x46, 0x9c, 0x79, 0x11, 0xf3, 0x9d, 0xa2, - 0x06, 0x5f, 0x27, 0xa1, 0x6a, 0x5c, 0xfd, 0xe4, 0xec, 0x3f, 0x26, 0xc2, 0x7a, 0xaf, 0x76, 0xb8, - 0xa4, 0xf9, 0xbb, 0x49, 0x78, 0xc1, 0x65, 0x92, 0x0f, 0xf6, 0xe3, 0x15, 0x84, 0x9e, 0x43, 0x6b, - 0xe5, 0x90, 0x51, 0x16, 0x49, 0xe6, 0xb9, 0x29, 0xc5, 0x3b, 0x2a, 0x1d, 0xb4, 0x88, 0xbd, 0x9a, - 0x7b, 0xda, 0xaf, 0xe0, 0xfe, 0xc6, 0xa6, 0xe8, 0x10, 0x8c, 0x90, 0xe6, 0xd5, 0x85, 0x0b, 0x13, - 0xb5, 0x60, 0x67, 0xec, 0x46, 0xd9, 0xfc, 0xca, 0xe5, 0xe2, 0xa5, 0xfe, 0x42, 0xeb, 0x7e, 0x06, - 0x58, 0xf6, 0xe1, 0x9f, 0x2a, 0x75, 0x0c, 0x87, 0x55, 0xb7, 0x1c, 0xca, 0x49, 0x2c, 0x18, 0x97, - 0x55, 0xbd, 0x9a, 0x15, 0xbf, 0xa8, 0xf0, 0xeb, 0x37, 0x3f, 0xa7, 0xa6, 0x76, 0x3b, 0x35, 0xb5, - 0xdf, 0x53, 0x53, 0xfb, 0x3e, 0x33, 0xb7, 0x6e, 0x67, 0xe6, 0xd6, 0xaf, 0x99, 0xb9, 0xf5, 0xe9, - 0x38, 0x60, 0x72, 0x98, 0x79, 0x96, 0x2f, 0x46, 0x76, 0xf9, 0x0f, 0x50, 0xcf, 0x67, 0x45, 0xfd, - 0xec, 0x9b, 0x0a, 0x15, 0xc7, 0xa5, 0xde, 0xae, 0xfa, 0x9e, 0x4f, 0xff, 0x06, 0x00, 0x00, 0xff, - 0xff, 0x2d, 0x11, 0xf2, 0x74, 0x2c, 0x04, 0x00, 0x00, + 0xc7, 0xe0, 0xd8, 0x23, 0x47, 0x94, 0xbc, 0x01, 0x4f, 0x80, 0xbc, 0x76, 0x52, 0x2b, 0x51, 0x25, + 0xb8, 0x24, 0xb3, 0xdf, 0xcc, 0x3f, 0x3b, 0x3b, 0x33, 0x09, 0xb4, 0xbc, 0x09, 0xf9, 0x86, 0x2d, + 0x4c, 0xb1, 0x19, 0xc5, 0x5c, 0x70, 0xf4, 0x48, 0x02, 0x8a, 0x4d, 0xf9, 0xcd, 0x38, 0x26, 0x85, + 0xd5, 0x7d, 0xec, 0x73, 0xee, 0x87, 0xc4, 0x92, 0x61, 0x6e, 0x7a, 0x65, 0x39, 0x2c, 0x2b, 0x34, + 0xdd, 0x8e, 0xcf, 0x7d, 0x2e, 0x4d, 0x2b, 0xb7, 0x0a, 0xda, 0xff, 0xa3, 0x81, 0x36, 0xa2, 0x18, + 0x35, 0x41, 0xa5, 0x58, 0x57, 0x7a, 0xca, 0xa0, 0x3e, 0x56, 0x29, 0x46, 0x06, 0x80, 0xc7, 0x99, + 0x88, 0x79, 0x18, 0x92, 0x58, 0x57, 0x7b, 0xda, 0xa0, 0x3e, 0xae, 0x10, 0xf4, 0x05, 0x1e, 0xcc, + 0x48, 0x4c, 0xaf, 0xa8, 0xe7, 0x08, 0xca, 0x99, 0x3d, 0x25, 0x62, 0xc2, 0xb1, 0xae, 0xf5, 0xb4, + 0x41, 0xe3, 0xf8, 0xa9, 0x79, 0x47, 0x7d, 0xe6, 0xc7, 0x8a, 0xe6, 0x52, 0x4a, 0xc6, 0x68, 0xb6, + 0xc5, 0xd0, 0x13, 0x68, 0x3a, 0xa9, 0x98, 0x10, 0x26, 0x4a, 0xae, 0xef, 0xca, 0x0a, 0x36, 0x28, + 0x1a, 0x42, 0xdb, 0x49, 0x12, 0x12, 0x57, 0x4b, 0xd8, 0x93, 0x91, 0xad, 0x35, 0x2f, 0x53, 0x9e, + 0xc0, 0x43, 0xcf, 0x89, 0x1c, 0x97, 0x86, 0x54, 0x64, 0x36, 0x65, 0x33, 0x5e, 0x66, 0xde, 0x97, + 0xf1, 0x9d, 0x5b, 0xe7, 0xdb, 0xb5, 0x6f, 0x43, 0x84, 0x49, 0x48, 0xfc, 0x42, 0x54, 0xdb, 0x14, + 0x8d, 0xd6, 0x3e, 0x74, 0x04, 0x87, 0x01, 0xc9, 0x6c, 0xc7, 0x8f, 0x09, 0x99, 0x12, 0x26, 0xf4, + 0x7b, 0x32, 0xf8, 0x20, 0x20, 0xd9, 0xd9, 0x8a, 0xa1, 0x53, 0xa8, 0x25, 0x24, 0x9e, 0x51, 0x8f, + 0xe8, 0x75, 0xd9, 0xb3, 0xa3, 0x3b, 0x7b, 0x36, 0xa2, 0xf8, 0x43, 0x11, 0x3a, 0x5e, 0x69, 0x50, + 0x1f, 0x0e, 0x9d, 0x30, 0xe1, 0x76, 0xc0, 0xf8, 0x9c, 0xd9, 0x4e, 0xa2, 0x83, 0xbc, 0xa3, 0x91, + 0xc3, 0x8b, 0x9c, 0x9d, 0x25, 0x48, 0x87, 0x5a, 0x3e, 0x30, 0x72, 0x2d, 0xf4, 0x86, 0xf4, 0xae, + 0x8e, 0xfd, 0x1f, 0x2a, 0xa0, 0xed, 0x49, 0x6c, 0xed, 0x00, 0x82, 0x5d, 0x91, 0x45, 0x44, 0x57, + 0x25, 0x91, 0xf6, 0xc6, 0x5e, 0x68, 0xd2, 0x53, 0xdd, 0x0b, 0x0f, 0x9a, 0x51, 0xea, 0x86, 0xd4, + 0xb3, 0xf3, 0x1e, 0x7c, 0x9d, 0x07, 0x72, 0x72, 0x8d, 0xe3, 0xd3, 0xff, 0x58, 0x09, 0xf3, 0xbd, + 0xcc, 0x70, 0x41, 0xb2, 0x77, 0xf3, 0xe0, 0x9c, 0x89, 0x38, 0x1b, 0x1f, 0x44, 0x15, 0x84, 0x9e, + 0x43, 0xa7, 0x72, 0xc9, 0x34, 0x0d, 0x05, 0x75, 0x9d, 0x84, 0xe8, 0x7b, 0xb2, 0x1c, 0xb4, 0x8e, + 0xbd, 0x5c, 0x79, 0xba, 0xaf, 0xe0, 0xfe, 0x56, 0x52, 0xd4, 0x06, 0x2d, 0x20, 0x59, 0xf9, 0xe0, + 0xdc, 0x44, 0x1d, 0xd8, 0x9b, 0x39, 0x61, 0xba, 0x7a, 0x72, 0x71, 0x78, 0xa9, 0xbe, 0x50, 0xfa, + 0x9f, 0x01, 0x6e, 0xe7, 0xf0, 0x4f, 0x9d, 0x1a, 0x42, 0xbb, 0x9c, 0x96, 0x4d, 0x18, 0x8e, 0x38, + 0x65, 0xa2, 0xec, 0x57, 0xab, 0xe4, 0xe7, 0x25, 0x7e, 0xfd, 0xe6, 0xe7, 0xc2, 0x50, 0x6e, 0x16, + 0x86, 0xf2, 0x7b, 0x61, 0x28, 0xdf, 0x97, 0xc6, 0xce, 0xcd, 0xd2, 0xd8, 0xf9, 0xb5, 0x34, 0x76, + 0x3e, 0x0d, 0x7d, 0x2a, 0x26, 0xa9, 0x6b, 0x7a, 0x7c, 0x6a, 0x15, 0x7f, 0x02, 0xf2, 0xf3, 0x59, + 0xde, 0x3f, 0xeb, 0xba, 0x44, 0xf9, 0x75, 0x89, 0xbb, 0x2f, 0x7f, 0xd0, 0x27, 0x7f, 0x03, 0x00, + 0x00, 0xff, 0xff, 0x85, 0xcb, 0xe4, 0x49, 0x2d, 0x04, 0x00, 0x00, } func (m *Did) Marshal() (dAtA []byte, err error) { diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index ed0776ade..229d89e29 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -9,12 +9,12 @@ var _ IdentityMsg = &MsgCreateCredDef{} func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, controller []string, value *MsgCreateCredDef_ClType) *MsgCreateCredDef { return &MsgCreateCredDef{ - Id: id, - SchemaId: schemaId, - Tag: tag, - SignatureType: signatureType, - Value: value, - Controller: controller, + Id: id, + SchemaId: schemaId, + Tag: tag, + Type: signatureType, + Value: value, + Controller: controller, } } @@ -47,12 +47,12 @@ func (msg *MsgCreateCredDef) ValidateBasic() error { return ErrBadRequestIsRequired.Wrap("SchemaId") } - if len(msg.SignatureType) == 0 { + if len(msg.Type) == 0 { return ErrBadRequestIsRequired.Wrap("SignatureType") } - if utils.IsNotCredDefSignatureType(msg.SignatureType) { - return ErrBadRequest.Wrapf("%s is not allowed signature type", msg.SignatureType) + if utils.IsNotCredDefSignatureType(msg.Type) { + return ErrBadRequest.Wrapf("%s is not allowed type", msg.Type) } if len(msg.Controller) == 0 { diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index caba50779..b117d3565 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -90,10 +90,10 @@ func (m *MsgWriteRequest) GetMetadata() map[string]string { } type MsgCreateCredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - SignatureType string `protobuf:"bytes,4,opt,name=signature_type,json=signatureType,proto3" json:"signature_type,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` // Types that are valid to be assigned to Value: // *MsgCreateCredDef_ClType // *MsgCreateCredDef_AnyType @@ -178,9 +178,9 @@ func (m *MsgCreateCredDef) GetTag() string { return "" } -func (m *MsgCreateCredDef) GetSignatureType() string { +func (m *MsgCreateCredDef) GetType() string { if m != nil { - return m.SignatureType + return m.Type } return "" } @@ -566,6 +566,7 @@ type MsgUpdateDid struct { AlsoKnownAs []string `protobuf:"bytes,9,rep,name=also_known_as,json=alsoKnownAs,proto3" json:"also_known_as,omitempty"` Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` Context []string `protobuf:"bytes,11,rep,name=context,proto3" json:"context,omitempty"` + VersionId string `protobuf:"bytes,12,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` } func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } @@ -678,6 +679,13 @@ func (m *MsgUpdateDid) GetContext() []string { return nil } +func (m *MsgUpdateDid) GetVersionId() string { + if m != nil { + return m.VersionId + } + return "" +} + type MsgUpdateDidResponse struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -739,60 +747,60 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 835 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x41, 0x6f, 0xe3, 0x44, - 0x14, 0x4e, 0xec, 0xb6, 0x69, 0x5e, 0x9b, 0xb6, 0x9a, 0x2d, 0x5a, 0x13, 0x44, 0x54, 0x65, 0xb5, - 0xab, 0x14, 0xb4, 0x0e, 0xdb, 0x95, 0xd0, 0x0a, 0xb4, 0x12, 0xdd, 0x16, 0x69, 0x57, 0x28, 0x1c, - 0x5c, 0x58, 0x10, 0x42, 0xb2, 0xa6, 0x9e, 0x57, 0x67, 0x88, 0x33, 0xce, 0x7a, 0x26, 0xa1, 0xfe, - 0x17, 0x9c, 0xf8, 0x01, 0x5c, 0xf9, 0x23, 0x1c, 0x7b, 0xe4, 0x88, 0x5a, 0xf1, 0x2b, 0xb8, 0x20, - 0xcf, 0x38, 0x6e, 0xe2, 0x10, 0x1a, 0x24, 0x6e, 0x70, 0x69, 0x67, 0xbe, 0x79, 0xef, 0xfb, 0xde, - 0x7c, 0xf3, 0x3c, 0x13, 0xd8, 0x09, 0xfa, 0xf8, 0x86, 0x75, 0xd5, 0xa5, 0x3b, 0x4a, 0x62, 0x15, - 0x93, 0xfb, 0x7a, 0xce, 0x99, 0xab, 0xff, 0x8b, 0x98, 0xa1, 0x19, 0x35, 0xdf, 0x0e, 0xe3, 0x38, - 0x8c, 0xb0, 0xab, 0xc3, 0xce, 0xc7, 0x17, 0x5d, 0x2a, 0x52, 0x93, 0xd3, 0xdc, 0x35, 0x1c, 0x59, - 0x96, 0x01, 0xee, 0x19, 0x20, 0x48, 0x90, 0x9d, 0xe2, 0x85, 0x01, 0xdb, 0xbf, 0x5b, 0xb0, 0xdb, - 0x93, 0xe1, 0x57, 0x09, 0x57, 0xe8, 0xe1, 0x9b, 0x31, 0x4a, 0x45, 0x3a, 0xb0, 0xc6, 0xa8, 0xa2, - 0x4e, 0xf5, 0xa0, 0xda, 0xd9, 0x3a, 0xda, 0x77, 0x8d, 0x86, 0x3b, 0xd5, 0x70, 0x8f, 0x45, 0xea, - 0xe9, 0x08, 0xf2, 0x35, 0x80, 0xe4, 0xa1, 0xa0, 0x6a, 0x9c, 0xa0, 0x74, 0xac, 0x03, 0xbb, 0xb3, - 0x75, 0xf4, 0xcc, 0x5d, 0x52, 0xac, 0x5b, 0xd2, 0x71, 0xcf, 0x8a, 0xd4, 0x4f, 0x85, 0x4a, 0x52, - 0x6f, 0x86, 0x8b, 0x78, 0xb0, 0x39, 0x44, 0x45, 0x75, 0x1d, 0xb6, 0xe6, 0xfd, 0x70, 0x65, 0xde, - 0x5e, 0x9e, 0x68, 0x58, 0x0b, 0x9e, 0xe6, 0x73, 0xd8, 0x2d, 0x49, 0x92, 0x3d, 0xb0, 0x07, 0x98, - 0xea, 0x9d, 0xd6, 0xbd, 0x6c, 0x48, 0xf6, 0x61, 0x7d, 0x42, 0xa3, 0x31, 0x3a, 0x96, 0xc6, 0xcc, - 0xe4, 0x23, 0xeb, 0x59, 0xb5, 0xf9, 0x31, 0x34, 0xe6, 0x98, 0xff, 0x49, 0x72, 0xfb, 0x47, 0x0b, - 0xf6, 0x7a, 0x32, 0x3c, 0x49, 0x90, 0x2a, 0x3c, 0x31, 0x47, 0x40, 0x76, 0xc0, 0xe2, 0x2c, 0xcf, - 0xb7, 0x38, 0x23, 0xef, 0x40, 0x5d, 0x06, 0x7d, 0x1c, 0x52, 0x9f, 0xb3, 0x9c, 0x62, 0xd3, 0x00, - 0xaf, 0x58, 0xa6, 0xa6, 0x68, 0xe8, 0xd8, 0x46, 0x4d, 0xd1, 0x90, 0x3c, 0x84, 0x9d, 0xc2, 0x31, - 0x5f, 0xa5, 0x23, 0x74, 0xd6, 0xf4, 0x62, 0xa3, 0x40, 0xbf, 0x48, 0x47, 0x48, 0x3e, 0x81, 0x5a, - 0x10, 0x99, 0xf5, 0x75, 0x7d, 0xa2, 0x0f, 0x97, 0x3a, 0x99, 0x17, 0xf6, 0x3a, 0x2b, 0xfb, 0x65, - 0xc5, 0xdb, 0x08, 0x22, 0xcd, 0xf0, 0x04, 0x36, 0xa9, 0x48, 0x0d, 0xc5, 0xc6, 0xf2, 0xa6, 0x78, - 0x59, 0xf1, 0x6a, 0x54, 0xa4, 0x3a, 0xa5, 0x05, 0x10, 0xc4, 0x42, 0x25, 0x71, 0x14, 0x61, 0xe2, - 0xd4, 0x0e, 0xec, 0x4e, 0xdd, 0x9b, 0x41, 0x5e, 0xd4, 0x72, 0xa7, 0xda, 0xef, 0x81, 0x53, 0xf6, - 0xc5, 0x43, 0x39, 0x8a, 0x85, 0xc4, 0xb2, 0x3f, 0xed, 0x9f, 0xaa, 0xba, 0x59, 0x4d, 0xf0, 0x99, - 0x36, 0x66, 0xc1, 0x43, 0x02, 0x6b, 0xba, 0x4e, 0x63, 0x9f, 0x1e, 0x67, 0x98, 0xa0, 0x43, 0xcc, - 0xbd, 0xd3, 0x63, 0xe2, 0x40, 0x6d, 0x82, 0x89, 0xe4, 0xb1, 0xc8, 0x5d, 0x9b, 0x4e, 0xc9, 0xbb, - 0x00, 0x54, 0xa9, 0xc4, 0xcf, 0xc2, 0xa4, 0xb3, 0xae, 0x4b, 0xaf, 0x67, 0xc8, 0xe7, 0x19, 0x50, - 0xda, 0xd9, 0x46, 0x79, 0x67, 0xed, 0x43, 0xb8, 0x5f, 0xaa, 0x71, 0xe9, 0x7e, 0xfe, 0xb0, 0x61, - 0xbb, 0x88, 0x3d, 0xe5, 0x6c, 0x61, 0x33, 0xf3, 0x5a, 0x56, 0x59, 0x8b, 0x7c, 0x0b, 0xf7, 0x26, - 0x98, 0xf0, 0x0b, 0x1e, 0x50, 0xc5, 0x63, 0xe1, 0x0f, 0x51, 0xf5, 0x63, 0x96, 0x7f, 0x30, 0xef, - 0x2f, 0x3d, 0xe6, 0xd7, 0x33, 0x39, 0x3d, 0x9d, 0xe2, 0x91, 0xc9, 0x02, 0x46, 0x1e, 0xc1, 0x0e, - 0x1d, 0xab, 0x3e, 0x0a, 0x95, 0xe3, 0xce, 0x9a, 0xae, 0xa0, 0x84, 0x92, 0x43, 0xd8, 0xa3, 0x52, - 0x62, 0x32, 0x5b, 0x82, 0xb1, 0x6d, 0xb7, 0xc0, 0x73, 0xca, 0xa7, 0xf0, 0x56, 0x40, 0x47, 0xf4, - 0x9c, 0x47, 0x5c, 0xa5, 0x3e, 0x17, 0x93, 0x38, 0x67, 0x36, 0x3e, 0xee, 0xdf, 0x2e, 0xbe, 0x2a, - 0xd6, 0x4a, 0x49, 0x0c, 0x23, 0x0c, 0x4d, 0x52, 0xad, 0x9c, 0x74, 0x5a, 0xac, 0x91, 0x07, 0xd0, - 0x18, 0x60, 0xea, 0xd3, 0x30, 0x41, 0x1c, 0xa2, 0x50, 0xce, 0xa6, 0x0e, 0xde, 0x1e, 0x60, 0x7a, - 0x3c, 0xc5, 0x48, 0x1b, 0x1a, 0x34, 0x92, 0xb1, 0x3f, 0x10, 0xf1, 0xf7, 0xc2, 0xa7, 0xd2, 0xa9, - 0xeb, 0xa0, 0xad, 0x0c, 0xfc, 0x2c, 0xc3, 0x8e, 0x25, 0x79, 0x0e, 0x35, 0x89, 0xc9, 0x84, 0x07, - 0xe8, 0x80, 0xf6, 0xf5, 0xc1, 0x52, 0x5f, 0x4f, 0x39, 0x3b, 0x33, 0xa1, 0xde, 0x34, 0x27, 0xeb, - 0xb3, 0xec, 0xc0, 0xf0, 0x52, 0x39, 0x5b, 0x9a, 0x7c, 0x3a, 0x6d, 0x3f, 0x82, 0xfd, 0xd9, 0xc3, - 0xbf, 0xab, 0x4b, 0xbe, 0x1c, 0xb1, 0xff, 0xbb, 0xe4, 0xbf, 0xda, 0x25, 0xc5, 0xe1, 0x2f, 0xeb, - 0x92, 0xa3, 0x9f, 0x6d, 0xb0, 0x7b, 0x32, 0x24, 0x11, 0x34, 0xe6, 0x1f, 0x99, 0xce, 0xaa, 0xef, - 0x66, 0xf3, 0xc9, 0xdf, 0x45, 0xfe, 0xf5, 0x0d, 0xfd, 0x1d, 0x6c, 0xcf, 0xdd, 0xc6, 0xab, 0x8b, - 0x7d, 0x70, 0xb7, 0x58, 0xe9, 0xf6, 0x64, 0x50, 0xbf, 0xbd, 0x29, 0x57, 0x17, 0x7a, 0x7c, 0xb7, - 0xd0, 0xac, 0xaf, 0x0c, 0xea, 0xb7, 0x5f, 0xda, 0xbf, 0xa4, 0xb2, 0x70, 0x7a, 0x2f, 0x4e, 0x7e, - 0xb9, 0x6e, 0x55, 0xaf, 0xae, 0x5b, 0xd5, 0xdf, 0xae, 0x5b, 0xd5, 0x1f, 0x6e, 0x5a, 0x95, 0xab, - 0x9b, 0x56, 0xe5, 0xd7, 0x9b, 0x56, 0xe5, 0x9b, 0xc3, 0x90, 0xab, 0xfe, 0xf8, 0xdc, 0x0d, 0xe2, - 0x61, 0x37, 0xff, 0xc1, 0x96, 0xfd, 0x7d, 0x9c, 0x31, 0x76, 0x2f, 0x73, 0x28, 0x7b, 0xd5, 0xe4, - 0xf9, 0x86, 0x7e, 0x7c, 0x9f, 0xfe, 0x19, 0x00, 0x00, 0xff, 0xff, 0x64, 0xad, 0xad, 0x9d, 0x2e, - 0x0a, 0x00, 0x00, + // 848 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x6f, 0x23, 0x45, + 0x10, 0xb5, 0xc7, 0x4e, 0x1c, 0x57, 0x3e, 0xd5, 0x1b, 0xb4, 0x83, 0x11, 0x56, 0xe4, 0x15, 0x2b, + 0x07, 0xb4, 0x63, 0x36, 0x2b, 0xa1, 0x15, 0x68, 0x25, 0xb2, 0x09, 0xd2, 0x46, 0xc8, 0x1c, 0x26, + 0xb0, 0x20, 0x84, 0x64, 0x75, 0xa6, 0x2b, 0xe3, 0x26, 0xe3, 0x1e, 0xef, 0x74, 0xdb, 0x64, 0xce, + 0xfc, 0x01, 0xce, 0x1c, 0xb9, 0xf2, 0x47, 0x38, 0xee, 0x91, 0x23, 0x4a, 0xc4, 0xaf, 0xe0, 0x82, + 0xfa, 0xc3, 0x8e, 0x33, 0x61, 0x48, 0x90, 0xb8, 0xc1, 0x25, 0x99, 0x7e, 0x53, 0xf5, 0x5e, 0xf5, + 0xab, 0x9a, 0x6e, 0xc3, 0x46, 0x34, 0xc4, 0x57, 0xac, 0xa7, 0xce, 0x83, 0x71, 0x96, 0xaa, 0x94, + 0xdc, 0x37, 0x6b, 0xce, 0x02, 0xf3, 0x5f, 0xa4, 0x0c, 0xed, 0x53, 0xeb, 0xcd, 0x38, 0x4d, 0xe3, + 0x04, 0x7b, 0x26, 0xec, 0x64, 0x72, 0xda, 0xa3, 0x22, 0xb7, 0x39, 0xad, 0x4d, 0xcb, 0xa1, 0xb3, + 0x2c, 0x70, 0xcf, 0x02, 0x51, 0x86, 0xec, 0x10, 0x4f, 0x2d, 0xd8, 0xf9, 0xdd, 0x83, 0xcd, 0xbe, + 0x8c, 0xbf, 0xcc, 0xb8, 0xc2, 0x10, 0x5f, 0x4d, 0x50, 0x2a, 0xd2, 0x85, 0x3a, 0xa3, 0x8a, 0xfa, + 0xd5, 0x9d, 0x6a, 0x77, 0x75, 0x6f, 0x3b, 0xb0, 0x1a, 0xc1, 0x4c, 0x23, 0xd8, 0x17, 0x79, 0x68, + 0x22, 0xc8, 0x57, 0x00, 0x92, 0xc7, 0x82, 0xaa, 0x49, 0x86, 0xd2, 0xf7, 0x76, 0x6a, 0xdd, 0xd5, + 0xbd, 0xa7, 0x41, 0x49, 0xb1, 0x41, 0x41, 0x27, 0x38, 0x9e, 0xa7, 0x7e, 0x22, 0x54, 0x96, 0x87, + 0x0b, 0x5c, 0x24, 0x84, 0x95, 0x11, 0x2a, 0x6a, 0xea, 0xa8, 0x19, 0xde, 0x0f, 0xee, 0xcc, 0xdb, + 0x77, 0x89, 0x96, 0x75, 0xce, 0xd3, 0x7a, 0x06, 0x9b, 0x05, 0x49, 0xb2, 0x05, 0xb5, 0x33, 0xcc, + 0xcd, 0x4e, 0x9b, 0xa1, 0x7e, 0x24, 0xdb, 0xb0, 0x34, 0xa5, 0xc9, 0x04, 0x7d, 0xcf, 0x60, 0x76, + 0xf1, 0xa1, 0xf7, 0xb4, 0xda, 0xfa, 0x08, 0xd6, 0xaf, 0x31, 0xff, 0x93, 0xe4, 0xce, 0xf7, 0x1e, + 0x6c, 0xf5, 0x65, 0x7c, 0x90, 0x21, 0x55, 0x78, 0x60, 0x5b, 0x40, 0x36, 0xc0, 0xe3, 0xcc, 0xe5, + 0x7b, 0x9c, 0x91, 0xb7, 0xa0, 0x29, 0xa3, 0x21, 0x8e, 0xe8, 0x80, 0x33, 0x47, 0xb1, 0x62, 0x81, + 0x23, 0xa6, 0xd5, 0x14, 0x8d, 0xfd, 0x9a, 0x55, 0x53, 0x34, 0x26, 0x04, 0xea, 0x2a, 0x1f, 0xa3, + 0x5f, 0x37, 0x90, 0x79, 0x26, 0x1f, 0x43, 0x23, 0x4a, 0x06, 0x06, 0x5e, 0x32, 0xed, 0x7b, 0xa7, + 0xd4, 0x36, 0x57, 0xc5, 0x4b, 0x5d, 0xe3, 0x8b, 0x4a, 0xb8, 0x1c, 0x25, 0x9f, 0x6b, 0x86, 0xc7, + 0xb0, 0x42, 0x45, 0x6e, 0x29, 0x96, 0xcb, 0x27, 0xe0, 0x45, 0x25, 0x6c, 0x50, 0x91, 0x9b, 0x94, + 0x36, 0x40, 0x94, 0x0a, 0x95, 0xa5, 0x49, 0x82, 0x99, 0xdf, 0xd8, 0xa9, 0x75, 0x9b, 0xe1, 0x02, + 0xf2, 0xbc, 0xe1, 0x6c, 0xe9, 0xbc, 0x0b, 0x7e, 0xd1, 0x84, 0x10, 0xe5, 0x38, 0x15, 0x12, 0x8b, + 0x66, 0x74, 0x7e, 0xaa, 0x9a, 0xc9, 0xb4, 0xc1, 0xc7, 0xc6, 0x85, 0x1b, 0x86, 0xcd, 0x1c, 0xf0, + 0x16, 0x1c, 0x20, 0x50, 0x17, 0x74, 0x84, 0xce, 0x28, 0xf3, 0x4c, 0x7c, 0x68, 0x4c, 0x31, 0x93, + 0x3c, 0x15, 0xce, 0xac, 0xd9, 0x92, 0xbc, 0x0d, 0x40, 0x95, 0xca, 0x06, 0x3a, 0x4c, 0xfa, 0x4b, + 0xa6, 0xf4, 0xa6, 0x46, 0x3e, 0xd3, 0x40, 0x61, 0x67, 0xcb, 0xc5, 0x9d, 0x75, 0x76, 0xe1, 0x7e, + 0xa1, 0xc6, 0xd2, 0xfd, 0xfc, 0x51, 0x83, 0xb5, 0x79, 0xec, 0x21, 0x67, 0x37, 0x36, 0x73, 0x5d, + 0xcb, 0x2b, 0x6a, 0x91, 0x6f, 0xe0, 0xde, 0x14, 0x33, 0x7e, 0xca, 0x23, 0xaa, 0x78, 0x2a, 0x06, + 0x23, 0x54, 0xc3, 0x94, 0xb9, 0xaf, 0xe3, 0xbd, 0xd2, 0x36, 0xbf, 0x5c, 0xc8, 0xe9, 0x9b, 0x94, + 0x90, 0x4c, 0x6f, 0x60, 0xe4, 0x21, 0x6c, 0xd0, 0x89, 0x1a, 0xa2, 0x50, 0x0e, 0xf7, 0xeb, 0xa6, + 0x82, 0x02, 0x4a, 0x76, 0x61, 0x8b, 0x4a, 0x89, 0xd9, 0x62, 0x09, 0xd6, 0xb6, 0xcd, 0x39, 0xee, + 0x28, 0x9f, 0xc0, 0x1b, 0x11, 0x1d, 0xd3, 0x13, 0x9e, 0x70, 0x95, 0x0f, 0xb8, 0x98, 0xa6, 0x8e, + 0xd9, 0xfa, 0xb8, 0x7d, 0xf5, 0xf2, 0x68, 0xfe, 0xae, 0x90, 0xc4, 0x30, 0xc1, 0xd8, 0x26, 0x35, + 0x8a, 0x49, 0x87, 0xf3, 0x77, 0xe4, 0x01, 0xac, 0x9f, 0x61, 0x3e, 0xa0, 0x71, 0x86, 0x38, 0x42, + 0xa1, 0xfc, 0x15, 0x13, 0xbc, 0x76, 0x86, 0xf9, 0xfe, 0x0c, 0x23, 0x1d, 0x58, 0xa7, 0x89, 0x4c, + 0x07, 0x67, 0x22, 0xfd, 0x4e, 0x0c, 0xa8, 0xf4, 0x9b, 0x26, 0x68, 0x55, 0x83, 0x9f, 0x6a, 0x6c, + 0x5f, 0x92, 0x67, 0xd0, 0x90, 0x98, 0x4d, 0x79, 0x84, 0x3e, 0x18, 0x5f, 0x1f, 0x94, 0xfa, 0x7a, + 0xc8, 0xd9, 0xb1, 0x0d, 0x0d, 0x67, 0x39, 0x7a, 0xce, 0x74, 0xc3, 0xf0, 0x5c, 0xf9, 0xab, 0x86, + 0x7c, 0xb6, 0xec, 0x3c, 0x84, 0xed, 0xc5, 0xe6, 0x97, 0x4e, 0xc9, 0x8f, 0x75, 0x33, 0x25, 0x5f, + 0x8c, 0xd9, 0xff, 0x53, 0xf2, 0x9f, 0x9b, 0x12, 0x7d, 0x1a, 0xb9, 0x83, 0x49, 0xdf, 0x00, 0x6b, + 0xa6, 0xe9, 0x4d, 0x87, 0x1c, 0x31, 0x37, 0x44, 0xf3, 0xd9, 0x28, 0x1b, 0xa2, 0xbd, 0x9f, 0x6b, + 0x50, 0xeb, 0xcb, 0x98, 0x24, 0xb0, 0x7e, 0xfd, 0xc2, 0xe9, 0xde, 0xf5, 0x0e, 0x6d, 0x3d, 0xfe, + 0xbb, 0xc8, 0xbf, 0x3e, 0xc0, 0xbf, 0x85, 0xb5, 0x6b, 0x87, 0xf5, 0xdd, 0xc5, 0xde, 0xbf, 0x5d, + 0xac, 0x70, 0xb8, 0x32, 0x68, 0x5e, 0x1d, 0xa4, 0x77, 0x17, 0x7a, 0x74, 0xbb, 0xd0, 0xa2, 0xaf, + 0x0c, 0x9a, 0x57, 0x1f, 0xe2, 0xbf, 0xa4, 0x72, 0xa3, 0x7b, 0xcf, 0x0f, 0x7e, 0xb9, 0x68, 0x57, + 0x5f, 0x5f, 0xb4, 0xab, 0xbf, 0x5d, 0xb4, 0xab, 0x3f, 0x5c, 0xb6, 0x2b, 0xaf, 0x2f, 0xdb, 0x95, + 0x5f, 0x2f, 0xdb, 0x95, 0xaf, 0x77, 0x63, 0xae, 0x86, 0x93, 0x93, 0x20, 0x4a, 0x47, 0x3d, 0xf7, + 0xe3, 0x4d, 0xff, 0x7d, 0xa4, 0x19, 0x7b, 0xe7, 0x0e, 0xd2, 0x97, 0x9e, 0x3c, 0x59, 0x36, 0x77, + 0xf3, 0x93, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xef, 0xea, 0x9d, 0xf9, 0x3a, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1096,10 +1104,10 @@ func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } } - if len(m.SignatureType) > 0 { - i -= len(m.SignatureType) - copy(dAtA[i:], m.SignatureType) - i = encodeVarintTx(dAtA, i, uint64(len(m.SignatureType))) + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintTx(dAtA, i, uint64(len(m.Type))) i-- dAtA[i] = 0x22 } @@ -1478,6 +1486,13 @@ func (m *MsgUpdateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.VersionId) > 0 { + i -= len(m.VersionId) + copy(dAtA[i:], m.VersionId) + i = encodeVarintTx(dAtA, i, uint64(len(m.VersionId))) + i-- + dAtA[i] = 0x62 + } if len(m.Context) > 0 { for iNdEx := len(m.Context) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.Context[iNdEx]) @@ -1676,7 +1691,7 @@ func (m *MsgCreateCredDef) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.SignatureType) + l = len(m.Type) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -1935,6 +1950,10 @@ func (m *MsgUpdateDid) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } + l = len(m.VersionId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -2424,7 +2443,7 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SignatureType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2452,7 +2471,7 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SignatureType = string(dAtA[iNdEx:postIndex]) + m.Type = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: if wireType != 2 { @@ -3856,6 +3875,38 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { } m.Context = append(m.Context, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VersionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VersionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) From 119f8d80ce785623940a5ec15bc3932d89c4ff61 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 14:08:18 +0300 Subject: [PATCH 36/74] removed magic const --- x/cheqd/keeper/msg_server_cred_def.go | 2 +- x/cheqd/keeper/msg_server_schema.go | 2 +- x/cheqd/types/messages_cred_def.go | 9 ++++++--- x/cheqd/types/messages_schema.go | 9 ++++++--- x/cheqd/utils/did.go | 22 ++++++++++++++++++++++ 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index f9259fe0c..74e645591 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -24,7 +24,7 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque } // Checks that the element exists - if err := k.HasDidDoc(ctx, credDefMsg.Id[:len(credDefMsg.Id)-8]); err != nil { + if err := k.HasDidDoc(ctx, credDefMsg.GetDid()); err != nil { return nil, err } diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 60d63b838..8acd35a2b 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -24,7 +24,7 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteReques } // Checks that the element exists - if err := k.HasDidDoc(ctx, schemaMsg.Id[:len(schemaMsg.Id)-7]); err != nil { + if err := k.HasDidDoc(ctx, schemaMsg.GetDid()); err != nil { return nil, err } diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index 229d89e29..53706cdb9 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -2,7 +2,6 @@ package types import ( "github.com/cheqd/cheqd-node/x/cheqd/utils" - "strings" ) var _ IdentityMsg = &MsgCreateCredDef{} @@ -30,12 +29,16 @@ func (msg *MsgCreateCredDef) GetSigners() []Signer { return result } +func (msg *MsgCreateCredDef) GetDid() string { + return utils.GetDidFromCredDef(msg.Id) +} + func (msg *MsgCreateCredDef) ValidateBasic() error { - if !strings.HasSuffix(msg.Id, "/credDef") { + if !utils.IsCredDef(msg.Id) { return ErrBadRequest.Wrap("Id must end with resource type '/credDef'") } - if utils.IsNotDid(msg.Id[:len(msg.Id)-8]) { + if utils.IsNotDid(msg.GetDid()) { return ErrBadRequestIsNotDid.Wrap("Id") } diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index 536edb306..6ac0ceaad 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -2,7 +2,6 @@ package types import ( "github.com/cheqd/cheqd-node/x/cheqd/utils" - "strings" ) var _ IdentityMsg = &MsgCreateSchema{} @@ -30,12 +29,16 @@ func (msg *MsgCreateSchema) GetSigners() []Signer { return result } +func (msg *MsgCreateSchema) GetDid() string { + return utils.GetDidFromSchema(msg.Id) +} + func (msg *MsgCreateSchema) ValidateBasic() error { - if !strings.HasSuffix(msg.Id, "/schema") { + if !utils.IsSchema(msg.Id) { return ErrBadRequest.Wrap("Id must end with resource type '/schema'") } - if utils.IsNotDid(msg.Id[:len(msg.Id)-7]) { + if utils.IsNotDid(msg.GetDid()) { return ErrBadRequestIsNotDid.Wrap("Id") } diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go index 84686c526..277289aa9 100644 --- a/x/cheqd/utils/did.go +++ b/x/cheqd/utils/did.go @@ -27,6 +27,12 @@ var ServiceType = []string{ "DIDCommMessaging", } +var CredDefSuffix = "/credDef" +var CredDefSuffixLen = len(CredDefSuffix) + +var SchemaSuffix = "/schema" +var SchemaSuffixLen = len(SchemaSuffix) + func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { fragments := strings.Split(didUrl, "#") return fragments[0], fragments[1] @@ -126,3 +132,19 @@ func IsDid(did string) bool { return true } + +func IsSchema(did string) bool { + return !strings.HasSuffix(did, SchemaSuffix) +} + +func GetDidFromSchema(schema string) string { + return schema[:len(schema)-SchemaSuffixLen] +} + +func IsCredDef(did string) bool { + return !strings.HasSuffix(did, CredDefSuffix) +} + +func GetDidFromCredDef(credDef string) string { + return credDef[:len(credDef)-CredDefSuffixLen] +} From c1cb235e33636d8303fa0c471cfad8f99a008925 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 14:35:37 +0300 Subject: [PATCH 37/74] fixed lint errors --- x/cheqd/keeper/did.go | 6 ---- x/cheqd/keeper/verify.go | 3 +- x/cheqd/tests/handler_test.go | 29 +++++++++---------- x/cheqd/tests/handler_test_setup.go | 30 +++++++++----------- x/cheqd/tests/signature_verification_test.go | 19 ------------- x/cheqd/utils/did.go | 4 +-- 6 files changed, 30 insertions(+), 61 deletions(-) diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index 453fb9d5a..e754f84af 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -137,12 +137,6 @@ func (k Keeper) GetDid(ctx *sdk.Context, id string) (*types.StateValue, error) { return &value, nil } -// areOwners returns a bool are received authors can control this DID -func (k Keeper) areDidOwners(ctx sdk.Context, id string, authors []string) bool { - //return utils.CompareOwners(authors, k.GetDid(ctx, id).Controller) - return true -} - // HasDid checks if the did exists in the store func (k Keeper) HasDid(ctx sdk.Context, id string) bool { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index 367bbca67..cd3e50307 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -3,7 +3,6 @@ package keeper import ( "crypto/ed25519" "encoding/base64" - "errors" "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cheqd/cheqd-node/x/cheqd/utils" @@ -68,7 +67,7 @@ func VerifyIdentitySignature(signer types.Signer, signatures map[string]string, } if !foundOne { - return false, errors.New(fmt.Sprintf("signature %s not found", signer.Signer)) + return false, fmt.Errorf("signature %s not found", signer.Signer) } return result, nil diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 24a2502b9..cdc20dcb2 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -17,7 +17,8 @@ func TestHandler_CreateDid(t *testing.T) { _, did, _ := setup.InitDid("did:cheqd:test:alice") // query Did - receivedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) + state, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) + receivedDid := state.GetDid() // check require.Equal(t, did.Id, receivedDid.Id) @@ -40,19 +41,14 @@ func TestHandler_UpdateDid(t *testing.T) { keys, did, _ := setup.InitDid("did:cheqd:test:alice") // query Did - receivedDid, didMetadata, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) + state, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) //Init priv key newPubKey, _, _ := ed25519.GenerateKey(rand.Reader) - // add new Did - metadata := map[string]string{ - "versionId": didMetadata.VersionId, - } - - didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) + didMsgUpdate := setup.UpdateDid(state.GetDid(), newPubKey) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys, metadata)) + resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys, map[string]string{})) didUpdated := types.MsgUpdateDidResponse{} errUpdate := didUpdated.Unmarshal(resultUpdate.Data) @@ -62,7 +58,8 @@ func TestHandler_UpdateDid(t *testing.T) { } // query Did - receivedUpdatedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) + updatedState, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) + receivedUpdatedDid := updatedState.GetDid() // check require.Equal(t, didUpdated.Id, receivedUpdatedDid.Id) @@ -75,7 +72,7 @@ func TestHandler_UpdateDid(t *testing.T) { require.Equal(t, didMsgUpdate.KeyAgreement, receivedUpdatedDid.KeyAgreement) require.Equal(t, didMsgUpdate.AlsoKnownAs, receivedUpdatedDid.AlsoKnownAs) require.Equal(t, didMsgUpdate.Service, receivedUpdatedDid.Service) - require.NotEqual(t, receivedDid.VerificationMethod, receivedUpdatedDid.VerificationMethod) + require.NotEqual(t, state.GetDid().VerificationMethod, receivedUpdatedDid.VerificationMethod) } func TestHandler_CreateSchema(t *testing.T) { @@ -95,7 +92,8 @@ func TestHandler_CreateSchema(t *testing.T) { } // query Did - receivedSchema, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) + state, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) + receivedSchema := state.GetSchema() require.Equal(t, schema.Id, receivedSchema.Id) require.Equal(t, msg.Type, receivedSchema.Type) @@ -121,8 +119,9 @@ func TestHandler_CreateCredDef(t *testing.T) { log.Fatal(err) } - // query Cred Def - receivedCredDef, _ := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) + // query Did + state, _ := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) + receivedCredDef := state.GetCredDef() expectedValue := msg.Value.(*types.MsgCreateCredDef_ClType) actualValue := receivedCredDef.Value.(*types.CredDef_ClType) @@ -131,7 +130,7 @@ func TestHandler_CreateCredDef(t *testing.T) { require.Equal(t, expectedValue.ClType, actualValue.ClType) require.Equal(t, msg.SchemaId, receivedCredDef.SchemaId) require.Equal(t, msg.Tag, receivedCredDef.Tag) - require.Equal(t, msg.SignatureType, receivedCredDef.SignatureType) + require.Equal(t, msg.Type, receivedCredDef.Type) require.Equal(t, msg.Controller, receivedCredDef.Controller) } diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index 04100016d..0d3452b85 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -160,12 +160,12 @@ func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { } return &types.MsgCreateCredDef{ - Id: "did:cheqd:test:cred-def-1/credDef", - SchemaId: "schema-1", - Tag: "tag", - SignatureType: "CL-Sig-Cred_def", - Value: &Value, - Controller: []string{"did:cheqd:test:alice"}, + Id: "did:cheqd:test:cred-def-1/credDef", + SchemaId: "schema-1", + Tag: "tag", + Type: "CL-Sig-Cred_def", + Value: &Value, + Controller: []string{"did:cheqd:test:alice"}, } } @@ -221,20 +221,16 @@ func (s *TestSetup) SendUpdateDid(msg *types.MsgUpdateDid, keys map[string]ed255 } // query Did - _, didMetadata, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + state, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + msg.VersionId = state.Metadata.VersionId - // add new Did - metadata := map[string]string{ - "versionId": didMetadata.VersionId, - } - - _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys, metadata)) + _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys, map[string]string{})) if err != nil { return nil, err } - did, _, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) - return did, nil + did, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + return did.GetDid(), nil } func (s *TestSetup) SendCreateDid(msg *types.MsgCreateDid, keys map[string]ed25519.PrivateKey) (*types.Did, error) { @@ -248,8 +244,8 @@ func (s *TestSetup) SendCreateDid(msg *types.MsgCreateDid, keys map[string]ed255 return nil, err } - did, _, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) - return did, nil + state, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + return state.GetDid(), nil } func ConcatKeys(dst map[string]ed25519.PrivateKey, src map[string]ed25519.PrivateKey) map[string]ed25519.PrivateKey { diff --git a/x/cheqd/tests/signature_verification_test.go b/x/cheqd/tests/signature_verification_test.go index 391823a84..fd453da77 100644 --- a/x/cheqd/tests/signature_verification_test.go +++ b/x/cheqd/tests/signature_verification_test.go @@ -127,22 +127,3 @@ func TestDIDDocVerificationMethodDeleted(t *testing.T) { require.NotEqual(t, len(aliceDid.VerificationMethod), len(receivedDid.VerificationMethod)) require.True(t, reflect.DeepEqual(aliceDid.VerificationMethod[0], receivedDid.VerificationMethod[0])) } - -/*func TestHandler_UpdateDidInvalidSignature(t *testing.T) { - setup := Setup() - - _, did, _ := setup.InitDid("did:cheqd:test:alice") - - // query Did - receivedDid, _, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) - - //Init priv key - newPubKey, newPrivKey, _ := ed25519.GenerateKey(rand.Reader) - - // add new Did - didMsgUpdate := setup.UpdateDid(receivedDid, newPubKey) - dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - _, err := setup.Handler(setup.Ctx, setup.WrapRequest(newPrivKey, dataUpdate, make(map[string]string))) - require.Error(t, err) - require.Equal(t, "did:cheqd:test:alice: invalid signature detected", err.Error()) -}*/ diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go index 277289aa9..b4a96bb88 100644 --- a/x/cheqd/utils/did.go +++ b/x/cheqd/utils/did.go @@ -6,7 +6,7 @@ import ( "strings" ) -var DidForbiddenSymbolsRegexp, _ = regexp.Compile("^[^#?&/\\\\]+$") +var DidForbiddenSymbolsRegexp, _ = regexp.Compile(`^[^#?&/\\]+$`) var VerificationMethodType = []string{ "JsonWebKey2020", @@ -100,7 +100,7 @@ func ArrayContainsNotDidFragment(array []string) (bool, int) { } func IsNotDid(did string) bool { - return IsDid(did) == false + return !IsDid(did) } func IsDid(did string) bool { From fba051fc0c16050b38c61699ab63d3dfc39c5a9b Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 14:44:42 +0300 Subject: [PATCH 38/74] fixed unit test --- x/cheqd/types/msg_test.go | 2 +- x/cheqd/utils/did.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index 564e36b36..e2a9b91d4 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -98,7 +98,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { "ss", []string{"did:cheqd:test:alice"}, &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "ss is not allowed signature type: bad request", + "ss is not allowed type: bad request", }, { false, diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go index b4a96bb88..ba453053e 100644 --- a/x/cheqd/utils/did.go +++ b/x/cheqd/utils/did.go @@ -134,7 +134,7 @@ func IsDid(did string) bool { } func IsSchema(did string) bool { - return !strings.HasSuffix(did, SchemaSuffix) + return strings.HasSuffix(did, SchemaSuffix) } func GetDidFromSchema(schema string) string { @@ -142,7 +142,7 @@ func GetDidFromSchema(schema string) string { } func IsCredDef(did string) bool { - return !strings.HasSuffix(did, CredDefSuffix) + return strings.HasSuffix(did, CredDefSuffix) } func GetDidFromCredDef(credDef string) string { From 5fe68d1e7db830cc312e56334e0b31d7ecb135af Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 14:53:53 +0300 Subject: [PATCH 39/74] removed unused function --- x/cheqd/utils/strings/array.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/x/cheqd/utils/strings/array.go b/x/cheqd/utils/strings/array.go index 1dfeda166..d9b4b4781 100644 --- a/x/cheqd/utils/strings/array.go +++ b/x/cheqd/utils/strings/array.go @@ -29,7 +29,3 @@ func Complement(vs []string, ts []string) []string { return !Include(ts, s) }) } - -func E() { - -} From 6ec07226948030c0b2ccef7368b80755dd88109b Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 15:28:31 +0300 Subject: [PATCH 40/74] fixed did tests --- x/cheqd/tests/handler_test.go | 11 +++++++---- x/cheqd/tests/handler_test_setup.go | 20 +++++++++++--------- x/cheqd/tests/signature_verification_test.go | 9 ++++++++- x/cheqd/utils/did.go | 1 + 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index cdc20dcb2..28cdd410f 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -46,9 +46,12 @@ func TestHandler_UpdateDid(t *testing.T) { //Init priv key newPubKey, _, _ := ed25519.GenerateKey(rand.Reader) - didMsgUpdate := setup.UpdateDid(state.GetDid(), newPubKey) + didMsgUpdate := setup.UpdateDid(state.GetDid(), newPubKey, state.Metadata.VersionId) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys, map[string]string{})) + resultUpdate, err := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys, map[string]string{})) + if err != nil { + + } didUpdated := types.MsgUpdateDidResponse{} errUpdate := didUpdated.Unmarshal(resultUpdate.Data) @@ -149,7 +152,7 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) require.Error(t, err) - require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1/credDef: DID Doc exists", err.Error()) + require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) schemaMsg := setup.CreateSchema() data, _ = ptypes.NewAnyWithValue(schemaMsg) @@ -157,5 +160,5 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) require.Error(t, err) - require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1/schema: DID Doc exists", err.Error()) + require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) } diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index 0d3452b85..5403e68da 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -80,8 +80,8 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey, did string) *types.MsgCr } Service := types.DidService{ - Id: "1", - Type: "type", + Id: "#service-2", + Type: "DIDCommMessaging", ServiceEndpoint: "endpoint", } @@ -90,17 +90,17 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey, did string) *types.MsgCr Controller: nil, VerificationMethod: []*types.VerificationMethod{&VerificationMethod}, Authentication: []string{did + "#key-1"}, - AssertionMethod: []string{"AssertionMethod"}, - CapabilityInvocation: []string{"CapabilityInvocation"}, - CapabilityDelegation: []string{"CapabilityDelegation"}, - KeyAgreement: []string{"KeyAgreement"}, - AlsoKnownAs: []string{"AlsoKnownAs"}, + AssertionMethod: []string{did + "#key-1"}, + CapabilityInvocation: []string{did + "#key-1"}, + CapabilityDelegation: []string{did + "#key-1"}, + KeyAgreement: []string{did + "#key-1"}, + AlsoKnownAs: []string{did + "#key-1"}, Context: []string{"Context"}, Service: []*types.DidService{&Service}, } } -func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey) *types.MsgUpdateDid { +func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey, versionId string) *types.MsgUpdateDid { PublicKeyMultibase := "z" + base58.Encode(pubKey) VerificationMethod := types.VerificationMethod{ @@ -114,13 +114,15 @@ func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey) *types.M Id: did.Id, Controller: did.Controller, VerificationMethod: []*types.VerificationMethod{did.VerificationMethod[0], &VerificationMethod}, - Authentication: did.Authentication, + Authentication: append(did.Authentication, "#key-2"), AssertionMethod: did.AssertionMethod, CapabilityInvocation: did.CapabilityInvocation, CapabilityDelegation: did.CapabilityDelegation, KeyAgreement: did.KeyAgreement, AlsoKnownAs: did.AlsoKnownAs, Service: did.Service, + VersionId: versionId, + Context: did.Context, } } diff --git a/x/cheqd/tests/signature_verification_test.go b/x/cheqd/tests/signature_verification_test.go index fd453da77..af130a4fc 100644 --- a/x/cheqd/tests/signature_verification_test.go +++ b/x/cheqd/tests/signature_verification_test.go @@ -34,7 +34,7 @@ func TestDIDDocVerificationMethodChangedWithoutOldSignature(t *testing.T) { bobKeys, _, _ := setup.InitDid("did:cheqd:test:bob") updatedDidDoc := setup.CreateToUpdateDid(aliceDid) - updatedDidDoc.VerificationMethod[0].Type = "new" + updatedDidDoc.VerificationMethod[0].Type = "SchnorrSecp256k1VerificationKey2019" _, err := setup.SendUpdateDid(updatedDidDoc, bobKeys) // check @@ -86,14 +86,18 @@ func TestDIDDocVerificationMethodDeletedWithoutOldSignature(t *testing.T) { aliceDid.VerificationMethod = append(aliceDid.VerificationMethod, &types.VerificationMethod{ Id: "did:cheqd:test:alice#key-2", Controller: "did:cheqd:test:bob", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: bodDidDoc.VerificationMethod[0].PublicKeyMultibase, }) + aliceDid.Authentication = append(aliceDid.Authentication, "did:cheqd:test:alice#key-2") + aliceKeys := map[string]ed25519.PrivateKey{"did:cheqd:test:alice#key-1": privKey} _, _ = setup.SendCreateDid(aliceDid, aliceKeys) updatedDidDoc := setup.CreateToUpdateDid(aliceDid) updatedDidDoc.VerificationMethod = []*types.VerificationMethod{aliceDid.VerificationMethod[0]} + updatedDidDoc.Authentication = []string{aliceDid.Authentication[0]} _, err := setup.SendUpdateDid(updatedDidDoc, aliceKeys) // check @@ -110,9 +114,11 @@ func TestDIDDocVerificationMethodDeleted(t *testing.T) { pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) aliceDid := setup.CreateDid(pubKey, "did:cheqd:test:alice") + aliceDid.Authentication = append(aliceDid.Authentication, "did:cheqd:test:alice#key-2") aliceDid.VerificationMethod = append(aliceDid.VerificationMethod, &types.VerificationMethod{ Id: "did:cheqd:test:alice#key-2", Controller: "did:cheqd:test:bob", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: bodDidDoc.VerificationMethod[0].PublicKeyMultibase, }) @@ -120,6 +126,7 @@ func TestDIDDocVerificationMethodDeleted(t *testing.T) { _, _ = setup.SendCreateDid(aliceDid, aliceKeys) updatedDidDoc := setup.CreateToUpdateDid(aliceDid) + updatedDidDoc.Authentication = []string{aliceDid.Authentication[0]} updatedDidDoc.VerificationMethod = []*types.VerificationMethod{aliceDid.VerificationMethod[0]} receivedDid, _ := setup.SendUpdateDid(updatedDidDoc, ConcatKeys(aliceKeys, bobKeys)) diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go index ba453053e..9b3d91f09 100644 --- a/x/cheqd/utils/did.go +++ b/x/cheqd/utils/did.go @@ -12,6 +12,7 @@ var VerificationMethodType = []string{ "JsonWebKey2020", "EcdsaSecp256k1VerificationKey2019", "Ed25519VerificationKey2018", + "Ed25519VerificationKey2020", "Bls12381G1Key2020", "Bls12381G2Key2020", "PgpVerificationKey2021", From 2dc6c803a58de86e9a0ce25eaf488a5c89ac44fa Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 15:32:44 +0300 Subject: [PATCH 41/74] fixed go lint --- x/cheqd/tests/handler_test.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 28cdd410f..44a34bba3 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -48,10 +48,7 @@ func TestHandler_UpdateDid(t *testing.T) { didMsgUpdate := setup.UpdateDid(state.GetDid(), newPubKey, state.Metadata.VersionId) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - resultUpdate, err := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys, map[string]string{})) - if err != nil { - - } + resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys, map[string]string{})) didUpdated := types.MsgUpdateDidResponse{} errUpdate := didUpdated.Unmarshal(resultUpdate.Data) From 958e49a61d26fbb9441de7340b5850e9bc0d33b3 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 16:07:24 +0300 Subject: [PATCH 42/74] fixed build --- x/cheqd/types/codec.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/x/cheqd/types/codec.go b/x/cheqd/types/codec.go index b034b76da..55d543b6d 100644 --- a/x/cheqd/types/codec.go +++ b/x/cheqd/types/codec.go @@ -21,14 +21,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) { func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { // this line is used by starport scaffolding # 3 registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgCreateCredDef{}, - ) - registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgCreateSchema{}, - ) - registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgCreateDid{}, - &MsgUpdateDid{}, + &MsgWriteRequest{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } From 3220750d10c5604f10296338d9e85a4ae14f9335 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Tue, 19 Oct 2021 16:20:40 +0300 Subject: [PATCH 43/74] added MaxAttrNamesCount constant --- x/cheqd/types/messages_schema.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index 6ac0ceaad..bfd99b23f 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -5,6 +5,7 @@ import ( ) var _ IdentityMsg = &MsgCreateSchema{} +var MaxAttrNamesCount = 125 func NewMsgCreateSchema(id string, typeSchema string, name string, version string, attrNames []string, controller []string) *MsgCreateSchema { return &MsgCreateSchema{ @@ -54,7 +55,7 @@ func (msg *MsgCreateSchema) ValidateBasic() error { return ErrBadRequestIsRequired.Wrap("AttrNames") } - if len(msg.AttrNames) > 125 { + if len(msg.AttrNames) > MaxAttrNamesCount { return ErrBadRequest.Wrapf("AttrNames: Expected max length 125, got: %d", len(msg.AttrNames)) } From 4592fdb1795d826a5e6dfff789e2c105254210d7 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 20 Oct 2021 14:50:05 +0300 Subject: [PATCH 44/74] add namespace to ValidateBasic --- proto/cheqd/query.proto | 2 + x/cheqd/keeper/grpc_query_did.go | 2 +- x/cheqd/keeper/msg_server_cred_def.go | 5 +- x/cheqd/keeper/msg_server_did.go | 10 ++- x/cheqd/keeper/msg_server_schema.go | 4 +- x/cheqd/tests/handler_test.go | 4 +- x/cheqd/tests/handler_test_setup.go | 8 +- x/cheqd/types/identity_msg.go | 2 +- x/cheqd/types/keys.go | 3 + x/cheqd/types/messages_cred_def.go | 8 +- x/cheqd/types/messages_did.go | 52 +++++------ x/cheqd/types/messages_schema.go | 8 +- x/cheqd/types/msg_test.go | 70 ++++++++------- x/cheqd/types/query.pb.go | 124 +++++++++++++++++++------- x/cheqd/utils/constant.go | 4 - x/cheqd/utils/cred_def.go | 13 ++- x/cheqd/utils/did.go | 93 +++---------------- x/cheqd/utils/did_doc.go | 31 +++++++ x/cheqd/utils/did_test.go | 2 +- x/cheqd/utils/schema.go | 11 +++ 20 files changed, 255 insertions(+), 201 deletions(-) delete mode 100644 x/cheqd/utils/constant.go create mode 100644 x/cheqd/utils/did_doc.go diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index 9ffae43e7..76f6eeae2 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -7,6 +7,7 @@ import "cosmos/base/query/v1beta1/pagination.proto"; import "cheqd/credDef.proto"; import "cheqd/schema.proto"; import "cheqd/did.proto"; +import "cheqd/stateValue.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; @@ -49,4 +50,5 @@ message QueryGetDidRequest { message QueryGetDidResponse { Did did = 1; + Metadata metadata = 2; } \ No newline at end of file diff --git a/x/cheqd/keeper/grpc_query_did.go b/x/cheqd/keeper/grpc_query_did.go index 050d87b0b..a97cdb226 100644 --- a/x/cheqd/keeper/grpc_query_did.go +++ b/x/cheqd/keeper/grpc_query_did.go @@ -26,5 +26,5 @@ func (k Keeper) Did(c context.Context, req *types.QueryGetDidRequest) (*types.Qu return nil, err } - return &types.QueryGetDidResponse{Did: state.GetDid()}, nil + return &types.QueryGetDidResponse{Did: state.GetDid(), Metadata: state.Metadata}, nil } diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 74e645591..2757c0d13 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -9,13 +9,14 @@ import ( func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateCredDefResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - credDefMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateCredDef) + prefix := types.DidPrefix + ctx.ChainID() + ":" + credDefMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateCredDef) if !isMsgIdentity { return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } - if err := credDefMsg.ValidateBasic(); err != nil { + if err := credDefMsg.ValidateBasic(prefix); err != nil { return nil, err } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 6d2c0edce..f530e7318 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -13,13 +13,14 @@ import ( func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateDidResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateDid) + prefix := types.DidPrefix + ctx.ChainID() + ":" + didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateDid) if !isMsgIdentity { return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } - if err := didMsg.ValidateBasic(); err != nil { + if err := didMsg.ValidateBasic(prefix); err != nil { return nil, err } @@ -54,13 +55,14 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgUpdateDidResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgUpdateDid) + prefix := types.DidPrefix + ctx.ChainID() + ":" + didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgUpdateDid) if !isMsgIdentity { return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } - if err := didMsg.ValidateBasic(); err != nil { + if err := didMsg.ValidateBasic(prefix); err != nil { return nil, err } diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 8acd35a2b..c0bbf2b30 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -9,13 +9,15 @@ import ( func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateSchemaResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) + prefix := types.DidPrefix + ctx.ChainID() + ":" + schemaMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateSchema) if !isMsgIdentity { return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } - if err := schemaMsg.ValidateBasic(); err != nil { + if err := schemaMsg.ValidateBasic(prefix); err != nil { return nil, err } diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 44a34bba3..fbfbc6ae5 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -82,10 +82,10 @@ func TestHandler_CreateSchema(t *testing.T) { msg := setup.CreateSchema() data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) + result, err := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) schema := types.MsgCreateSchemaResponse{} - err := schema.Unmarshal(result.Data) + err = schema.Unmarshal(result.Data) if err != nil { log.Fatal(err) diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index 5403e68da..3928ad7bc 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -54,7 +54,7 @@ func Setup() TestSetup { // Create context blockTime, _ := time.Parse(time.RFC3339, "2021-01-01T00:00:00.000Z") ctx := sdk.NewContext(dbStore, - tmproto.Header{ChainID: "cheqd-node", Time: blockTime}, + tmproto.Header{ChainID: "test", Time: blockTime}, false, log.NewNopLogger()).WithTxBytes(txBytes) handler := cheqd.NewHandler(*newKeeper) @@ -144,7 +144,7 @@ func (s *TestSetup) CreateToUpdateDid(did *types.MsgCreateDid) *types.MsgUpdateD func (s *TestSetup) CreateSchema() *types.MsgCreateSchema { return &types.MsgCreateSchema{ - Id: "did:cheqd:test:schema-1/schema", + Id: "did:cheqd:test:schema-1?service=CL-Schema", Type: "CL-Schema", Name: "name", Version: "version", @@ -162,10 +162,10 @@ func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { } return &types.MsgCreateCredDef{ - Id: "did:cheqd:test:cred-def-1/credDef", + Id: "did:cheqd:test:cred-def-1?service=CL-CredDef", SchemaId: "schema-1", Tag: "tag", - Type: "CL-Sig-Cred_def", + Type: "CL-CredDef", Value: &Value, Controller: []string{"did:cheqd:test:alice"}, } diff --git a/x/cheqd/types/identity_msg.go b/x/cheqd/types/identity_msg.go index 14d29f2ab..a5734d85e 100644 --- a/x/cheqd/types/identity_msg.go +++ b/x/cheqd/types/identity_msg.go @@ -2,7 +2,7 @@ package types type ( IdentityMsg interface { - ValidateBasic() error + ValidateBasic(namespace string) error GetSigners() []Signer } diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index 63b3f9470..b6633bcc4 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -15,6 +15,9 @@ const ( // MemStoreKey defines the in-memory store key MemStoreKey = "mem_capability" + + // DidPrefix defines did prefix + DidPrefix = "did:" + ModuleName + ":" ) func KeyPrefix(p string) []byte { diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index 53706cdb9..d26ccf587 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -33,12 +33,12 @@ func (msg *MsgCreateCredDef) GetDid() string { return utils.GetDidFromCredDef(msg.Id) } -func (msg *MsgCreateCredDef) ValidateBasic() error { +func (msg *MsgCreateCredDef) ValidateBasic(namespace string) error { if !utils.IsCredDef(msg.Id) { - return ErrBadRequest.Wrap("Id must end with resource type '/credDef'") + return ErrBadRequest.Wrap("Id must end with resource type '?service=CL-CredDef'") } - if utils.IsNotDid(msg.GetDid()) { + if utils.IsNotDid(namespace, msg.GetDid()) { return ErrBadRequestIsNotDid.Wrap("Id") } @@ -62,7 +62,7 @@ func (msg *MsgCreateCredDef) ValidateBasic() error { return ErrBadRequestIsRequired.Wrap("Controller") } - if notValid, i := utils.ArrayContainsNotDid(msg.Controller); notValid { + if notValid, i := utils.ArrayContainsNotDid(namespace, msg.Controller); notValid { return ErrBadRequestIsNotDid.Wrapf("Controller item %s", msg.Controller[i]) } diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 11c899f1d..88a628c3e 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -69,36 +69,36 @@ func (msg *MsgCreateDid) GetSigners() []Signer { return []Signer{} } -func (msg *MsgCreateDid) ValidateBasic() error { - if utils.IsNotDid(msg.Id) { +func (msg *MsgCreateDid) ValidateBasic(namespace string) error { + if utils.IsNotDid(namespace, msg.Id) { return ErrBadRequestIsNotDid.Wrap("Id") } - if notValid, i := utils.ArrayContainsNotDid(msg.Controller); notValid { + if notValid, i := utils.ArrayContainsNotDid(namespace, msg.Controller); notValid { return ErrBadRequestIsNotDid.Wrapf("Controller item %s at position %d", msg.Controller[i], i) } - if err := ValidateVerificationMethods(msg.Id, msg.VerificationMethod); err != nil { + if err := ValidateVerificationMethods(namespace, msg.Id, msg.VerificationMethod); err != nil { return err } - if err := ValidateServices(msg.Id, msg.Service); err != nil { + if err := ValidateServices(namespace, msg.Id, msg.Service); err != nil { return err } - if notValid, i := utils.ArrayContainsNotDidFragment(msg.Authentication); notValid { + if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.Authentication); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("Authentication item %s", msg.Authentication[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(msg.CapabilityInvocation); notValid { + if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.CapabilityInvocation); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityInvocation item %s", msg.CapabilityInvocation[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(msg.CapabilityDelegation); notValid { + if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.CapabilityDelegation); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityDelegation item %s", msg.CapabilityDelegation[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(msg.KeyAgreement); notValid { + if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.KeyAgreement); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("KeyAgreement item %s", msg.KeyAgreement[i]) } @@ -197,36 +197,36 @@ func (msg *MsgUpdateDid) GetSigners() []Signer { return []Signer{} } -func (msg *MsgUpdateDid) ValidateBasic() error { - if utils.IsNotDid(msg.Id) { +func (msg *MsgUpdateDid) ValidateBasic(namespace string) error { + if utils.IsNotDid(namespace, msg.Id) { return ErrBadRequestIsNotDid.Wrap("Id") } - if notValid, i := utils.ArrayContainsNotDid(msg.Controller); notValid { + if notValid, i := utils.ArrayContainsNotDid(namespace, msg.Controller); notValid { return ErrBadRequestIsNotDid.Wrapf("Controller item %s at position %d", msg.Controller[i], i) } - if err := ValidateVerificationMethods(msg.Id, msg.VerificationMethod); err != nil { + if err := ValidateVerificationMethods(namespace, msg.Id, msg.VerificationMethod); err != nil { return err } - if err := ValidateServices(msg.Id, msg.Service); err != nil { + if err := ValidateServices(namespace, msg.Id, msg.Service); err != nil { return err } - if notValid, i := utils.ArrayContainsNotDidFragment(msg.Authentication); notValid { + if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.Authentication); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("Authentication item %s", msg.Authentication[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(msg.CapabilityInvocation); notValid { + if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.CapabilityInvocation); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityInvocation item %s", msg.CapabilityInvocation[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(msg.CapabilityDelegation); notValid { + if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.CapabilityDelegation); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityDelegation item %s", msg.CapabilityDelegation[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(msg.KeyAgreement); notValid { + if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.KeyAgreement); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("KeyAgreement item %s", msg.KeyAgreement[i]) } @@ -261,9 +261,9 @@ func (msg *MsgUpdateDid) ValidateBasic() error { return nil } -func ValidateVerificationMethods(did string, vms []*VerificationMethod) error { +func ValidateVerificationMethods(namespace string, did string, vms []*VerificationMethod) error { for i, vm := range vms { - if err := ValidateVerificationMethod(vm); err != nil { + if err := ValidateVerificationMethod(namespace, vm); err != nil { return ErrBadRequestInvalidVerMethod.Wrap(sdkerrors.Wrapf(err, "index %d, value %s", i, vm.Id).Error()) } } @@ -277,8 +277,8 @@ func ValidateVerificationMethods(did string, vms []*VerificationMethod) error { return nil } -func ValidateVerificationMethod(vm *VerificationMethod) error { - if !utils.IsFullDidFragment(vm.Id) { +func ValidateVerificationMethod(namespace string, vm *VerificationMethod) error { + if !utils.IsFullDidFragment(namespace, vm.Id) { return ErrBadRequestIsNotDidFragment.Wrap(vm.Id) } @@ -297,9 +297,9 @@ func ValidateVerificationMethod(vm *VerificationMethod) error { return nil } -func ValidateServices(did string, services []*DidService) error { +func ValidateServices(namespace string, did string, services []*DidService) error { for i, s := range services { - if err := ValidateService(s); err != nil { + if err := ValidateService(namespace, s); err != nil { return ErrBadRequestInvalidService.Wrap(sdkerrors.Wrapf(err, "index %d, value %s", i, s.Id).Error()) } } @@ -313,8 +313,8 @@ func ValidateServices(did string, services []*DidService) error { return nil } -func ValidateService(s *DidService) error { - if !utils.IsDidFragment(s.Id) { +func ValidateService(namespace string, s *DidService) error { + if !utils.IsDidFragment(namespace, s.Id) { return ErrBadRequestIsNotDidFragment.Wrap(s.Id) } diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index bfd99b23f..3d6c57c26 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -34,12 +34,12 @@ func (msg *MsgCreateSchema) GetDid() string { return utils.GetDidFromSchema(msg.Id) } -func (msg *MsgCreateSchema) ValidateBasic() error { +func (msg *MsgCreateSchema) ValidateBasic(namespace string) error { if !utils.IsSchema(msg.Id) { - return ErrBadRequest.Wrap("Id must end with resource type '/schema'") + return ErrBadRequest.Wrap("Id must end with resource type '?service=CL-Schema'") } - if utils.IsNotDid(msg.GetDid()) { + if utils.IsNotDid(namespace, msg.GetDid()) { return ErrBadRequestIsNotDid.Wrap("Id") } @@ -71,7 +71,7 @@ func (msg *MsgCreateSchema) ValidateBasic() error { return ErrBadRequestIsRequired.Wrap("Controller") } - if notValid, i := utils.ArrayContainsNotDid(msg.Controller); notValid { + if notValid, i := utils.ArrayContainsNotDid(namespace, msg.Controller); notValid { return ErrBadRequestIsNotDid.Wrapf("Controller item %s", msg.Controller[i]) } diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index e2a9b91d4..0efe42f68 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -6,6 +6,8 @@ import ( "testing" ) +const Prefix = "did:cheqd:test:" + func TestNewMsgCreateCredDef(t *testing.T) { cases := []struct { valid bool @@ -15,10 +17,10 @@ func TestNewMsgCreateCredDef(t *testing.T) { { true, NewMsgCreateCredDef( - "did:cheqd:test:aaaaa/credDef", + "did:cheqd:test:aaaaa?service=CL-CredDef", "schema", "", - "CL-Sig-Cred_def", + "CL-CredDef", []string{"did:cheqd:test:alice"}, &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "", @@ -26,10 +28,10 @@ func TestNewMsgCreateCredDef(t *testing.T) { { true, NewMsgCreateCredDef( - "did:cheqd:test:aaaaa/credDef", + "did:cheqd:test:aaaaa?service=CL-CredDef", "schema", "tag", - "CL-Sig-Cred_def", + "CL-CredDef", []string{"did:cheqd:test:alice"}, &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "", @@ -37,7 +39,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, NewMsgCreateCredDef( - "/credDef", + "?service=CL-CredDef", "", "", "", @@ -48,7 +50,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, NewMsgCreateCredDef( - "did:cheqd:test:alice#key-1/credDef", + "did:cheqd:test:alice#key-1?service=CL-CredDef", "", "", "", @@ -65,12 +67,12 @@ func TestNewMsgCreateCredDef(t *testing.T) { "", nil, &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "Id must end with resource type '/credDef': bad request", + "Id must end with resource type '?service=CL-CredDef': bad request", }, { false, NewMsgCreateCredDef( - "did:cheqd:test:alice/credDef", + "did:cheqd:test:alice?service=CL-CredDef", "", "", "", @@ -81,7 +83,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, NewMsgCreateCredDef( - "did:cheqd:test:alice/credDef", + "did:cheqd:test:alice?service=CL-CredDef", "schema-1", "", "", @@ -92,7 +94,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, NewMsgCreateCredDef( - "did:cheqd:test:alice/credDef", + "did:cheqd:test:alice?service=CL-CredDef", "schema-1", "", "ss", @@ -103,10 +105,10 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, NewMsgCreateCredDef( - "did:cheqd:test:alice/credDef", + "did:cheqd:test:alice?service=CL-CredDef", "schema-1", "", - "CL-Sig-Cred_def", + "CL-CredDef", nil, &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "Controller: is required", @@ -114,10 +116,10 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, NewMsgCreateCredDef( - "did:cheqd:test:alice/credDef", + "did:cheqd:test:alice?service=CL-CredDef", "schema-1", "", - "CL-Sig-Cred_def", + "CL-CredDef", []string{"1"}, &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "Controller item 1: is not DID", @@ -125,10 +127,10 @@ func TestNewMsgCreateCredDef(t *testing.T) { { false, NewMsgCreateCredDef( - "did:cheqd:test:alice/credDef", + "did:cheqd:test:alice?service=CL-CredDef", "schema-1", "", - "CL-Sig-Cred_def", + "CL-CredDef", []string{"did:cheqd:test:alice"}, &MsgCreateCredDef_ClType{ClType: nil}), "Value: is required", @@ -136,7 +138,7 @@ func TestNewMsgCreateCredDef(t *testing.T) { } for _, tc := range cases { - err := tc.msg.ValidateBasic() + err := tc.msg.ValidateBasic(Prefix) if tc.valid { require.Nil(t, err) @@ -181,7 +183,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { true, NewMsgCreateSchema( - "did:cheqd:test:aaaaa/schema", + "did:cheqd:test:aaaaa?service=CL-Schema", "CL-Schema", "schema", "version1", @@ -192,7 +194,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "/schema", + "?service=CL-Schema", "", "", "", @@ -203,7 +205,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice#key-1/schema", + "did:cheqd:test:alice#key-1?service=CL-Schema", "", "", "", @@ -220,12 +222,12 @@ func TestNewMsgCreateSchema(t *testing.T) { "", nil, nil), - "Id must end with resource type '/schema': bad request", + "Id must end with resource type '?service=CL-Schema': bad request", }, { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "", "", "", @@ -236,7 +238,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "schema-1", "", "", @@ -247,7 +249,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "schema-1", "", "ss", @@ -258,7 +260,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "CL-Schema", "", "", @@ -269,7 +271,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "CL-Schema", "", "", @@ -280,7 +282,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "CL-Schema", "", "", @@ -291,7 +293,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "CL-Schema", "", "", @@ -302,7 +304,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "CL-Schema", "schema", "", @@ -313,7 +315,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "CL-Schema", "schema", "version", @@ -324,7 +326,7 @@ func TestNewMsgCreateSchema(t *testing.T) { { false, NewMsgCreateSchema( - "did:cheqd:test:alice/schema", + "did:cheqd:test:alice?service=CL-Schema", "CL-Schema", "schema", "version", @@ -335,7 +337,7 @@ func TestNewMsgCreateSchema(t *testing.T) { } for _, tc := range cases { - err := tc.msg.ValidateBasic() + err := tc.msg.ValidateBasic(Prefix) if tc.valid { require.Nil(t, err) @@ -727,7 +729,7 @@ func TestNewMsgCreateDid(t *testing.T) { } for _, tc := range cases { - err := tc.msg.ValidateBasic() + err := tc.msg.ValidateBasic(Prefix) if tc.valid { require.Nil(t, err) @@ -1119,7 +1121,7 @@ func TestNewMsgUpdateDid(t *testing.T) { } for _, tc := range cases { - err := tc.msg.ValidateBasic() + err := tc.msg.ValidateBasic(Prefix) if tc.valid { require.Nil(t, err) diff --git a/x/cheqd/types/query.pb.go b/x/cheqd/types/query.pb.go index 4cad255d2..adb73cae6 100644 --- a/x/cheqd/types/query.pb.go +++ b/x/cheqd/types/query.pb.go @@ -251,7 +251,8 @@ func (m *QueryGetDidRequest) GetId() string { } type QueryGetDidResponse struct { - Did *Did `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Did *Did `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Metadata *Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *QueryGetDidResponse) Reset() { *m = QueryGetDidResponse{} } @@ -294,6 +295,13 @@ func (m *QueryGetDidResponse) GetDid() *Did { return nil } +func (m *QueryGetDidResponse) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + func init() { proto.RegisterType((*QueryGetCredDefRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetCredDefRequest") proto.RegisterType((*QueryGetCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetCredDefResponse") @@ -306,36 +314,38 @@ func init() { func init() { proto.RegisterFile("cheqd/query.proto", fileDescriptor_bf3698559b3858f5) } var fileDescriptor_bf3698559b3858f5 = []byte{ - // 449 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x3f, 0xef, 0x12, 0x31, - 0x18, 0xc7, 0x29, 0x44, 0xd0, 0x92, 0x68, 0x2c, 0x51, 0xcc, 0x85, 0x1c, 0x78, 0x62, 0x40, 0xd0, - 0xab, 0xe0, 0xe0, 0xe0, 0x26, 0x18, 0x67, 0x30, 0x71, 0x70, 0x31, 0x77, 0xd7, 0x72, 0x34, 0x91, - 0xeb, 0x41, 0x8b, 0x91, 0x18, 0x17, 0x37, 0x37, 0x13, 0xe3, 0xe0, 0x2b, 0xd2, 0x91, 0xc4, 0xc5, - 0xd1, 0x80, 0x2f, 0xc4, 0x5c, 0xdb, 0x0b, 0x12, 0x7f, 0x0d, 0x4c, 0x90, 0x27, 0xdf, 0x3f, 0x9f, - 0xf6, 0xe9, 0xc1, 0xeb, 0xd1, 0x9c, 0x2e, 0x09, 0x5e, 0xae, 0xe9, 0x6a, 0xe3, 0xa7, 0x2b, 0x2e, - 0x39, 0xaa, 0xab, 0x11, 0x23, 0xbe, 0xfa, 0x4d, 0x38, 0xa1, 0xfa, 0x9f, 0xd3, 0x88, 0x39, 0x8f, - 0xdf, 0x50, 0x1c, 0xa4, 0x0c, 0x07, 0x49, 0xc2, 0x65, 0x20, 0x19, 0x4f, 0x84, 0xb6, 0x39, 0xbd, - 0x88, 0x8b, 0x05, 0x17, 0x38, 0x0c, 0x04, 0xd5, 0x79, 0xf8, 0xed, 0x20, 0xa4, 0x32, 0x18, 0xe0, - 0x34, 0x88, 0x59, 0xa2, 0xc4, 0x46, 0x5b, 0xd3, 0xad, 0xd1, 0x8a, 0x92, 0x31, 0x9d, 0x99, 0x21, - 0xd2, 0x43, 0x11, 0xcd, 0xe9, 0x22, 0x30, 0xb3, 0x6b, 0x7a, 0x96, 0xd1, 0xa8, 0x81, 0xd7, 0x85, - 0x37, 0x27, 0x59, 0xf6, 0x73, 0x2a, 0x47, 0xda, 0x3d, 0xa5, 0xcb, 0x35, 0x15, 0x12, 0x5d, 0x85, - 0x45, 0x46, 0x6e, 0x81, 0x16, 0xe8, 0x5e, 0x99, 0x16, 0x19, 0xf1, 0x5e, 0xc2, 0xfa, 0x7f, 0x4a, - 0x91, 0xf2, 0x44, 0x50, 0xf4, 0x04, 0x5e, 0xce, 0xaa, 0x5f, 0x13, 0x3a, 0x53, 0x86, 0xea, 0xb0, - 0xe5, 0x5b, 0x0e, 0xed, 0xe7, 0xde, 0x8a, 0x81, 0xf5, 0x3a, 0xf0, 0x46, 0x9e, 0xfb, 0x42, 0xa1, - 0xda, 0x00, 0x26, 0x07, 0xd4, 0x5c, 0x68, 0xfa, 0x1f, 0xc3, 0xb2, 0x3e, 0xa5, 0x69, 0x6f, 0x5a, - 0xdb, 0x8d, 0xd1, 0xc8, 0xbd, 0x36, 0x44, 0x79, 0xe4, 0x98, 0x11, 0x5b, 0xf1, 0x33, 0x58, 0x3b, - 0x52, 0x99, 0x56, 0x1f, 0x96, 0x88, 0xd1, 0x55, 0x87, 0x0d, 0x6b, 0x65, 0x66, 0xc9, 0x84, 0xc3, - 0xef, 0x25, 0x78, 0x49, 0xe5, 0xa0, 0x6f, 0x00, 0x56, 0xcc, 0x3d, 0x20, 0x6c, 0x35, 0x5e, 0xbc, - 0x17, 0xe7, 0xe1, 0xf9, 0x06, 0x0d, 0xea, 0xf5, 0x3f, 0xfe, 0xfc, 0xf3, 0xa5, 0x78, 0x17, 0xdd, - 0xc1, 0xe6, 0x99, 0xe4, 0x3e, 0x7c, 0xf4, 0x6c, 0xf0, 0x7b, 0x46, 0x3e, 0xa0, 0xaf, 0x00, 0x96, - 0xf5, 0x2d, 0x21, 0xff, 0x64, 0xd3, 0xd1, 0xc2, 0x1c, 0x7c, 0xb6, 0xde, 0x80, 0xf5, 0x14, 0x58, - 0x1b, 0x79, 0x16, 0x30, 0xbd, 0x25, 0xcd, 0xf5, 0x09, 0xc0, 0xd2, 0x98, 0x11, 0xd4, 0x3f, 0x59, - 0x72, 0xd8, 0xa4, 0x73, 0xff, 0x3c, 0xb1, 0xc1, 0xe9, 0x28, 0x9c, 0xdb, 0xa8, 0x69, 0xc1, 0x21, - 0x8c, 0x28, 0x96, 0xa7, 0xa3, 0x1f, 0x3b, 0x17, 0x6c, 0x77, 0x2e, 0xf8, 0xbd, 0x73, 0xc1, 0xe7, - 0xbd, 0x5b, 0xd8, 0xee, 0xdd, 0xc2, 0xaf, 0xbd, 0x5b, 0x78, 0x75, 0x2f, 0x66, 0x72, 0xbe, 0x0e, - 0xfd, 0x88, 0x2f, 0xfe, 0x0d, 0x79, 0xa0, 0x52, 0xde, 0x99, 0x91, 0xdc, 0xa4, 0x54, 0x84, 0x65, - 0xf5, 0x01, 0x3e, 0xfa, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x64, 0xdb, 0x8d, 0x32, 0x04, 0x00, - 0x00, + // 491 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xc1, 0x6b, 0x13, 0x41, + 0x14, 0xc6, 0x33, 0x09, 0xa6, 0x75, 0x0a, 0x8a, 0x53, 0x6c, 0xcb, 0x52, 0xb6, 0xed, 0x5a, 0x69, + 0x6d, 0x75, 0xc7, 0xc6, 0x83, 0x07, 0xf1, 0x62, 0x03, 0x9e, 0x3c, 0x34, 0x42, 0x0f, 0x5e, 0x64, + 0xb2, 0xf3, 0x9a, 0x0c, 0x34, 0x3b, 0x9b, 0xcc, 0x44, 0x2c, 0xe2, 0x45, 0xbc, 0x78, 0x13, 0xc4, + 0x83, 0x7f, 0x91, 0x1e, 0x0b, 0x5e, 0x3c, 0x4a, 0xe2, 0x1f, 0x22, 0x3b, 0xf3, 0xd6, 0x1a, 0x74, + 0x68, 0x4e, 0x09, 0x1f, 0xdf, 0xf7, 0xbe, 0xdf, 0x9b, 0x99, 0xa5, 0x37, 0xb2, 0x3e, 0x0c, 0x25, + 0x1f, 0x8e, 0x61, 0x74, 0x96, 0x16, 0x23, 0x6d, 0x35, 0x5b, 0x75, 0x92, 0x92, 0xa9, 0xfb, 0xcd, + 0xb5, 0x04, 0xff, 0x2f, 0x5a, 0xef, 0x69, 0xdd, 0x3b, 0x05, 0x2e, 0x0a, 0xc5, 0x45, 0x9e, 0x6b, + 0x2b, 0xac, 0xd2, 0xb9, 0xf1, 0xb1, 0x68, 0x2f, 0xd3, 0x66, 0xa0, 0x0d, 0xef, 0x0a, 0x03, 0x7e, + 0x1e, 0x7f, 0x75, 0xd0, 0x05, 0x2b, 0x0e, 0x78, 0x21, 0x7a, 0x2a, 0x77, 0x66, 0xf4, 0x2e, 0xfb, + 0xd6, 0x6c, 0x04, 0xb2, 0x0d, 0x27, 0x28, 0x32, 0x2f, 0x9a, 0xac, 0x0f, 0x03, 0x81, 0xda, 0x75, + 0xaf, 0x95, 0x34, 0x5e, 0x58, 0x41, 0x93, 0x15, 0x16, 0x8e, 0xc5, 0xe9, 0x18, 0xbc, 0x9e, 0xec, + 0xd2, 0x95, 0xa3, 0xb2, 0xf3, 0x29, 0xd8, 0x43, 0x3f, 0xb5, 0x03, 0xc3, 0x31, 0x18, 0xcb, 0xae, + 0xd1, 0xba, 0x92, 0x6b, 0x64, 0x93, 0xec, 0x5e, 0xed, 0xd4, 0x95, 0x4c, 0x8e, 0xe9, 0xea, 0x3f, + 0x4e, 0x53, 0xe8, 0xdc, 0x00, 0x7b, 0x44, 0x17, 0x4b, 0xa4, 0x97, 0x12, 0x4e, 0x5c, 0x60, 0xa9, + 0xb5, 0x99, 0x06, 0x0e, 0x23, 0xad, 0xb2, 0x0b, 0xb8, 0x44, 0xb2, 0x43, 0x6f, 0x56, 0x73, 0x9f, + 0xbb, 0x15, 0x42, 0x00, 0x47, 0x17, 0xa8, 0x95, 0x11, 0xfb, 0x1f, 0xd2, 0xa6, 0xdf, 0x1e, 0xdb, + 0x37, 0x82, 0xed, 0x18, 0x44, 0x7b, 0xb2, 0x4d, 0x59, 0x35, 0xb2, 0xad, 0x64, 0xa8, 0xf8, 0x3d, + 0xa1, 0xcb, 0x33, 0x36, 0xac, 0x4d, 0x69, 0x43, 0xa2, 0x71, 0xa9, 0xb5, 0x1e, 0xec, 0x2c, 0x23, + 0xa5, 0x91, 0x3d, 0xa6, 0x8b, 0x03, 0xb0, 0x42, 0x0a, 0x2b, 0xd6, 0xea, 0x2e, 0xb4, 0x15, 0x0c, + 0x3d, 0x43, 0x63, 0xe7, 0x4f, 0xa4, 0xf5, 0xb5, 0x41, 0xaf, 0x38, 0x0c, 0xf6, 0x85, 0xd0, 0x05, + 0x3c, 0x47, 0xc6, 0x83, 0x23, 0xfe, 0x7f, 0xaf, 0xd1, 0xfd, 0xf9, 0x03, 0x7e, 0xcf, 0x64, 0xff, + 0xdd, 0xf7, 0x5f, 0x9f, 0xea, 0xb7, 0xd9, 0x2d, 0x8e, 0xcf, 0xaf, 0xca, 0xf1, 0x99, 0xe7, 0xc8, + 0xdf, 0x28, 0xf9, 0x96, 0x7d, 0x26, 0xb4, 0xe9, 0x4f, 0x99, 0xa5, 0x97, 0x36, 0xcd, 0x5c, 0x78, + 0xc4, 0xe7, 0xf6, 0x23, 0xd8, 0x9e, 0x03, 0xdb, 0x66, 0x49, 0x00, 0xcc, 0xdf, 0xb2, 0xe7, 0xfa, + 0x40, 0x68, 0xa3, 0xad, 0x24, 0xdb, 0xbf, 0xb4, 0xe4, 0xe2, 0x25, 0x44, 0x77, 0xe7, 0x33, 0x23, + 0xce, 0x8e, 0xc3, 0xd9, 0x62, 0x1b, 0x01, 0x1c, 0xa9, 0xa4, 0x63, 0x79, 0x72, 0xf8, 0x6d, 0x12, + 0x93, 0xf3, 0x49, 0x4c, 0x7e, 0x4e, 0x62, 0xf2, 0x71, 0x1a, 0xd7, 0xce, 0xa7, 0x71, 0xed, 0xc7, + 0x34, 0xae, 0xbd, 0xb8, 0xd3, 0x53, 0xb6, 0x3f, 0xee, 0xa6, 0x99, 0x1e, 0xfc, 0x3d, 0xe4, 0x9e, + 0x9b, 0xf2, 0x1a, 0x25, 0x7b, 0x56, 0x80, 0xe9, 0x36, 0xdd, 0x07, 0xfc, 0xe0, 0x77, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x62, 0xfa, 0xdc, 0xa6, 0x8a, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -672,6 +682,18 @@ func (m *QueryGetDidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } if m.Did != nil { { size, err := m.Did.MarshalToSizedBuffer(dAtA[:i]) @@ -773,6 +795,10 @@ func (m *QueryGetDidResponse) Size() (n int) { l = m.Did.Size() n += 1 + l + sovQuery(uint64(l)) } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovQuery(uint64(l)) + } return n } @@ -1265,6 +1291,42 @@ func (m *QueryGetDidResponse) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &Metadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) diff --git a/x/cheqd/utils/constant.go b/x/cheqd/utils/constant.go deleted file mode 100644 index ccd000cf1..000000000 --- a/x/cheqd/utils/constant.go +++ /dev/null @@ -1,4 +0,0 @@ -package utils - -var MethodName = "cheqd" -var MethodSpecificId = "test" diff --git a/x/cheqd/utils/cred_def.go b/x/cheqd/utils/cred_def.go index d16cb63f9..f8a60dc2a 100644 --- a/x/cheqd/utils/cred_def.go +++ b/x/cheqd/utils/cred_def.go @@ -2,8 +2,19 @@ package utils import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" -var AllowedCredDefSignatureType = []string{"CL-Sig-Cred_def"} +var AllowedCredDefSignatureType = []string{"CL-CredDef"} + +var CredDefSuffix = "?service=CL-CredDef" +var CredDefSuffixLen = len(CredDefSuffix) func IsNotCredDefSignatureType(signatureType string) bool { return !strings.Include(AllowedCredDefSignatureType, signatureType) } + +func IsCredDef(did string) bool { + return len(did) >= CredDefSuffixLen && did[len(did)-CredDefSuffixLen:] == CredDefSuffix +} + +func GetDidFromCredDef(credDef string) string { + return credDef[:len(credDef)-CredDefSuffixLen] +} diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go index 9b3d91f09..bad52cd69 100644 --- a/x/cheqd/utils/did.go +++ b/x/cheqd/utils/did.go @@ -1,45 +1,18 @@ package utils import ( - ustring "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" "regexp" "strings" ) var DidForbiddenSymbolsRegexp, _ = regexp.Compile(`^[^#?&/\\]+$`) -var VerificationMethodType = []string{ - "JsonWebKey2020", - "EcdsaSecp256k1VerificationKey2019", - "Ed25519VerificationKey2018", - "Ed25519VerificationKey2020", - "Bls12381G1Key2020", - "Bls12381G2Key2020", - "PgpVerificationKey2021", - "RsaVerificationKey2018", - "X25519KeyAgreementKey2019", - "SchnorrSecp256k1VerificationKey2019", - "EcdsaSecp256k1RecoveryMethod2020", - "VerifiableCondition2021", -} - -var ServiceType = []string{ - "LinkedDomains", - "DIDCommMessaging", -} - -var CredDefSuffix = "/credDef" -var CredDefSuffixLen = len(CredDefSuffix) - -var SchemaSuffix = "/schema" -var SchemaSuffixLen = len(SchemaSuffix) - func SplitDidUrlIntoDidAndFragment(didUrl string) (string, string) { fragments := strings.Split(didUrl, "#") return fragments[0], fragments[1] } -func IsDidFragment(didUrl string) bool { +func IsDidFragment(prefix string, didUrl string) bool { if !strings.Contains(didUrl, "#") { return false } @@ -49,24 +22,16 @@ func IsDidFragment(didUrl string) bool { } did, _ := SplitDidUrlIntoDidAndFragment(didUrl) - return IsDid(did) + return IsDid(prefix, did) } -func IsFullDidFragment(didUrl string) bool { +func IsFullDidFragment(prefix string, didUrl string) bool { if !strings.Contains(didUrl, "#") { return false } did, _ := SplitDidUrlIntoDidAndFragment(didUrl) - return IsDid(did) -} - -func IsVerificationMethodType(vmType string) bool { - return ustring.Include(VerificationMethodType, vmType) -} - -func IsDidServiceType(sType string) bool { - return ustring.Include(ServiceType, sType) + return IsDid(prefix, did) } func ResolveId(did string, methodId string) string { @@ -80,9 +45,9 @@ func ResolveId(did string, methodId string) string { return result } -func ArrayContainsNotDid(array []string) (bool, int) { +func ArrayContainsNotDid(prefix string, array []string) (bool, int) { for i, did := range array { - if IsNotDid(did) { + if IsNotDid(prefix, did) { return true, i } } @@ -90,9 +55,9 @@ func ArrayContainsNotDid(array []string) (bool, int) { return false, 0 } -func ArrayContainsNotDidFragment(array []string) (bool, int) { +func ArrayContainsNotDidFragment(prefix string, array []string) (bool, int) { for i, did := range array { - if !IsDidFragment(did) { + if !IsDidFragment(prefix, did) { return true, i } } @@ -100,11 +65,11 @@ func ArrayContainsNotDidFragment(array []string) (bool, int) { return false, 0 } -func IsNotDid(did string) bool { - return !IsDid(did) +func IsNotDid(prefix string, did string) bool { + return !IsDid(prefix, did) } -func IsDid(did string) bool { +func IsDid(prefix string, did string) bool { if len(did) == 0 { return false } @@ -113,39 +78,5 @@ func IsDid(did string) bool { return false } - fragments := strings.Split(did, ":") - - if len(fragments) <= 3 { - return false - } - - if fragments[0] != "did" { - return false - } - - if fragments[1] != MethodName { - return false - } - - if fragments[2] != MethodSpecificId { - return false - } - - return true -} - -func IsSchema(did string) bool { - return strings.HasSuffix(did, SchemaSuffix) -} - -func GetDidFromSchema(schema string) string { - return schema[:len(schema)-SchemaSuffixLen] -} - -func IsCredDef(did string) bool { - return strings.HasSuffix(did, CredDefSuffix) -} - -func GetDidFromCredDef(credDef string) string { - return credDef[:len(credDef)-CredDefSuffixLen] + return strings.HasPrefix(did, prefix) } diff --git a/x/cheqd/utils/did_doc.go b/x/cheqd/utils/did_doc.go new file mode 100644 index 000000000..40bdd350a --- /dev/null +++ b/x/cheqd/utils/did_doc.go @@ -0,0 +1,31 @@ +package utils + +import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" + +var VerificationMethodType = []string{ + "JsonWebKey2020", + "EcdsaSecp256k1VerificationKey2019", + "Ed25519VerificationKey2018", + "Ed25519VerificationKey2020", + "Bls12381G1Key2020", + "Bls12381G2Key2020", + "PgpVerificationKey2021", + "RsaVerificationKey2018", + "X25519KeyAgreementKey2019", + "SchnorrSecp256k1VerificationKey2019", + "EcdsaSecp256k1RecoveryMethod2020", + "VerifiableCondition2021", +} + +var ServiceType = []string{ + "LinkedDomains", + "DIDCommMessaging", +} + +func IsVerificationMethodType(vmType string) bool { + return strings.Include(VerificationMethodType, vmType) +} + +func IsDidServiceType(sType string) bool { + return strings.Include(ServiceType, sType) +} diff --git a/x/cheqd/utils/did_test.go b/x/cheqd/utils/did_test.go index a7e53f282..f54902f74 100644 --- a/x/cheqd/utils/did_test.go +++ b/x/cheqd/utils/did_test.go @@ -25,7 +25,7 @@ func TestIsDid(t *testing.T) { } for _, tc := range cases { - isDid := IsDid(tc.did) + isDid := IsDid("did:cheqd:test", tc.did) if tc.valid { require.True(t, isDid) diff --git a/x/cheqd/utils/schema.go b/x/cheqd/utils/schema.go index 955b00a66..6fdb85ef9 100644 --- a/x/cheqd/utils/schema.go +++ b/x/cheqd/utils/schema.go @@ -2,8 +2,19 @@ package utils import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" +var SchemaSuffix = "?service=CL-Schema" +var SchemaSuffixLen = len(SchemaSuffix) + var AllowedSchemaType = []string{"CL-Schema"} func IsNotSchemaType(schemaType string) bool { return !strings.Include(AllowedSchemaType, schemaType) } + +func IsSchema(did string) bool { + return len(did) >= SchemaSuffixLen && did[len(did)-SchemaSuffixLen:] == SchemaSuffix +} + +func GetDidFromSchema(schema string) string { + return schema[:len(schema)-SchemaSuffixLen] +} From 464735e8595e268692219fc4e4bbbad5f511ae13 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 20 Oct 2021 14:54:59 +0300 Subject: [PATCH 45/74] fixed unit tests --- x/cheqd/keeper/state.go | 5 +++-- x/cheqd/utils/cred_def.go | 4 ++++ x/cheqd/utils/schema.go | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/x/cheqd/keeper/state.go b/x/cheqd/keeper/state.go index dbf3ab714..9982561a9 100644 --- a/x/cheqd/keeper/state.go +++ b/x/cheqd/keeper/state.go @@ -3,6 +3,7 @@ package keeper import ( "fmt" "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cheqd/cheqd-node/x/cheqd/utils" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) @@ -13,11 +14,11 @@ func (k Keeper) HasDidDoc(ctx sdk.Context, did string) error { return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for DID %s", did)) } - if k.HasSchema(ctx, did+"/schema") { + if k.HasSchema(ctx, utils.GetSchemaFromDid(did)) { return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for Schema %s", did)) } - if k.HasCredDef(ctx, did+"/credDef") { + if k.HasCredDef(ctx, utils.GetCredDefFromDid(did)) { return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for CredDef %s", did)) } diff --git a/x/cheqd/utils/cred_def.go b/x/cheqd/utils/cred_def.go index f8a60dc2a..c24faa3ab 100644 --- a/x/cheqd/utils/cred_def.go +++ b/x/cheqd/utils/cred_def.go @@ -18,3 +18,7 @@ func IsCredDef(did string) bool { func GetDidFromCredDef(credDef string) string { return credDef[:len(credDef)-CredDefSuffixLen] } + +func GetCredDefFromDid(did string) string { + return did + CredDefSuffix +} diff --git a/x/cheqd/utils/schema.go b/x/cheqd/utils/schema.go index 6fdb85ef9..d192d40c1 100644 --- a/x/cheqd/utils/schema.go +++ b/x/cheqd/utils/schema.go @@ -18,3 +18,7 @@ func IsSchema(did string) bool { func GetDidFromSchema(schema string) string { return schema[:len(schema)-SchemaSuffixLen] } + +func GetSchemaFromDid(did string) string { + return did + SchemaSuffix +} From 3455d77725dab2c128db34c2b18ecba71b16837d Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 20 Oct 2021 15:40:24 +0300 Subject: [PATCH 46/74] fixed unit tests and lint --- x/cheqd/tests/handler_test.go | 8 ++------ x/cheqd/utils/did_test.go | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index fbfbc6ae5..06589da91 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -82,14 +82,10 @@ func TestHandler_CreateSchema(t *testing.T) { msg := setup.CreateSchema() data, _ := ptypes.NewAnyWithValue(msg) - result, err := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) schema := types.MsgCreateSchemaResponse{} - err = schema.Unmarshal(result.Data) - - if err != nil { - log.Fatal(err) - } + _ = schema.Unmarshal(result.Data) // query Did state, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) diff --git a/x/cheqd/utils/did_test.go b/x/cheqd/utils/did_test.go index f54902f74..47553d62a 100644 --- a/x/cheqd/utils/did_test.go +++ b/x/cheqd/utils/did_test.go @@ -25,7 +25,7 @@ func TestIsDid(t *testing.T) { } for _, tc := range cases { - isDid := IsDid("did:cheqd:test", tc.did) + isDid := IsDid("did:cheqd:test:", tc.did) if tc.valid { require.True(t, isDid) From 628eee2d7b583a1bc13cac69219e2fcd6af86b8a Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 20 Oct 2021 15:55:23 +0300 Subject: [PATCH 47/74] process review --- x/cheqd/keeper/did.go | 71 +++----------------------------- x/cheqd/keeper/msg_server_did.go | 53 +++++++++++++++++------- 2 files changed, 43 insertions(+), 81 deletions(-) diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index e754f84af..be35445d3 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -1,12 +1,10 @@ package keeper import ( - "encoding/base64" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/tendermint/tendermint/crypto/tmhash" "strconv" ) @@ -40,83 +38,24 @@ func (k Keeper) SetDidCount(ctx sdk.Context, count uint64) { } // AppendDid appends a did in the store with a new id and update the count -func (k Keeper) AppendDid( - ctx sdk.Context, - id string, - controller []string, - verificationMethod []*types.VerificationMethod, - authentication []string, - assertionMethod []string, - capabilityInvocation []string, - capabilityDelegation []string, - keyAgreement []string, - alsoKnownAs []string, - service []*types.DidService, - context []string, -) string { +func (k Keeper) AppendDid(ctx sdk.Context, did types.Did, metadata *types.Metadata, timestamp string, txHash string) string { // Create the did count := k.GetDidCount(ctx) - did := types.Did{ - Id: id, - Controller: controller, - VerificationMethod: verificationMethod, - Authentication: authentication, - AssertionMethod: assertionMethod, - CapabilityInvocation: capabilityInvocation, - CapabilityDelegation: capabilityDelegation, - KeyAgreement: keyAgreement, - AlsoKnownAs: alsoKnownAs, - Service: service, - Context: context, - } - - created := ctx.BlockTime().String() - txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) - - metadata := types.Metadata{ - Created: created, - Updated: created, - Deactivated: false, - VersionId: txHash, - } - - stateValue := types.StateValue{ - Metadata: &metadata, - Data: &types.StateValue_Did{ - Did: &did, - }, - Timestamp: created, - TxHash: txHash, - } - - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - value := k.cdc.MustMarshal(&stateValue) - store.Set(GetDidIDBytes(did.Id), value) + k.SetDid(ctx, did, metadata, timestamp, txHash) // Update did count k.SetDidCount(ctx, count+1) - - return id + return did.Id } // SetDid set a specific did in the store -func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata) { - updated := ctx.BlockTime().String() - txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) - - metadata = &types.Metadata{ - Created: metadata.Created, - Updated: updated, - Deactivated: metadata.Deactivated, - VersionId: txHash, - } - +func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata, timestamp string, txHash string) { stateValue := types.StateValue{ Metadata: metadata, Data: &types.StateValue_Did{ Did: &did, }, - Timestamp: updated, + Timestamp: timestamp, TxHash: txHash, } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index f530e7318..49cecc3b9 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -2,8 +2,10 @@ package keeper import ( "context" + "encoding/base64" "fmt" "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" + "github.com/tendermint/tendermint/crypto/tmhash" "reflect" "github.com/cheqd/cheqd-node/x/cheqd/types" @@ -33,20 +35,31 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, err } - k.AppendDid( - ctx, - didMsg.Id, - didMsg.Controller, - didMsg.VerificationMethod, - didMsg.Authentication, - didMsg.AssertionMethod, - didMsg.CapabilityInvocation, - didMsg.CapabilityDelegation, - didMsg.KeyAgreement, - didMsg.AlsoKnownAs, - didMsg.Service, - didMsg.Context, - ) + var did = types.Did{ + Id: didMsg.Id, + Controller: didMsg.Controller, + VerificationMethod: didMsg.VerificationMethod, + Authentication: didMsg.Authentication, + AssertionMethod: didMsg.AssertionMethod, + CapabilityInvocation: didMsg.CapabilityInvocation, + CapabilityDelegation: didMsg.CapabilityDelegation, + KeyAgreement: didMsg.KeyAgreement, + AlsoKnownAs: didMsg.AlsoKnownAs, + Service: didMsg.Service, + Context: didMsg.Context, + } + + timestamp := ctx.BlockTime().String() + txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + + metadata := types.Metadata{ + Created: timestamp, + Deactivated: false, + Updated: timestamp, + VersionId: txHash, + } + + k.AppendDid(ctx, did, &metadata, timestamp, txHash) return &types.MsgCreateDidResponse{ Id: didMsg.Id, @@ -99,7 +112,17 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) Context: didMsg.Context, } - k.SetDid(ctx, did, oldDIDDoc.Metadata) + timestamp := ctx.BlockTime().String() + txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + + metadata := types.Metadata{ + Created: oldDIDDoc.Metadata.Created, + Deactivated: oldDIDDoc.Metadata.Deactivated, + Updated: timestamp, + VersionId: txHash, + } + + k.SetDid(ctx, did, &metadata, timestamp, txHash) return &types.MsgUpdateDidResponse{ Id: didMsg.Id, From 6363083a853cebf820ed0c21c7592677db9ad3f2 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 20 Oct 2021 18:55:44 +0300 Subject: [PATCH 48/74] changed build sign input --- proto/cheqd/tx.proto | 5 + x/cheqd/keeper/utils.go | 18 +- x/cheqd/keeper/verify.go | 2 +- x/cheqd/tests/create_did_test.go | 217 +++++++++++++ x/cheqd/tests/handler_test_setup.go | 19 +- x/cheqd/types/tx.pb.go | 470 ++++++++++++++++++++++++---- 6 files changed, 655 insertions(+), 76 deletions(-) create mode 100644 x/cheqd/tests/create_did_test.go diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 2163d7889..354815b9d 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -17,6 +17,11 @@ service Msg { rpc UpdateDid(MsgWriteRequest) returns (MsgUpdateDidResponse); } +message MsgWriteRequestSignObject { + google.protobuf.Any data = 1; + map metadata = 2; +} + // this line is used by starport scaffolding # proto/tx/message message MsgWriteRequest { google.protobuf.Any data = 1; diff --git a/x/cheqd/keeper/utils.go b/x/cheqd/keeper/utils.go index 486b023de..e231732cc 100644 --- a/x/cheqd/keeper/utils.go +++ b/x/cheqd/keeper/utils.go @@ -2,23 +2,25 @@ package keeper import ( "crypto/ed25519" - "encoding/base64" - "encoding/json" "errors" "fmt" "github.com/btcsuite/btcutil/base58" "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/cosmos/cosmos-sdk/codec" ) -func BuildSigningInput(msg *types.MsgWriteRequest) ([]byte, error) { - metadataBytes, err := json.Marshal(&msg.Metadata) +func BuildSigningInput(codec codec.Codec, msg *types.MsgWriteRequest) ([]byte, error) { + signObject := types.MsgWriteRequestSignObject{ + Data: msg.Data, + Metadata: msg.Metadata, + } + + bz, err := codec.Marshal(&signObject) if err != nil { - return nil, types.ErrInvalidSignature.Wrap("An error has occurred during metadata marshalling") + return nil, err } - dataBytes := msg.Data.Value - signingInput := ([]byte)(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) - return signingInput, nil + return bz, nil } func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index cd3e50307..de05f8b52 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -15,7 +15,7 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s return types.ErrInvalidSignature.Wrap("At least one signer should be present") } - signingInput, err := BuildSigningInput(msg) + signingInput, err := BuildSigningInput(k.cdc, msg) if err != nil { return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) } diff --git a/x/cheqd/tests/create_did_test.go b/x/cheqd/tests/create_did_test.go new file mode 100644 index 000000000..4187b984f --- /dev/null +++ b/x/cheqd/tests/create_did_test.go @@ -0,0 +1,217 @@ +package tests + +import ( + "crypto/ed25519" + "github.com/btcsuite/btcutil/base58" + "github.com/cheqd/cheqd-node/x/cheqd/types" + "testing" +) + +func TestCreateDID(t *testing.T) { + prefilledDids := []struct { + keys map[string]KeyPair + signers []string + msg *types.MsgCreateDid + }{ + { + keys: map[string]KeyPair{ + "did:cheqd:test:alice#key-1": GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:alice#key-1"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:alice", + Authentication: []string{"did:cheqd:test:alice#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:alice#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:alice", + }, + }, + }, + }, + { + keys: map[string]KeyPair{ + "did:cheqd:test:bob#key-1": GenerateKeyPair(), + "did:cheqd:test:bob#key-2": GenerateKeyPair(), + "did:cheqd:test:bob#key-3": GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:bob#key-2"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:bob", + Authentication: []string{ + "did:cheqd:test:bob#key-1", + "did:cheqd:test:bob#key-2", + "did:cheqd:test:bob#key-3", + }, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:bob#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:bob", + }, + { + Id: "did:cheqd:test:bob#key-2", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:bob", + }, + { + Id: "did:cheqd:test:bob#key-3", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:bob", + }, + }, + }, + }, + { + keys: map[string]KeyPair{ + "did:cheqd:test:charlie#key-1": GenerateKeyPair(), + "did:cheqd:test:charlie#key-2": GenerateKeyPair(), + "did:cheqd:test:charlie#key-3": GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:charlie#key-2"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:charlie", + Authentication: []string{ + "did:cheqd:test:charlie#key-1", + "did:cheqd:test:charlie#key-2", + "did:cheqd:test:charlie#key-3", + }, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:charlie#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:bob", + }, + { + Id: "did:cheqd:test:charlie#key-2", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:bob", + }, + { + Id: "did:cheqd:test:charlie#key-3", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:bob", + }, + }, + }, + }, + } + + setup := Setup() + + var prefilledPrivateKeys = map[string]map[string]ed25519.PrivateKey{} + + for _, prefilled := range prefilledDids { + msg := prefilled.msg + + for i, key := range msg.Authentication { + msg.VerificationMethod[i].PublicKeyMultibase = "z" + base58.Encode(prefilled.keys[key].PublicKey) + } + + signerKeys := map[string]ed25519.PrivateKey{} + for _, signer := range prefilled.signers { + signerKeys[signer] = prefilled.keys[signer].PrivateKey + } + + prefilledPrivateKeys[msg.Id] = signerKeys + _, _ = setup.SendCreateDid(msg, signerKeys) + } + + /* + cases := []struct { + valid bool + name string + keys map[string]KeyPair + signers []string + msg *types.MsgCreateDid + errMsg string + }{ + { + valid: true, + name: "Create DID works", + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui#key-1" : GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod { + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + }, + { + valid: true, + name: "Create DID with controller works", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string {"did:cheqd:test:alice", "did:cheqd:test:bob"}, + }, + signers: []string {"did:cheqd:test:alice#key-1", "did:cheqd:test:bob"}, + keys: map {prefilledPrivateKeys[], + }, + { + valid: false, + name: "DID Doc already exists", + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui#key-1" : GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod { + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + errMsg: "DID DOC already exists for DID did:cheqd:test:123456qwertyui: DID Doc exists", + }, + } + + + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + msg := tc.msg + + for i, key := range msg.Authentication { + msg.VerificationMethod[i].PublicKeyMultibase = "z" + base58.Encode(tc.keys[key].PublicKey) + } + + signerKeys := map[string]ed25519.PrivateKey{} + for _, signer := range tc.signers { + signerKeys[signer] = tc.keys[signer].PrivateKey + } + + did, err := setup.SendCreateDid(msg, signerKeys) + + if tc.valid { + require.Nil(t, err) + require.Equal(t, did.Id, did.Id) + require.Equal(t, did.Controller, did.Controller) + require.Equal(t, did.VerificationMethod, did.VerificationMethod) + require.Equal(t, did.Authentication, did.Authentication) + require.Equal(t, did.AssertionMethod, did.AssertionMethod) + require.Equal(t, did.CapabilityInvocation, did.CapabilityInvocation) + require.Equal(t, did.CapabilityDelegation, did.CapabilityDelegation) + require.Equal(t, did.KeyAgreement, did.KeyAgreement) + require.Equal(t, did.AlsoKnownAs, did.AlsoKnownAs) + require.Equal(t, did.Service, did.Service) + require.Equal(t, did.Context, did.Context) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + }) + }*/ +} diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index 3928ad7bc..e2af958f9 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -4,7 +4,6 @@ import ( "crypto/ed25519" "crypto/rand" "encoding/base64" - "encoding/json" "github.com/btcsuite/btcutil/base58" "github.com/cheqd/cheqd-node/x/cheqd" "time" @@ -22,6 +21,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) +type KeyPair struct { + PrivateKey ed25519.PrivateKey + PublicKey ed25519.PublicKey +} + type TestSetup struct { Cdc codec.Codec Ctx sdk.Context @@ -172,11 +176,13 @@ func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { } func (s *TestSetup) WrapRequest(data *ptypes.Any, keys map[string]ed25519.PrivateKey, metadata map[string]string) *types.MsgWriteRequest { - metadataBytes, _ := json.Marshal(&metadata) - dataBytes := data.Value + result := types.MsgWriteRequest{ + Data: data, + Metadata: metadata, + } - signingInput := []byte(base64.StdEncoding.EncodeToString(metadataBytes) + base64.StdEncoding.EncodeToString(dataBytes)) signatures := make(map[string]string) + signingInput, _ := keeper.BuildSigningInput(s.Cdc, &result) for privKeyId, privKey := range keys { signature := base64.StdEncoding.EncodeToString(ed25519.Sign(privKey, signingInput)) @@ -190,6 +196,11 @@ func (s *TestSetup) WrapRequest(data *ptypes.Any, keys map[string]ed25519.Privat } } +func GenerateKeyPair() KeyPair { + PublicKey, PrivateKey, _ := ed25519.GenerateKey(rand.Reader) + return KeyPair{PrivateKey, PublicKey} +} + func (s *TestSetup) InitDid(did string) (map[string]ed25519.PrivateKey, *types.MsgCreateDid, error) { pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader) diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index b117d3565..1c1cac81f 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -28,6 +28,58 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type MsgWriteRequestSignObject struct { + Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (m *MsgWriteRequestSignObject) Reset() { *m = MsgWriteRequestSignObject{} } +func (m *MsgWriteRequestSignObject) String() string { return proto.CompactTextString(m) } +func (*MsgWriteRequestSignObject) ProtoMessage() {} +func (*MsgWriteRequestSignObject) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{0} +} +func (m *MsgWriteRequestSignObject) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgWriteRequestSignObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgWriteRequestSignObject.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgWriteRequestSignObject) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgWriteRequestSignObject.Merge(m, src) +} +func (m *MsgWriteRequestSignObject) XXX_Size() int { + return m.Size() +} +func (m *MsgWriteRequestSignObject) XXX_DiscardUnknown() { + xxx_messageInfo_MsgWriteRequestSignObject.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgWriteRequestSignObject proto.InternalMessageInfo + +func (m *MsgWriteRequestSignObject) GetData() *types.Any { + if m != nil { + return m.Data + } + return nil +} + +func (m *MsgWriteRequestSignObject) GetMetadata() map[string]string { + if m != nil { + return m.Metadata + } + return nil +} + // this line is used by starport scaffolding # proto/tx/message type MsgWriteRequest struct { Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` @@ -39,7 +91,7 @@ func (m *MsgWriteRequest) Reset() { *m = MsgWriteRequest{} } func (m *MsgWriteRequest) String() string { return proto.CompactTextString(m) } func (*MsgWriteRequest) ProtoMessage() {} func (*MsgWriteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{0} + return fileDescriptor_d0277a2196c64ae2, []int{1} } func (m *MsgWriteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -105,7 +157,7 @@ func (m *MsgCreateCredDef) Reset() { *m = MsgCreateCredDef{} } func (m *MsgCreateCredDef) String() string { return proto.CompactTextString(m) } func (*MsgCreateCredDef) ProtoMessage() {} func (*MsgCreateCredDef) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{1} + return fileDescriptor_d0277a2196c64ae2, []int{2} } func (m *MsgCreateCredDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -222,7 +274,7 @@ func (m *MsgCreateCredDefResponse) Reset() { *m = MsgCreateCredDefRespon func (m *MsgCreateCredDefResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateCredDefResponse) ProtoMessage() {} func (*MsgCreateCredDefResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{2} + return fileDescriptor_d0277a2196c64ae2, []int{3} } func (m *MsgCreateCredDefResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -271,7 +323,7 @@ func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } func (m *MsgCreateSchema) String() string { return proto.CompactTextString(m) } func (*MsgCreateSchema) ProtoMessage() {} func (*MsgCreateSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{3} + return fileDescriptor_d0277a2196c64ae2, []int{4} } func (m *MsgCreateSchema) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -350,7 +402,7 @@ func (m *MsgCreateSchemaResponse) Reset() { *m = MsgCreateSchemaResponse func (m *MsgCreateSchemaResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateSchemaResponse) ProtoMessage() {} func (*MsgCreateSchemaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{4} + return fileDescriptor_d0277a2196c64ae2, []int{5} } func (m *MsgCreateSchemaResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -404,7 +456,7 @@ func (m *MsgCreateDid) Reset() { *m = MsgCreateDid{} } func (m *MsgCreateDid) String() string { return proto.CompactTextString(m) } func (*MsgCreateDid) ProtoMessage() {} func (*MsgCreateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{5} + return fileDescriptor_d0277a2196c64ae2, []int{6} } func (m *MsgCreateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -518,7 +570,7 @@ func (m *MsgCreateDidResponse) Reset() { *m = MsgCreateDidResponse{} } func (m *MsgCreateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateDidResponse) ProtoMessage() {} func (*MsgCreateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{6} + return fileDescriptor_d0277a2196c64ae2, []int{7} } func (m *MsgCreateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -573,7 +625,7 @@ func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } func (m *MsgUpdateDid) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDid) ProtoMessage() {} func (*MsgUpdateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{7} + return fileDescriptor_d0277a2196c64ae2, []int{8} } func (m *MsgUpdateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -694,7 +746,7 @@ func (m *MsgUpdateDidResponse) Reset() { *m = MsgUpdateDidResponse{} } func (m *MsgUpdateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDidResponse) ProtoMessage() {} func (*MsgUpdateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{8} + return fileDescriptor_d0277a2196c64ae2, []int{9} } func (m *MsgUpdateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -731,6 +783,8 @@ func (m *MsgUpdateDidResponse) GetId() string { } func init() { + proto.RegisterType((*MsgWriteRequestSignObject)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequestSignObject") + proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequestSignObject.MetadataEntry") proto.RegisterType((*MsgWriteRequest)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest") proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest.MetadataEntry") proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest.SignaturesEntry") @@ -747,60 +801,62 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 848 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x6f, 0x23, 0x45, - 0x10, 0xb5, 0xc7, 0x4e, 0x1c, 0x57, 0x3e, 0xd5, 0x1b, 0xb4, 0x83, 0x11, 0x56, 0xe4, 0x15, 0x2b, - 0x07, 0xb4, 0x63, 0x36, 0x2b, 0xa1, 0x15, 0x68, 0x25, 0xb2, 0x09, 0xd2, 0x46, 0xc8, 0x1c, 0x26, - 0xb0, 0x20, 0x84, 0x64, 0x75, 0xa6, 0x2b, 0xe3, 0x26, 0xe3, 0x1e, 0xef, 0x74, 0xdb, 0x64, 0xce, - 0xfc, 0x01, 0xce, 0x1c, 0xb9, 0xf2, 0x47, 0x38, 0xee, 0x91, 0x23, 0x4a, 0xc4, 0xaf, 0xe0, 0x82, - 0xfa, 0xc3, 0x8e, 0x33, 0x61, 0x48, 0x90, 0xb8, 0xc1, 0x25, 0x99, 0x7e, 0x53, 0xf5, 0x5e, 0xf5, - 0xab, 0x9a, 0x6e, 0xc3, 0x46, 0x34, 0xc4, 0x57, 0xac, 0xa7, 0xce, 0x83, 0x71, 0x96, 0xaa, 0x94, - 0xdc, 0x37, 0x6b, 0xce, 0x02, 0xf3, 0x5f, 0xa4, 0x0c, 0xed, 0x53, 0xeb, 0xcd, 0x38, 0x4d, 0xe3, - 0x04, 0x7b, 0x26, 0xec, 0x64, 0x72, 0xda, 0xa3, 0x22, 0xb7, 0x39, 0xad, 0x4d, 0xcb, 0xa1, 0xb3, - 0x2c, 0x70, 0xcf, 0x02, 0x51, 0x86, 0xec, 0x10, 0x4f, 0x2d, 0xd8, 0xf9, 0xdd, 0x83, 0xcd, 0xbe, - 0x8c, 0xbf, 0xcc, 0xb8, 0xc2, 0x10, 0x5f, 0x4d, 0x50, 0x2a, 0xd2, 0x85, 0x3a, 0xa3, 0x8a, 0xfa, - 0xd5, 0x9d, 0x6a, 0x77, 0x75, 0x6f, 0x3b, 0xb0, 0x1a, 0xc1, 0x4c, 0x23, 0xd8, 0x17, 0x79, 0x68, - 0x22, 0xc8, 0x57, 0x00, 0x92, 0xc7, 0x82, 0xaa, 0x49, 0x86, 0xd2, 0xf7, 0x76, 0x6a, 0xdd, 0xd5, - 0xbd, 0xa7, 0x41, 0x49, 0xb1, 0x41, 0x41, 0x27, 0x38, 0x9e, 0xa7, 0x7e, 0x22, 0x54, 0x96, 0x87, - 0x0b, 0x5c, 0x24, 0x84, 0x95, 0x11, 0x2a, 0x6a, 0xea, 0xa8, 0x19, 0xde, 0x0f, 0xee, 0xcc, 0xdb, - 0x77, 0x89, 0x96, 0x75, 0xce, 0xd3, 0x7a, 0x06, 0x9b, 0x05, 0x49, 0xb2, 0x05, 0xb5, 0x33, 0xcc, - 0xcd, 0x4e, 0x9b, 0xa1, 0x7e, 0x24, 0xdb, 0xb0, 0x34, 0xa5, 0xc9, 0x04, 0x7d, 0xcf, 0x60, 0x76, - 0xf1, 0xa1, 0xf7, 0xb4, 0xda, 0xfa, 0x08, 0xd6, 0xaf, 0x31, 0xff, 0x93, 0xe4, 0xce, 0xf7, 0x1e, - 0x6c, 0xf5, 0x65, 0x7c, 0x90, 0x21, 0x55, 0x78, 0x60, 0x5b, 0x40, 0x36, 0xc0, 0xe3, 0xcc, 0xe5, - 0x7b, 0x9c, 0x91, 0xb7, 0xa0, 0x29, 0xa3, 0x21, 0x8e, 0xe8, 0x80, 0x33, 0x47, 0xb1, 0x62, 0x81, - 0x23, 0xa6, 0xd5, 0x14, 0x8d, 0xfd, 0x9a, 0x55, 0x53, 0x34, 0x26, 0x04, 0xea, 0x2a, 0x1f, 0xa3, - 0x5f, 0x37, 0x90, 0x79, 0x26, 0x1f, 0x43, 0x23, 0x4a, 0x06, 0x06, 0x5e, 0x32, 0xed, 0x7b, 0xa7, - 0xd4, 0x36, 0x57, 0xc5, 0x4b, 0x5d, 0xe3, 0x8b, 0x4a, 0xb8, 0x1c, 0x25, 0x9f, 0x6b, 0x86, 0xc7, - 0xb0, 0x42, 0x45, 0x6e, 0x29, 0x96, 0xcb, 0x27, 0xe0, 0x45, 0x25, 0x6c, 0x50, 0x91, 0x9b, 0x94, - 0x36, 0x40, 0x94, 0x0a, 0x95, 0xa5, 0x49, 0x82, 0x99, 0xdf, 0xd8, 0xa9, 0x75, 0x9b, 0xe1, 0x02, - 0xf2, 0xbc, 0xe1, 0x6c, 0xe9, 0xbc, 0x0b, 0x7e, 0xd1, 0x84, 0x10, 0xe5, 0x38, 0x15, 0x12, 0x8b, - 0x66, 0x74, 0x7e, 0xaa, 0x9a, 0xc9, 0xb4, 0xc1, 0xc7, 0xc6, 0x85, 0x1b, 0x86, 0xcd, 0x1c, 0xf0, - 0x16, 0x1c, 0x20, 0x50, 0x17, 0x74, 0x84, 0xce, 0x28, 0xf3, 0x4c, 0x7c, 0x68, 0x4c, 0x31, 0x93, - 0x3c, 0x15, 0xce, 0xac, 0xd9, 0x92, 0xbc, 0x0d, 0x40, 0x95, 0xca, 0x06, 0x3a, 0x4c, 0xfa, 0x4b, - 0xa6, 0xf4, 0xa6, 0x46, 0x3e, 0xd3, 0x40, 0x61, 0x67, 0xcb, 0xc5, 0x9d, 0x75, 0x76, 0xe1, 0x7e, - 0xa1, 0xc6, 0xd2, 0xfd, 0xfc, 0x51, 0x83, 0xb5, 0x79, 0xec, 0x21, 0x67, 0x37, 0x36, 0x73, 0x5d, - 0xcb, 0x2b, 0x6a, 0x91, 0x6f, 0xe0, 0xde, 0x14, 0x33, 0x7e, 0xca, 0x23, 0xaa, 0x78, 0x2a, 0x06, - 0x23, 0x54, 0xc3, 0x94, 0xb9, 0xaf, 0xe3, 0xbd, 0xd2, 0x36, 0xbf, 0x5c, 0xc8, 0xe9, 0x9b, 0x94, - 0x90, 0x4c, 0x6f, 0x60, 0xe4, 0x21, 0x6c, 0xd0, 0x89, 0x1a, 0xa2, 0x50, 0x0e, 0xf7, 0xeb, 0xa6, - 0x82, 0x02, 0x4a, 0x76, 0x61, 0x8b, 0x4a, 0x89, 0xd9, 0x62, 0x09, 0xd6, 0xb6, 0xcd, 0x39, 0xee, - 0x28, 0x9f, 0xc0, 0x1b, 0x11, 0x1d, 0xd3, 0x13, 0x9e, 0x70, 0x95, 0x0f, 0xb8, 0x98, 0xa6, 0x8e, - 0xd9, 0xfa, 0xb8, 0x7d, 0xf5, 0xf2, 0x68, 0xfe, 0xae, 0x90, 0xc4, 0x30, 0xc1, 0xd8, 0x26, 0x35, - 0x8a, 0x49, 0x87, 0xf3, 0x77, 0xe4, 0x01, 0xac, 0x9f, 0x61, 0x3e, 0xa0, 0x71, 0x86, 0x38, 0x42, - 0xa1, 0xfc, 0x15, 0x13, 0xbc, 0x76, 0x86, 0xf9, 0xfe, 0x0c, 0x23, 0x1d, 0x58, 0xa7, 0x89, 0x4c, - 0x07, 0x67, 0x22, 0xfd, 0x4e, 0x0c, 0xa8, 0xf4, 0x9b, 0x26, 0x68, 0x55, 0x83, 0x9f, 0x6a, 0x6c, - 0x5f, 0x92, 0x67, 0xd0, 0x90, 0x98, 0x4d, 0x79, 0x84, 0x3e, 0x18, 0x5f, 0x1f, 0x94, 0xfa, 0x7a, - 0xc8, 0xd9, 0xb1, 0x0d, 0x0d, 0x67, 0x39, 0x7a, 0xce, 0x74, 0xc3, 0xf0, 0x5c, 0xf9, 0xab, 0x86, - 0x7c, 0xb6, 0xec, 0x3c, 0x84, 0xed, 0xc5, 0xe6, 0x97, 0x4e, 0xc9, 0x8f, 0x75, 0x33, 0x25, 0x5f, - 0x8c, 0xd9, 0xff, 0x53, 0xf2, 0x9f, 0x9b, 0x12, 0x7d, 0x1a, 0xb9, 0x83, 0x49, 0xdf, 0x00, 0x6b, - 0xa6, 0xe9, 0x4d, 0x87, 0x1c, 0x31, 0x37, 0x44, 0xf3, 0xd9, 0x28, 0x1b, 0xa2, 0xbd, 0x9f, 0x6b, - 0x50, 0xeb, 0xcb, 0x98, 0x24, 0xb0, 0x7e, 0xfd, 0xc2, 0xe9, 0xde, 0xf5, 0x0e, 0x6d, 0x3d, 0xfe, - 0xbb, 0xc8, 0xbf, 0x3e, 0xc0, 0xbf, 0x85, 0xb5, 0x6b, 0x87, 0xf5, 0xdd, 0xc5, 0xde, 0xbf, 0x5d, - 0xac, 0x70, 0xb8, 0x32, 0x68, 0x5e, 0x1d, 0xa4, 0x77, 0x17, 0x7a, 0x74, 0xbb, 0xd0, 0xa2, 0xaf, - 0x0c, 0x9a, 0x57, 0x1f, 0xe2, 0xbf, 0xa4, 0x72, 0xa3, 0x7b, 0xcf, 0x0f, 0x7e, 0xb9, 0x68, 0x57, - 0x5f, 0x5f, 0xb4, 0xab, 0xbf, 0x5d, 0xb4, 0xab, 0x3f, 0x5c, 0xb6, 0x2b, 0xaf, 0x2f, 0xdb, 0x95, - 0x5f, 0x2f, 0xdb, 0x95, 0xaf, 0x77, 0x63, 0xae, 0x86, 0x93, 0x93, 0x20, 0x4a, 0x47, 0x3d, 0xf7, - 0xe3, 0x4d, 0xff, 0x7d, 0xa4, 0x19, 0x7b, 0xe7, 0x0e, 0xd2, 0x97, 0x9e, 0x3c, 0x59, 0x36, 0x77, - 0xf3, 0x93, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xef, 0xea, 0x9d, 0xf9, 0x3a, 0x0a, 0x00, 0x00, + // 879 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xb7, 0xd7, 0x4e, 0x1c, 0xbf, 0xfc, 0xd5, 0x34, 0xa8, 0xdb, 0x20, 0xac, 0xc8, 0x15, 0x95, + 0x03, 0xea, 0x9a, 0xa6, 0x12, 0xaa, 0x40, 0x95, 0x9a, 0x26, 0x48, 0x8d, 0x90, 0x41, 0xda, 0x40, + 0x41, 0xa8, 0x92, 0x35, 0xde, 0x7d, 0x59, 0x4f, 0xb3, 0x9e, 0x75, 0x77, 0xc6, 0x26, 0x7b, 0xe6, + 0x0b, 0x70, 0xe6, 0xc8, 0x95, 0x2f, 0xc2, 0xb1, 0x47, 0x8e, 0x55, 0x22, 0x3e, 0x05, 0x17, 0x34, + 0x7f, 0xec, 0x38, 0x6b, 0x96, 0x3a, 0x82, 0x1b, 0x5c, 0x92, 0x99, 0xdf, 0xbc, 0xf7, 0x7e, 0xef, + 0xfd, 0xe6, 0xed, 0x1b, 0xc3, 0x46, 0xd0, 0xc7, 0x57, 0x61, 0x5b, 0x9e, 0x7b, 0xc3, 0x34, 0x91, + 0x09, 0xb9, 0xad, 0xf7, 0x2c, 0xf4, 0xf4, 0x7f, 0x9e, 0x84, 0x68, 0x56, 0x3b, 0x77, 0xa2, 0x24, + 0x89, 0x62, 0x6c, 0x6b, 0xb3, 0xde, 0xe8, 0xb4, 0x4d, 0x79, 0x66, 0x7c, 0x76, 0x36, 0x4d, 0x0c, + 0xe5, 0x65, 0x80, 0x5b, 0x06, 0x08, 0x52, 0x0c, 0x8f, 0xf0, 0xd4, 0x80, 0xcd, 0x37, 0x65, 0xb8, + 0xd3, 0x11, 0xd1, 0x37, 0x29, 0x93, 0xe8, 0xe3, 0xab, 0x11, 0x0a, 0x79, 0xc2, 0x22, 0xfe, 0x65, + 0xef, 0x25, 0x06, 0x92, 0xb4, 0xa0, 0x1a, 0x52, 0x49, 0xdd, 0xf2, 0x6e, 0xb9, 0xb5, 0xba, 0xbf, + 0xed, 0x19, 0x36, 0x6f, 0xc2, 0xe6, 0x1d, 0xf0, 0xcc, 0xd7, 0x16, 0xe4, 0x05, 0xac, 0x0c, 0x50, + 0x52, 0x6d, 0xed, 0xec, 0x56, 0x5a, 0xab, 0xfb, 0x4f, 0xbc, 0x82, 0xa4, 0xbd, 0x42, 0x3e, 0xaf, + 0x63, 0x43, 0x7c, 0xc6, 0x65, 0x9a, 0xf9, 0xd3, 0x88, 0x3b, 0x9f, 0xc2, 0xfa, 0xb5, 0x23, 0xb2, + 0x05, 0x95, 0x33, 0xcc, 0x74, 0x5e, 0x75, 0x5f, 0x2d, 0xc9, 0x36, 0x2c, 0x8d, 0x69, 0x3c, 0x42, + 0xd7, 0xd1, 0x98, 0xd9, 0x7c, 0xe2, 0x3c, 0x2a, 0x37, 0x7f, 0x77, 0x60, 0x33, 0x47, 0x79, 0x83, + 0xc2, 0xbe, 0x05, 0x10, 0x2c, 0xe2, 0x54, 0x8e, 0x52, 0x14, 0xb6, 0xb4, 0x47, 0x8b, 0x96, 0xe6, + 0x9d, 0x4c, 0x5d, 0x4d, 0x49, 0x33, 0xb1, 0x88, 0x3f, 0x23, 0x59, 0x45, 0xc7, 0xfd, 0x78, 0xe1, + 0xb8, 0x45, 0x42, 0x3d, 0x86, 0xcd, 0x1c, 0xe5, 0x4d, 0xa4, 0xfa, 0x67, 0x3a, 0xff, 0xe0, 0xc0, + 0x56, 0x47, 0x44, 0x87, 0x29, 0x52, 0x89, 0x87, 0xa6, 0xcb, 0xc8, 0x06, 0x38, 0x2c, 0xb4, 0xfe, + 0x0e, 0x0b, 0xc9, 0xbb, 0x50, 0x17, 0x41, 0x1f, 0x07, 0xb4, 0xcb, 0x42, 0x1b, 0x62, 0xc5, 0x00, + 0xc7, 0xa1, 0x62, 0x93, 0x34, 0x72, 0x2b, 0x86, 0x4d, 0xd2, 0x88, 0x10, 0xa8, 0xca, 0x6c, 0x88, + 0x6e, 0x55, 0x43, 0x7a, 0x4d, 0x9e, 0x40, 0x2d, 0x88, 0xbb, 0x1a, 0x5e, 0xd2, 0xd7, 0xf7, 0x7e, + 0xa1, 0x6c, 0x36, 0x8b, 0xe7, 0x2a, 0xc7, 0x67, 0x25, 0x7f, 0x39, 0x88, 0xbf, 0x52, 0x11, 0x1e, + 0xc0, 0x0a, 0xe5, 0x99, 0x09, 0xb1, 0x5c, 0xdc, 0x01, 0xcf, 0x4a, 0x7e, 0x8d, 0xf2, 0x4c, 0xbb, + 0x34, 0x00, 0x82, 0x84, 0xcb, 0x34, 0x89, 0x63, 0x4c, 0xdd, 0xda, 0x6e, 0xa5, 0x55, 0xf7, 0x67, + 0x90, 0xa7, 0x35, 0x2b, 0x4b, 0xf3, 0x03, 0x70, 0xf3, 0x22, 0xf8, 0x28, 0x86, 0x09, 0x17, 0x98, + 0x17, 0xa3, 0xf9, 0x73, 0x59, 0x77, 0xa6, 0x31, 0x3e, 0xd1, 0x2a, 0xcc, 0x09, 0x36, 0x51, 0xc0, + 0x99, 0x51, 0x80, 0x40, 0x95, 0xd3, 0x01, 0x5a, 0xa1, 0xf4, 0x9a, 0xb8, 0x50, 0x1b, 0x63, 0x2a, + 0x58, 0xc2, 0xad, 0x58, 0x93, 0x2d, 0x79, 0x0f, 0x80, 0x4a, 0x99, 0x76, 0x95, 0x99, 0x70, 0x97, + 0x74, 0xea, 0x75, 0x85, 0x7c, 0xa1, 0x80, 0x5c, 0x65, 0xcb, 0xf9, 0xca, 0x9a, 0x7b, 0x70, 0x3b, + 0x97, 0x63, 0x61, 0x3d, 0x7f, 0x54, 0x60, 0x6d, 0x6a, 0x7b, 0xc4, 0xc2, 0xb9, 0x62, 0xae, 0x73, + 0x39, 0x79, 0x2e, 0xf2, 0x02, 0x6e, 0x8d, 0x31, 0x65, 0xa7, 0x2c, 0xa0, 0x92, 0x25, 0xbc, 0x3b, + 0x40, 0xd9, 0x4f, 0x42, 0xfb, 0x75, 0x7c, 0x58, 0x78, 0xcd, 0xcf, 0x67, 0x7c, 0x3a, 0xda, 0xc5, + 0x27, 0xe3, 0x39, 0x8c, 0xdc, 0x83, 0x0d, 0x3a, 0x92, 0x7d, 0xe4, 0xd2, 0xe2, 0x6e, 0x55, 0x67, + 0x90, 0x43, 0xc9, 0x1e, 0x6c, 0x51, 0x21, 0x30, 0x9d, 0x4d, 0xc1, 0xc8, 0xb6, 0x39, 0xc5, 0x6d, + 0xc8, 0x87, 0xf0, 0x4e, 0x40, 0x87, 0xb4, 0xc7, 0x62, 0x26, 0xb3, 0x2e, 0xe3, 0xe3, 0xc4, 0x46, + 0x36, 0x3a, 0x6e, 0x5f, 0x1d, 0x1e, 0x4f, 0xcf, 0x72, 0x4e, 0x21, 0xc6, 0x18, 0x19, 0xa7, 0x5a, + 0xde, 0xe9, 0x68, 0x7a, 0x46, 0xee, 0xc2, 0xfa, 0x19, 0x66, 0x5d, 0x1a, 0xa5, 0x88, 0x03, 0xe4, + 0xd2, 0x5d, 0xd1, 0xc6, 0x6b, 0x67, 0x98, 0x1d, 0x4c, 0x30, 0xd2, 0x84, 0x75, 0x1a, 0x8b, 0xa4, + 0x7b, 0xc6, 0x93, 0xef, 0x79, 0x97, 0x0a, 0xb7, 0xae, 0x8d, 0x56, 0x15, 0xf8, 0xb9, 0xc2, 0x0e, + 0x04, 0x79, 0x0c, 0x35, 0x81, 0xe9, 0x98, 0x05, 0xe8, 0x82, 0xd6, 0xf5, 0x6e, 0xa1, 0xae, 0x47, + 0x2c, 0x3c, 0x31, 0xa6, 0xfe, 0xc4, 0x47, 0xf5, 0x99, 0xba, 0x30, 0x3c, 0x97, 0xee, 0xaa, 0x0e, + 0x3e, 0xd9, 0x36, 0xef, 0xc1, 0xf6, 0xec, 0xe5, 0x17, 0x76, 0xc9, 0x4f, 0x55, 0xdd, 0x25, 0x5f, + 0x0f, 0xc3, 0xff, 0xbb, 0xe4, 0x3f, 0xd7, 0x25, 0x6a, 0x1a, 0xd9, 0xc1, 0xa4, 0x5e, 0x80, 0x35, + 0x7d, 0xe9, 0x75, 0x8b, 0x1c, 0x87, 0xb6, 0x89, 0xa6, 0xbd, 0x51, 0xd4, 0x44, 0xfb, 0xbf, 0x54, + 0xa0, 0xd2, 0x11, 0x11, 0x89, 0x61, 0xfd, 0xfa, 0x83, 0xd3, 0x5a, 0xf4, 0x0d, 0xdd, 0x79, 0xf0, + 0x77, 0x96, 0x7f, 0x3d, 0xc0, 0x5f, 0xc2, 0xda, 0xb5, 0x61, 0xbd, 0x38, 0xd9, 0x47, 0x6f, 0x27, + 0xcb, 0x0d, 0xd7, 0x10, 0xea, 0x57, 0x83, 0x74, 0x71, 0xa2, 0xfb, 0x6f, 0x27, 0x9a, 0xd5, 0x35, + 0x84, 0xfa, 0xd5, 0x87, 0xf8, 0x2f, 0xb1, 0xcc, 0xdd, 0xde, 0xd3, 0xc3, 0x5f, 0x2f, 0x1a, 0xe5, + 0xd7, 0x17, 0x8d, 0xf2, 0x9b, 0x8b, 0x46, 0xf9, 0xc7, 0xcb, 0x46, 0xe9, 0xf5, 0x65, 0xa3, 0xf4, + 0xdb, 0x65, 0xa3, 0xf4, 0xdd, 0x5e, 0xc4, 0x64, 0x7f, 0xd4, 0xf3, 0x82, 0x64, 0xd0, 0xb6, 0xbf, + 0x4f, 0xd5, 0xdf, 0xfb, 0x2a, 0x62, 0xfb, 0xdc, 0x42, 0xea, 0xd1, 0x13, 0xbd, 0x65, 0xfd, 0x36, + 0x3f, 0xfc, 0x33, 0x00, 0x00, 0xff, 0xff, 0x44, 0xda, 0x63, 0x6a, 0x1d, 0x0b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -993,6 +1049,60 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Metadata: "cheqd/tx.proto", } +func (m *MsgWriteRequestSignObject) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgWriteRequestSignObject) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgWriteRequestSignObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Metadata) > 0 { + for k := range m.Metadata { + v := m.Metadata[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintTx(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintTx(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintTx(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x12 + } + } + if m.Data != nil { + { + size, err := m.Data.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *MsgWriteRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1644,6 +1754,27 @@ func encodeVarintTx(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } +func (m *MsgWriteRequestSignObject) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Data != nil { + l = m.Data.Size() + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Metadata) > 0 { + for k, v := range m.Metadata { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovTx(uint64(len(k))) + 1 + len(v) + sovTx(uint64(len(v))) + n += mapEntrySize + 1 + sovTx(uint64(mapEntrySize)) + } + } + return n +} + func (m *MsgWriteRequest) Size() (n int) { if m == nil { return 0 @@ -1976,6 +2107,219 @@ func sovTx(x uint64) (n int) { func sozTx(x uint64) (n int) { return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } +func (m *MsgWriteRequestSignObject) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgWriteRequestSignObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgWriteRequestSignObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Data == nil { + m.Data = &types.Any{} + } + if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthTx + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthTx + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthTx + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthTx + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Metadata[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 From 1771529d9b4d91daddfc44f4a9a1c0e2a4858fbb Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Wed, 20 Oct 2021 23:58:09 +0300 Subject: [PATCH 49/74] added fixtures --- x/cheqd/tests/constants.go | 14 ++ x/cheqd/tests/create_did_test.go | 246 +++++++++++++++---------------- 2 files changed, 135 insertions(+), 125 deletions(-) create mode 100644 x/cheqd/tests/constants.go diff --git a/x/cheqd/tests/constants.go b/x/cheqd/tests/constants.go new file mode 100644 index 000000000..f667a960f --- /dev/null +++ b/x/cheqd/tests/constants.go @@ -0,0 +1,14 @@ +package tests + +const ( + AliceDID = "did:cheqd:test:alice" + BobDID = "did:cheqd:test:bob" + CharlieDID = "did:cheqd:test:charlie" + AliceKey1 = AliceDID + "#key-1" + BobKey1 = BobDID + "#key-1" + BobKey2 = BobDID + "#key-2" + BobKey3 = BobDID + "#key-3" + CharlieKey1 = CharlieDID + "#key-1" + CharlieKey2 = CharlieDID + "#key-2" + CharlieKey3 = CharlieDID + "#key-3" +) diff --git a/x/cheqd/tests/create_did_test.go b/x/cheqd/tests/create_did_test.go index 4187b984f..9a65386bd 100644 --- a/x/cheqd/tests/create_did_test.go +++ b/x/cheqd/tests/create_did_test.go @@ -4,6 +4,7 @@ import ( "crypto/ed25519" "github.com/btcsuite/btcutil/base58" "github.com/cheqd/cheqd-node/x/cheqd/types" + "github.com/stretchr/testify/require" "testing" ) @@ -15,83 +16,83 @@ func TestCreateDID(t *testing.T) { }{ { keys: map[string]KeyPair{ - "did:cheqd:test:alice#key-1": GenerateKeyPair(), + AliceKey1: GenerateKeyPair(), }, - signers: []string{"did:cheqd:test:alice#key-1"}, + signers: []string{AliceKey1}, msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:alice", - Authentication: []string{"did:cheqd:test:alice#key-1"}, + Id: AliceDID, + Authentication: []string{AliceKey1}, VerificationMethod: []*types.VerificationMethod{ { - Id: "did:cheqd:test:alice#key-1", + Id: AliceKey1, Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:alice", + Controller: AliceDID, }, }, }, }, { keys: map[string]KeyPair{ - "did:cheqd:test:bob#key-1": GenerateKeyPair(), - "did:cheqd:test:bob#key-2": GenerateKeyPair(), - "did:cheqd:test:bob#key-3": GenerateKeyPair(), + BobKey1: GenerateKeyPair(), + BobKey2: GenerateKeyPair(), + BobKey3: GenerateKeyPair(), }, - signers: []string{"did:cheqd:test:bob#key-2"}, + signers: []string{BobKey2}, msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:bob", + Id: BobDID, Authentication: []string{ - "did:cheqd:test:bob#key-1", - "did:cheqd:test:bob#key-2", - "did:cheqd:test:bob#key-3", + BobKey1, + BobKey2, + BobKey3, }, VerificationMethod: []*types.VerificationMethod{ { - Id: "did:cheqd:test:bob#key-1", + Id: BobKey1, Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:bob", + Controller: BobDID, }, { - Id: "did:cheqd:test:bob#key-2", + Id: BobKey2, Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:bob", + Controller: BobDID, }, { - Id: "did:cheqd:test:bob#key-3", + Id: BobKey3, Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:bob", + Controller: BobDID, }, }, }, }, { keys: map[string]KeyPair{ - "did:cheqd:test:charlie#key-1": GenerateKeyPair(), - "did:cheqd:test:charlie#key-2": GenerateKeyPair(), - "did:cheqd:test:charlie#key-3": GenerateKeyPair(), + CharlieKey1: GenerateKeyPair(), + CharlieKey2: GenerateKeyPair(), + CharlieKey3: GenerateKeyPair(), }, - signers: []string{"did:cheqd:test:charlie#key-2"}, + signers: []string{CharlieKey2}, msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:charlie", + Id: CharlieDID, Authentication: []string{ - "did:cheqd:test:charlie#key-1", - "did:cheqd:test:charlie#key-2", - "did:cheqd:test:charlie#key-3", + CharlieKey1, + CharlieKey2, + CharlieKey3, }, VerificationMethod: []*types.VerificationMethod{ { - Id: "did:cheqd:test:charlie#key-1", + Id: CharlieKey1, Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:bob", + Controller: BobDID, }, { - Id: "did:cheqd:test:charlie#key-2", + Id: CharlieKey2, Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:bob", + Controller: BobDID, }, { - Id: "did:cheqd:test:charlie#key-3", + Id: CharlieKey3, Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:bob", + Controller: BobDID, }, }, }, @@ -99,8 +100,7 @@ func TestCreateDID(t *testing.T) { } setup := Setup() - - var prefilledPrivateKeys = map[string]map[string]ed25519.PrivateKey{} + keys := map[string]KeyPair{} for _, prefilled := range prefilledDids { msg := prefilled.msg @@ -112,106 +112,102 @@ func TestCreateDID(t *testing.T) { signerKeys := map[string]ed25519.PrivateKey{} for _, signer := range prefilled.signers { signerKeys[signer] = prefilled.keys[signer].PrivateKey + keys[signer] = prefilled.keys[signer] } - prefilledPrivateKeys[msg.Id] = signerKeys _, _ = setup.SendCreateDid(msg, signerKeys) } - /* - cases := []struct { - valid bool - name string - keys map[string]KeyPair - signers []string - msg *types.MsgCreateDid - errMsg string - }{ - { - valid: true, - name: "Create DID works", - keys: map[string]KeyPair{ - "did:cheqd:test:123456qwertyui#key-1" : GenerateKeyPair(), - }, - signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui", - Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, - VerificationMethod: []*types.VerificationMethod { - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, + cases := []struct { + valid bool + name string + keys map[string]KeyPair + signers []string + msg *types.MsgCreateDid + errMsg string + }{ + { + valid: true, + name: "Create DID works", + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui#key-1": GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", }, }, }, - { - valid: true, - name: "Create DID with controller works", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string {"did:cheqd:test:alice", "did:cheqd:test:bob"}, - }, - signers: []string {"did:cheqd:test:alice#key-1", "did:cheqd:test:bob"}, - keys: map {prefilledPrivateKeys[], + }, + { + valid: true, + name: "Create DID with controller works", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID}, }, - { - valid: false, - name: "DID Doc already exists", - keys: map[string]KeyPair{ - "did:cheqd:test:123456qwertyui#key-1" : GenerateKeyPair(), - }, - signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui", - Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, - VerificationMethod: []*types.VerificationMethod { - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, + signers: []string{AliceKey1, BobKey2}, + }, + { + valid: false, + name: "DID Doc already exists", + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui#key-1": GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", }, }, - errMsg: "DID DOC already exists for DID did:cheqd:test:123456qwertyui: DID Doc exists", }, - } - - - - for _, tc := range cases { - t.Run(tc.name, func(t *testing.T) { - msg := tc.msg - - for i, key := range msg.Authentication { - msg.VerificationMethod[i].PublicKeyMultibase = "z" + base58.Encode(tc.keys[key].PublicKey) - } - - signerKeys := map[string]ed25519.PrivateKey{} - for _, signer := range tc.signers { - signerKeys[signer] = tc.keys[signer].PrivateKey - } - - did, err := setup.SendCreateDid(msg, signerKeys) + errMsg: "DID DOC already exists for DID did:cheqd:test:123456qwertyui: DID Doc exists", + }, + } - if tc.valid { - require.Nil(t, err) - require.Equal(t, did.Id, did.Id) - require.Equal(t, did.Controller, did.Controller) - require.Equal(t, did.VerificationMethod, did.VerificationMethod) - require.Equal(t, did.Authentication, did.Authentication) - require.Equal(t, did.AssertionMethod, did.AssertionMethod) - require.Equal(t, did.CapabilityInvocation, did.CapabilityInvocation) - require.Equal(t, did.CapabilityDelegation, did.CapabilityDelegation) - require.Equal(t, did.KeyAgreement, did.KeyAgreement) - require.Equal(t, did.AlsoKnownAs, did.AlsoKnownAs) - require.Equal(t, did.Service, did.Service) - require.Equal(t, did.Context, did.Context) - } else { - require.Error(t, err) - require.Equal(t, tc.errMsg, err.Error()) - } - }) - }*/ + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + msg := tc.msg + + for i, key := range msg.Authentication { + msg.VerificationMethod[i].PublicKeyMultibase = "z" + base58.Encode(tc.keys[key].PublicKey) + } + + signerKeys := map[string]ed25519.PrivateKey{} + for _, signer := range tc.signers { + signerKeys[signer] = tc.keys[signer].PrivateKey + } + + did, err := setup.SendCreateDid(msg, signerKeys) + + if tc.valid { + require.Nil(t, err) + require.Equal(t, did.Id, did.Id) + require.Equal(t, did.Controller, did.Controller) + require.Equal(t, did.VerificationMethod, did.VerificationMethod) + require.Equal(t, did.Authentication, did.Authentication) + require.Equal(t, did.AssertionMethod, did.AssertionMethod) + require.Equal(t, did.CapabilityInvocation, did.CapabilityInvocation) + require.Equal(t, did.CapabilityDelegation, did.CapabilityDelegation) + require.Equal(t, did.KeyAgreement, did.KeyAgreement) + require.Equal(t, did.AlsoKnownAs, did.AlsoKnownAs) + require.Equal(t, did.Service, did.Service) + require.Equal(t, did.Context, did.Context) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + }) + } } From 3a02b6da3b5a1f9855042ff05da1c43b950b9477 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 21 Oct 2021 01:08:16 +0300 Subject: [PATCH 50/74] added more tests for did creation --- x/cheqd/handler.go | 4 + x/cheqd/keeper/verify.go | 5 + x/cheqd/tests/constants.go | 2 + x/cheqd/tests/create_did_test.go | 320 +++++++++++++++++++++++++++++-- x/cheqd/types/messages_did.go | 9 + 5 files changed, 328 insertions(+), 12 deletions(-) diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index ea1cfe002..70266d3c8 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -21,6 +21,10 @@ func NewHandler(k keeper.Keeper) sdk.Handler { return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } + if err := parsedMsg.ValidateBasic(); err != nil { + return nil, err + } + switch parsedMsg.Data.TypeUrl { // this line is used by starport scaffolding # 1 case types.MessageCreateCredDef: diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index de05f8b52..b9bf83213 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -27,6 +27,11 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s return types.ErrDidDocNotFound.Wrap(signer.Signer) } + didDoc := state.GetDid() + if didDoc == nil { + return types.ErrDidDocNotFound.Wrap(signer.Signer) + } + signer.Authentication = state.GetDid().Authentication signer.VerificationMethod = state.GetDid().VerificationMethod } diff --git a/x/cheqd/tests/constants.go b/x/cheqd/tests/constants.go index f667a960f..8edd81904 100644 --- a/x/cheqd/tests/constants.go +++ b/x/cheqd/tests/constants.go @@ -5,9 +5,11 @@ const ( BobDID = "did:cheqd:test:bob" CharlieDID = "did:cheqd:test:charlie" AliceKey1 = AliceDID + "#key-1" + AliceKey2 = AliceDID + "#key-2" BobKey1 = BobDID + "#key-1" BobKey2 = BobDID + "#key-2" BobKey3 = BobDID + "#key-3" + BobKey4 = BobDID + "#key-4" CharlieKey1 = CharlieDID + "#key-1" CharlieKey2 = CharlieDID + "#key-2" CharlieKey3 = CharlieDID + "#key-3" diff --git a/x/cheqd/tests/create_did_test.go b/x/cheqd/tests/create_did_test.go index 9a65386bd..01be32f8e 100644 --- a/x/cheqd/tests/create_did_test.go +++ b/x/cheqd/tests/create_did_test.go @@ -17,6 +17,7 @@ func TestCreateDID(t *testing.T) { { keys: map[string]KeyPair{ AliceKey1: GenerateKeyPair(), + AliceKey2: GenerateKeyPair(), }, signers: []string{AliceKey1}, msg: &types.MsgCreateDid{ @@ -36,6 +37,7 @@ func TestCreateDID(t *testing.T) { BobKey1: GenerateKeyPair(), BobKey2: GenerateKeyPair(), BobKey3: GenerateKeyPair(), + BobKey4: GenerateKeyPair(), }, signers: []string{BobKey2}, msg: &types.MsgCreateDid{ @@ -45,6 +47,9 @@ func TestCreateDID(t *testing.T) { BobKey2, BobKey3, }, + CapabilityDelegation: []string{ + BobKey4, + }, VerificationMethod: []*types.VerificationMethod{ { Id: BobKey1, @@ -61,6 +66,11 @@ func TestCreateDID(t *testing.T) { Type: "Ed25519VerificationKey2020", Controller: BobDID, }, + { + Id: BobKey4, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, }, }, }, @@ -105,14 +115,17 @@ func TestCreateDID(t *testing.T) { for _, prefilled := range prefilledDids { msg := prefilled.msg - for i, key := range msg.Authentication { - msg.VerificationMethod[i].PublicKeyMultibase = "z" + base58.Encode(prefilled.keys[key].PublicKey) + for _, vm := range msg.VerificationMethod { + vm.PublicKeyMultibase = "z" + base58.Encode(prefilled.keys[vm.Id].PublicKey) } signerKeys := map[string]ed25519.PrivateKey{} for _, signer := range prefilled.signers { signerKeys[signer] = prefilled.keys[signer].PrivateKey - keys[signer] = prefilled.keys[signer] + } + + for keyId, key := range prefilled.keys { + keys[keyId] = key } _, _ = setup.SendCreateDid(msg, signerKeys) @@ -128,31 +141,270 @@ func TestCreateDID(t *testing.T) { }{ { valid: true, - name: "Create DID works", + name: "Works", + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui2#key-1": GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:123456qwertyui2#key-1"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui2", + Authentication: []string{"did:cheqd:test:123456qwertyui2#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui2#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui2", + }, + }, + }, + }, + { + valid: true, + name: "With controller works", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID}, + }, + signers: []string{AliceKey1, BobKey3}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + BobKey3: keys[BobKey3], + }, + }, + { + valid: true, + name: "Full message works", keys: map[string]KeyPair{ "did:cheqd:test:123456qwertyui#key-1": GenerateKeyPair(), + "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), + "did:cheqd:test:123456qwertyui#key-3": GenerateKeyPair(), + "did:cheqd:test:123456qwertyui#key-4": GenerateKeyPair(), + "did:cheqd:test:123456qwertyui#key-5": GenerateKeyPair(), + AliceKey1: keys[AliceKey1], + BobKey1: keys[BobKey1], + BobKey2: keys[BobKey2], + BobKey3: keys[BobKey3], + CharlieKey1: keys[CharlieKey1], + CharlieKey2: keys[CharlieKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{ + "did:cheqd:test:123456qwertyui#key-1", + "did:cheqd:test:123456qwertyui#key-5", + AliceKey1, + BobKey1, + BobKey2, + BobKey3, + CharlieKey1, + CharlieKey2, + CharlieKey3, }, - signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui", - Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{ + "did:cheqd:test:123456qwertyui#key-1", + "did:cheqd:test:123456qwertyui#key-5", + }, + Context: []string{"abc", "de"}, + CapabilityInvocation: []string{"did:cheqd:test:123456qwertyui#key-2"}, + CapabilityDelegation: []string{"did:cheqd:test:123456qwertyui#key-3"}, + KeyAgreement: []string{"did:cheqd:test:123456qwertyui#key-4"}, + AlsoKnownAs: []string{"did:cheqd:test:123456eqweqwe"}, + Service: []*types.DidService{ + { + Id: "did:cheqd:test:123456qwertyui#service-1", + Type: "DIDCommMessaging", + ServiceEndpoint: "ServiceEndpoint", + }, + }, + Controller: []string{"did:cheqd:test:123456qwertyui", AliceDID, BobDID, CharlieDID}, VerificationMethod: []*types.VerificationMethod{ { Id: "did:cheqd:test:123456qwertyui#key-1", Type: "Ed25519VerificationKey2020", Controller: "did:cheqd:test:123456qwertyui", }, + { + Id: "did:cheqd:test:123456qwertyui#key-2", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + { + Id: "did:cheqd:test:123456qwertyui#key-3", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + { + Id: "did:cheqd:test:123456qwertyui#key-4", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + { + Id: "did:cheqd:test:123456qwertyui#key-5", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, }, }, }, { - valid: true, - name: "Create DID with controller works", + valid: false, + name: "Second controller did not sign request", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID}, + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + }, + errMsg: "signature did:cheqd:test:bob not found: invalid signature detected", + }, + { + valid: false, + name: "Bad request", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + }, + errMsg: "The message must contain either a Controller or a Authentication: bad request", + }, + { + valid: false, + name: "No signature", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID}, + }, + errMsg: "Signatures: is required", + }, + { + valid: false, + name: "Empty request", msg: &types.MsgCreateDid{ Id: "did:cheqd:test:controller1", Controller: []string{AliceDID, BobDID}, }, - signers: []string{AliceKey1, BobKey2}, + errMsg: "Signatures: is required", + }, + { + valid: false, + name: "Controller not found", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, "did:cheqd:test:notfound"}, + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + }, + errMsg: "did:cheqd:test:notfound: DID Doc not found", + }, + { + valid: false, + name: "Wrong signature", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID}, + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[BobKey1], + }, + errMsg: "did:cheqd:test:alice: invalid signature detected", + }, + { + valid: false, + name: "Controller verification method not found", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{BobDID}, + }, + signers: []string{BobKey4}, + keys: map[string]KeyPair{ + BobKey4: keys[BobKey4], + }, + errMsg: "Authentication did:cheqd:test:bob#key-4 not found: invalid signature detected", + }, + { + valid: false, + name: "Second controller verification method not found", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID, CharlieDID}, + }, + signers: []string{AliceKey1, BobKey4, CharlieKey3}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + BobKey4: keys[BobKey4], + CharlieKey3: keys[CharlieKey3], + }, + errMsg: "Authentication did:cheqd:test:bob#key-4 not found: invalid signature detected", + }, + { + valid: false, + name: "DID signed by wrong controller", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + }, + errMsg: "signature did:cheqd:test:123456qwertyui not found: invalid signature detected", + }, + { + valid: false, + name: "DID self-signed by not existing verification method", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{"did:cheqd:test:123456qwertyui#key-2"}, + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), + }, + errMsg: "Authentication did:cheqd:test:123456qwertyui#key-2 not found: invalid signature detected", + }, + { + valid: false, + name: "Self-signature not found", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Controller: []string{AliceDID, "did:cheqd:test:123456qwertyui"}, + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{AliceKey1, "did:cheqd:test:123456qwertyui#key-2"}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), + }, + errMsg: "Authentication did:cheqd:test:123456qwertyui#key-2 not found: invalid signature detected", }, { valid: false, @@ -174,14 +426,58 @@ func TestCreateDID(t *testing.T) { }, errMsg: "DID DOC already exists for DID did:cheqd:test:123456qwertyui: DID Doc exists", }, + { + valid: false, + name: "Verification Method ID doesnt match", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, CharlieDID}, + Authentication: []string{"#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{AliceKey1, CharlieKey3}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + CharlieKey3: keys[CharlieKey3], + }, + errMsg: "did:cheqd:test:123456qwertyui#key-1 not belong did:cheqd:test:controller1 DID Doc: invalid verification method", + }, + { + valid: false, + name: "Full Verification Method ID doesnt match", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, CharlieDID}, + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{AliceKey1, CharlieKey3}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + CharlieKey3: keys[CharlieKey3], + }, + errMsg: "did:cheqd:test:123456qwertyui#key-1 not belong did:cheqd:test:controller1 DID Doc: invalid verification method", + }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { msg := tc.msg - for i, key := range msg.Authentication { - msg.VerificationMethod[i].PublicKeyMultibase = "z" + base58.Encode(tc.keys[key].PublicKey) + for _, vm := range msg.VerificationMethod { + vm.PublicKeyMultibase = "z" + base58.Encode(tc.keys[vm.Id].PublicKey) } signerKeys := map[string]ed25519.PrivateKey{} diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 88a628c3e..6ba6eb17f 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -3,6 +3,7 @@ package types import ( "github.com/cheqd/cheqd-node/x/cheqd/utils" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "strings" ) func NewMsgCreateDid( @@ -269,6 +270,10 @@ func ValidateVerificationMethods(namespace string, did string, vms []*Verificati } for i, vm := range vms { + if !strings.HasPrefix(vm.Id, did) { + return ErrBadRequestInvalidVerMethod.Wrapf("%s not belong %s DID Doc", vm.Id, did) + } + if IncludeVerificationMethod(did, vms[i+1:], vm.Id) { return ErrBadRequestInvalidVerMethod.Wrapf("%s is duplicated", vm.Id) } @@ -305,6 +310,10 @@ func ValidateServices(namespace string, did string, services []*DidService) erro } for i, s := range services { + if !strings.HasPrefix(utils.ResolveId(did, s.Id), did) { + return ErrBadRequestInvalidService.Wrapf("%s not belong %s DID Doc", s.Id, did) + } + if IncludeService(did, services[i+1:], s.Id) { return ErrBadRequestInvalidService.Wrapf("%s is duplicated", s.Id) } From 3bc97d0c7a4709d26eb39a2efce735e49e46ca47 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 21 Oct 2021 13:25:43 +0300 Subject: [PATCH 51/74] added update did tests --- x/cheqd/tests/create_did_test.go | 509 ------------- x/cheqd/tests/handler_test.go | 1047 ++++++++++++++++++++++++++- x/cheqd/tests/handler_test_setup.go | 129 +++- 3 files changed, 1158 insertions(+), 527 deletions(-) delete mode 100644 x/cheqd/tests/create_did_test.go diff --git a/x/cheqd/tests/create_did_test.go b/x/cheqd/tests/create_did_test.go deleted file mode 100644 index 01be32f8e..000000000 --- a/x/cheqd/tests/create_did_test.go +++ /dev/null @@ -1,509 +0,0 @@ -package tests - -import ( - "crypto/ed25519" - "github.com/btcsuite/btcutil/base58" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/stretchr/testify/require" - "testing" -) - -func TestCreateDID(t *testing.T) { - prefilledDids := []struct { - keys map[string]KeyPair - signers []string - msg *types.MsgCreateDid - }{ - { - keys: map[string]KeyPair{ - AliceKey1: GenerateKeyPair(), - AliceKey2: GenerateKeyPair(), - }, - signers: []string{AliceKey1}, - msg: &types.MsgCreateDid{ - Id: AliceDID, - Authentication: []string{AliceKey1}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: AliceKey1, - Type: "Ed25519VerificationKey2020", - Controller: AliceDID, - }, - }, - }, - }, - { - keys: map[string]KeyPair{ - BobKey1: GenerateKeyPair(), - BobKey2: GenerateKeyPair(), - BobKey3: GenerateKeyPair(), - BobKey4: GenerateKeyPair(), - }, - signers: []string{BobKey2}, - msg: &types.MsgCreateDid{ - Id: BobDID, - Authentication: []string{ - BobKey1, - BobKey2, - BobKey3, - }, - CapabilityDelegation: []string{ - BobKey4, - }, - VerificationMethod: []*types.VerificationMethod{ - { - Id: BobKey1, - Type: "Ed25519VerificationKey2020", - Controller: BobDID, - }, - { - Id: BobKey2, - Type: "Ed25519VerificationKey2020", - Controller: BobDID, - }, - { - Id: BobKey3, - Type: "Ed25519VerificationKey2020", - Controller: BobDID, - }, - { - Id: BobKey4, - Type: "Ed25519VerificationKey2020", - Controller: BobDID, - }, - }, - }, - }, - { - keys: map[string]KeyPair{ - CharlieKey1: GenerateKeyPair(), - CharlieKey2: GenerateKeyPair(), - CharlieKey3: GenerateKeyPair(), - }, - signers: []string{CharlieKey2}, - msg: &types.MsgCreateDid{ - Id: CharlieDID, - Authentication: []string{ - CharlieKey1, - CharlieKey2, - CharlieKey3, - }, - VerificationMethod: []*types.VerificationMethod{ - { - Id: CharlieKey1, - Type: "Ed25519VerificationKey2020", - Controller: BobDID, - }, - { - Id: CharlieKey2, - Type: "Ed25519VerificationKey2020", - Controller: BobDID, - }, - { - Id: CharlieKey3, - Type: "Ed25519VerificationKey2020", - Controller: BobDID, - }, - }, - }, - }, - } - - setup := Setup() - keys := map[string]KeyPair{} - - for _, prefilled := range prefilledDids { - msg := prefilled.msg - - for _, vm := range msg.VerificationMethod { - vm.PublicKeyMultibase = "z" + base58.Encode(prefilled.keys[vm.Id].PublicKey) - } - - signerKeys := map[string]ed25519.PrivateKey{} - for _, signer := range prefilled.signers { - signerKeys[signer] = prefilled.keys[signer].PrivateKey - } - - for keyId, key := range prefilled.keys { - keys[keyId] = key - } - - _, _ = setup.SendCreateDid(msg, signerKeys) - } - - cases := []struct { - valid bool - name string - keys map[string]KeyPair - signers []string - msg *types.MsgCreateDid - errMsg string - }{ - { - valid: true, - name: "Works", - keys: map[string]KeyPair{ - "did:cheqd:test:123456qwertyui2#key-1": GenerateKeyPair(), - }, - signers: []string{"did:cheqd:test:123456qwertyui2#key-1"}, - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui2", - Authentication: []string{"did:cheqd:test:123456qwertyui2#key-1"}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: "did:cheqd:test:123456qwertyui2#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui2", - }, - }, - }, - }, - { - valid: true, - name: "With controller works", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID, BobDID}, - }, - signers: []string{AliceKey1, BobKey3}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - BobKey3: keys[BobKey3], - }, - }, - { - valid: true, - name: "Full message works", - keys: map[string]KeyPair{ - "did:cheqd:test:123456qwertyui#key-1": GenerateKeyPair(), - "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), - "did:cheqd:test:123456qwertyui#key-3": GenerateKeyPair(), - "did:cheqd:test:123456qwertyui#key-4": GenerateKeyPair(), - "did:cheqd:test:123456qwertyui#key-5": GenerateKeyPair(), - AliceKey1: keys[AliceKey1], - BobKey1: keys[BobKey1], - BobKey2: keys[BobKey2], - BobKey3: keys[BobKey3], - CharlieKey1: keys[CharlieKey1], - CharlieKey2: keys[CharlieKey2], - CharlieKey3: keys[CharlieKey3], - }, - signers: []string{ - "did:cheqd:test:123456qwertyui#key-1", - "did:cheqd:test:123456qwertyui#key-5", - AliceKey1, - BobKey1, - BobKey2, - BobKey3, - CharlieKey1, - CharlieKey2, - CharlieKey3, - }, - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui", - Authentication: []string{ - "did:cheqd:test:123456qwertyui#key-1", - "did:cheqd:test:123456qwertyui#key-5", - }, - Context: []string{"abc", "de"}, - CapabilityInvocation: []string{"did:cheqd:test:123456qwertyui#key-2"}, - CapabilityDelegation: []string{"did:cheqd:test:123456qwertyui#key-3"}, - KeyAgreement: []string{"did:cheqd:test:123456qwertyui#key-4"}, - AlsoKnownAs: []string{"did:cheqd:test:123456eqweqwe"}, - Service: []*types.DidService{ - { - Id: "did:cheqd:test:123456qwertyui#service-1", - Type: "DIDCommMessaging", - ServiceEndpoint: "ServiceEndpoint", - }, - }, - Controller: []string{"did:cheqd:test:123456qwertyui", AliceDID, BobDID, CharlieDID}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - { - Id: "did:cheqd:test:123456qwertyui#key-2", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - { - Id: "did:cheqd:test:123456qwertyui#key-3", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - { - Id: "did:cheqd:test:123456qwertyui#key-4", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - { - Id: "did:cheqd:test:123456qwertyui#key-5", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - }, - }, - }, - { - valid: false, - name: "Second controller did not sign request", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID, BobDID}, - }, - signers: []string{AliceKey1}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - }, - errMsg: "signature did:cheqd:test:bob not found: invalid signature detected", - }, - { - valid: false, - name: "Bad request", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - }, - signers: []string{AliceKey1}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - }, - errMsg: "The message must contain either a Controller or a Authentication: bad request", - }, - { - valid: false, - name: "No signature", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID, BobDID}, - }, - errMsg: "Signatures: is required", - }, - { - valid: false, - name: "Empty request", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID, BobDID}, - }, - errMsg: "Signatures: is required", - }, - { - valid: false, - name: "Controller not found", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID, "did:cheqd:test:notfound"}, - }, - signers: []string{AliceKey1}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - }, - errMsg: "did:cheqd:test:notfound: DID Doc not found", - }, - { - valid: false, - name: "Wrong signature", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID}, - }, - signers: []string{AliceKey1}, - keys: map[string]KeyPair{ - AliceKey1: keys[BobKey1], - }, - errMsg: "did:cheqd:test:alice: invalid signature detected", - }, - { - valid: false, - name: "Controller verification method not found", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{BobDID}, - }, - signers: []string{BobKey4}, - keys: map[string]KeyPair{ - BobKey4: keys[BobKey4], - }, - errMsg: "Authentication did:cheqd:test:bob#key-4 not found: invalid signature detected", - }, - { - valid: false, - name: "Second controller verification method not found", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID, BobDID, CharlieDID}, - }, - signers: []string{AliceKey1, BobKey4, CharlieKey3}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - BobKey4: keys[BobKey4], - CharlieKey3: keys[CharlieKey3], - }, - errMsg: "Authentication did:cheqd:test:bob#key-4 not found: invalid signature detected", - }, - { - valid: false, - name: "DID signed by wrong controller", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui", - Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - }, - }, - signers: []string{AliceKey1}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - }, - errMsg: "signature did:cheqd:test:123456qwertyui not found: invalid signature detected", - }, - { - valid: false, - name: "DID self-signed by not existing verification method", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui", - Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - }, - }, - signers: []string{"did:cheqd:test:123456qwertyui#key-2"}, - keys: map[string]KeyPair{ - "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), - }, - errMsg: "Authentication did:cheqd:test:123456qwertyui#key-2 not found: invalid signature detected", - }, - { - valid: false, - name: "Self-signature not found", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui", - Controller: []string{AliceDID, "did:cheqd:test:123456qwertyui"}, - Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - }, - }, - signers: []string{AliceKey1, "did:cheqd:test:123456qwertyui#key-2"}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), - }, - errMsg: "Authentication did:cheqd:test:123456qwertyui#key-2 not found: invalid signature detected", - }, - { - valid: false, - name: "DID Doc already exists", - keys: map[string]KeyPair{ - "did:cheqd:test:123456qwertyui#key-1": GenerateKeyPair(), - }, - signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:123456qwertyui", - Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - }, - }, - errMsg: "DID DOC already exists for DID did:cheqd:test:123456qwertyui: DID Doc exists", - }, - { - valid: false, - name: "Verification Method ID doesnt match", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID, CharlieDID}, - Authentication: []string{"#key-1"}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - }, - }, - signers: []string{AliceKey1, CharlieKey3}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - CharlieKey3: keys[CharlieKey3], - }, - errMsg: "did:cheqd:test:123456qwertyui#key-1 not belong did:cheqd:test:controller1 DID Doc: invalid verification method", - }, - { - valid: false, - name: "Full Verification Method ID doesnt match", - msg: &types.MsgCreateDid{ - Id: "did:cheqd:test:controller1", - Controller: []string{AliceDID, CharlieDID}, - Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, - VerificationMethod: []*types.VerificationMethod{ - { - Id: "did:cheqd:test:123456qwertyui#key-1", - Type: "Ed25519VerificationKey2020", - Controller: "did:cheqd:test:123456qwertyui", - }, - }, - }, - signers: []string{AliceKey1, CharlieKey3}, - keys: map[string]KeyPair{ - AliceKey1: keys[AliceKey1], - CharlieKey3: keys[CharlieKey3], - }, - errMsg: "did:cheqd:test:123456qwertyui#key-1 not belong did:cheqd:test:controller1 DID Doc: invalid verification method", - }, - } - - for _, tc := range cases { - t.Run(tc.name, func(t *testing.T) { - msg := tc.msg - - for _, vm := range msg.VerificationMethod { - vm.PublicKeyMultibase = "z" + base58.Encode(tc.keys[vm.Id].PublicKey) - } - - signerKeys := map[string]ed25519.PrivateKey{} - for _, signer := range tc.signers { - signerKeys[signer] = tc.keys[signer].PrivateKey - } - - did, err := setup.SendCreateDid(msg, signerKeys) - - if tc.valid { - require.Nil(t, err) - require.Equal(t, did.Id, did.Id) - require.Equal(t, did.Controller, did.Controller) - require.Equal(t, did.VerificationMethod, did.VerificationMethod) - require.Equal(t, did.Authentication, did.Authentication) - require.Equal(t, did.AssertionMethod, did.AssertionMethod) - require.Equal(t, did.CapabilityInvocation, did.CapabilityInvocation) - require.Equal(t, did.CapabilityDelegation, did.CapabilityDelegation) - require.Equal(t, did.KeyAgreement, did.KeyAgreement) - require.Equal(t, did.AlsoKnownAs, did.AlsoKnownAs) - require.Equal(t, did.Service, did.Service) - require.Equal(t, did.Context, did.Context) - } else { - require.Error(t, err) - require.Equal(t, tc.errMsg, err.Error()) - } - }) - } -} diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 06589da91..727cec0ce 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -2,6 +2,7 @@ package tests import ( "crypto/ed25519" + "github.com/btcsuite/btcutil/base58" "log" "testing" @@ -11,27 +12,1039 @@ import ( "github.com/stretchr/testify/require" ) -func TestHandler_CreateDid(t *testing.T) { +func TestCreateDID(t *testing.T) { setup := Setup() + keys := setup.CreatePreparedDID() - _, did, _ := setup.InitDid("did:cheqd:test:alice") + cases := []struct { + valid bool + name string + keys map[string]KeyPair + signers []string + msg *types.MsgCreateDid + errMsg string + }{ + { + valid: true, + name: "Works", + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui2#key-1": GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:123456qwertyui2#key-1"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui2", + Authentication: []string{"did:cheqd:test:123456qwertyui2#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui2#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui2", + }, + }, + }, + }, + { + valid: true, + name: "Works with Key Agreement", + keys: map[string]KeyPair{ + "did:cheqd:test:KeyAgreement#key-1": GenerateKeyPair(), + AliceKey1: keys[AliceKey1], + }, + signers: []string{AliceKey1}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:KeyAgreement", + KeyAgreement: []string{"did:cheqd:test:KeyAgreement#key-1"}, + Controller: []string{AliceDID}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:KeyAgreement#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:KeyAgreement", + }, + }, + }, + }, + { + valid: true, + name: "Works with Assertion Method", + keys: map[string]KeyPair{ + "did:cheqd:test:AssertionMethod#key-1": GenerateKeyPair(), + AliceKey1: keys[AliceKey1], + }, + signers: []string{AliceKey1}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:AssertionMethod", + AssertionMethod: []string{"did:cheqd:test:AssertionMethod#key-1"}, + Controller: []string{AliceDID}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:AssertionMethod#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:AssertionMethod", + }, + }, + }, + }, + { + valid: true, + name: "Works with Capability Delegation", + keys: map[string]KeyPair{ + "did:cheqd:test:CapabilityDelegation#key-1": GenerateKeyPair(), + AliceKey1: keys[AliceKey1], + }, + signers: []string{AliceKey1}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:CapabilityDelegation", + CapabilityDelegation: []string{"did:cheqd:test:CapabilityDelegation#key-1"}, + Controller: []string{AliceDID}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:CapabilityDelegation#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:CapabilityDelegation", + }, + }, + }, + }, + { + valid: true, + name: "Works with Capability Invocation", + keys: map[string]KeyPair{ + "did:cheqd:test:CapabilityInvocation#key-1": GenerateKeyPair(), + AliceKey1: keys[AliceKey1], + }, + signers: []string{AliceKey1}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:CapabilityInvocation", + CapabilityInvocation: []string{"did:cheqd:test:CapabilityInvocation#key-1"}, + Controller: []string{AliceDID}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:CapabilityInvocation#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:CapabilityInvocation", + }, + }, + }, + }, + { + valid: true, + name: "With controller works", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID}, + }, + signers: []string{AliceKey1, BobKey3}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + BobKey3: keys[BobKey3], + }, + }, + { + valid: true, + name: "Full message works", + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui#key-1": GenerateKeyPair(), + "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), + "did:cheqd:test:123456qwertyui#key-3": GenerateKeyPair(), + "did:cheqd:test:123456qwertyui#key-4": GenerateKeyPair(), + "did:cheqd:test:123456qwertyui#key-5": GenerateKeyPair(), + AliceKey1: keys[AliceKey1], + BobKey1: keys[BobKey1], + BobKey2: keys[BobKey2], + BobKey3: keys[BobKey3], + CharlieKey1: keys[CharlieKey1], + CharlieKey2: keys[CharlieKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{ + "did:cheqd:test:123456qwertyui#key-1", + "did:cheqd:test:123456qwertyui#key-5", + AliceKey1, + BobKey1, + BobKey2, + BobKey3, + CharlieKey1, + CharlieKey2, + CharlieKey3, + }, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{ + "did:cheqd:test:123456qwertyui#key-1", + "did:cheqd:test:123456qwertyui#key-5", + }, + Context: []string{"abc", "de"}, + CapabilityInvocation: []string{"did:cheqd:test:123456qwertyui#key-2"}, + CapabilityDelegation: []string{"did:cheqd:test:123456qwertyui#key-3"}, + KeyAgreement: []string{"did:cheqd:test:123456qwertyui#key-4"}, + AlsoKnownAs: []string{"did:cheqd:test:123456eqweqwe"}, + Service: []*types.DidService{ + { + Id: "did:cheqd:test:123456qwertyui#service-1", + Type: "DIDCommMessaging", + ServiceEndpoint: "ServiceEndpoint", + }, + }, + Controller: []string{"did:cheqd:test:123456qwertyui", AliceDID, BobDID, CharlieDID}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + { + Id: "did:cheqd:test:123456qwertyui#key-2", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + { + Id: "did:cheqd:test:123456qwertyui#key-3", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + { + Id: "did:cheqd:test:123456qwertyui#key-4", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + { + Id: "did:cheqd:test:123456qwertyui#key-5", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + }, + { + valid: false, + name: "Second controller did not sign request", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID}, + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + }, + errMsg: "signature did:cheqd:test:bob not found: invalid signature detected", + }, + { + valid: false, + name: "Bad request", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + }, + errMsg: "The message must contain either a Controller or a Authentication: bad request", + }, + { + valid: false, + name: "No signature", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID}, + }, + errMsg: "Signatures: is required", + }, + { + valid: false, + name: "Empty request", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID}, + }, + errMsg: "Signatures: is required", + }, + { + valid: false, + name: "Controller not found", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, "did:cheqd:test:notfound"}, + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + }, + errMsg: "did:cheqd:test:notfound: DID Doc not found", + }, + { + valid: false, + name: "Wrong signature", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID}, + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[BobKey1], + }, + errMsg: "did:cheqd:test:alice: invalid signature detected", + }, + { + valid: false, + name: "Controller verification method not found", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{BobDID}, + }, + signers: []string{BobKey4}, + keys: map[string]KeyPair{ + BobKey4: keys[BobKey4], + }, + errMsg: "Authentication did:cheqd:test:bob#key-4 not found: invalid signature detected", + }, + { + valid: false, + name: "Second controller verification method not found", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, BobDID, CharlieDID}, + }, + signers: []string{AliceKey1, BobKey4, CharlieKey3}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + BobKey4: keys[BobKey4], + CharlieKey3: keys[CharlieKey3], + }, + errMsg: "Authentication did:cheqd:test:bob#key-4 not found: invalid signature detected", + }, + { + valid: false, + name: "DID signed by wrong controller", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{AliceKey1}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + }, + errMsg: "signature did:cheqd:test:123456qwertyui not found: invalid signature detected", + }, + { + valid: false, + name: "DID self-signed by not existing verification method", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{"did:cheqd:test:123456qwertyui#key-2"}, + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), + }, + errMsg: "Authentication did:cheqd:test:123456qwertyui#key-2 not found: invalid signature detected", + }, + { + valid: false, + name: "Self-signature not found", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Controller: []string{AliceDID, "did:cheqd:test:123456qwertyui"}, + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{AliceKey1, "did:cheqd:test:123456qwertyui#key-2"}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), + }, + errMsg: "Authentication did:cheqd:test:123456qwertyui#key-2 not found: invalid signature detected", + }, + { + valid: false, + name: "DID Doc already exists", + keys: map[string]KeyPair{ + "did:cheqd:test:123456qwertyui#key-1": GenerateKeyPair(), + }, + signers: []string{"did:cheqd:test:123456qwertyui#key-1"}, + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:123456qwertyui", + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + errMsg: "DID DOC already exists for DID did:cheqd:test:123456qwertyui: DID Doc exists", + }, + { + valid: false, + name: "Verification Method ID doesnt match", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, CharlieDID}, + Authentication: []string{"#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{AliceKey1, CharlieKey3}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + CharlieKey3: keys[CharlieKey3], + }, + errMsg: "did:cheqd:test:123456qwertyui#key-1 not belong did:cheqd:test:controller1 DID Doc: invalid verification method", + }, + { + valid: false, + name: "Full Verification Method ID doesnt match", + msg: &types.MsgCreateDid{ + Id: "did:cheqd:test:controller1", + Controller: []string{AliceDID, CharlieDID}, + Authentication: []string{"did:cheqd:test:123456qwertyui#key-1"}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: "did:cheqd:test:123456qwertyui#key-1", + Type: "Ed25519VerificationKey2020", + Controller: "did:cheqd:test:123456qwertyui", + }, + }, + }, + signers: []string{AliceKey1, CharlieKey3}, + keys: map[string]KeyPair{ + AliceKey1: keys[AliceKey1], + CharlieKey3: keys[CharlieKey3], + }, + errMsg: "did:cheqd:test:123456qwertyui#key-1 not belong did:cheqd:test:controller1 DID Doc: invalid verification method", + }, + } - // query Did - state, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) - receivedDid := state.GetDid() + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + msg := tc.msg - // check - require.Equal(t, did.Id, receivedDid.Id) - require.Equal(t, did.Controller, receivedDid.Controller) - require.Equal(t, did.VerificationMethod, receivedDid.VerificationMethod) - require.Equal(t, did.Authentication, receivedDid.Authentication) - require.Equal(t, did.AssertionMethod, receivedDid.AssertionMethod) - require.Equal(t, did.CapabilityInvocation, receivedDid.CapabilityInvocation) - require.Equal(t, did.CapabilityDelegation, receivedDid.CapabilityDelegation) - require.Equal(t, did.KeyAgreement, receivedDid.KeyAgreement) - require.Equal(t, did.AlsoKnownAs, receivedDid.AlsoKnownAs) - require.Equal(t, did.Service, receivedDid.Service) - require.Equal(t, did.Context, receivedDid.Context) + for _, vm := range msg.VerificationMethod { + vm.PublicKeyMultibase = "z" + base58.Encode(tc.keys[vm.Id].PublicKey) + } + + signerKeys := map[string]ed25519.PrivateKey{} + for _, signer := range tc.signers { + signerKeys[signer] = tc.keys[signer].PrivateKey + } + + did, err := setup.SendCreateDid(msg, signerKeys) + + if tc.valid { + require.Nil(t, err) + require.Equal(t, did.Id, did.Id) + require.Equal(t, did.Controller, did.Controller) + require.Equal(t, did.VerificationMethod, did.VerificationMethod) + require.Equal(t, did.Authentication, did.Authentication) + require.Equal(t, did.AssertionMethod, did.AssertionMethod) + require.Equal(t, did.CapabilityInvocation, did.CapabilityInvocation) + require.Equal(t, did.CapabilityDelegation, did.CapabilityDelegation) + require.Equal(t, did.KeyAgreement, did.KeyAgreement) + require.Equal(t, did.AlsoKnownAs, did.AlsoKnownAs) + require.Equal(t, did.Service, did.Service) + require.Equal(t, did.Context, did.Context) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + }) + } +} + +func TestUpdateDid(t *testing.T) { + setup := Setup() + keys := setup.CreatePreparedDID() + + cases := []struct { + valid bool + name string + keys map[string]KeyPair + signers []string + msg *types.MsgUpdateDid + errMsg string + }{ + { + valid: true, + name: "Works", + keys: map[string]KeyPair{ + AliceKey2: keys[AliceKey2], + }, + signers: []string{AliceKey2}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + }, + { + valid: false, + name: "Try to add controller without self-signature", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + }, + signers: []string{BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID}, + Authentication: []string{AliceKey1}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey1, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:alice not found: invalid signature detected", + }, + { + valid: false, + name: "Add controller and replace authentication without old signature do not work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey1: keys[AliceKey1], + }, + signers: []string{BobKey1, AliceKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID}, + Authentication: []string{AliceKey1}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey1, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + errMsg: "Authentication did:cheqd:test:alice#key-1 not found: invalid signature detected", + }, + { + valid: true, + name: "Add controller work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + }, + signers: []string{BobKey1, AliceKey2}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + }, + { + valid: false, + name: "Add controller work without signature do not work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + }, + signers: []string{BobKey1, AliceKey2}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:charlie not found: invalid signature detected", + }, + { + valid: false, + name: "Replace controller work without new signature do not work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + }, + signers: []string{BobKey1, AliceKey2}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:charlie not found: invalid signature detected", + }, + { + valid: false, + name: "Replace controller without old signature do not work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, CharlieKey3}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:bob not found: invalid signature detected", + }, + { + valid: true, + name: "Replace controller work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + }, + { + valid: true, + name: "Add second controller works", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + }, + { + valid: true, + name: "Add verification method without signature controller work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey1: keys[AliceKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey2}, + KeyAgreement: []string{AliceKey1}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + { + Id: AliceKey1, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + }, + { + valid: false, + name: "Remove verification method without signature controller do not work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey1: keys[AliceKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:alice not found: invalid signature detected", + }, + { + valid: false, + name: "Remove verification method wrong authentication detected", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey1: keys[AliceKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey1, CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + errMsg: "Authentication did:cheqd:test:alice#key-1 not found: invalid signature detected", + }, + { + valid: true, + name: "Add second authentication works", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey1: keys[AliceKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey1, AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey1, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + }, + }, + }, + { + valid: false, + name: "Remove self authentication without signature do not work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:alice not found: invalid signature detected", + }, + { + valid: false, + name: "Change self controller verification without signature do not work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey1, AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey1, + Type: "Ed25519VerificationKey2020", + Controller: CharlieDID, + }, + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:alice not found: invalid signature detected", + }, + { + valid: true, + name: "Remove self authentication works", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Controller: []string{BobDID, CharlieDID}, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + }, + }, + }, + { + valid: false, + name: "Change controller to self without old controllers signatures does not work", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:bob not found: invalid signature detected", + }, + { + valid: true, + name: "Change controller to self works", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, CharlieKey3, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + }, + }, + }, + { + valid: false, + name: "Change verification method controller without old signature", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, CharlieKey3}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: CharlieDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:bob not found: invalid signature detected", + }, + { + valid: false, + name: "Change verification method controller without new signature", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, BobKey1}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: CharlieDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:charlie not found: invalid signature detected", + }, + { + valid: true, + name: "Change verification method controller", + keys: map[string]KeyPair{ + BobKey1: keys[BobKey1], + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, BobKey1, CharlieKey3}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: CharlieDID, + }, + }, + }, + }, + { + valid: false, + name: "Change to self verification method without controller signature", + keys: map[string]KeyPair{ + AliceKey2: keys[AliceKey2], + }, + signers: []string{AliceKey2}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + errMsg: "signature did:cheqd:test:charlie not found: invalid signature detected", + }, + { + valid: true, + name: "Change to self verification method without controller signature", + keys: map[string]KeyPair{ + AliceKey2: keys[AliceKey2], + CharlieKey3: keys[CharlieKey3], + }, + signers: []string{AliceKey2, CharlieKey3}, + msg: &types.MsgUpdateDid{ + Id: AliceDID, + Authentication: []string{AliceKey2}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey2, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + msg := tc.msg + + for _, vm := range msg.VerificationMethod { + vm.PublicKeyMultibase = "z" + base58.Encode(tc.keys[vm.Id].PublicKey) + } + + signerKeys := map[string]ed25519.PrivateKey{} + for _, signer := range tc.signers { + signerKeys[signer] = tc.keys[signer].PrivateKey + } + + did, err := setup.SendUpdateDid(msg, signerKeys) + + if tc.valid { + require.Nil(t, err) + require.Equal(t, did.Id, did.Id) + require.Equal(t, did.Controller, did.Controller) + require.Equal(t, did.VerificationMethod, did.VerificationMethod) + require.Equal(t, did.Authentication, did.Authentication) + require.Equal(t, did.AssertionMethod, did.AssertionMethod) + require.Equal(t, did.CapabilityInvocation, did.CapabilityInvocation) + require.Equal(t, did.CapabilityDelegation, did.CapabilityDelegation) + require.Equal(t, did.KeyAgreement, did.KeyAgreement) + require.Equal(t, did.AlsoKnownAs, did.AlsoKnownAs) + require.Equal(t, did.Service, did.Service) + require.Equal(t, did.Context, did.Context) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + }) + } } func TestHandler_UpdateDid(t *testing.T) { diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index e2af958f9..b96c90100 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -235,7 +235,9 @@ func (s *TestSetup) SendUpdateDid(msg *types.MsgUpdateDid, keys map[string]ed255 // query Did state, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) - msg.VersionId = state.Metadata.VersionId + if len(msg.VersionId) == 0 { + msg.VersionId = state.Metadata.VersionId + } _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys, map[string]string{})) if err != nil { @@ -268,3 +270,128 @@ func ConcatKeys(dst map[string]ed25519.PrivateKey, src map[string]ed25519.Privat return dst } + +func (s TestSetup) CreatePreparedDID() map[string]KeyPair { + prefilledDids := []struct { + keys map[string]KeyPair + signers []string + msg *types.MsgCreateDid + }{ + { + keys: map[string]KeyPair{ + AliceKey1: GenerateKeyPair(), + AliceKey2: GenerateKeyPair(), + }, + signers: []string{AliceKey1}, + msg: &types.MsgCreateDid{ + Id: AliceDID, + Authentication: []string{AliceKey1}, + VerificationMethod: []*types.VerificationMethod{ + { + Id: AliceKey1, + Type: "Ed25519VerificationKey2020", + Controller: AliceDID, + }, + }, + }, + }, + { + keys: map[string]KeyPair{ + BobKey1: GenerateKeyPair(), + BobKey2: GenerateKeyPair(), + BobKey3: GenerateKeyPair(), + BobKey4: GenerateKeyPair(), + }, + signers: []string{BobKey2}, + msg: &types.MsgCreateDid{ + Id: BobDID, + Authentication: []string{ + BobKey1, + BobKey2, + BobKey3, + }, + CapabilityDelegation: []string{ + BobKey4, + }, + VerificationMethod: []*types.VerificationMethod{ + { + Id: BobKey1, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + { + Id: BobKey2, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + { + Id: BobKey3, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + { + Id: BobKey4, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + }, + }, + }, + { + keys: map[string]KeyPair{ + CharlieKey1: GenerateKeyPair(), + CharlieKey2: GenerateKeyPair(), + CharlieKey3: GenerateKeyPair(), + }, + signers: []string{CharlieKey2}, + msg: &types.MsgCreateDid{ + Id: CharlieDID, + Authentication: []string{ + CharlieKey1, + CharlieKey2, + CharlieKey3, + }, + VerificationMethod: []*types.VerificationMethod{ + { + Id: CharlieKey1, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + { + Id: CharlieKey2, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + { + Id: CharlieKey3, + Type: "Ed25519VerificationKey2020", + Controller: BobDID, + }, + }, + }, + }, + } + + keys := map[string]KeyPair{} + + for _, prefilled := range prefilledDids { + msg := prefilled.msg + + for _, vm := range msg.VerificationMethod { + vm.PublicKeyMultibase = "z" + base58.Encode(prefilled.keys[vm.Id].PublicKey) + } + + signerKeys := map[string]ed25519.PrivateKey{} + for _, signer := range prefilled.signers { + signerKeys[signer] = prefilled.keys[signer].PrivateKey + } + + for keyId, key := range prefilled.keys { + keys[keyId] = key + } + + _, _ = s.SendCreateDid(msg, signerKeys) + } + + return keys +} From b6ddb537920cc3f729abdc5adabcea5f9f8f0f24 Mon Sep 17 00:00:00 2001 From: Alexander Kolesov Date: Thu, 21 Oct 2021 13:50:05 +0300 Subject: [PATCH 52/74] Revert adr 002 changes --- .../adr-list/adr_002_identity_transactions.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/architecture/adr-list/adr_002_identity_transactions.md b/architecture/adr-list/adr_002_identity_transactions.md index 936b63473..380391b58 100644 --- a/architecture/adr-list/adr_002_identity_transactions.md +++ b/architecture/adr-list/adr_002_identity_transactions.md @@ -154,7 +154,7 @@ If a Schema evolves, a new schema with a new version or name needs to be created Dictionary with Schema's data: - * **`attrNames`**: Array of attribute name strings \(125 attributes maximum\) + * **`attr_names`**: Array of attribute name strings \(125 attributes maximum\) * **`name`**: Schema's name string * **`version`**: Schema's version string @@ -164,7 +164,7 @@ SCHEMA transaction format: { "version": "1.0", "name": "Degree", - "attrNames": ["undergrad", "last_name", "first_name", "birth_date", "postgrad", "expiry_date"] + "attr_names": ["undergrad", "last_name", "first_name", "birth_date", "postgrad", "expiry_date"] } ``` @@ -172,7 +172,7 @@ SCHEMA transaction format: #### State format -`(version, name, owner) -> {(version, name, attrNames), tx_hash, tx_timestamp }` +`(version, name, owner) -> {(version, name, attr_names), tx_hash, tx_timestamp }` ### CRED\_DEF @@ -191,7 +191,7 @@ It is not possible to update `data` in existing Credential Definitions. If a Cre Hash of a Schema transaction the credential definition is created for. -* **`signatureType` \(string\):** +* **`signature_type` \(string\):** Type of the credential definition \(that is credential signature\). `CL` \(Camenisch-Lysyanskaya\) is the only supported type now. Other signature types are being explored for future releases. @@ -203,7 +203,7 @@ CRED\_DEF transaction format: ```text { - "signatureType": "CL", + "signature_type": "CL", "schema_id": 5ZTp9g4SP6t73rH2s8zgmtqdXyT, "tag": "some_tag", "cred_def": { @@ -217,7 +217,7 @@ CRED\_DEF transaction format: #### State format -`(owner, signatureType, ref, tag) -> {(signatureType, schema_id, tag, cred_def), tx_hash, tx_timestamp }` +`(owner, signature_type, ref, tag) -> {(signature_type, schema_id, tag, cred_def), tx_hash, tx_timestamp }` ## References From 20974993a07a5b72f611f82f39799f71d50c05f2 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Sun, 24 Oct 2021 15:05:30 +0300 Subject: [PATCH 53/74] fixed test --- go.mod | 4 ++-- x/cheqd/tests/handler_test.go | 44 +++++++++++++++++------------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 8ffe18de6..31480e818 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/cheqd/cheqd-node go 1.15 require ( - github.com/cosmos/cosmos-sdk v0.44.2 github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce + github.com/cosmos/cosmos-sdk v0.44.2 github.com/cosmos/ibc-go v1.0.1 github.com/gogo/protobuf v1.3.3 github.com/golang/protobuf v1.5.2 @@ -15,8 +15,8 @@ require ( github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.2.1 github.com/spf13/pflag v1.0.5 - github.com/tendermint/tendermint v0.34.13 github.com/stretchr/testify v1.7.0 + github.com/tendermint/tendermint v0.34.13 github.com/tendermint/tm-db v0.6.4 google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 google.golang.org/grpc v1.40.0 diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 727cec0ce..6cbb04dfc 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -458,17 +458,17 @@ func TestCreateDID(t *testing.T) { if tc.valid { require.Nil(t, err) - require.Equal(t, did.Id, did.Id) - require.Equal(t, did.Controller, did.Controller) - require.Equal(t, did.VerificationMethod, did.VerificationMethod) - require.Equal(t, did.Authentication, did.Authentication) - require.Equal(t, did.AssertionMethod, did.AssertionMethod) - require.Equal(t, did.CapabilityInvocation, did.CapabilityInvocation) - require.Equal(t, did.CapabilityDelegation, did.CapabilityDelegation) - require.Equal(t, did.KeyAgreement, did.KeyAgreement) - require.Equal(t, did.AlsoKnownAs, did.AlsoKnownAs) - require.Equal(t, did.Service, did.Service) - require.Equal(t, did.Context, did.Context) + require.Equal(t, tc.msg.Id, did.Id) + require.Equal(t, tc.msg.Controller, did.Controller) + require.Equal(t, tc.msg.VerificationMethod, did.VerificationMethod) + require.Equal(t, tc.msg.Authentication, did.Authentication) + require.Equal(t, tc.msg.AssertionMethod, did.AssertionMethod) + require.Equal(t, tc.msg.CapabilityInvocation, did.CapabilityInvocation) + require.Equal(t, tc.msg.CapabilityDelegation, did.CapabilityDelegation) + require.Equal(t, tc.msg.KeyAgreement, did.KeyAgreement) + require.Equal(t, tc.msg.AlsoKnownAs, did.AlsoKnownAs) + require.Equal(t, tc.msg.Service, did.Service) + require.Equal(t, tc.msg.Context, did.Context) } else { require.Error(t, err) require.Equal(t, tc.errMsg, err.Error()) @@ -1028,17 +1028,17 @@ func TestUpdateDid(t *testing.T) { if tc.valid { require.Nil(t, err) - require.Equal(t, did.Id, did.Id) - require.Equal(t, did.Controller, did.Controller) - require.Equal(t, did.VerificationMethod, did.VerificationMethod) - require.Equal(t, did.Authentication, did.Authentication) - require.Equal(t, did.AssertionMethod, did.AssertionMethod) - require.Equal(t, did.CapabilityInvocation, did.CapabilityInvocation) - require.Equal(t, did.CapabilityDelegation, did.CapabilityDelegation) - require.Equal(t, did.KeyAgreement, did.KeyAgreement) - require.Equal(t, did.AlsoKnownAs, did.AlsoKnownAs) - require.Equal(t, did.Service, did.Service) - require.Equal(t, did.Context, did.Context) + require.Equal(t, tc.msg.Id, did.Id) + require.Equal(t, tc.msg.Controller, did.Controller) + require.Equal(t, tc.msg.VerificationMethod, did.VerificationMethod) + require.Equal(t, tc.msg.Authentication, did.Authentication) + require.Equal(t, tc.msg.AssertionMethod, did.AssertionMethod) + require.Equal(t, tc.msg.CapabilityInvocation, did.CapabilityInvocation) + require.Equal(t, tc.msg.CapabilityDelegation, did.CapabilityDelegation) + require.Equal(t, tc.msg.KeyAgreement, did.KeyAgreement) + require.Equal(t, tc.msg.AlsoKnownAs, did.AlsoKnownAs) + require.Equal(t, tc.msg.Service, did.Service) + require.Equal(t, tc.msg.Context, did.Context) } else { require.Error(t, err) require.Equal(t, tc.errMsg, err.Error()) From 565e19b8090fcd154d21a9b010a9362284ccc548 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Sun, 24 Oct 2021 19:29:26 +0300 Subject: [PATCH 54/74] fixed routing --- x/cheqd/types/codec.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/x/cheqd/types/codec.go b/x/cheqd/types/codec.go index 55d543b6d..22be930f7 100644 --- a/x/cheqd/types/codec.go +++ b/x/cheqd/types/codec.go @@ -23,6 +23,12 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.Msg)(nil), &MsgWriteRequest{}, ) + + registry.RegisterInterface(MessageCreateDid, (*IdentityMsg)(nil), &MsgCreateDid{}) + registry.RegisterInterface(MessageUpdateDid, (*IdentityMsg)(nil), &MsgUpdateDid{}) + registry.RegisterInterface(MessageCreateSchema, (*IdentityMsg)(nil), &MsgCreateSchema{}) + registry.RegisterInterface(MessageCreateCredDef, (*IdentityMsg)(nil), &MsgCreateCredDef{}) + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } From d1a80c40cc610bb7a2743cf9b1e2dad15bc20b94 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Mon, 25 Oct 2021 12:24:32 +0300 Subject: [PATCH 55/74] removed map from protobuf --- proto/cheqd/common.proto | 9 + proto/cheqd/did.proto | 3 +- proto/cheqd/tx.proto | 12 +- x/cheqd/keeper/verify.go | 10 +- x/cheqd/tests/handler_test.go | 14 +- x/cheqd/tests/handler_test_setup.go | 19 +- x/cheqd/types/common.pb.go | 366 ++++++++++++ x/cheqd/types/did.pb.go | 216 ++----- x/cheqd/types/messages_write_request.go | 2 +- x/cheqd/types/tx.pb.go | 764 +++++++++++------------- 10 files changed, 807 insertions(+), 608 deletions(-) create mode 100644 proto/cheqd/common.proto create mode 100644 x/cheqd/types/common.pb.go diff --git a/proto/cheqd/common.proto b/proto/cheqd/common.proto new file mode 100644 index 000000000..b00b43501 --- /dev/null +++ b/proto/cheqd/common.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; +package cheqdid.cheqdnode.cheqd; + +option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; + +message KeyValuePair { + string key = 1; + string value = 2; +} diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index d1f39e06a..58c927a31 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -5,6 +5,7 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; import "google/protobuf/any.proto"; import "gogoproto/gogo.proto"; +import "cheqd/common.proto"; message Did { string id = 1; @@ -24,7 +25,7 @@ message VerificationMethod { string id = 1; string type = 2; string controller = 3; - map public_key_jwk = 4; // optional + repeated KeyValuePair public_key_jwk = 4; // optional string public_key_multibase = 5; // optional } diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 354815b9d..72f12e71e 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; import "google/protobuf/any.proto"; +import "cheqd/common.proto"; import "cheqd/did.proto"; import "cheqd/credDef.proto"; @@ -19,14 +20,19 @@ service Msg { message MsgWriteRequestSignObject { google.protobuf.Any data = 1; - map metadata = 2; + repeated KeyValuePair metadata = 2; } // this line is used by starport scaffolding # proto/tx/message message MsgWriteRequest { google.protobuf.Any data = 1; - map signatures = 2; - map metadata = 3; + repeated SignInfo signatures = 2; + repeated KeyValuePair metadata = 3; +} + +message SignInfo { + string verification_method_id = 1; + string signature = 2; } message MsgCreateCredDef { diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index b9bf83213..07b4d6b3e 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -49,19 +49,19 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s return nil } -func VerifyIdentitySignature(signer types.Signer, signatures map[string]string, signingInput []byte) (bool, error) { +func VerifyIdentitySignature(signer types.Signer, signatures []*types.SignInfo, signingInput []byte) (bool, error) { result := true foundOne := false - for id, signature := range signatures { - did, _ := utils.SplitDidUrlIntoDidAndFragment(id) + for _, info := range signatures { + did, _ := utils.SplitDidUrlIntoDidAndFragment(info.VerificationMethodId) if did == signer.Signer { - pubKey, err := FindPublicKey(signer, id) + pubKey, err := FindPublicKey(signer, info.VerificationMethodId) if err != nil { return false, err } - signature, err := base64.StdEncoding.DecodeString(signature) + signature, err := base64.StdEncoding.DecodeString(info.Signature) if err != nil { return false, err } diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 6cbb04dfc..2ad31bbef 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -1061,7 +1061,7 @@ func TestHandler_UpdateDid(t *testing.T) { didMsgUpdate := setup.UpdateDid(state.GetDid(), newPubKey, state.Metadata.VersionId) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys, map[string]string{})) + resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys)) didUpdated := types.MsgUpdateDidResponse{} errUpdate := didUpdated.Unmarshal(resultUpdate.Data) @@ -1095,7 +1095,7 @@ func TestHandler_CreateSchema(t *testing.T) { msg := setup.CreateSchema() data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) schema := types.MsgCreateSchemaResponse{} _ = schema.Unmarshal(result.Data) @@ -1119,7 +1119,7 @@ func TestHandler_CreateCredDef(t *testing.T) { msg := setup.CreateCredDef() data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) credDef := types.MsgCreateCredDefResponse{} err := credDef.Unmarshal(result.Data) @@ -1154,16 +1154,16 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { credDefMsg := setup.CreateCredDef() data, _ := ptypes.NewAnyWithValue(credDefMsg) - _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) - _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) + _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) + _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) require.Error(t, err) require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) schemaMsg := setup.CreateSchema() data, _ = ptypes.NewAnyWithValue(schemaMsg) - _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) - _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys, make(map[string]string))) + _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) + _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) require.Error(t, err) require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index b96c90100..5203a73f3 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -175,23 +175,24 @@ func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { } } -func (s *TestSetup) WrapRequest(data *ptypes.Any, keys map[string]ed25519.PrivateKey, metadata map[string]string) *types.MsgWriteRequest { +func (s *TestSetup) WrapRequest(data *ptypes.Any, keys map[string]ed25519.PrivateKey) *types.MsgWriteRequest { result := types.MsgWriteRequest{ - Data: data, - Metadata: metadata, + Data: data, } - signatures := make(map[string]string) + var signatures []*types.SignInfo signingInput, _ := keeper.BuildSigningInput(s.Cdc, &result) for privKeyId, privKey := range keys { signature := base64.StdEncoding.EncodeToString(ed25519.Sign(privKey, signingInput)) - signatures[privKeyId] = signature + signatures = append(signatures, &types.SignInfo{ + VerificationMethodId: privKeyId, + Signature: signature, + }) } return &types.MsgWriteRequest{ Data: data, - Metadata: metadata, Signatures: signatures, } } @@ -214,7 +215,7 @@ func (s *TestSetup) InitDid(did string) (map[string]ed25519.PrivateKey, *types.M keyId := did + "#key-1" keys := map[string]ed25519.PrivateKey{keyId: privKey} - result, err := s.Handler(s.Ctx, s.WrapRequest(data, keys, make(map[string]string))) + result, err := s.Handler(s.Ctx, s.WrapRequest(data, keys)) if err != nil { return nil, nil, err } @@ -239,7 +240,7 @@ func (s *TestSetup) SendUpdateDid(msg *types.MsgUpdateDid, keys map[string]ed255 msg.VersionId = state.Metadata.VersionId } - _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys, map[string]string{})) + _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys)) if err != nil { return nil, err } @@ -254,7 +255,7 @@ func (s *TestSetup) SendCreateDid(msg *types.MsgCreateDid, keys map[string]ed255 return nil, err } - _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys, map[string]string{})) + _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys)) if err != nil { return nil, err } diff --git a/x/cheqd/types/common.pb.go b/x/cheqd/types/common.pb.go new file mode 100644 index 000000000..a79926b07 --- /dev/null +++ b/x/cheqd/types/common.pb.go @@ -0,0 +1,366 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cheqd/common.proto + +package types + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type KeyValuePair struct { + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *KeyValuePair) Reset() { *m = KeyValuePair{} } +func (m *KeyValuePair) String() string { return proto.CompactTextString(m) } +func (*KeyValuePair) ProtoMessage() {} +func (*KeyValuePair) Descriptor() ([]byte, []int) { + return fileDescriptor_6b29d37841ff3c67, []int{0} +} +func (m *KeyValuePair) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *KeyValuePair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_KeyValuePair.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *KeyValuePair) XXX_Merge(src proto.Message) { + xxx_messageInfo_KeyValuePair.Merge(m, src) +} +func (m *KeyValuePair) XXX_Size() int { + return m.Size() +} +func (m *KeyValuePair) XXX_DiscardUnknown() { + xxx_messageInfo_KeyValuePair.DiscardUnknown(m) +} + +var xxx_messageInfo_KeyValuePair proto.InternalMessageInfo + +func (m *KeyValuePair) GetKey() string { + if m != nil { + return m.Key + } + return "" +} + +func (m *KeyValuePair) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +func init() { + proto.RegisterType((*KeyValuePair)(nil), "cheqdid.cheqdnode.cheqd.KeyValuePair") +} + +func init() { proto.RegisterFile("cheqd/common.proto", fileDescriptor_6b29d37841ff3c67) } + +var fileDescriptor_6b29d37841ff3c67 = []byte{ + // 164 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, + 0x4c, 0xd1, 0x4f, 0xce, 0xcf, 0xcd, 0xcd, 0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, + 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0xc9, 0x8c, 0x8b, + 0xc7, 0x3b, 0xb5, 0x32, 0x2c, 0x31, 0xa7, 0x34, 0x35, 0x20, 0x31, 0xb3, 0x48, 0x48, 0x80, 0x8b, + 0x39, 0x3b, 0xb5, 0x52, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x08, 0xc4, 0x14, 0x12, 0xe1, 0x62, + 0x2d, 0x03, 0x49, 0x4b, 0x30, 0x81, 0xc5, 0x20, 0x1c, 0x27, 0xe7, 0x13, 0x8f, 0xe4, 0x18, 0x2f, + 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, + 0x6e, 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, + 0xd5, 0x87, 0xba, 0x04, 0x44, 0xea, 0x82, 0x2c, 0xd5, 0xaf, 0x80, 0x0a, 0x95, 0x54, 0x16, 0xa4, + 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x67, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x2f, 0xd6, 0xe2, 0x8e, + 0xb2, 0x00, 0x00, 0x00, +} + +func (m *KeyValuePair) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *KeyValuePair) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *KeyValuePair) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintCommon(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x12 + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarintCommon(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintCommon(dAtA []byte, offset int, v uint64) int { + offset -= sovCommon(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *KeyValuePair) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Key) + if l > 0 { + n += 1 + l + sovCommon(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sovCommon(uint64(l)) + } + return n +} + +func sovCommon(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozCommon(x uint64) (n int) { + return sovCommon(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *KeyValuePair) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommon + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: KeyValuePair: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: KeyValuePair: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommon + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommon + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommon + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommon + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommon + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommon + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommon(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommon + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipCommon(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCommon + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCommon + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCommon + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthCommon + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupCommon + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthCommon + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthCommon = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowCommon = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupCommon = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/cheqd/types/did.pb.go b/x/cheqd/types/did.pb.go index 787d5eb43..1454c79c9 100644 --- a/x/cheqd/types/did.pb.go +++ b/x/cheqd/types/did.pb.go @@ -149,11 +149,11 @@ func (m *Did) GetContext() []string { } type VerificationMethod struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` - PublicKeyJwk map[string]string `protobuf:"bytes,4,rep,name=public_key_jwk,json=publicKeyJwk,proto3" json:"public_key_jwk,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - PublicKeyMultibase string `protobuf:"bytes,5,opt,name=public_key_multibase,json=publicKeyMultibase,proto3" json:"public_key_multibase,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Controller string `protobuf:"bytes,3,opt,name=controller,proto3" json:"controller,omitempty"` + PublicKeyJwk []*KeyValuePair `protobuf:"bytes,4,rep,name=public_key_jwk,json=publicKeyJwk,proto3" json:"public_key_jwk,omitempty"` + PublicKeyMultibase string `protobuf:"bytes,5,opt,name=public_key_multibase,json=publicKeyMultibase,proto3" json:"public_key_multibase,omitempty"` } func (m *VerificationMethod) Reset() { *m = VerificationMethod{} } @@ -210,7 +210,7 @@ func (m *VerificationMethod) GetController() string { return "" } -func (m *VerificationMethod) GetPublicKeyJwk() map[string]string { +func (m *VerificationMethod) GetPublicKeyJwk() []*KeyValuePair { if m != nil { return m.PublicKeyJwk } @@ -287,49 +287,47 @@ func (m *DidService) GetServiceEndpoint() string { func init() { proto.RegisterType((*Did)(nil), "cheqdid.cheqdnode.cheqd.Did") proto.RegisterType((*VerificationMethod)(nil), "cheqdid.cheqdnode.cheqd.VerificationMethod") - proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.VerificationMethod.PublicKeyJwkEntry") proto.RegisterType((*DidService)(nil), "cheqdid.cheqdnode.cheqd.DidService") } func init() { proto.RegisterFile("cheqd/did.proto", fileDescriptor_382ab0c0f6b6850e) } var fileDescriptor_382ab0c0f6b6850e = []byte{ - // 555 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0x86, 0x6b, 0xbb, 0x6d, 0xc8, 0xa4, 0x4d, 0xc2, 0x12, 0x84, 0xc9, 0xc1, 0x8a, 0x52, 0x09, - 0x25, 0x42, 0xd8, 0xa8, 0xbd, 0x20, 0xa4, 0x0a, 0x15, 0xd2, 0x03, 0x54, 0x95, 0x50, 0x90, 0x38, - 0x00, 0x92, 0x65, 0x7b, 0xb7, 0xce, 0x62, 0x67, 0xd7, 0xd8, 0xeb, 0xa4, 0x7e, 0x0b, 0x1e, 0x85, - 0xc7, 0xe0, 0xd8, 0x23, 0x47, 0x94, 0xbc, 0x01, 0x4f, 0x80, 0xbc, 0x76, 0x52, 0x2b, 0x51, 0x25, - 0xb8, 0x24, 0xb3, 0xdf, 0xcc, 0x3f, 0x3b, 0x3b, 0x33, 0x09, 0xb4, 0xbc, 0x09, 0xf9, 0x86, 0x2d, - 0x4c, 0xb1, 0x19, 0xc5, 0x5c, 0x70, 0xf4, 0x48, 0x02, 0x8a, 0x4d, 0xf9, 0xcd, 0x38, 0x26, 0x85, - 0xd5, 0x7d, 0xec, 0x73, 0xee, 0x87, 0xc4, 0x92, 0x61, 0x6e, 0x7a, 0x65, 0x39, 0x2c, 0x2b, 0x34, - 0xdd, 0x8e, 0xcf, 0x7d, 0x2e, 0x4d, 0x2b, 0xb7, 0x0a, 0xda, 0xff, 0xa3, 0x81, 0x36, 0xa2, 0x18, - 0x35, 0x41, 0xa5, 0x58, 0x57, 0x7a, 0xca, 0xa0, 0x3e, 0x56, 0x29, 0x46, 0x06, 0x80, 0xc7, 0x99, - 0x88, 0x79, 0x18, 0x92, 0x58, 0x57, 0x7b, 0xda, 0xa0, 0x3e, 0xae, 0x10, 0xf4, 0x05, 0x1e, 0xcc, - 0x48, 0x4c, 0xaf, 0xa8, 0xe7, 0x08, 0xca, 0x99, 0x3d, 0x25, 0x62, 0xc2, 0xb1, 0xae, 0xf5, 0xb4, - 0x41, 0xe3, 0xf8, 0xa9, 0x79, 0x47, 0x7d, 0xe6, 0xc7, 0x8a, 0xe6, 0x52, 0x4a, 0xc6, 0x68, 0xb6, - 0xc5, 0xd0, 0x13, 0x68, 0x3a, 0xa9, 0x98, 0x10, 0x26, 0x4a, 0xae, 0xef, 0xca, 0x0a, 0x36, 0x28, - 0x1a, 0x42, 0xdb, 0x49, 0x12, 0x12, 0x57, 0x4b, 0xd8, 0x93, 0x91, 0xad, 0x35, 0x2f, 0x53, 0x9e, - 0xc0, 0x43, 0xcf, 0x89, 0x1c, 0x97, 0x86, 0x54, 0x64, 0x36, 0x65, 0x33, 0x5e, 0x66, 0xde, 0x97, - 0xf1, 0x9d, 0x5b, 0xe7, 0xdb, 0xb5, 0x6f, 0x43, 0x84, 0x49, 0x48, 0xfc, 0x42, 0x54, 0xdb, 0x14, - 0x8d, 0xd6, 0x3e, 0x74, 0x04, 0x87, 0x01, 0xc9, 0x6c, 0xc7, 0x8f, 0x09, 0x99, 0x12, 0x26, 0xf4, - 0x7b, 0x32, 0xf8, 0x20, 0x20, 0xd9, 0xd9, 0x8a, 0xa1, 0x53, 0xa8, 0x25, 0x24, 0x9e, 0x51, 0x8f, - 0xe8, 0x75, 0xd9, 0xb3, 0xa3, 0x3b, 0x7b, 0x36, 0xa2, 0xf8, 0x43, 0x11, 0x3a, 0x5e, 0x69, 0x50, - 0x1f, 0x0e, 0x9d, 0x30, 0xe1, 0x76, 0xc0, 0xf8, 0x9c, 0xd9, 0x4e, 0xa2, 0x83, 0xbc, 0xa3, 0x91, - 0xc3, 0x8b, 0x9c, 0x9d, 0x25, 0x48, 0x87, 0x5a, 0x3e, 0x30, 0x72, 0x2d, 0xf4, 0x86, 0xf4, 0xae, - 0x8e, 0xfd, 0x1f, 0x2a, 0xa0, 0xed, 0x49, 0x6c, 0xed, 0x00, 0x82, 0x5d, 0x91, 0x45, 0x44, 0x57, - 0x25, 0x91, 0xf6, 0xc6, 0x5e, 0x68, 0xd2, 0x53, 0xdd, 0x0b, 0x0f, 0x9a, 0x51, 0xea, 0x86, 0xd4, - 0xb3, 0xf3, 0x1e, 0x7c, 0x9d, 0x07, 0x72, 0x72, 0x8d, 0xe3, 0xd3, 0xff, 0x58, 0x09, 0xf3, 0xbd, - 0xcc, 0x70, 0x41, 0xb2, 0x77, 0xf3, 0xe0, 0x9c, 0x89, 0x38, 0x1b, 0x1f, 0x44, 0x15, 0x84, 0x9e, - 0x43, 0xa7, 0x72, 0xc9, 0x34, 0x0d, 0x05, 0x75, 0x9d, 0x84, 0xe8, 0x7b, 0xb2, 0x1c, 0xb4, 0x8e, - 0xbd, 0x5c, 0x79, 0xba, 0xaf, 0xe0, 0xfe, 0x56, 0x52, 0xd4, 0x06, 0x2d, 0x20, 0x59, 0xf9, 0xe0, - 0xdc, 0x44, 0x1d, 0xd8, 0x9b, 0x39, 0x61, 0xba, 0x7a, 0x72, 0x71, 0x78, 0xa9, 0xbe, 0x50, 0xfa, - 0x9f, 0x01, 0x6e, 0xe7, 0xf0, 0x4f, 0x9d, 0x1a, 0x42, 0xbb, 0x9c, 0x96, 0x4d, 0x18, 0x8e, 0x38, - 0x65, 0xa2, 0xec, 0x57, 0xab, 0xe4, 0xe7, 0x25, 0x7e, 0xfd, 0xe6, 0xe7, 0xc2, 0x50, 0x6e, 0x16, - 0x86, 0xf2, 0x7b, 0x61, 0x28, 0xdf, 0x97, 0xc6, 0xce, 0xcd, 0xd2, 0xd8, 0xf9, 0xb5, 0x34, 0x76, - 0x3e, 0x0d, 0x7d, 0x2a, 0x26, 0xa9, 0x6b, 0x7a, 0x7c, 0x6a, 0x15, 0x7f, 0x02, 0xf2, 0xf3, 0x59, - 0xde, 0x3f, 0xeb, 0xba, 0x44, 0xf9, 0x75, 0x89, 0xbb, 0x2f, 0x7f, 0xd0, 0x27, 0x7f, 0x03, 0x00, - 0x00, 0xff, 0xff, 0x85, 0xcb, 0xe4, 0x49, 0x2d, 0x04, 0x00, 0x00, + // 532 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xd1, 0x6e, 0xda, 0x3c, + 0x14, 0xc7, 0x09, 0x69, 0xcb, 0x87, 0x69, 0xa1, 0xf2, 0xc7, 0x34, 0xaf, 0x17, 0x11, 0xa2, 0xda, + 0x04, 0x9a, 0x46, 0xa6, 0xf6, 0x7a, 0x17, 0xdd, 0xd8, 0xc5, 0x86, 0x2a, 0x4d, 0x4c, 0xea, 0xc5, + 0x36, 0x29, 0x72, 0xe2, 0xd3, 0xe0, 0x91, 0xd8, 0x2c, 0x71, 0xa0, 0x79, 0x8b, 0x3d, 0xd6, 0x2e, + 0x7b, 0xb7, 0x5d, 0x4e, 0xf0, 0x06, 0x7b, 0x82, 0x29, 0x4e, 0xa0, 0x11, 0x08, 0x69, 0x37, 0x70, + 0xf2, 0x3b, 0xff, 0xff, 0xb1, 0xcf, 0xb1, 0x8d, 0x5a, 0xde, 0x04, 0xbe, 0x31, 0x9b, 0x71, 0x36, + 0x98, 0x45, 0x52, 0x49, 0xfc, 0x58, 0x03, 0xce, 0x06, 0xfa, 0x5f, 0x48, 0x06, 0x79, 0x74, 0xf6, + 0xc4, 0x97, 0xd2, 0x0f, 0xc0, 0xd6, 0x32, 0x37, 0xb9, 0xb5, 0xa9, 0x48, 0x73, 0xcf, 0x59, 0xdb, + 0x97, 0xbe, 0xd4, 0xa1, 0x9d, 0x45, 0x05, 0xc5, 0x79, 0x69, 0x4f, 0x86, 0xa1, 0x14, 0x39, 0xeb, + 0xfe, 0x31, 0x91, 0x39, 0xe4, 0x0c, 0x37, 0x51, 0x95, 0x33, 0x62, 0x74, 0x8c, 0x5e, 0x7d, 0x5c, + 0xe5, 0x0c, 0x5b, 0x08, 0x79, 0x52, 0xa8, 0x48, 0x06, 0x01, 0x44, 0xa4, 0xda, 0x31, 0x7b, 0xf5, + 0x71, 0x89, 0xe0, 0x2f, 0xe8, 0xff, 0x39, 0x44, 0xfc, 0x96, 0x7b, 0x54, 0x71, 0x29, 0x9c, 0x10, + 0xd4, 0x44, 0x32, 0x62, 0x76, 0xcc, 0x5e, 0xe3, 0xe2, 0xf9, 0x60, 0xcf, 0x9e, 0x07, 0x37, 0x25, + 0xcf, 0xb5, 0xb6, 0x8c, 0xf1, 0x7c, 0x87, 0xe1, 0x67, 0xa8, 0x49, 0x13, 0x35, 0x01, 0xa1, 0x0a, + 0x4e, 0x0e, 0xf4, 0x0e, 0xb6, 0x28, 0xee, 0xa3, 0x53, 0x1a, 0xc7, 0x10, 0x95, 0xb7, 0x70, 0xa8, + 0x95, 0xad, 0x0d, 0x2f, 0x4a, 0x5e, 0xa2, 0x47, 0x1e, 0x9d, 0x51, 0x97, 0x07, 0x5c, 0xa5, 0x0e, + 0x17, 0x73, 0x59, 0x54, 0x3e, 0xd2, 0xfa, 0xf6, 0x43, 0xf2, 0xdd, 0x26, 0xb7, 0x65, 0x62, 0x10, + 0x80, 0x9f, 0x9b, 0x6a, 0xdb, 0xa6, 0xe1, 0x26, 0x87, 0xcf, 0xd1, 0xc9, 0x14, 0x52, 0x87, 0xfa, + 0x11, 0x40, 0x08, 0x42, 0x91, 0xff, 0xb4, 0xf8, 0x78, 0x0a, 0xe9, 0xd5, 0x9a, 0xe1, 0x57, 0xa8, + 0x16, 0x43, 0x34, 0xe7, 0x1e, 0x90, 0xba, 0x9e, 0xd9, 0xf9, 0xde, 0x99, 0x0d, 0x39, 0xfb, 0x98, + 0x4b, 0xc7, 0x6b, 0x0f, 0xee, 0xa2, 0x13, 0x1a, 0xc4, 0xd2, 0x99, 0x0a, 0xb9, 0x10, 0x0e, 0x8d, + 0x09, 0xd2, 0x6b, 0x34, 0x32, 0x38, 0xca, 0xd8, 0x55, 0x8c, 0x09, 0xaa, 0x65, 0x07, 0x06, 0x77, + 0x8a, 0x34, 0x74, 0x76, 0xfd, 0xd9, 0xfd, 0x69, 0x20, 0xbc, 0x7b, 0x12, 0x3b, 0x77, 0x00, 0xa3, + 0x03, 0x95, 0xce, 0x80, 0x54, 0x35, 0xd1, 0xf1, 0xd6, 0xbd, 0x30, 0x75, 0xa6, 0x7c, 0x2f, 0x46, + 0xa8, 0x39, 0x4b, 0xdc, 0x80, 0x7b, 0x4e, 0x36, 0x83, 0xaf, 0x8b, 0xa9, 0x3e, 0xb9, 0xc6, 0xc5, + 0xd3, 0xbd, 0xed, 0x8d, 0x20, 0xbd, 0xa1, 0x41, 0x02, 0x1f, 0x28, 0x8f, 0xc6, 0xc7, 0xb9, 0x79, + 0x04, 0xe9, 0xfb, 0xc5, 0x14, 0xbf, 0x44, 0xed, 0x52, 0xb1, 0x30, 0x09, 0x14, 0x77, 0x69, 0x0c, + 0xe4, 0x50, 0x2f, 0x8b, 0x37, 0xda, 0xeb, 0x75, 0xa6, 0xfb, 0x19, 0xa1, 0x87, 0x71, 0xfd, 0x53, + 0x43, 0x7d, 0x74, 0x5a, 0x0c, 0xd5, 0x01, 0xc1, 0x66, 0x92, 0x0b, 0x55, 0xb4, 0xd5, 0x2a, 0xf8, + 0xdb, 0x02, 0xbf, 0x7e, 0xf3, 0x63, 0x69, 0x19, 0xf7, 0x4b, 0xcb, 0xf8, 0xbd, 0xb4, 0x8c, 0xef, + 0x2b, 0xab, 0x72, 0xbf, 0xb2, 0x2a, 0xbf, 0x56, 0x56, 0xe5, 0x53, 0xdf, 0xe7, 0x6a, 0x92, 0xb8, + 0x03, 0x4f, 0x86, 0x76, 0xf1, 0xc8, 0xb2, 0xdf, 0x17, 0x59, 0x9b, 0xf6, 0x5d, 0x81, 0xb2, 0xe5, + 0x62, 0xf7, 0x48, 0xbf, 0xbb, 0xcb, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x04, 0x68, 0x72, 0x89, + 0xe8, 0x03, 0x00, 0x00, } func (m *Did) Marshal() (dAtA []byte, err error) { @@ -490,20 +488,15 @@ func (m *VerificationMethod) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x2a } if len(m.PublicKeyJwk) > 0 { - for k := range m.PublicKeyJwk { - v := m.PublicKeyJwk[k] - baseI := i - i -= len(v) - copy(dAtA[i:], v) - i = encodeVarintDid(dAtA, i, uint64(len(v))) - i-- - dAtA[i] = 0x12 - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintDid(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintDid(dAtA, i, uint64(baseI-i)) + for iNdEx := len(m.PublicKeyJwk) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PublicKeyJwk[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintDid(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x22 } @@ -679,11 +672,9 @@ func (m *VerificationMethod) Size() (n int) { n += 1 + l + sovDid(uint64(l)) } if len(m.PublicKeyJwk) > 0 { - for k, v := range m.PublicKeyJwk { - _ = k - _ = v - mapEntrySize := 1 + len(k) + sovDid(uint64(len(k))) + 1 + len(v) + sovDid(uint64(len(v))) - n += mapEntrySize + 1 + sovDid(uint64(mapEntrySize)) + for _, e := range m.PublicKeyJwk { + l = e.Size() + n += 1 + l + sovDid(uint64(l)) } } l = len(m.PublicKeyMultibase) @@ -1280,103 +1271,10 @@ func (m *VerificationMethod) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.PublicKeyJwk == nil { - m.PublicKeyJwk = make(map[string]string) - } - var mapkey string - var mapvalue string - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowDid - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowDid - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthDid - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthDid - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var stringLenmapvalue uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowDid - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapvalue |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapvalue := int(stringLenmapvalue) - if intStringLenmapvalue < 0 { - return ErrInvalidLengthDid - } - postStringIndexmapvalue := iNdEx + intStringLenmapvalue - if postStringIndexmapvalue < 0 { - return ErrInvalidLengthDid - } - if postStringIndexmapvalue > l { - return io.ErrUnexpectedEOF - } - mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) - iNdEx = postStringIndexmapvalue - } else { - iNdEx = entryPreIndex - skippy, err := skipDid(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthDid - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.PublicKeyJwk[mapkey] = mapvalue + m.PublicKeyJwk = append(m.PublicKeyJwk, &KeyValuePair{}) + if err := m.PublicKeyJwk[len(m.PublicKeyJwk)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 5: if wireType != 2 { diff --git a/x/cheqd/types/messages_write_request.go b/x/cheqd/types/messages_write_request.go index bff61a580..bb03427b9 100644 --- a/x/cheqd/types/messages_write_request.go +++ b/x/cheqd/types/messages_write_request.go @@ -7,7 +7,7 @@ import ( var _ sdk.Msg = &MsgWriteRequest{} -func NewMsgWriteRequest(data *types.Any, metadata map[string]string, signatures map[string]string) *MsgWriteRequest { +func NewMsgWriteRequest(data *types.Any, metadata []*KeyValuePair, signatures []*SignInfo) *MsgWriteRequest { return &MsgWriteRequest{ Data: data, Metadata: metadata, diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 1c1cac81f..476fb821b 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -29,8 +29,8 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type MsgWriteRequestSignObject struct { - Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Metadata []*KeyValuePair `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty"` } func (m *MsgWriteRequestSignObject) Reset() { *m = MsgWriteRequestSignObject{} } @@ -73,7 +73,7 @@ func (m *MsgWriteRequestSignObject) GetData() *types.Any { return nil } -func (m *MsgWriteRequestSignObject) GetMetadata() map[string]string { +func (m *MsgWriteRequestSignObject) GetMetadata() []*KeyValuePair { if m != nil { return m.Metadata } @@ -82,9 +82,9 @@ func (m *MsgWriteRequestSignObject) GetMetadata() map[string]string { // this line is used by starport scaffolding # proto/tx/message type MsgWriteRequest struct { - Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Signatures map[string]string `protobuf:"bytes,2,rep,name=signatures,proto3" json:"signatures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Signatures []*SignInfo `protobuf:"bytes,2,rep,name=signatures,proto3" json:"signatures,omitempty"` + Metadata []*KeyValuePair `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty"` } func (m *MsgWriteRequest) Reset() { *m = MsgWriteRequest{} } @@ -127,20 +127,72 @@ func (m *MsgWriteRequest) GetData() *types.Any { return nil } -func (m *MsgWriteRequest) GetSignatures() map[string]string { +func (m *MsgWriteRequest) GetSignatures() []*SignInfo { if m != nil { return m.Signatures } return nil } -func (m *MsgWriteRequest) GetMetadata() map[string]string { +func (m *MsgWriteRequest) GetMetadata() []*KeyValuePair { if m != nil { return m.Metadata } return nil } +type SignInfo struct { + VerificationMethodId string `protobuf:"bytes,1,opt,name=verification_method_id,json=verificationMethodId,proto3" json:"verification_method_id,omitempty"` + Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (m *SignInfo) Reset() { *m = SignInfo{} } +func (m *SignInfo) String() string { return proto.CompactTextString(m) } +func (*SignInfo) ProtoMessage() {} +func (*SignInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_d0277a2196c64ae2, []int{2} +} +func (m *SignInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SignInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SignInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *SignInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_SignInfo.Merge(m, src) +} +func (m *SignInfo) XXX_Size() int { + return m.Size() +} +func (m *SignInfo) XXX_DiscardUnknown() { + xxx_messageInfo_SignInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_SignInfo proto.InternalMessageInfo + +func (m *SignInfo) GetVerificationMethodId() string { + if m != nil { + return m.VerificationMethodId + } + return "" +} + +func (m *SignInfo) GetSignature() string { + if m != nil { + return m.Signature + } + return "" +} + type MsgCreateCredDef struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` @@ -157,7 +209,7 @@ func (m *MsgCreateCredDef) Reset() { *m = MsgCreateCredDef{} } func (m *MsgCreateCredDef) String() string { return proto.CompactTextString(m) } func (*MsgCreateCredDef) ProtoMessage() {} func (*MsgCreateCredDef) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{2} + return fileDescriptor_d0277a2196c64ae2, []int{3} } func (m *MsgCreateCredDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -274,7 +326,7 @@ func (m *MsgCreateCredDefResponse) Reset() { *m = MsgCreateCredDefRespon func (m *MsgCreateCredDefResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateCredDefResponse) ProtoMessage() {} func (*MsgCreateCredDefResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{3} + return fileDescriptor_d0277a2196c64ae2, []int{4} } func (m *MsgCreateCredDefResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -323,7 +375,7 @@ func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } func (m *MsgCreateSchema) String() string { return proto.CompactTextString(m) } func (*MsgCreateSchema) ProtoMessage() {} func (*MsgCreateSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{4} + return fileDescriptor_d0277a2196c64ae2, []int{5} } func (m *MsgCreateSchema) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -402,7 +454,7 @@ func (m *MsgCreateSchemaResponse) Reset() { *m = MsgCreateSchemaResponse func (m *MsgCreateSchemaResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateSchemaResponse) ProtoMessage() {} func (*MsgCreateSchemaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{5} + return fileDescriptor_d0277a2196c64ae2, []int{6} } func (m *MsgCreateSchemaResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -456,7 +508,7 @@ func (m *MsgCreateDid) Reset() { *m = MsgCreateDid{} } func (m *MsgCreateDid) String() string { return proto.CompactTextString(m) } func (*MsgCreateDid) ProtoMessage() {} func (*MsgCreateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{6} + return fileDescriptor_d0277a2196c64ae2, []int{7} } func (m *MsgCreateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -570,7 +622,7 @@ func (m *MsgCreateDidResponse) Reset() { *m = MsgCreateDidResponse{} } func (m *MsgCreateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateDidResponse) ProtoMessage() {} func (*MsgCreateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{7} + return fileDescriptor_d0277a2196c64ae2, []int{8} } func (m *MsgCreateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -625,7 +677,7 @@ func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } func (m *MsgUpdateDid) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDid) ProtoMessage() {} func (*MsgUpdateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{8} + return fileDescriptor_d0277a2196c64ae2, []int{9} } func (m *MsgUpdateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -746,7 +798,7 @@ func (m *MsgUpdateDidResponse) Reset() { *m = MsgUpdateDidResponse{} } func (m *MsgUpdateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDidResponse) ProtoMessage() {} func (*MsgUpdateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{9} + return fileDescriptor_d0277a2196c64ae2, []int{10} } func (m *MsgUpdateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -784,10 +836,8 @@ func (m *MsgUpdateDidResponse) GetId() string { func init() { proto.RegisterType((*MsgWriteRequestSignObject)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequestSignObject") - proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequestSignObject.MetadataEntry") proto.RegisterType((*MsgWriteRequest)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest") - proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest.MetadataEntry") - proto.RegisterMapType((map[string]string)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest.SignaturesEntry") + proto.RegisterType((*SignInfo)(nil), "cheqdid.cheqdnode.cheqd.SignInfo") proto.RegisterType((*MsgCreateCredDef)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDef") proto.RegisterType((*MsgCreateCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDefResponse") proto.RegisterType((*MsgCreateSchema)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchema") @@ -801,62 +851,62 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 879 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xb7, 0xd7, 0x4e, 0x1c, 0xbf, 0xfc, 0xd5, 0x34, 0xa8, 0xdb, 0x20, 0xac, 0xc8, 0x15, 0x95, - 0x03, 0xea, 0x9a, 0xa6, 0x12, 0xaa, 0x40, 0x95, 0x9a, 0x26, 0x48, 0x8d, 0x90, 0x41, 0xda, 0x40, - 0x41, 0xa8, 0x92, 0x35, 0xde, 0x7d, 0x59, 0x4f, 0xb3, 0x9e, 0x75, 0x77, 0xc6, 0x26, 0x7b, 0xe6, - 0x0b, 0x70, 0xe6, 0xc8, 0x95, 0x2f, 0xc2, 0xb1, 0x47, 0x8e, 0x55, 0x22, 0x3e, 0x05, 0x17, 0x34, - 0x7f, 0xec, 0x38, 0x6b, 0x96, 0x3a, 0x82, 0x1b, 0x5c, 0x92, 0x99, 0xdf, 0xbc, 0xf7, 0x7e, 0xef, - 0xfd, 0xe6, 0xed, 0x1b, 0xc3, 0x46, 0xd0, 0xc7, 0x57, 0x61, 0x5b, 0x9e, 0x7b, 0xc3, 0x34, 0x91, - 0x09, 0xb9, 0xad, 0xf7, 0x2c, 0xf4, 0xf4, 0x7f, 0x9e, 0x84, 0x68, 0x56, 0x3b, 0x77, 0xa2, 0x24, - 0x89, 0x62, 0x6c, 0x6b, 0xb3, 0xde, 0xe8, 0xb4, 0x4d, 0x79, 0x66, 0x7c, 0x76, 0x36, 0x4d, 0x0c, - 0xe5, 0x65, 0x80, 0x5b, 0x06, 0x08, 0x52, 0x0c, 0x8f, 0xf0, 0xd4, 0x80, 0xcd, 0x37, 0x65, 0xb8, - 0xd3, 0x11, 0xd1, 0x37, 0x29, 0x93, 0xe8, 0xe3, 0xab, 0x11, 0x0a, 0x79, 0xc2, 0x22, 0xfe, 0x65, - 0xef, 0x25, 0x06, 0x92, 0xb4, 0xa0, 0x1a, 0x52, 0x49, 0xdd, 0xf2, 0x6e, 0xb9, 0xb5, 0xba, 0xbf, - 0xed, 0x19, 0x36, 0x6f, 0xc2, 0xe6, 0x1d, 0xf0, 0xcc, 0xd7, 0x16, 0xe4, 0x05, 0xac, 0x0c, 0x50, - 0x52, 0x6d, 0xed, 0xec, 0x56, 0x5a, 0xab, 0xfb, 0x4f, 0xbc, 0x82, 0xa4, 0xbd, 0x42, 0x3e, 0xaf, - 0x63, 0x43, 0x7c, 0xc6, 0x65, 0x9a, 0xf9, 0xd3, 0x88, 0x3b, 0x9f, 0xc2, 0xfa, 0xb5, 0x23, 0xb2, - 0x05, 0x95, 0x33, 0xcc, 0x74, 0x5e, 0x75, 0x5f, 0x2d, 0xc9, 0x36, 0x2c, 0x8d, 0x69, 0x3c, 0x42, - 0xd7, 0xd1, 0x98, 0xd9, 0x7c, 0xe2, 0x3c, 0x2a, 0x37, 0x7f, 0x77, 0x60, 0x33, 0x47, 0x79, 0x83, - 0xc2, 0xbe, 0x05, 0x10, 0x2c, 0xe2, 0x54, 0x8e, 0x52, 0x14, 0xb6, 0xb4, 0x47, 0x8b, 0x96, 0xe6, - 0x9d, 0x4c, 0x5d, 0x4d, 0x49, 0x33, 0xb1, 0x88, 0x3f, 0x23, 0x59, 0x45, 0xc7, 0xfd, 0x78, 0xe1, - 0xb8, 0x45, 0x42, 0x3d, 0x86, 0xcd, 0x1c, 0xe5, 0x4d, 0xa4, 0xfa, 0x67, 0x3a, 0xff, 0xe0, 0xc0, - 0x56, 0x47, 0x44, 0x87, 0x29, 0x52, 0x89, 0x87, 0xa6, 0xcb, 0xc8, 0x06, 0x38, 0x2c, 0xb4, 0xfe, - 0x0e, 0x0b, 0xc9, 0xbb, 0x50, 0x17, 0x41, 0x1f, 0x07, 0xb4, 0xcb, 0x42, 0x1b, 0x62, 0xc5, 0x00, - 0xc7, 0xa1, 0x62, 0x93, 0x34, 0x72, 0x2b, 0x86, 0x4d, 0xd2, 0x88, 0x10, 0xa8, 0xca, 0x6c, 0x88, - 0x6e, 0x55, 0x43, 0x7a, 0x4d, 0x9e, 0x40, 0x2d, 0x88, 0xbb, 0x1a, 0x5e, 0xd2, 0xd7, 0xf7, 0x7e, - 0xa1, 0x6c, 0x36, 0x8b, 0xe7, 0x2a, 0xc7, 0x67, 0x25, 0x7f, 0x39, 0x88, 0xbf, 0x52, 0x11, 0x1e, - 0xc0, 0x0a, 0xe5, 0x99, 0x09, 0xb1, 0x5c, 0xdc, 0x01, 0xcf, 0x4a, 0x7e, 0x8d, 0xf2, 0x4c, 0xbb, - 0x34, 0x00, 0x82, 0x84, 0xcb, 0x34, 0x89, 0x63, 0x4c, 0xdd, 0xda, 0x6e, 0xa5, 0x55, 0xf7, 0x67, - 0x90, 0xa7, 0x35, 0x2b, 0x4b, 0xf3, 0x03, 0x70, 0xf3, 0x22, 0xf8, 0x28, 0x86, 0x09, 0x17, 0x98, - 0x17, 0xa3, 0xf9, 0x73, 0x59, 0x77, 0xa6, 0x31, 0x3e, 0xd1, 0x2a, 0xcc, 0x09, 0x36, 0x51, 0xc0, - 0x99, 0x51, 0x80, 0x40, 0x95, 0xd3, 0x01, 0x5a, 0xa1, 0xf4, 0x9a, 0xb8, 0x50, 0x1b, 0x63, 0x2a, - 0x58, 0xc2, 0xad, 0x58, 0x93, 0x2d, 0x79, 0x0f, 0x80, 0x4a, 0x99, 0x76, 0x95, 0x99, 0x70, 0x97, - 0x74, 0xea, 0x75, 0x85, 0x7c, 0xa1, 0x80, 0x5c, 0x65, 0xcb, 0xf9, 0xca, 0x9a, 0x7b, 0x70, 0x3b, - 0x97, 0x63, 0x61, 0x3d, 0x7f, 0x54, 0x60, 0x6d, 0x6a, 0x7b, 0xc4, 0xc2, 0xb9, 0x62, 0xae, 0x73, - 0x39, 0x79, 0x2e, 0xf2, 0x02, 0x6e, 0x8d, 0x31, 0x65, 0xa7, 0x2c, 0xa0, 0x92, 0x25, 0xbc, 0x3b, - 0x40, 0xd9, 0x4f, 0x42, 0xfb, 0x75, 0x7c, 0x58, 0x78, 0xcd, 0xcf, 0x67, 0x7c, 0x3a, 0xda, 0xc5, - 0x27, 0xe3, 0x39, 0x8c, 0xdc, 0x83, 0x0d, 0x3a, 0x92, 0x7d, 0xe4, 0xd2, 0xe2, 0x6e, 0x55, 0x67, - 0x90, 0x43, 0xc9, 0x1e, 0x6c, 0x51, 0x21, 0x30, 0x9d, 0x4d, 0xc1, 0xc8, 0xb6, 0x39, 0xc5, 0x6d, - 0xc8, 0x87, 0xf0, 0x4e, 0x40, 0x87, 0xb4, 0xc7, 0x62, 0x26, 0xb3, 0x2e, 0xe3, 0xe3, 0xc4, 0x46, - 0x36, 0x3a, 0x6e, 0x5f, 0x1d, 0x1e, 0x4f, 0xcf, 0x72, 0x4e, 0x21, 0xc6, 0x18, 0x19, 0xa7, 0x5a, - 0xde, 0xe9, 0x68, 0x7a, 0x46, 0xee, 0xc2, 0xfa, 0x19, 0x66, 0x5d, 0x1a, 0xa5, 0x88, 0x03, 0xe4, - 0xd2, 0x5d, 0xd1, 0xc6, 0x6b, 0x67, 0x98, 0x1d, 0x4c, 0x30, 0xd2, 0x84, 0x75, 0x1a, 0x8b, 0xa4, - 0x7b, 0xc6, 0x93, 0xef, 0x79, 0x97, 0x0a, 0xb7, 0xae, 0x8d, 0x56, 0x15, 0xf8, 0xb9, 0xc2, 0x0e, - 0x04, 0x79, 0x0c, 0x35, 0x81, 0xe9, 0x98, 0x05, 0xe8, 0x82, 0xd6, 0xf5, 0x6e, 0xa1, 0xae, 0x47, - 0x2c, 0x3c, 0x31, 0xa6, 0xfe, 0xc4, 0x47, 0xf5, 0x99, 0xba, 0x30, 0x3c, 0x97, 0xee, 0xaa, 0x0e, - 0x3e, 0xd9, 0x36, 0xef, 0xc1, 0xf6, 0xec, 0xe5, 0x17, 0x76, 0xc9, 0x4f, 0x55, 0xdd, 0x25, 0x5f, - 0x0f, 0xc3, 0xff, 0xbb, 0xe4, 0x3f, 0xd7, 0x25, 0x6a, 0x1a, 0xd9, 0xc1, 0xa4, 0x5e, 0x80, 0x35, - 0x7d, 0xe9, 0x75, 0x8b, 0x1c, 0x87, 0xb6, 0x89, 0xa6, 0xbd, 0x51, 0xd4, 0x44, 0xfb, 0xbf, 0x54, - 0xa0, 0xd2, 0x11, 0x11, 0x89, 0x61, 0xfd, 0xfa, 0x83, 0xd3, 0x5a, 0xf4, 0x0d, 0xdd, 0x79, 0xf0, - 0x77, 0x96, 0x7f, 0x3d, 0xc0, 0x5f, 0xc2, 0xda, 0xb5, 0x61, 0xbd, 0x38, 0xd9, 0x47, 0x6f, 0x27, - 0xcb, 0x0d, 0xd7, 0x10, 0xea, 0x57, 0x83, 0x74, 0x71, 0xa2, 0xfb, 0x6f, 0x27, 0x9a, 0xd5, 0x35, - 0x84, 0xfa, 0xd5, 0x87, 0xf8, 0x2f, 0xb1, 0xcc, 0xdd, 0xde, 0xd3, 0xc3, 0x5f, 0x2f, 0x1a, 0xe5, - 0xd7, 0x17, 0x8d, 0xf2, 0x9b, 0x8b, 0x46, 0xf9, 0xc7, 0xcb, 0x46, 0xe9, 0xf5, 0x65, 0xa3, 0xf4, - 0xdb, 0x65, 0xa3, 0xf4, 0xdd, 0x5e, 0xc4, 0x64, 0x7f, 0xd4, 0xf3, 0x82, 0x64, 0xd0, 0xb6, 0xbf, - 0x4f, 0xd5, 0xdf, 0xfb, 0x2a, 0x62, 0xfb, 0xdc, 0x42, 0xea, 0xd1, 0x13, 0xbd, 0x65, 0xfd, 0x36, - 0x3f, 0xfc, 0x33, 0x00, 0x00, 0xff, 0xff, 0x44, 0xda, 0x63, 0x6a, 0x1d, 0x0b, 0x00, 0x00, + // 866 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x6f, 0x1b, 0x45, + 0x18, 0xf6, 0x57, 0x62, 0xfb, 0xcd, 0xa7, 0xa6, 0x81, 0x6e, 0x03, 0x58, 0xc1, 0x15, 0x95, 0x03, + 0xaa, 0x4d, 0x53, 0xae, 0x48, 0xa4, 0xc9, 0xa1, 0x56, 0x15, 0x40, 0x1b, 0x28, 0x12, 0x42, 0x58, + 0xe3, 0x9d, 0x37, 0xeb, 0x69, 0xd6, 0x33, 0xee, 0xce, 0xd8, 0x64, 0xcf, 0x5c, 0x38, 0x72, 0xe6, + 0xc8, 0x95, 0x5f, 0xc1, 0x8d, 0x63, 0x8f, 0x1c, 0x51, 0xf2, 0x33, 0xb8, 0xa0, 0x99, 0x59, 0x3b, + 0xf6, 0xba, 0x4b, 0x03, 0xe2, 0x46, 0x2f, 0xc9, 0xec, 0x33, 0xef, 0xc7, 0xf3, 0x3e, 0xf3, 0x64, + 0x26, 0xb0, 0x19, 0x0c, 0xf0, 0x39, 0xeb, 0xe8, 0x8b, 0xf6, 0x28, 0x96, 0x5a, 0x92, 0xdb, 0xf6, + 0x9b, 0xb3, 0xb6, 0xfd, 0x2d, 0x24, 0x43, 0xb7, 0xda, 0xbd, 0x13, 0x4a, 0x19, 0x46, 0xd8, 0xb1, + 0x61, 0xfd, 0xf1, 0x59, 0x87, 0x8a, 0xc4, 0xe5, 0xec, 0x12, 0x57, 0x23, 0x90, 0xc3, 0xa1, 0x14, + 0x29, 0xb6, 0xe5, 0x30, 0x53, 0xc9, 0x01, 0xb7, 0xd2, 0xa0, 0x18, 0xd9, 0x31, 0x9e, 0x39, 0xb0, + 0xf9, 0x43, 0x11, 0xee, 0x9c, 0xa8, 0xf0, 0xab, 0x98, 0x6b, 0xf4, 0xf1, 0xf9, 0x18, 0x95, 0x3e, + 0xe5, 0xa1, 0xf8, 0xac, 0xff, 0x0c, 0x03, 0x4d, 0x5a, 0x50, 0x61, 0x54, 0x53, 0xaf, 0xb8, 0x57, + 0x6c, 0xad, 0x1d, 0xec, 0xb4, 0x1d, 0x83, 0xf6, 0x94, 0x41, 0xfb, 0x50, 0x24, 0xbe, 0x8d, 0x20, + 0x87, 0x50, 0x1b, 0xa2, 0xa6, 0x36, 0xba, 0xb4, 0x57, 0x6e, 0xad, 0x1d, 0xbc, 0xd7, 0xce, 0x19, + 0xa4, 0xfd, 0x04, 0x93, 0xa7, 0x34, 0x1a, 0xe3, 0xe7, 0x94, 0xc7, 0xfe, 0x2c, 0xad, 0xf9, 0x6b, + 0x11, 0xb6, 0x32, 0x54, 0xfe, 0x11, 0x01, 0x50, 0x3c, 0x14, 0x54, 0x8f, 0x63, 0x54, 0x29, 0x85, + 0x77, 0x73, 0x29, 0x98, 0x19, 0xbb, 0xe2, 0x4c, 0xfa, 0x73, 0x49, 0x0b, 0x33, 0x94, 0xff, 0xdd, + 0x0c, 0xdf, 0x42, 0x6d, 0x5a, 0x9a, 0x7c, 0x04, 0x6f, 0x4e, 0x30, 0xe6, 0x67, 0x3c, 0xa0, 0x9a, + 0x4b, 0xd1, 0x1b, 0xa2, 0x1e, 0x48, 0xd6, 0xe3, 0xcc, 0x4e, 0x53, 0xf7, 0x77, 0xe6, 0x77, 0x4f, + 0xec, 0x66, 0x97, 0x91, 0xb7, 0xa1, 0x3e, 0xa3, 0xe4, 0x95, 0x6c, 0xe0, 0x35, 0xd0, 0xfc, 0xbe, + 0x04, 0xdb, 0x27, 0x2a, 0x3c, 0x8a, 0x91, 0x6a, 0x3c, 0x72, 0x27, 0x49, 0x36, 0xa1, 0x34, 0x2b, + 0x5a, 0xe2, 0x8c, 0xbc, 0x05, 0x75, 0x15, 0x0c, 0x70, 0x48, 0x4d, 0x2f, 0x57, 0xa2, 0xe6, 0x80, + 0x2e, 0x23, 0xdb, 0x50, 0xd6, 0x34, 0xf4, 0xca, 0x16, 0x36, 0x4b, 0x42, 0xa0, 0xa2, 0x93, 0x11, + 0x7a, 0x15, 0x0b, 0xd9, 0x35, 0xf9, 0x04, 0xaa, 0x41, 0xd4, 0xb3, 0xf0, 0x8a, 0x95, 0x3e, 0x5f, + 0x89, 0x94, 0x85, 0x55, 0xe3, 0x71, 0xc1, 0x5f, 0x0d, 0xa2, 0x2f, 0x4c, 0x85, 0x07, 0x50, 0xa3, + 0x22, 0x71, 0x25, 0x56, 0xf3, 0x4f, 0xef, 0x71, 0xc1, 0xaf, 0x52, 0x91, 0xd8, 0x94, 0x06, 0x40, + 0x20, 0x85, 0x8e, 0x65, 0x14, 0x61, 0xec, 0x55, 0xf7, 0xca, 0xad, 0xba, 0x3f, 0x87, 0x3c, 0xaa, + 0xc2, 0xca, 0xc4, 0x74, 0x69, 0xbe, 0x0f, 0x5e, 0x56, 0x04, 0x1f, 0xd5, 0x48, 0x0a, 0x85, 0x59, + 0x31, 0x9a, 0x3f, 0x3b, 0x57, 0xb9, 0xe0, 0x53, 0xab, 0xc2, 0x92, 0x60, 0x53, 0x05, 0x4a, 0x73, + 0x0a, 0x10, 0xa8, 0x08, 0x3a, 0xc4, 0x54, 0x28, 0xbb, 0x26, 0x1e, 0x54, 0x27, 0x18, 0x2b, 0x2e, + 0x45, 0x2a, 0xd6, 0xf4, 0x93, 0xbc, 0x03, 0x40, 0xb5, 0x8e, 0x7b, 0x26, 0x4c, 0x79, 0x2b, 0x96, + 0x7a, 0xdd, 0x20, 0x9f, 0x1a, 0x20, 0x33, 0xd9, 0x6a, 0x76, 0xb2, 0xe6, 0x3e, 0xdc, 0xce, 0x70, + 0xcc, 0x9d, 0xe7, 0xcf, 0x32, 0xac, 0xcf, 0x62, 0x8f, 0x39, 0x5b, 0x1a, 0x66, 0xb1, 0x57, 0x29, + 0xdb, 0x8b, 0x7c, 0x03, 0xb7, 0x5e, 0x62, 0xcb, 0xd4, 0xf0, 0x1f, 0xe4, 0x1e, 0xf3, 0xd3, 0x25, + 0xb3, 0xfa, 0x64, 0xd9, 0xc0, 0xe4, 0x1e, 0x6c, 0xd2, 0xb1, 0x1e, 0xa0, 0xd0, 0x29, 0xee, 0x55, + 0x2c, 0x83, 0x0c, 0x4a, 0xf6, 0x61, 0x9b, 0x2a, 0x85, 0xf1, 0x3c, 0x05, 0x27, 0xdb, 0xd6, 0x0c, + 0x4f, 0x4b, 0x3e, 0x84, 0x37, 0x02, 0x3a, 0xa2, 0x7d, 0x1e, 0x71, 0x9d, 0xf4, 0xb8, 0x98, 0xc8, + 0xb4, 0xb2, 0xd3, 0x71, 0xe7, 0x7a, 0xb3, 0x3b, 0xdb, 0xcb, 0x24, 0x31, 0x8c, 0x30, 0x74, 0x49, + 0xd5, 0x6c, 0xd2, 0xf1, 0x6c, 0x8f, 0xdc, 0x85, 0x8d, 0x73, 0x4c, 0x7a, 0x34, 0x8c, 0x11, 0x87, + 0x28, 0xb4, 0x57, 0xb3, 0xc1, 0xeb, 0xe7, 0x98, 0x1c, 0x4e, 0x31, 0xd2, 0x84, 0x0d, 0x1a, 0x29, + 0xd9, 0x3b, 0x17, 0xf2, 0x3b, 0xd1, 0xa3, 0xca, 0xab, 0xdb, 0xa0, 0x35, 0x03, 0x3e, 0x31, 0xd8, + 0xa1, 0x22, 0x1f, 0x43, 0x55, 0x61, 0x3c, 0xe1, 0x01, 0x7a, 0x60, 0x75, 0xbd, 0x9b, 0xab, 0xeb, + 0x31, 0x67, 0xa7, 0x2e, 0xd4, 0x9f, 0xe6, 0x18, 0x9f, 0x99, 0x03, 0xc3, 0x0b, 0xed, 0xad, 0xd9, + 0xe2, 0xd3, 0xcf, 0xe6, 0x3d, 0xd8, 0x99, 0x3f, 0xfc, 0x5c, 0x97, 0xfc, 0x54, 0xb1, 0x2e, 0xf9, + 0x72, 0xc4, 0x5e, 0xbb, 0xe4, 0x7f, 0xe7, 0x12, 0x73, 0x1b, 0xa5, 0x17, 0x93, 0x79, 0x01, 0xd6, + 0xdd, 0x23, 0x92, 0x22, 0x5d, 0x96, 0x9a, 0x68, 0xe6, 0x8d, 0x3c, 0x13, 0x1d, 0xfc, 0x52, 0x86, + 0xf2, 0x89, 0x0a, 0x49, 0x04, 0x1b, 0x8b, 0x0f, 0x4e, 0x2b, 0x97, 0x67, 0xe6, 0xfd, 0xde, 0x7d, + 0xf0, 0x77, 0x91, 0x2f, 0xbf, 0xc0, 0x9f, 0xc1, 0xfa, 0xc2, 0x65, 0x7d, 0xf3, 0x66, 0x1f, 0xbe, + 0xba, 0x59, 0xe6, 0x72, 0x65, 0x50, 0xbf, 0xbe, 0x48, 0x6f, 0xde, 0xe8, 0xfe, 0xab, 0x1b, 0xcd, + 0xeb, 0xca, 0xa0, 0x7e, 0xfd, 0x87, 0xf8, 0x1f, 0x75, 0x59, 0x3a, 0xbd, 0x47, 0x47, 0xbf, 0x5d, + 0x36, 0x8a, 0x2f, 0x2e, 0x1b, 0xc5, 0x3f, 0x2e, 0x1b, 0xc5, 0x1f, 0xaf, 0x1a, 0x85, 0x17, 0x57, + 0x8d, 0xc2, 0xef, 0x57, 0x8d, 0xc2, 0xd7, 0xfb, 0x21, 0xd7, 0x83, 0x71, 0xbf, 0x1d, 0xc8, 0x61, + 0x27, 0xfd, 0x1f, 0xd0, 0xfc, 0xbc, 0x6f, 0x2a, 0x76, 0x2e, 0x52, 0xc8, 0x3c, 0x7a, 0xaa, 0xbf, + 0x6a, 0xdf, 0xe6, 0x87, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x50, 0x27, 0x32, 0x95, 0x0a, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1070,20 +1120,15 @@ func (m *MsgWriteRequestSignObject) MarshalToSizedBuffer(dAtA []byte) (int, erro var l int _ = l if len(m.Metadata) > 0 { - for k := range m.Metadata { - v := m.Metadata[k] - baseI := i - i -= len(v) - copy(dAtA[i:], v) - i = encodeVarintTx(dAtA, i, uint64(len(v))) - i-- - dAtA[i] = 0x12 - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintTx(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintTx(dAtA, i, uint64(baseI-i)) + for iNdEx := len(m.Metadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Metadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x12 } @@ -1124,39 +1169,29 @@ func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Metadata) > 0 { - for k := range m.Metadata { - v := m.Metadata[k] - baseI := i - i -= len(v) - copy(dAtA[i:], v) - i = encodeVarintTx(dAtA, i, uint64(len(v))) - i-- - dAtA[i] = 0x12 - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintTx(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintTx(dAtA, i, uint64(baseI-i)) + for iNdEx := len(m.Metadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Metadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x1a } } if len(m.Signatures) > 0 { - for k := range m.Signatures { - v := m.Signatures[k] - baseI := i - i -= len(v) - copy(dAtA[i:], v) - i = encodeVarintTx(dAtA, i, uint64(len(v))) - i-- - dAtA[i] = 0x12 - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintTx(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintTx(dAtA, i, uint64(baseI-i)) + for iNdEx := len(m.Signatures) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Signatures[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x12 } @@ -1176,6 +1211,43 @@ func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SignInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SignInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SignInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Signature) > 0 { + i -= len(m.Signature) + copy(dAtA[i:], m.Signature) + i = encodeVarintTx(dAtA, i, uint64(len(m.Signature))) + i-- + dAtA[i] = 0x12 + } + if len(m.VerificationMethodId) > 0 { + i -= len(m.VerificationMethodId) + copy(dAtA[i:], m.VerificationMethodId) + i = encodeVarintTx(dAtA, i, uint64(len(m.VerificationMethodId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *MsgCreateCredDef) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1765,11 +1837,9 @@ func (m *MsgWriteRequestSignObject) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } if len(m.Metadata) > 0 { - for k, v := range m.Metadata { - _ = k - _ = v - mapEntrySize := 1 + len(k) + sovTx(uint64(len(k))) + 1 + len(v) + sovTx(uint64(len(v))) - n += mapEntrySize + 1 + sovTx(uint64(mapEntrySize)) + for _, e := range m.Metadata { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) } } return n @@ -1786,24 +1856,37 @@ func (m *MsgWriteRequest) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } if len(m.Signatures) > 0 { - for k, v := range m.Signatures { - _ = k - _ = v - mapEntrySize := 1 + len(k) + sovTx(uint64(len(k))) + 1 + len(v) + sovTx(uint64(len(v))) - n += mapEntrySize + 1 + sovTx(uint64(mapEntrySize)) + for _, e := range m.Signatures { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) } } if len(m.Metadata) > 0 { - for k, v := range m.Metadata { - _ = k - _ = v - mapEntrySize := 1 + len(k) + sovTx(uint64(len(k))) + 1 + len(v) + sovTx(uint64(len(v))) - n += mapEntrySize + 1 + sovTx(uint64(mapEntrySize)) + for _, e := range m.Metadata { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) } } return n } +func (m *SignInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.VerificationMethodId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Signature) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + func (m *MsgCreateCredDef) Size() (n int) { if m == nil { return 0 @@ -2201,103 +2284,10 @@ func (m *MsgWriteRequestSignObject) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Metadata == nil { - m.Metadata = make(map[string]string) - } - var mapkey string - var mapvalue string - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthTx - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthTx - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var stringLenmapvalue uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapvalue |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapvalue := int(stringLenmapvalue) - if intStringLenmapvalue < 0 { - return ErrInvalidLengthTx - } - postStringIndexmapvalue := iNdEx + intStringLenmapvalue - if postStringIndexmapvalue < 0 { - return ErrInvalidLengthTx - } - if postStringIndexmapvalue > l { - return io.ErrUnexpectedEOF - } - mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) - iNdEx = postStringIndexmapvalue - } else { - iNdEx = entryPreIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.Metadata[mapkey] = mapvalue + m.Metadata = append(m.Metadata, &KeyValuePair{}) + if err := m.Metadata[len(m.Metadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -2414,103 +2404,10 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Signatures == nil { - m.Signatures = make(map[string]string) - } - var mapkey string - var mapvalue string - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthTx - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthTx - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var stringLenmapvalue uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapvalue |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapvalue := int(stringLenmapvalue) - if intStringLenmapvalue < 0 { - return ErrInvalidLengthTx - } - postStringIndexmapvalue := iNdEx + intStringLenmapvalue - if postStringIndexmapvalue < 0 { - return ErrInvalidLengthTx - } - if postStringIndexmapvalue > l { - return io.ErrUnexpectedEOF - } - mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) - iNdEx = postStringIndexmapvalue - } else { - iNdEx = entryPreIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.Signatures[mapkey] = mapvalue + m.Signatures = append(m.Signatures, &SignInfo{}) + if err := m.Signatures[len(m.Signatures)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: if wireType != 2 { @@ -2541,103 +2438,124 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Metadata == nil { - m.Metadata = make(map[string]string) - } - var mapkey string - var mapvalue string - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthTx - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthTx - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var stringLenmapvalue uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapvalue |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapvalue := int(stringLenmapvalue) - if intStringLenmapvalue < 0 { - return ErrInvalidLengthTx - } - postStringIndexmapvalue := iNdEx + intStringLenmapvalue - if postStringIndexmapvalue < 0 { - return ErrInvalidLengthTx - } - if postStringIndexmapvalue > l { - return io.ErrUnexpectedEOF - } - mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) - iNdEx = postStringIndexmapvalue - } else { - iNdEx = entryPreIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.Metadata[mapkey] = mapvalue + m.Metadata = append(m.Metadata, &KeyValuePair{}) + if err := m.Metadata[len(m.Metadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SignInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SignInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SignInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VerificationMethodId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VerificationMethodId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signature", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signature = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex From 05d917ea37c5bf245619e9c2f6dd201014d1a28a Mon Sep 17 00:00:00 2001 From: Alexander Kolesov Date: Mon, 25 Oct 2021 15:41:31 +0300 Subject: [PATCH 56/74] Review issues fixes --- x/cheqd/keeper/cred_def.go | 7 ++++++- x/cheqd/keeper/did.go | 7 ++++++- x/cheqd/keeper/grpc_query_cred_def.go | 5 ----- x/cheqd/keeper/grpc_query_did.go | 5 ----- x/cheqd/keeper/grpc_query_schema.go | 5 ----- x/cheqd/keeper/keeper.go | 27 +++++++++++++++++++++++++++ x/cheqd/keeper/msg_server_cred_def.go | 2 +- x/cheqd/keeper/msg_server_did.go | 2 +- x/cheqd/keeper/msg_server_schema.go | 2 +- x/cheqd/keeper/query_cred_def.go | 2 +- x/cheqd/keeper/query_did.go | 2 +- x/cheqd/keeper/query_schema.go | 2 +- x/cheqd/keeper/schema.go | 7 ++++++- x/cheqd/keeper/state.go | 26 -------------------------- x/cheqd/tests/handler_test.go | 8 ++++---- x/cheqd/types/msg_test.go | 6 +++--- 16 files changed, 58 insertions(+), 57 deletions(-) delete mode 100644 x/cheqd/keeper/state.go diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 3fd8fb63b..3666319ed 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -91,8 +91,13 @@ func (k Keeper) AppendCredDef( func (k Keeper) GetCredDef(ctx sdk.Context, id string) (*types.StateValue, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) + if !k.HasCredDef(ctx, id) { + return nil, sdkerrors.ErrNotFound + } + var value types.StateValue - if err := k.cdc.Unmarshal(store.Get(GetCredDefIDBytes(id)), &value); err != nil { + var bytes = store.Get(GetCredDefIDBytes(id)) + if err := k.cdc.Unmarshal(bytes, &value); err != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) } diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index be35445d3..e97e9e94e 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -68,8 +68,13 @@ func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata, func (k Keeper) GetDid(ctx *sdk.Context, id string) (*types.StateValue, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) + if !k.HasDid(*ctx, id) { + return nil, sdkerrors.ErrNotFound + } + var value types.StateValue - if err := k.cdc.Unmarshal(store.Get(GetDidIDBytes(id)), &value); err != nil { + var bytes = store.Get(GetDidIDBytes(id)) + if err := k.cdc.Unmarshal(bytes, &value); err != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) } diff --git a/x/cheqd/keeper/grpc_query_cred_def.go b/x/cheqd/keeper/grpc_query_cred_def.go index c584f06c5..63f1a0a53 100644 --- a/x/cheqd/keeper/grpc_query_cred_def.go +++ b/x/cheqd/keeper/grpc_query_cred_def.go @@ -5,7 +5,6 @@ import ( "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -16,10 +15,6 @@ func (k Keeper) CredDef(c context.Context, req *types.QueryGetCredDefRequest) (* } ctx := sdk.UnwrapSDKContext(c) - if !k.HasCredDef(ctx, req.Id) { - return nil, sdkerrors.ErrKeyNotFound - } - state, err := k.GetCredDef(ctx, req.Id) if err != nil { return nil, err diff --git a/x/cheqd/keeper/grpc_query_did.go b/x/cheqd/keeper/grpc_query_did.go index a97cdb226..6a17fd914 100644 --- a/x/cheqd/keeper/grpc_query_did.go +++ b/x/cheqd/keeper/grpc_query_did.go @@ -5,7 +5,6 @@ import ( "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -17,10 +16,6 @@ func (k Keeper) Did(c context.Context, req *types.QueryGetDidRequest) (*types.Qu ctx := sdk.UnwrapSDKContext(c) - if !k.HasDid(ctx, req.Id) { - return nil, sdkerrors.ErrKeyNotFound - } - state, err := k.GetDid(&ctx, req.Id) if err != nil { return nil, err diff --git a/x/cheqd/keeper/grpc_query_schema.go b/x/cheqd/keeper/grpc_query_schema.go index 4c0ea646a..79745ca21 100644 --- a/x/cheqd/keeper/grpc_query_schema.go +++ b/x/cheqd/keeper/grpc_query_schema.go @@ -5,7 +5,6 @@ import ( "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -16,10 +15,6 @@ func (k Keeper) Schema(c context.Context, req *types.QueryGetSchemaRequest) (*ty } ctx := sdk.UnwrapSDKContext(c) - if !k.HasSchema(ctx, req.Id) { - return nil, sdkerrors.ErrKeyNotFound - } - state, err := k.GetSchema(ctx, req.Id) if err != nil { return nil, err diff --git a/x/cheqd/keeper/keeper.go b/x/cheqd/keeper/keeper.go index a6fb59069..adbe1f7fb 100644 --- a/x/cheqd/keeper/keeper.go +++ b/x/cheqd/keeper/keeper.go @@ -2,6 +2,8 @@ package keeper import ( "fmt" + "github.com/cheqd/cheqd-node/x/cheqd/utils" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/tendermint/tendermint/libs/log" @@ -29,3 +31,28 @@ func NewKeeper(cdc codec.Codec, storeKey, memKey sdk.StoreKey) *Keeper { func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } + +// IsDidUsed checks if the did is used by DIDDoc, Schema or CredDef +func (k Keeper) IsDidUsed(ctx sdk.Context, did string) bool { + if k.HasDid(ctx, did) || k.HasSchema(ctx, utils.GetSchemaFromDid(did)) ||k.HasCredDef(ctx, utils.GetCredDefFromDid(did)) { + return true + } + + return false +} + +func (k Keeper) EnsureDidIsNotUsed(ctx sdk.Context, did string) error { + if k.HasDid(ctx, did) { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID is already used by DIDDoc %s", did)) + } + + if k.HasSchema(ctx, utils.GetSchemaFromDid(did)) { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID is already used by Schema %s", did)) + } + + if k.HasCredDef(ctx, utils.GetCredDefFromDid(did)) { + return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID is already used by CredDef %s", did)) + } + + return nil +} diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 2757c0d13..58d101ccc 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -25,7 +25,7 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque } // Checks that the element exists - if err := k.HasDidDoc(ctx, credDefMsg.GetDid()); err != nil { + if err := k.EnsureDidIsNotUsed(ctx, credDefMsg.GetDid()); err != nil { return nil, err } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 49cecc3b9..47112f00c 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -31,7 +31,7 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) } // Checks that the element exists - if err := k.HasDidDoc(ctx, didMsg.Id); err != nil { + if err := k.EnsureDidIsNotUsed(ctx, didMsg.Id); err != nil { return nil, err } diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index c0bbf2b30..9a6620b53 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -26,7 +26,7 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteReques } // Checks that the element exists - if err := k.HasDidDoc(ctx, schemaMsg.GetDid()); err != nil { + if err := k.EnsureDidIsNotUsed(ctx, schemaMsg.GetDid()); err != nil { return nil, err } diff --git a/x/cheqd/keeper/query_cred_def.go b/x/cheqd/keeper/query_cred_def.go index acdd350e6..72f6fe36b 100644 --- a/x/cheqd/keeper/query_cred_def.go +++ b/x/cheqd/keeper/query_cred_def.go @@ -13,7 +13,7 @@ func getCredDef(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *cod msg, err := keeper.GetCredDef(ctx, id) if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + return nil, err } bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) diff --git a/x/cheqd/keeper/query_did.go b/x/cheqd/keeper/query_did.go index bebfb225a..fd5b2913f 100644 --- a/x/cheqd/keeper/query_did.go +++ b/x/cheqd/keeper/query_did.go @@ -13,7 +13,7 @@ func getDid(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.L msg, err := keeper.GetDid(&ctx, id) if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + return nil, err } bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) diff --git a/x/cheqd/keeper/query_schema.go b/x/cheqd/keeper/query_schema.go index a85f3d91f..b8ba8c457 100644 --- a/x/cheqd/keeper/query_schema.go +++ b/x/cheqd/keeper/query_schema.go @@ -13,7 +13,7 @@ func getSchema(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *code msg, err := keeper.GetSchema(ctx, id) if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) + return nil, err } bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index 0b54be234..4cfe57e03 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -85,8 +85,13 @@ func (k Keeper) AppendSchema( func (k Keeper) GetSchema(ctx sdk.Context, id string) (*types.StateValue, error) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + if !k.HasSchema(ctx, id) { + return nil, sdkerrors.ErrNotFound + } + var value types.StateValue - if err := k.cdc.Unmarshal(store.Get(GetSchemaIDBytes(id)), &value); err != nil { + var bytes = store.Get(GetSchemaIDBytes(id)) + if err := k.cdc.Unmarshal(bytes, &value); err != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) } diff --git a/x/cheqd/keeper/state.go b/x/cheqd/keeper/state.go deleted file mode 100644 index 9982561a9..000000000 --- a/x/cheqd/keeper/state.go +++ /dev/null @@ -1,26 +0,0 @@ -package keeper - -import ( - "fmt" - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cheqd/cheqd-node/x/cheqd/utils" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -// HasDidDoc checks if the did exist in the store -func (k Keeper) HasDidDoc(ctx sdk.Context, did string) error { - if k.HasDid(ctx, did) { - return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for DID %s", did)) - } - - if k.HasSchema(ctx, utils.GetSchemaFromDid(did)) { - return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for Schema %s", did)) - } - - if k.HasCredDef(ctx, utils.GetCredDefFromDid(did)) { - return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID DOC already exists for CredDef %s", did)) - } - - return nil -} diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 2ad31bbef..3b7f3bbeb 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -393,7 +393,7 @@ func TestCreateDID(t *testing.T) { }, }, }, - errMsg: "DID DOC already exists for DID did:cheqd:test:123456qwertyui: DID Doc exists", + errMsg: "DID is already used by DIDDoc did:cheqd:test:123456qwertyui: DID Doc exists", }, { valid: false, @@ -1150,7 +1150,7 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, _, err := setup.InitDid("did:cheqd:test:alice") require.Error(t, err) - require.Equal(t, "DID DOC already exists for DID did:cheqd:test:alice: DID Doc exists", err.Error()) + require.Equal(t, "DID is already used by DIDDoc did:cheqd:test:alice: DID Doc exists", err.Error()) credDefMsg := setup.CreateCredDef() data, _ := ptypes.NewAnyWithValue(credDefMsg) @@ -1158,7 +1158,7 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) require.Error(t, err) - require.Equal(t, "DID DOC already exists for CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) + require.Equal(t, "DID is already used by CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) schemaMsg := setup.CreateSchema() data, _ = ptypes.NewAnyWithValue(schemaMsg) @@ -1166,5 +1166,5 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) require.Error(t, err) - require.Equal(t, "DID DOC already exists for Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) + require.Equal(t, "DID is already used by Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) } diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index 0efe42f68..3261e6367 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -155,9 +155,9 @@ func TestNewMsgWriteRequestValidation(t *testing.T) { msg *MsgWriteRequest errMsg string }{ - {true, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), ""}, - {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, - {false, NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, nil, map[string]string{"foo": "bar"}), "Invalid Data: it cannot be empty: bad request"}, + {true, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, []*SignInfo{ {VerificationMethodId: "foo", Signature: "bar"} }), ""}, + {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, nil, []*SignInfo{ {VerificationMethodId: "foo", Signature: "bar"} }), "Invalid Data: it cannot be empty: bad request"}, + {false, NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, nil, []*SignInfo{ {VerificationMethodId: "foo", Signature: "bar"} }), "Invalid Data: it cannot be empty: bad request"}, {false, NewMsgWriteRequest(nil, nil, nil), "Data: is required"}, {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, nil), "Signatures: is required"}, } From a8f078e56e985e60160e1e44dcaecc5d8cf885df Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Mon, 25 Oct 2021 15:42:02 +0300 Subject: [PATCH 57/74] fixed unmarshalling --- x/cheqd/keeper/msg_server_cred_def.go | 5 +++-- x/cheqd/keeper/msg_server_did.go | 12 +++++++----- x/cheqd/keeper/msg_server_schema.go | 6 +++--- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 58d101ccc..7c96e1b5c 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -11,8 +11,9 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque ctx := sdk.UnwrapSDKContext(goCtx) prefix := types.DidPrefix + ctx.ChainID() + ":" - credDefMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateCredDef) - if !isMsgIdentity { + var credDefMsg types.MsgCreateCredDef + err := k.cdc.Unmarshal(msg.Data.Value, &credDefMsg) + if err != nil { return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 47112f00c..2879d2459 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -17,8 +17,9 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) ctx := sdk.UnwrapSDKContext(goCtx) prefix := types.DidPrefix + ctx.ChainID() + ":" - didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateDid) - if !isMsgIdentity { + var didMsg types.MsgCreateDid + err := k.cdc.Unmarshal(msg.Data.Value, &didMsg) + if err != nil { return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } @@ -70,8 +71,9 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) ctx := sdk.UnwrapSDKContext(goCtx) prefix := types.DidPrefix + ctx.ChainID() + ":" - didMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgUpdateDid) - if !isMsgIdentity { + var didMsg types.MsgUpdateDid + err := k.cdc.Unmarshal(msg.Data.Value, &didMsg) + if err != nil { return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } @@ -89,7 +91,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, err } - if err := k.UpdateDidVerifySignature(&ctx, msg, oldDIDDoc.GetDid(), didMsg); err != nil { + if err := k.UpdateDidVerifySignature(&ctx, msg, oldDIDDoc.GetDid(), &didMsg); err != nil { return nil, err } diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 9a6620b53..e017f9951 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -11,9 +11,9 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteReques ctx := sdk.UnwrapSDKContext(goCtx) prefix := types.DidPrefix + ctx.ChainID() + ":" - schemaMsg, isMsgIdentity := msg.Data.GetCachedValue().(*types.MsgCreateSchema) - - if !isMsgIdentity { + var schemaMsg types.MsgCreateSchema + err := k.cdc.Unmarshal(msg.Data.Value, &schemaMsg) + if err != nil { return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } From c4ee196dcf2acbc7f839da7adc7265be51dba22f Mon Sep 17 00:00:00 2001 From: Alexander Kolesov Date: Mon, 25 Oct 2021 17:58:09 +0300 Subject: [PATCH 58/74] Remove unnecessary memKey, basicValidation. Fix tests. --- app/app.go | 2 +- x/cheqd/handler.go | 4 ---- x/cheqd/keeper/keeper.go | 4 +--- x/cheqd/keeper/msg_server_cred_def.go | 3 ++- x/cheqd/keeper/msg_server_did.go | 4 ++-- x/cheqd/keeper/msg_server_schema.go | 2 +- x/cheqd/tests/handler_test_setup.go | 3 +-- x/cheqd/types/keys.go | 14 ++++++-------- x/cheqd/types/msg_test.go | 9 +++++---- 9 files changed, 19 insertions(+), 26 deletions(-) diff --git a/app/app.go b/app/app.go index 6d3c7cb4f..3c3cbf93a 100644 --- a/app/app.go +++ b/app/app.go @@ -348,7 +348,7 @@ func New( app.EvidenceKeeper = *evidenceKeeper app.cheqdKeeper = *cheqdkeeper.NewKeeper( - appCodec, keys[cheqdtypes.StoreKey], keys[cheqdtypes.MemStoreKey], + appCodec, keys[cheqdtypes.StoreKey], ) // this line is used by starport scaffolding # stargate/app/keeperDefinition diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index 70266d3c8..ea1cfe002 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -21,10 +21,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } - if err := parsedMsg.ValidateBasic(); err != nil { - return nil, err - } - switch parsedMsg.Data.TypeUrl { // this line is used by starport scaffolding # 1 case types.MessageCreateCredDef: diff --git a/x/cheqd/keeper/keeper.go b/x/cheqd/keeper/keeper.go index adbe1f7fb..eb250b042 100644 --- a/x/cheqd/keeper/keeper.go +++ b/x/cheqd/keeper/keeper.go @@ -16,15 +16,13 @@ type ( Keeper struct { cdc codec.Codec storeKey sdk.StoreKey - memKey sdk.StoreKey } ) -func NewKeeper(cdc codec.Codec, storeKey, memKey sdk.StoreKey) *Keeper { +func NewKeeper(cdc codec.Codec, storeKey sdk.StoreKey) *Keeper { return &Keeper{ cdc: cdc, storeKey: storeKey, - memKey: memKey, } } diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 7c96e1b5c..c246d94be 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -2,6 +2,7 @@ package keeper import ( "context" + "github.com/cheqd/cheqd-node/x/cheqd/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -9,7 +10,7 @@ import ( func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateCredDefResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - prefix := types.DidPrefix + ctx.ChainID() + ":" + prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" var credDefMsg types.MsgCreateCredDef err := k.cdc.Unmarshal(msg.Data.Value, &credDefMsg) diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 2879d2459..a2067a8f2 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -15,7 +15,7 @@ import ( func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateDidResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - prefix := types.DidPrefix + ctx.ChainID() + ":" + prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" var didMsg types.MsgCreateDid err := k.cdc.Unmarshal(msg.Data.Value, &didMsg) @@ -69,7 +69,7 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgUpdateDidResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - prefix := types.DidPrefix + ctx.ChainID() + ":" + prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" var didMsg types.MsgUpdateDid err := k.cdc.Unmarshal(msg.Data.Value, &didMsg) diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index e017f9951..68e58cf80 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -9,7 +9,7 @@ import ( func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateSchemaResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - prefix := types.DidPrefix + ctx.ChainID() + ":" + prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" var schemaMsg types.MsgCreateSchema err := k.cdc.Unmarshal(msg.Data.Value, &schemaMsg) diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index 5203a73f3..b676ffb7b 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -43,13 +43,12 @@ func Setup() TestSetup { dbStore := store.NewCommitMultiStore(db) storeKey := sdk.NewKVStoreKey(types.StoreKey) - memStoreKey := sdk.NewKVStoreKey(types.MemStoreKey) dbStore.MountStoreWithDB(storeKey, sdk.StoreTypeIAVL, nil) _ = dbStore.LoadLatestVersion() // Init Keepers - newKeeper := keeper.NewKeeper(cdc, storeKey, memStoreKey) + newKeeper := keeper.NewKeeper(cdc, storeKey) // Create Tx txBytes := make([]byte, 28) diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index b6633bcc4..6faf2e097 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -13,11 +13,9 @@ const ( // QuerierRoute defines the module's query routing key QuerierRoute = ModuleName - // MemStoreKey defines the in-memory store key - MemStoreKey = "mem_capability" + DidMethod = ModuleName - // DidPrefix defines did prefix - DidPrefix = "did:" + ModuleName + ":" + DidPrefix = "did" ) func KeyPrefix(p string) []byte { @@ -26,15 +24,15 @@ func KeyPrefix(p string) []byte { const ( DidKey = "did:" - DidCountKey = "Did-count:" + DidCountKey = "did-count:" ) const ( SchemaKey = "schema:" - SchemaCountKey = "Schema-count:" + SchemaCountKey = "schema-count:" ) const ( - CredDefKey = "CredDef:" - CredDefCountKey = "CredDef-count:" + CredDefKey = "credDef:" + CredDefCountKey = "credDef-count:" ) diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index 3261e6367..fa8632b0c 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -1,9 +1,10 @@ package types import ( + "testing" + ctypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/stretchr/testify/require" - "testing" ) const Prefix = "did:cheqd:test:" @@ -155,9 +156,9 @@ func TestNewMsgWriteRequestValidation(t *testing.T) { msg *MsgWriteRequest errMsg string }{ - {true, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, []*SignInfo{ {VerificationMethodId: "foo", Signature: "bar"} }), ""}, - {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, nil, []*SignInfo{ {VerificationMethodId: "foo", Signature: "bar"} }), "Invalid Data: it cannot be empty: bad request"}, - {false, NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, nil, []*SignInfo{ {VerificationMethodId: "foo", Signature: "bar"} }), "Invalid Data: it cannot be empty: bad request"}, + {true, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), ""}, + {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, nil, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), "Invalid Data: it cannot be empty: bad request"}, + {false, NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, nil, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), "Invalid Data: it cannot be empty: bad request"}, {false, NewMsgWriteRequest(nil, nil, nil), "Data: is required"}, {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, nil), "Signatures: is required"}, } From 86d1bc45aaec5575d43ad9b4ca0987a49e3f1bdb Mon Sep 17 00:00:00 2001 From: Alexander Kolesov Date: Tue, 26 Oct 2021 15:25:45 +0300 Subject: [PATCH 59/74] Make state keys naming consistent --- x/cheqd/types/keys.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index 6faf2e097..2686fdecd 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -33,6 +33,6 @@ const ( ) const ( - CredDefKey = "credDef:" - CredDefCountKey = "credDef-count:" + CredDefKey = "cred-def:" + CredDefCountKey = "cred-def-count:" ) From 0031a043231c561b0b61d764f7485c2016e909a3 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 11:31:47 +0300 Subject: [PATCH 60/74] process review comments --- proto/cheqd/credDef.proto | 7 +- proto/cheqd/did.proto | 4 +- proto/cheqd/query.proto | 2 + proto/cheqd/stateValue.proto | 11 +- proto/cheqd/tx.proto | 17 +- x/cheqd/keeper/cred_def.go | 57 +- x/cheqd/keeper/did.go | 24 +- x/cheqd/keeper/grpc_query_cred_def.go | 7 +- x/cheqd/keeper/grpc_query_did.go | 7 +- x/cheqd/keeper/grpc_query_schema.go | 7 +- x/cheqd/keeper/msg_server_cred_def.go | 69 +-- x/cheqd/keeper/msg_server_did.go | 45 +- x/cheqd/keeper/msg_server_schema.go | 75 +-- x/cheqd/keeper/schema.go | 51 +- x/cheqd/keeper/utils.go | 15 - x/cheqd/keeper/verify.go | 13 +- x/cheqd/tests/handler_test.go | 35 +- x/cheqd/tests/handler_test_setup.go | 19 +- x/cheqd/types/credDef.pb.go | 285 +++------- x/cheqd/types/did.pb.go | 126 ++--- x/cheqd/types/errors.go | 7 +- x/cheqd/types/messages_cred_def.go | 5 +- x/cheqd/types/messages_did.go | 10 +- x/cheqd/types/messages_write_request.go | 3 +- x/cheqd/types/msg_test.go | 304 +++++------ x/cheqd/types/query.pb.go | 187 +++++-- x/cheqd/types/stateValue.go | 88 ++++ x/cheqd/types/stateValue.pb.go | 389 ++------------ x/cheqd/types/tx.pb.go | 658 ++++-------------------- x/cheqd/utils/did_doc.go | 10 - 30 files changed, 885 insertions(+), 1652 deletions(-) create mode 100644 x/cheqd/types/stateValue.go diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto index d4bde8823..da6c78efd 100644 --- a/proto/cheqd/credDef.proto +++ b/proto/cheqd/credDef.proto @@ -12,13 +12,10 @@ message CredDef { string tag = 3; string type = 4; repeated string controller = 5; - oneof value { - CredDefValue cl_type = 6; - google.protobuf.Any any_type = 7; - } + google.protobuf.Any value = 6; } -message CredDefValue { +message CredDefCLValue { map primary = 1; map revocation = 2; //optional } diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index 58c927a31..f31ecad09 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -16,7 +16,7 @@ message Did { repeated string capability_invocation = 6; // optional repeated string capability_delegation = 7; // optional repeated string key_agreement = 8; // optional - repeated DidService service = 9; // optional + repeated ServiceEndpoint service = 9; // optional repeated string also_known_as = 10; // optional repeated string context = 11; } @@ -29,7 +29,7 @@ message VerificationMethod { string public_key_multibase = 5; // optional } -message DidService { +message ServiceEndpoint { string id = 1; string type = 2; string service_endpoint = 3; diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index 76f6eeae2..630b5ea4d 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -34,6 +34,7 @@ message QueryGetCredDefRequest { message QueryGetCredDefResponse { CredDef cred_def = 1; + Metadata metadata = 2; } message QueryGetSchemaRequest { @@ -42,6 +43,7 @@ message QueryGetSchemaRequest { message QueryGetSchemaResponse { Schema schema = 1; + Metadata metadata = 2; } message QueryGetDidRequest { diff --git a/proto/cheqd/stateValue.proto b/proto/cheqd/stateValue.proto index 291b29287..19f58c795 100644 --- a/proto/cheqd/stateValue.proto +++ b/proto/cheqd/stateValue.proto @@ -3,19 +3,14 @@ package cheqdid.cheqdnode.cheqd; import "cheqd/did.proto"; import "cheqd/credDef.proto"; import "cheqd/schema.proto"; +import "google/protobuf/any.proto"; // this line is used by starport scaffolding # proto/tx/import option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; message StateValue { - oneof data { - Did did = 1; - Schema schema = 2; - CredDef cred_def = 3; - } - string tx_hash = 4; - string timestamp = 5; - Metadata metadata = 6; // optional + google.protobuf.Any data = 1; + Metadata metadata = 2; // optional } // metadata diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 72f12e71e..8049225fd 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -18,16 +18,10 @@ service Msg { rpc UpdateDid(MsgWriteRequest) returns (MsgUpdateDidResponse); } -message MsgWriteRequestSignObject { - google.protobuf.Any data = 1; - repeated KeyValuePair metadata = 2; -} - // this line is used by starport scaffolding # proto/tx/message message MsgWriteRequest { google.protobuf.Any data = 1; repeated SignInfo signatures = 2; - repeated KeyValuePair metadata = 3; } message SignInfo { @@ -40,11 +34,8 @@ message MsgCreateCredDef { string schema_id = 2; string tag = 3; string type = 4; - oneof value { - CredDefValue cl_type = 5; - google.protobuf.Any any_type = 6; - } - repeated string controller = 7; + repeated string controller = 5; + google.protobuf.Any value = 6; } message MsgCreateCredDefResponse { @@ -74,7 +65,7 @@ message MsgCreateDid { repeated string capability_delegation = 7; repeated string key_agreement = 8; repeated string also_known_as = 9; - repeated DidService service = 10; + repeated ServiceEndpoint service = 10; repeated string context = 11; } @@ -92,7 +83,7 @@ message MsgUpdateDid { repeated string capability_delegation = 7; repeated string key_agreement = 8; repeated string also_known_as = 9; - repeated DidService service = 10; + repeated ServiceEndpoint service = 10; repeated string context = 11; string version_id = 12; } diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go index 3666319ed..51cf48444 100644 --- a/x/cheqd/keeper/cred_def.go +++ b/x/cheqd/keeper/cred_def.go @@ -1,12 +1,10 @@ package keeper import ( - "encoding/base64" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/tendermint/tendermint/crypto/tmhash" "strconv" ) @@ -39,52 +37,37 @@ func (k Keeper) SetCredDefCount(ctx sdk.Context, count uint64) { store.Set(byteKey, bz) } -// AppendCredDef appends a credDef in the store with a new id and update the count +// AppendCredDef appends a CredDef in the store with a new id and update the count func (k Keeper) AppendCredDef( ctx sdk.Context, - id string, - schemaId string, - tag string, - signatureType string, - clValue *types.CredDef_ClType, - controller []string, -) string { - // Create the credDef + CredDef types.CredDef, + metadata *types.Metadata, +) (*string, error) { + // Create the CredDef count := k.GetCredDefCount(ctx) - // A default tag `tag` will be used if not specified. - if len(tag) == 0 { - tag = "tag" + err := k.SetCredDef(ctx, CredDef, metadata) + if err != nil { + return nil, err } - var credDef = types.CredDef{ - Id: id, - SchemaId: schemaId, - Tag: tag, - Type: signatureType, - Value: clValue, - Controller: controller, - } + // Update CredDef count + k.SetCredDefCount(ctx, count+1) - created := ctx.BlockTime().String() - txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + return &CredDef.Id, nil +} - stateValue := types.StateValue{ - Data: &types.StateValue_CredDef{ - CredDef: &credDef, - }, - Timestamp: created, - TxHash: txHash, +// SetCredDef set a specific cred def in the store +func (k Keeper) SetCredDef(ctx sdk.Context, CredDef types.CredDef, metadata *types.Metadata) error { + stateValue, err := types.NewStateValue(&CredDef, metadata) + if err != nil { + return types.ErrSetToState.Wrap(err.Error()) } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - value := k.cdc.MustMarshal(&stateValue) - store.Set(GetCredDefIDBytes(credDef.Id), value) - - // Update credDef count - k.SetCredDefCount(ctx, count+1) - - return id + b := k.cdc.MustMarshal(stateValue) + store.Set(GetCredDefIDBytes(CredDef.Id), b) + return nil } // GetCredDef returns a credDef from its id diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index e97e9e94e..0dbbc553b 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -38,30 +38,30 @@ func (k Keeper) SetDidCount(ctx sdk.Context, count uint64) { } // AppendDid appends a did in the store with a new id and update the count -func (k Keeper) AppendDid(ctx sdk.Context, did types.Did, metadata *types.Metadata, timestamp string, txHash string) string { +func (k Keeper) AppendDid(ctx sdk.Context, did types.Did, metadata *types.Metadata) (*string, error) { // Create the did count := k.GetDidCount(ctx) - k.SetDid(ctx, did, metadata, timestamp, txHash) + err := k.SetDid(ctx, did, metadata) + if err != nil { + return nil, err + } // Update did count k.SetDidCount(ctx, count+1) - return did.Id + return &did.Id, nil } // SetDid set a specific did in the store -func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata, timestamp string, txHash string) { - stateValue := types.StateValue{ - Metadata: metadata, - Data: &types.StateValue_Did{ - Did: &did, - }, - Timestamp: timestamp, - TxHash: txHash, +func (k Keeper) SetDid(ctx sdk.Context, did types.Did, metadata *types.Metadata) error { + stateValue, err := types.NewStateValue(&did, metadata) + if err != nil { + return types.ErrSetToState.Wrap(err.Error()) } store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DidKey)) - b := k.cdc.MustMarshal(&stateValue) + b := k.cdc.MustMarshal(stateValue) store.Set(GetDidIDBytes(did.Id), b) + return nil } // GetDid returns a did from its id diff --git a/x/cheqd/keeper/grpc_query_cred_def.go b/x/cheqd/keeper/grpc_query_cred_def.go index 63f1a0a53..206cbfafc 100644 --- a/x/cheqd/keeper/grpc_query_cred_def.go +++ b/x/cheqd/keeper/grpc_query_cred_def.go @@ -20,5 +20,10 @@ func (k Keeper) CredDef(c context.Context, req *types.QueryGetCredDefRequest) (* return nil, err } - return &types.QueryGetCredDefResponse{CredDef: state.GetCredDef()}, nil + credDef, err := state.GetCredDef() + if err != nil { + return nil, err + } + + return &types.QueryGetCredDefResponse{CredDef: credDef, Metadata: state.Metadata}, nil } diff --git a/x/cheqd/keeper/grpc_query_did.go b/x/cheqd/keeper/grpc_query_did.go index 6a17fd914..e5cfa8d27 100644 --- a/x/cheqd/keeper/grpc_query_did.go +++ b/x/cheqd/keeper/grpc_query_did.go @@ -21,5 +21,10 @@ func (k Keeper) Did(c context.Context, req *types.QueryGetDidRequest) (*types.Qu return nil, err } - return &types.QueryGetDidResponse{Did: state.GetDid(), Metadata: state.Metadata}, nil + did, err := state.GetDid() + if err != nil { + return nil, err + } + + return &types.QueryGetDidResponse{Did: did, Metadata: state.Metadata}, nil } diff --git a/x/cheqd/keeper/grpc_query_schema.go b/x/cheqd/keeper/grpc_query_schema.go index 79745ca21..7d7c92fd9 100644 --- a/x/cheqd/keeper/grpc_query_schema.go +++ b/x/cheqd/keeper/grpc_query_schema.go @@ -20,5 +20,10 @@ func (k Keeper) Schema(c context.Context, req *types.QueryGetSchemaRequest) (*ty return nil, err } - return &types.QueryGetSchemaResponse{Schema: state.GetSchema()}, nil + schema, err := state.GetSchema() + if err != nil { + return nil, err + } + + return &types.QueryGetSchemaResponse{Schema: schema, Metadata: state.Metadata}, nil } diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index c246d94be..40083776e 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -4,49 +4,34 @@ import ( "context" "github.com/cheqd/cheqd-node/x/cheqd/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateCredDefResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" - - var credDefMsg types.MsgCreateCredDef - err := k.cdc.Unmarshal(msg.Data.Value, &credDefMsg) - if err != nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) - } - - if err := credDefMsg.ValidateBasic(prefix); err != nil { - return nil, err - } - - if err := k.VerifySignature(&ctx, msg, credDefMsg.GetSigners()); err != nil { - return nil, err - } - - // Checks that the element exists - if err := k.EnsureDidIsNotUsed(ctx, credDefMsg.GetDid()); err != nil { - return nil, err - } - - switch value := credDefMsg.Value.(type) { - case *types.MsgCreateCredDef_ClType: - k.AppendCredDef( - ctx, - credDefMsg.Id, - credDefMsg.SchemaId, - credDefMsg.Tag, - credDefMsg.Type, - (*types.CredDef_ClType)(value), - credDefMsg.Controller, - ) - - return &types.MsgCreateCredDefResponse{ - Id: credDefMsg.Id, - }, nil - default: - return nil, sdkerrors.Wrap(types.ErrInvalidCredDefValue, "unsupported cred def value") - } + return nil, types.ErrNotImplemented.Wrap("CreateCredDef") + + /* + ctx := sdk.UnwrapSDKContext(goCtx) + prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" + + var credDefMsg types.MsgCreateCredDef + err := k.cdc.Unmarshal(msg.Data.Value, &credDefMsg) + if err != nil { + return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) + } + + if err := credDefMsg.ValidateBasic(prefix); err != nil { + return nil, err + } + + if err := k.VerifySignature(&ctx, msg, credDefMsg.GetSigners()); err != nil { + return nil, err + } + + // Checks that the element exists + if err := k.EnsureDidIsNotUsed(ctx, credDefMsg.GetDid()); err != nil { + return nil, err + } + + // TODO: implement cred def + */ } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index a2067a8f2..624a66e72 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -2,10 +2,8 @@ package keeper import ( "context" - "encoding/base64" "fmt" "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" - "github.com/tendermint/tendermint/crypto/tmhash" "reflect" "github.com/cheqd/cheqd-node/x/cheqd/types" @@ -50,20 +48,14 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) Context: didMsg.Context, } - timestamp := ctx.BlockTime().String() - txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) - - metadata := types.Metadata{ - Created: timestamp, - Deactivated: false, - Updated: timestamp, - VersionId: txHash, + metadata := types.NewMetadata(ctx) + id, err := k.AppendDid(ctx, did, &metadata) + if err != nil { + return nil, err } - k.AppendDid(ctx, did, &metadata, timestamp, txHash) - return &types.MsgCreateDidResponse{ - Id: didMsg.Id, + Id: *id, }, nil } @@ -86,17 +78,22 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) } - oldDIDDoc, err := k.GetDid(&ctx, didMsg.Id) + oldStateValue, err := k.GetDid(&ctx, didMsg.Id) if err != nil { return nil, err } - if err := k.UpdateDidVerifySignature(&ctx, msg, oldDIDDoc.GetDid(), &didMsg); err != nil { + oldDIDDoc, err := oldStateValue.GetDid() + if err != nil { return nil, err } - if oldDIDDoc.Metadata.VersionId != didMsg.VersionId { - errMsg := fmt.Sprintf("Ecpected %s with version %s. Got version %s", didMsg.Id, oldDIDDoc.Metadata.VersionId, didMsg.VersionId) + if err := k.UpdateDidVerifySignature(&ctx, msg, oldDIDDoc, &didMsg); err != nil { + return nil, err + } + + if oldStateValue.Metadata.VersionId != didMsg.VersionId { + errMsg := fmt.Sprintf("Ecpected %s with version %s. Got version %s", didMsg.Id, oldStateValue.Metadata.VersionId, didMsg.VersionId) return nil, sdkerrors.Wrap(types.ErrUnexpectedDidVersion, errMsg) } @@ -114,18 +111,14 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) Context: didMsg.Context, } - timestamp := ctx.BlockTime().String() - txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + metadata := types.NewMetadata(ctx) + metadata.Created = oldStateValue.Metadata.Created + metadata.Deactivated = oldStateValue.Metadata.Deactivated - metadata := types.Metadata{ - Created: oldDIDDoc.Metadata.Created, - Deactivated: oldDIDDoc.Metadata.Deactivated, - Updated: timestamp, - VersionId: txHash, + if err = k.SetDid(ctx, did, &metadata); err != nil { + return nil, err } - k.SetDid(ctx, did, &metadata, timestamp, txHash) - return &types.MsgUpdateDidResponse{ Id: didMsg.Id, }, nil diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index 68e58cf80..ad3929097 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -3,44 +3,45 @@ package keeper import ( "context" "github.com/cheqd/cheqd-node/x/cheqd/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateSchemaResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" - - var schemaMsg types.MsgCreateSchema - err := k.cdc.Unmarshal(msg.Data.Value, &schemaMsg) - if err != nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) - } - - if err := schemaMsg.ValidateBasic(prefix); err != nil { - return nil, err - } - - if err := k.VerifySignature(&ctx, msg, schemaMsg.GetSigners()); err != nil { - return nil, err - } - - // Checks that the element exists - if err := k.EnsureDidIsNotUsed(ctx, schemaMsg.GetDid()); err != nil { - return nil, err - } - - k.AppendSchema( - ctx, - schemaMsg.Id, - schemaMsg.Type, - schemaMsg.Name, - schemaMsg.Version, - schemaMsg.AttrNames, - schemaMsg.Controller, - ) - - return &types.MsgCreateSchemaResponse{ - Id: schemaMsg.Id, - }, nil + return nil, types.ErrNotImplemented.Wrap("Schema") + + /* + ctx := sdk.UnwrapSDKContext(goCtx) + prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" + + var schemaMsg types.MsgCreateSchema + err := k.cdc.Unmarshal(msg.Data.Value, &schemaMsg) + if err != nil { + return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) + } + + if err := schemaMsg.ValidateBasic(prefix); err != nil { + return nil, err + } + + if err := k.VerifySignature(&ctx, msg, schemaMsg.GetSigners()); err != nil { + return nil, err + } + + // Checks that the element exists + if err := k.EnsureDidIsNotUsed(ctx, schemaMsg.GetDid()); err != nil { + return nil, err + } + + k.AppendSchema( + ctx, + schemaMsg.Id, + schemaMsg.Type, + schemaMsg.Name, + schemaMsg.Version, + schemaMsg.AttrNames, + schemaMsg.Controller, + ) + + return &types.MsgCreateSchemaResponse{ + Id: schemaMsg.Id, + }, nil*/ } diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go index 4cfe57e03..a3e497309 100644 --- a/x/cheqd/keeper/schema.go +++ b/x/cheqd/keeper/schema.go @@ -1,12 +1,10 @@ package keeper import ( - "encoding/base64" "github.com/cheqd/cheqd-node/x/cheqd/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/tendermint/tendermint/crypto/tmhash" "strconv" ) @@ -42,43 +40,34 @@ func (k Keeper) SetSchemaCount(ctx sdk.Context, count uint64) { // AppendSchema appends a schema in the store with a new id and update the count func (k Keeper) AppendSchema( ctx sdk.Context, - id string, - schemaType string, - name string, - version string, - attrNames []string, - controller []string, -) string { + schema types.Schema, + metadata *types.Metadata, +) (*string, error) { // Create the schema count := k.GetSchemaCount(ctx) - var schema = types.Schema{ - Id: id, - Name: name, - Type: schemaType, - Version: version, - AttrNames: attrNames, - Controller: controller, - } - - created := ctx.BlockTime().String() - txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) - stateValue := types.StateValue{ - Data: &types.StateValue_Schema{ - Schema: &schema, - }, - Timestamp: created, - TxHash: txHash, + err := k.SetSchema(ctx, schema, metadata) + if err != nil { + return nil, err } - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - value := k.cdc.MustMarshal(&stateValue) - store.Set(GetSchemaIDBytes(schema.Id), value) - // Update schema count k.SetSchemaCount(ctx, count+1) - return id + return &schema.Id, nil +} + +// SetSchema set a specific cred def in the store +func (k Keeper) SetSchema(ctx sdk.Context, schema types.Schema, metadata *types.Metadata) error { + stateValue, err := types.NewStateValue(&schema, metadata) + if err != nil { + return types.ErrSetToState.Wrap(err.Error()) + } + + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) + b := k.cdc.MustMarshal(stateValue) + store.Set(GetSchemaIDBytes(schema.Id), b) + return nil } // GetSchema returns a schema from its id diff --git a/x/cheqd/keeper/utils.go b/x/cheqd/keeper/utils.go index e231732cc..f0ce01ec4 100644 --- a/x/cheqd/keeper/utils.go +++ b/x/cheqd/keeper/utils.go @@ -6,23 +6,8 @@ import ( "fmt" "github.com/btcsuite/btcutil/base58" "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/codec" ) -func BuildSigningInput(codec codec.Codec, msg *types.MsgWriteRequest) ([]byte, error) { - signObject := types.MsgWriteRequestSignObject{ - Data: msg.Data, - Metadata: msg.Metadata, - } - - bz, err := codec.Marshal(&signObject) - if err != nil { - return nil, err - } - - return bz, nil -} - func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { for _, authentication := range signer.Authentication { if authentication == id { diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index 07b4d6b3e..9a6bd55ff 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -15,10 +15,7 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s return types.ErrInvalidSignature.Wrap("At least one signer should be present") } - signingInput, err := BuildSigningInput(k.cdc, msg) - if err != nil { - return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) - } + signingInput := msg.Data.Value for _, signer := range signers { if signer.VerificationMethod == nil { @@ -27,13 +24,13 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s return types.ErrDidDocNotFound.Wrap(signer.Signer) } - didDoc := state.GetDid() - if didDoc == nil { + didDoc, err := state.GetDid() + if err != nil { return types.ErrDidDocNotFound.Wrap(signer.Signer) } - signer.Authentication = state.GetDid().Authentication - signer.VerificationMethod = state.GetDid().VerificationMethod + signer.Authentication = didDoc.Authentication + signer.VerificationMethod = didDoc.VerificationMethod } valid, err := VerifyIdentitySignature(signer, msg.Signatures, signingInput) diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 3b7f3bbeb..1930e420e 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -179,7 +179,7 @@ func TestCreateDID(t *testing.T) { CapabilityDelegation: []string{"did:cheqd:test:123456qwertyui#key-3"}, KeyAgreement: []string{"did:cheqd:test:123456qwertyui#key-4"}, AlsoKnownAs: []string{"did:cheqd:test:123456eqweqwe"}, - Service: []*types.DidService{ + Service: []*types.ServiceEndpoint{ { Id: "did:cheqd:test:123456qwertyui#service-1", Type: "DIDCommMessaging", @@ -248,7 +248,7 @@ func TestCreateDID(t *testing.T) { Id: "did:cheqd:test:controller1", Controller: []string{AliceDID, BobDID}, }, - errMsg: "Signatures: is required", + errMsg: "signature did:cheqd:test:alice not found: invalid signature detected", }, { valid: false, @@ -257,7 +257,7 @@ func TestCreateDID(t *testing.T) { Id: "did:cheqd:test:controller1", Controller: []string{AliceDID, BobDID}, }, - errMsg: "Signatures: is required", + errMsg: "signature did:cheqd:test:alice not found: invalid signature detected", }, { valid: false, @@ -1059,7 +1059,8 @@ func TestHandler_UpdateDid(t *testing.T) { //Init priv key newPubKey, _, _ := ed25519.GenerateKey(rand.Reader) - didMsgUpdate := setup.UpdateDid(state.GetDid(), newPubKey, state.Metadata.VersionId) + oldDid, _ := state.GetDid() + didMsgUpdate := setup.UpdateDid(oldDid, newPubKey, state.Metadata.VersionId) dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys)) @@ -1072,7 +1073,7 @@ func TestHandler_UpdateDid(t *testing.T) { // query Did updatedState, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) - receivedUpdatedDid := updatedState.GetDid() + receivedUpdatedDid, _ := updatedState.GetDid() // check require.Equal(t, didUpdated.Id, receivedUpdatedDid.Id) @@ -1085,7 +1086,7 @@ func TestHandler_UpdateDid(t *testing.T) { require.Equal(t, didMsgUpdate.KeyAgreement, receivedUpdatedDid.KeyAgreement) require.Equal(t, didMsgUpdate.AlsoKnownAs, receivedUpdatedDid.AlsoKnownAs) require.Equal(t, didMsgUpdate.Service, receivedUpdatedDid.Service) - require.NotEqual(t, state.GetDid().VerificationMethod, receivedUpdatedDid.VerificationMethod) + require.NotEqual(t, oldDid.VerificationMethod, receivedUpdatedDid.VerificationMethod) } func TestHandler_CreateSchema(t *testing.T) { @@ -1102,7 +1103,7 @@ func TestHandler_CreateSchema(t *testing.T) { // query Did state, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) - receivedSchema := state.GetSchema() + receivedSchema, _ := state.GetSchema() require.Equal(t, schema.Id, receivedSchema.Id) require.Equal(t, msg.Type, receivedSchema.Type) @@ -1129,18 +1130,18 @@ func TestHandler_CreateCredDef(t *testing.T) { } // query Did - state, _ := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) - receivedCredDef := state.GetCredDef() + //state, _ := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) + //receivedCredDef, _ := state.GetCredDef() - expectedValue := msg.Value.(*types.MsgCreateCredDef_ClType) - actualValue := receivedCredDef.Value.(*types.CredDef_ClType) + //expectedValue := msg.Value.(*types.MsgCreateCredDef_ClType) + //actualValue := receivedCredDef.Value.(*types.CredDef_ClType) - require.Equal(t, credDef.Id, receivedCredDef.Id) - require.Equal(t, expectedValue.ClType, actualValue.ClType) - require.Equal(t, msg.SchemaId, receivedCredDef.SchemaId) - require.Equal(t, msg.Tag, receivedCredDef.Tag) - require.Equal(t, msg.Type, receivedCredDef.Type) - require.Equal(t, msg.Controller, receivedCredDef.Controller) + //require.Equal(t, credDef.Id, receivedCredDef.Id) + //require.Equal(t, expectedValue.ClType, actualValue.ClType) + //require.Equal(t, msg.SchemaId, receivedCredDef.SchemaId) + //require.Equal(t, msg.Tag, receivedCredDef.Tag) + //require.Equal(t, msg.Type, receivedCredDef.Type) + //require.Equal(t, msg.Controller, receivedCredDef.Controller) } func TestHandler_DidDocAlreadyExists(t *testing.T) { diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index b676ffb7b..531b02c66 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -82,7 +82,7 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey, did string) *types.MsgCr PublicKeyMultibase: PublicKeyMultibase, } - Service := types.DidService{ + Service := types.ServiceEndpoint{ Id: "#service-2", Type: "DIDCommMessaging", ServiceEndpoint: "endpoint", @@ -99,7 +99,7 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey, did string) *types.MsgCr KeyAgreement: []string{did + "#key-1"}, AlsoKnownAs: []string{did + "#key-1"}, Context: []string{"Context"}, - Service: []*types.DidService{&Service}, + Service: []*types.ServiceEndpoint{&Service}, } } @@ -157,7 +157,7 @@ func (s *TestSetup) CreateSchema() *types.MsgCreateSchema { } func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { - Value := types.MsgCreateCredDef_ClType{ + /*Value := types.MsgCreateCredDef_ClType{ ClType: &types.CredDefValue{ Primary: map[string]*ptypes.Any{"first": nil}, Revocation: map[string]*ptypes.Any{"second": nil}, @@ -171,7 +171,8 @@ func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { Type: "CL-CredDef", Value: &Value, Controller: []string{"did:cheqd:test:alice"}, - } + }*/ + return nil } func (s *TestSetup) WrapRequest(data *ptypes.Any, keys map[string]ed25519.PrivateKey) *types.MsgWriteRequest { @@ -180,7 +181,7 @@ func (s *TestSetup) WrapRequest(data *ptypes.Any, keys map[string]ed25519.Privat } var signatures []*types.SignInfo - signingInput, _ := keeper.BuildSigningInput(s.Cdc, &result) + signingInput := result.Data.Value for privKeyId, privKey := range keys { signature := base64.StdEncoding.EncodeToString(ed25519.Sign(privKey, signingInput)) @@ -244,8 +245,8 @@ func (s *TestSetup) SendUpdateDid(msg *types.MsgUpdateDid, keys map[string]ed255 return nil, err } - did, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) - return did.GetDid(), nil + updated, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + return updated.GetDid() } func (s *TestSetup) SendCreateDid(msg *types.MsgCreateDid, keys map[string]ed25519.PrivateKey) (*types.Did, error) { @@ -259,8 +260,8 @@ func (s *TestSetup) SendCreateDid(msg *types.MsgCreateDid, keys map[string]ed255 return nil, err } - state, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) - return state.GetDid(), nil + created, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) + return created.GetDid() } func ConcatKeys(dst map[string]ed25519.PrivateKey, src map[string]ed25519.PrivateKey) map[string]ed25519.PrivateKey { diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go index 34bd834cd..bce2d7368 100644 --- a/x/cheqd/types/credDef.pb.go +++ b/x/cheqd/types/credDef.pb.go @@ -25,15 +25,12 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type CredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - Controller []string `protobuf:"bytes,5,rep,name=controller,proto3" json:"controller,omitempty"` - // Types that are valid to be assigned to Value: - // *CredDef_ClType - // *CredDef_AnyType - Value isCredDef_Value `protobuf_oneof:"value"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + Controller []string `protobuf:"bytes,5,rep,name=controller,proto3" json:"controller,omitempty"` + Value *types.Any `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` } func (m *CredDef) Reset() { *m = CredDef{} } @@ -69,29 +66,6 @@ func (m *CredDef) XXX_DiscardUnknown() { var xxx_messageInfo_CredDef proto.InternalMessageInfo -type isCredDef_Value interface { - isCredDef_Value() - MarshalTo([]byte) (int, error) - Size() int -} - -type CredDef_ClType struct { - ClType *CredDefValue `protobuf:"bytes,6,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` -} -type CredDef_AnyType struct { - AnyType *types.Any `protobuf:"bytes,7,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` -} - -func (*CredDef_ClType) isCredDef_Value() {} -func (*CredDef_AnyType) isCredDef_Value() {} - -func (m *CredDef) GetValue() isCredDef_Value { - if m != nil { - return m.Value - } - return nil -} - func (m *CredDef) GetId() string { if m != nil { return m.Id @@ -127,45 +101,30 @@ func (m *CredDef) GetController() []string { return nil } -func (m *CredDef) GetClType() *CredDefValue { - if x, ok := m.GetValue().(*CredDef_ClType); ok { - return x.ClType - } - return nil -} - -func (m *CredDef) GetAnyType() *types.Any { - if x, ok := m.GetValue().(*CredDef_AnyType); ok { - return x.AnyType +func (m *CredDef) GetValue() *types.Any { + if m != nil { + return m.Value } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*CredDef) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*CredDef_ClType)(nil), - (*CredDef_AnyType)(nil), - } -} - -type CredDefValue struct { +type CredDefCLValue struct { Primary map[string]*types.Any `protobuf:"bytes,1,rep,name=primary,proto3" json:"primary,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Revocation map[string]*types.Any `protobuf:"bytes,2,rep,name=revocation,proto3" json:"revocation,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *CredDefValue) Reset() { *m = CredDefValue{} } -func (m *CredDefValue) String() string { return proto.CompactTextString(m) } -func (*CredDefValue) ProtoMessage() {} -func (*CredDefValue) Descriptor() ([]byte, []int) { +func (m *CredDefCLValue) Reset() { *m = CredDefCLValue{} } +func (m *CredDefCLValue) String() string { return proto.CompactTextString(m) } +func (*CredDefCLValue) ProtoMessage() {} +func (*CredDefCLValue) Descriptor() ([]byte, []int) { return fileDescriptor_bc069326307a6009, []int{1} } -func (m *CredDefValue) XXX_Unmarshal(b []byte) error { +func (m *CredDefCLValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *CredDefValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *CredDefCLValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_CredDefValue.Marshal(b, m, deterministic) + return xxx_messageInfo_CredDefCLValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -175,26 +134,26 @@ func (m *CredDefValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *CredDefValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_CredDefValue.Merge(m, src) +func (m *CredDefCLValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_CredDefCLValue.Merge(m, src) } -func (m *CredDefValue) XXX_Size() int { +func (m *CredDefCLValue) XXX_Size() int { return m.Size() } -func (m *CredDefValue) XXX_DiscardUnknown() { - xxx_messageInfo_CredDefValue.DiscardUnknown(m) +func (m *CredDefCLValue) XXX_DiscardUnknown() { + xxx_messageInfo_CredDefCLValue.DiscardUnknown(m) } -var xxx_messageInfo_CredDefValue proto.InternalMessageInfo +var xxx_messageInfo_CredDefCLValue proto.InternalMessageInfo -func (m *CredDefValue) GetPrimary() map[string]*types.Any { +func (m *CredDefCLValue) GetPrimary() map[string]*types.Any { if m != nil { return m.Primary } return nil } -func (m *CredDefValue) GetRevocation() map[string]*types.Any { +func (m *CredDefCLValue) GetRevocation() map[string]*types.Any { if m != nil { return m.Revocation } @@ -203,42 +162,40 @@ func (m *CredDefValue) GetRevocation() map[string]*types.Any { func init() { proto.RegisterType((*CredDef)(nil), "cheqdid.cheqdnode.cheqd.CredDef") - proto.RegisterType((*CredDefValue)(nil), "cheqdid.cheqdnode.cheqd.CredDefValue") - proto.RegisterMapType((map[string]*types.Any)(nil), "cheqdid.cheqdnode.cheqd.CredDefValue.PrimaryEntry") - proto.RegisterMapType((map[string]*types.Any)(nil), "cheqdid.cheqdnode.cheqd.CredDefValue.RevocationEntry") + proto.RegisterType((*CredDefCLValue)(nil), "cheqdid.cheqdnode.cheqd.CredDefCLValue") + proto.RegisterMapType((map[string]*types.Any)(nil), "cheqdid.cheqdnode.cheqd.CredDefCLValue.PrimaryEntry") + proto.RegisterMapType((map[string]*types.Any)(nil), "cheqdid.cheqdnode.cheqd.CredDefCLValue.RevocationEntry") } func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } var fileDescriptor_bc069326307a6009 = []byte{ - // 423 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0x4f, 0x6b, 0xd4, 0x40, - 0x18, 0xc6, 0x33, 0x49, 0xbb, 0xe9, 0xbe, 0x2d, 0x2a, 0x63, 0xc1, 0x18, 0x21, 0x84, 0x82, 0x10, - 0x05, 0x27, 0xb8, 0x22, 0x88, 0x27, 0x6d, 0x15, 0x2a, 0x78, 0x28, 0xf1, 0xcf, 0xc1, 0x4b, 0x99, - 0x9d, 0x99, 0x66, 0x83, 0xd9, 0x99, 0x75, 0x9a, 0x2d, 0xce, 0xb7, 0xf0, 0x63, 0x79, 0xec, 0x51, - 0x3c, 0xc9, 0xee, 0xb7, 0xf0, 0x24, 0x33, 0x93, 0x4a, 0x10, 0x0a, 0x0b, 0x5e, 0x92, 0x87, 0x87, - 0x79, 0x7e, 0xef, 0xbc, 0xef, 0x3b, 0x70, 0x9b, 0xcd, 0xc4, 0x17, 0x5e, 0x32, 0x2d, 0xf8, 0x2b, - 0x71, 0x46, 0x16, 0x5a, 0x75, 0x0a, 0xdf, 0x71, 0x66, 0xc3, 0x89, 0xfb, 0x4b, 0xc5, 0x85, 0x57, - 0xe9, 0xdd, 0x5a, 0xa9, 0xba, 0x15, 0xa5, 0x3b, 0x36, 0x5d, 0x9e, 0x95, 0x54, 0x1a, 0x9f, 0x49, - 0xf7, 0x6b, 0x55, 0x2b, 0x27, 0x4b, 0xab, 0xbc, 0x7b, 0xf0, 0x1b, 0x41, 0x7c, 0xe4, 0xd9, 0xf8, - 0x06, 0x84, 0x0d, 0x4f, 0x50, 0x8e, 0x8a, 0x71, 0x15, 0x36, 0x1c, 0xdf, 0x83, 0xf1, 0x39, 0x9b, - 0x89, 0x39, 0x3d, 0x6d, 0x78, 0x12, 0x3a, 0x7b, 0xc7, 0x1b, 0x6f, 0x38, 0xbe, 0x05, 0x51, 0x47, - 0xeb, 0x24, 0x72, 0xb6, 0x95, 0x18, 0xc3, 0x56, 0x67, 0x16, 0x22, 0xd9, 0x72, 0x96, 0xd3, 0x38, - 0x03, 0x60, 0x4a, 0x76, 0x5a, 0xb5, 0xad, 0xd0, 0xc9, 0x76, 0x1e, 0x15, 0xe3, 0x6a, 0xe0, 0xe0, - 0x17, 0x10, 0xb3, 0xf6, 0xd4, 0xc5, 0x46, 0x39, 0x2a, 0x76, 0x27, 0xf7, 0xc9, 0x35, 0xad, 0x91, - 0xfe, 0x96, 0x1f, 0x69, 0xbb, 0x14, 0xc7, 0x41, 0x35, 0x62, 0xed, 0x7b, 0x5b, 0xe1, 0x31, 0xec, - 0x50, 0x69, 0x3c, 0x22, 0x76, 0x88, 0x7d, 0xe2, 0x87, 0x40, 0xae, 0x86, 0x40, 0x5e, 0x4a, 0x73, - 0x1c, 0x54, 0x31, 0x95, 0xc6, 0x46, 0x0e, 0x63, 0xd8, 0xbe, 0xb0, 0x94, 0x83, 0x9f, 0x21, 0xec, - 0x0d, 0xb1, 0xf8, 0x2d, 0xc4, 0x0b, 0xdd, 0xcc, 0xa9, 0x36, 0x09, 0xca, 0xa3, 0x62, 0x77, 0x32, - 0xd9, 0xe8, 0x3a, 0xe4, 0xc4, 0x87, 0x5e, 0xcb, 0x4e, 0x9b, 0xea, 0x0a, 0x81, 0x3f, 0x00, 0x68, - 0x71, 0xa1, 0x18, 0xed, 0x1a, 0x25, 0x93, 0xd0, 0x01, 0x9f, 0x6e, 0x06, 0xac, 0xfe, 0xe6, 0x3c, - 0x73, 0x00, 0x4a, 0x4f, 0x60, 0x6f, 0x58, 0xcf, 0x6e, 0xe2, 0xb3, 0x30, 0xfd, 0xde, 0xac, 0xc4, - 0x0f, 0xfb, 0x06, 0xdd, 0xd2, 0xae, 0x19, 0x48, 0xe5, 0x8f, 0x3c, 0x0f, 0x9f, 0xa1, 0xf4, 0x1d, - 0xdc, 0xfc, 0xa7, 0xe0, 0xff, 0x43, 0x0f, 0x8f, 0xbe, 0xaf, 0x32, 0x74, 0xb9, 0xca, 0xd0, 0xaf, - 0x55, 0x86, 0xbe, 0xad, 0xb3, 0xe0, 0x72, 0x9d, 0x05, 0x3f, 0xd6, 0x59, 0xf0, 0xe9, 0x41, 0xdd, - 0x74, 0xb3, 0xe5, 0x94, 0x30, 0x35, 0x2f, 0xfb, 0xd7, 0x6d, 0xbf, 0x8f, 0xec, 0x30, 0xca, 0xaf, - 0xbd, 0x65, 0x17, 0x7a, 0x3e, 0x1d, 0x39, 0xfa, 0x93, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x94, - 0x58, 0x39, 0x05, 0x06, 0x03, 0x00, 0x00, + // 386 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0xcf, 0x4a, 0xe3, 0x40, + 0x1c, 0xc7, 0x3b, 0x49, 0xff, 0x6c, 0xa7, 0x4b, 0x77, 0x99, 0x2d, 0xec, 0x6c, 0x16, 0x42, 0xe8, + 0x29, 0xbb, 0xb0, 0x13, 0xe8, 0x0a, 0x8a, 0x37, 0xad, 0x1e, 0x04, 0x91, 0x12, 0x41, 0xc1, 0x8b, + 0xa4, 0x99, 0x69, 0x1a, 0x4c, 0x33, 0x75, 0x9a, 0x16, 0xf3, 0x16, 0x3e, 0x86, 0x8f, 0xe2, 0xb1, + 0x47, 0x8f, 0xa5, 0x7d, 0x11, 0x99, 0x99, 0x54, 0xab, 0x20, 0x0a, 0x5e, 0x92, 0x2f, 0x1f, 0xe6, + 0xf7, 0x99, 0x1f, 0xdf, 0x04, 0xfe, 0x08, 0x87, 0xec, 0x9a, 0x7a, 0xa1, 0x60, 0xf4, 0x80, 0x0d, + 0xc8, 0x58, 0xf0, 0x8c, 0xa3, 0x9f, 0x0a, 0xc6, 0x94, 0xa8, 0x77, 0xca, 0x29, 0xd3, 0xc9, 0xfa, + 0x15, 0x71, 0x1e, 0x25, 0xcc, 0x53, 0xc7, 0xfa, 0xd3, 0x81, 0x17, 0xa4, 0xb9, 0x9e, 0xb1, 0x5a, + 0x11, 0x8f, 0xb8, 0x8a, 0x9e, 0x4c, 0x9a, 0xb6, 0xef, 0x00, 0xac, 0x75, 0xb5, 0x1b, 0x35, 0xa1, + 0x11, 0x53, 0x0c, 0x1c, 0xe0, 0xd6, 0x7d, 0x23, 0xa6, 0xe8, 0x37, 0xac, 0x4f, 0xc2, 0x21, 0x1b, + 0x05, 0x97, 0x31, 0xc5, 0x86, 0xc2, 0x5f, 0x34, 0x38, 0xa2, 0xe8, 0x3b, 0x34, 0xb3, 0x20, 0xc2, + 0xa6, 0xc2, 0x32, 0x22, 0x04, 0xcb, 0x59, 0x3e, 0x66, 0xb8, 0xac, 0x90, 0xca, 0xc8, 0x86, 0x30, + 0xe4, 0x69, 0x26, 0x78, 0x92, 0x30, 0x81, 0x2b, 0x8e, 0xe9, 0xd6, 0xfd, 0x0d, 0x82, 0xfe, 0xc2, + 0xca, 0x2c, 0x48, 0xa6, 0x0c, 0x57, 0x1d, 0xe0, 0x36, 0x3a, 0x2d, 0xa2, 0xf7, 0x27, 0xeb, 0xfd, + 0xc9, 0x5e, 0x9a, 0xfb, 0xfa, 0x48, 0x7b, 0x61, 0xc0, 0x66, 0xb1, 0x6a, 0xf7, 0xf8, 0x4c, 0x22, + 0x74, 0x02, 0x6b, 0x63, 0x11, 0x8f, 0x02, 0x91, 0x63, 0xe0, 0x98, 0x6e, 0xa3, 0xb3, 0x45, 0xde, + 0x68, 0x86, 0xbc, 0x9c, 0x24, 0x3d, 0x3d, 0x76, 0x98, 0x66, 0x22, 0xf7, 0xd7, 0x12, 0x74, 0x0e, + 0xa1, 0x60, 0x33, 0x1e, 0x06, 0x59, 0xcc, 0x53, 0x6c, 0x28, 0xe5, 0xf6, 0x47, 0x95, 0xfe, 0xd3, + 0xa4, 0xb6, 0x6e, 0xa8, 0xac, 0x1e, 0xfc, 0xba, 0x79, 0xa3, 0x6c, 0xef, 0x8a, 0xe5, 0x45, 0xd7, + 0x32, 0x3e, 0x37, 0x61, 0xbc, 0xdb, 0xc4, 0xae, 0xb1, 0x03, 0xac, 0x53, 0xf8, 0xed, 0xd5, 0x85, + 0x9f, 0x97, 0xee, 0x77, 0xef, 0x97, 0x36, 0x98, 0x2f, 0x6d, 0xb0, 0x58, 0xda, 0xe0, 0x76, 0x65, + 0x97, 0xe6, 0x2b, 0xbb, 0xf4, 0xb0, 0xb2, 0x4b, 0x17, 0x7f, 0xa2, 0x38, 0x1b, 0x4e, 0xfb, 0x24, + 0xe4, 0x23, 0xaf, 0xf8, 0x23, 0xe5, 0xf3, 0x9f, 0xac, 0xc3, 0xbb, 0x29, 0x90, 0xfc, 0xe4, 0x93, + 0x7e, 0x55, 0xd9, 0xff, 0x3f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x16, 0xed, 0x92, 0xc0, 0xba, 0x02, + 0x00, 0x00, } func (m *CredDef) Marshal() (dAtA []byte, err error) { @@ -263,12 +220,15 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = l if m.Value != nil { { - size := m.Value.Size() - i -= size - if _, err := m.Value.MarshalTo(dAtA[i:]); err != nil { + size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { return 0, err } + i -= size + i = encodeVarintCredDef(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x32 } if len(m.Controller) > 0 { for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { @@ -310,49 +270,7 @@ func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *CredDef_ClType) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *CredDef_ClType) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.ClType != nil { - { - size, err := m.ClType.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintCredDef(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - return len(dAtA) - i, nil -} -func (m *CredDef_AnyType) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *CredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.AnyType != nil { - { - size, err := m.AnyType.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintCredDef(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3a - } - return len(dAtA) - i, nil -} -func (m *CredDefValue) Marshal() (dAtA []byte, err error) { +func (m *CredDefCLValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -362,12 +280,12 @@ func (m *CredDefValue) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *CredDefValue) MarshalTo(dAtA []byte) (int, error) { +func (m *CredDefCLValue) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *CredDefValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *CredDefCLValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -467,36 +385,13 @@ func (m *CredDef) Size() (n int) { } } if m.Value != nil { - n += m.Value.Size() - } - return n -} - -func (m *CredDef_ClType) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ClType != nil { - l = m.ClType.Size() + l = m.Value.Size() n += 1 + l + sovCredDef(uint64(l)) } return n } -func (m *CredDef_AnyType) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.AnyType != nil { - l = m.AnyType.Size() - n += 1 + l + sovCredDef(uint64(l)) - } - return n -} -func (m *CredDefValue) Size() (n int) { + +func (m *CredDefCLValue) Size() (n int) { if m == nil { return 0 } @@ -728,7 +623,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -755,46 +650,12 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &CredDefValue{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Value = &CredDef_ClType{v} - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AnyType", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF + if m.Value == nil { + m.Value = &types.Any{} } - v := &types.Any{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &CredDef_AnyType{v} iNdEx = postIndex default: iNdEx = preIndex @@ -817,7 +678,7 @@ func (m *CredDef) Unmarshal(dAtA []byte) error { } return nil } -func (m *CredDefValue) Unmarshal(dAtA []byte) error { +func (m *CredDefCLValue) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -840,10 +701,10 @@ func (m *CredDefValue) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CredDefValue: wiretype end group for non-group") + return fmt.Errorf("proto: CredDefCLValue: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CredDefValue: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CredDefCLValue: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/x/cheqd/types/did.pb.go b/x/cheqd/types/did.pb.go index 1454c79c9..ab7c08b98 100644 --- a/x/cheqd/types/did.pb.go +++ b/x/cheqd/types/did.pb.go @@ -33,7 +33,7 @@ type Did struct { CapabilityInvocation []string `protobuf:"bytes,6,rep,name=capability_invocation,json=capabilityInvocation,proto3" json:"capability_invocation,omitempty"` CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` KeyAgreement []string `protobuf:"bytes,8,rep,name=key_agreement,json=keyAgreement,proto3" json:"key_agreement,omitempty"` - Service []*DidService `protobuf:"bytes,9,rep,name=service,proto3" json:"service,omitempty"` + Service []*ServiceEndpoint `protobuf:"bytes,9,rep,name=service,proto3" json:"service,omitempty"` AlsoKnownAs []string `protobuf:"bytes,10,rep,name=also_known_as,json=alsoKnownAs,proto3" json:"also_known_as,omitempty"` Context []string `protobuf:"bytes,11,rep,name=context,proto3" json:"context,omitempty"` } @@ -127,7 +127,7 @@ func (m *Did) GetKeyAgreement() []string { return nil } -func (m *Did) GetService() []*DidService { +func (m *Did) GetService() []*ServiceEndpoint { if m != nil { return m.Service } @@ -224,24 +224,24 @@ func (m *VerificationMethod) GetPublicKeyMultibase() string { return "" } -type DidService struct { +type ServiceEndpoint struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` ServiceEndpoint string `protobuf:"bytes,3,opt,name=service_endpoint,json=serviceEndpoint,proto3" json:"service_endpoint,omitempty"` } -func (m *DidService) Reset() { *m = DidService{} } -func (m *DidService) String() string { return proto.CompactTextString(m) } -func (*DidService) ProtoMessage() {} -func (*DidService) Descriptor() ([]byte, []int) { +func (m *ServiceEndpoint) Reset() { *m = ServiceEndpoint{} } +func (m *ServiceEndpoint) String() string { return proto.CompactTextString(m) } +func (*ServiceEndpoint) ProtoMessage() {} +func (*ServiceEndpoint) Descriptor() ([]byte, []int) { return fileDescriptor_382ab0c0f6b6850e, []int{2} } -func (m *DidService) XXX_Unmarshal(b []byte) error { +func (m *ServiceEndpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *DidService) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *ServiceEndpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_DidService.Marshal(b, m, deterministic) + return xxx_messageInfo_ServiceEndpoint.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -251,33 +251,33 @@ func (m *DidService) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } -func (m *DidService) XXX_Merge(src proto.Message) { - xxx_messageInfo_DidService.Merge(m, src) +func (m *ServiceEndpoint) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceEndpoint.Merge(m, src) } -func (m *DidService) XXX_Size() int { +func (m *ServiceEndpoint) XXX_Size() int { return m.Size() } -func (m *DidService) XXX_DiscardUnknown() { - xxx_messageInfo_DidService.DiscardUnknown(m) +func (m *ServiceEndpoint) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceEndpoint.DiscardUnknown(m) } -var xxx_messageInfo_DidService proto.InternalMessageInfo +var xxx_messageInfo_ServiceEndpoint proto.InternalMessageInfo -func (m *DidService) GetId() string { +func (m *ServiceEndpoint) GetId() string { if m != nil { return m.Id } return "" } -func (m *DidService) GetType() string { +func (m *ServiceEndpoint) GetType() string { if m != nil { return m.Type } return "" } -func (m *DidService) GetServiceEndpoint() string { +func (m *ServiceEndpoint) GetServiceEndpoint() string { if m != nil { return m.ServiceEndpoint } @@ -287,47 +287,47 @@ func (m *DidService) GetServiceEndpoint() string { func init() { proto.RegisterType((*Did)(nil), "cheqdid.cheqdnode.cheqd.Did") proto.RegisterType((*VerificationMethod)(nil), "cheqdid.cheqdnode.cheqd.VerificationMethod") - proto.RegisterType((*DidService)(nil), "cheqdid.cheqdnode.cheqd.DidService") + proto.RegisterType((*ServiceEndpoint)(nil), "cheqdid.cheqdnode.cheqd.ServiceEndpoint") } func init() { proto.RegisterFile("cheqd/did.proto", fileDescriptor_382ab0c0f6b6850e) } var fileDescriptor_382ab0c0f6b6850e = []byte{ - // 532 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xd1, 0x6e, 0xda, 0x3c, - 0x14, 0xc7, 0x09, 0x69, 0xcb, 0x87, 0x69, 0xa1, 0xf2, 0xc7, 0x34, 0xaf, 0x17, 0x11, 0xa2, 0xda, - 0x04, 0x9a, 0x46, 0xa6, 0xf6, 0x7a, 0x17, 0xdd, 0xd8, 0xc5, 0x86, 0x2a, 0x4d, 0x4c, 0xea, 0xc5, - 0x36, 0x29, 0x72, 0xe2, 0xd3, 0xe0, 0x91, 0xd8, 0x2c, 0x71, 0xa0, 0x79, 0x8b, 0x3d, 0xd6, 0x2e, - 0x7b, 0xb7, 0x5d, 0x4e, 0xf0, 0x06, 0x7b, 0x82, 0x29, 0x4e, 0xa0, 0x11, 0x08, 0x69, 0x37, 0x70, - 0xf2, 0x3b, 0xff, 0xff, 0xb1, 0xcf, 0xb1, 0x8d, 0x5a, 0xde, 0x04, 0xbe, 0x31, 0x9b, 0x71, 0x36, - 0x98, 0x45, 0x52, 0x49, 0xfc, 0x58, 0x03, 0xce, 0x06, 0xfa, 0x5f, 0x48, 0x06, 0x79, 0x74, 0xf6, - 0xc4, 0x97, 0xd2, 0x0f, 0xc0, 0xd6, 0x32, 0x37, 0xb9, 0xb5, 0xa9, 0x48, 0x73, 0xcf, 0x59, 0xdb, - 0x97, 0xbe, 0xd4, 0xa1, 0x9d, 0x45, 0x05, 0xc5, 0x79, 0x69, 0x4f, 0x86, 0xa1, 0x14, 0x39, 0xeb, - 0xfe, 0x31, 0x91, 0x39, 0xe4, 0x0c, 0x37, 0x51, 0x95, 0x33, 0x62, 0x74, 0x8c, 0x5e, 0x7d, 0x5c, - 0xe5, 0x0c, 0x5b, 0x08, 0x79, 0x52, 0xa8, 0x48, 0x06, 0x01, 0x44, 0xa4, 0xda, 0x31, 0x7b, 0xf5, - 0x71, 0x89, 0xe0, 0x2f, 0xe8, 0xff, 0x39, 0x44, 0xfc, 0x96, 0x7b, 0x54, 0x71, 0x29, 0x9c, 0x10, - 0xd4, 0x44, 0x32, 0x62, 0x76, 0xcc, 0x5e, 0xe3, 0xe2, 0xf9, 0x60, 0xcf, 0x9e, 0x07, 0x37, 0x25, - 0xcf, 0xb5, 0xb6, 0x8c, 0xf1, 0x7c, 0x87, 0xe1, 0x67, 0xa8, 0x49, 0x13, 0x35, 0x01, 0xa1, 0x0a, - 0x4e, 0x0e, 0xf4, 0x0e, 0xb6, 0x28, 0xee, 0xa3, 0x53, 0x1a, 0xc7, 0x10, 0x95, 0xb7, 0x70, 0xa8, - 0x95, 0xad, 0x0d, 0x2f, 0x4a, 0x5e, 0xa2, 0x47, 0x1e, 0x9d, 0x51, 0x97, 0x07, 0x5c, 0xa5, 0x0e, - 0x17, 0x73, 0x59, 0x54, 0x3e, 0xd2, 0xfa, 0xf6, 0x43, 0xf2, 0xdd, 0x26, 0xb7, 0x65, 0x62, 0x10, - 0x80, 0x9f, 0x9b, 0x6a, 0xdb, 0xa6, 0xe1, 0x26, 0x87, 0xcf, 0xd1, 0xc9, 0x14, 0x52, 0x87, 0xfa, - 0x11, 0x40, 0x08, 0x42, 0x91, 0xff, 0xb4, 0xf8, 0x78, 0x0a, 0xe9, 0xd5, 0x9a, 0xe1, 0x57, 0xa8, - 0x16, 0x43, 0x34, 0xe7, 0x1e, 0x90, 0xba, 0x9e, 0xd9, 0xf9, 0xde, 0x99, 0x0d, 0x39, 0xfb, 0x98, - 0x4b, 0xc7, 0x6b, 0x0f, 0xee, 0xa2, 0x13, 0x1a, 0xc4, 0xd2, 0x99, 0x0a, 0xb9, 0x10, 0x0e, 0x8d, - 0x09, 0xd2, 0x6b, 0x34, 0x32, 0x38, 0xca, 0xd8, 0x55, 0x8c, 0x09, 0xaa, 0x65, 0x07, 0x06, 0x77, - 0x8a, 0x34, 0x74, 0x76, 0xfd, 0xd9, 0xfd, 0x69, 0x20, 0xbc, 0x7b, 0x12, 0x3b, 0x77, 0x00, 0xa3, - 0x03, 0x95, 0xce, 0x80, 0x54, 0x35, 0xd1, 0xf1, 0xd6, 0xbd, 0x30, 0x75, 0xa6, 0x7c, 0x2f, 0x46, - 0xa8, 0x39, 0x4b, 0xdc, 0x80, 0x7b, 0x4e, 0x36, 0x83, 0xaf, 0x8b, 0xa9, 0x3e, 0xb9, 0xc6, 0xc5, - 0xd3, 0xbd, 0xed, 0x8d, 0x20, 0xbd, 0xa1, 0x41, 0x02, 0x1f, 0x28, 0x8f, 0xc6, 0xc7, 0xb9, 0x79, - 0x04, 0xe9, 0xfb, 0xc5, 0x14, 0xbf, 0x44, 0xed, 0x52, 0xb1, 0x30, 0x09, 0x14, 0x77, 0x69, 0x0c, - 0xe4, 0x50, 0x2f, 0x8b, 0x37, 0xda, 0xeb, 0x75, 0xa6, 0xfb, 0x19, 0xa1, 0x87, 0x71, 0xfd, 0x53, - 0x43, 0x7d, 0x74, 0x5a, 0x0c, 0xd5, 0x01, 0xc1, 0x66, 0x92, 0x0b, 0x55, 0xb4, 0xd5, 0x2a, 0xf8, - 0xdb, 0x02, 0xbf, 0x7e, 0xf3, 0x63, 0x69, 0x19, 0xf7, 0x4b, 0xcb, 0xf8, 0xbd, 0xb4, 0x8c, 0xef, - 0x2b, 0xab, 0x72, 0xbf, 0xb2, 0x2a, 0xbf, 0x56, 0x56, 0xe5, 0x53, 0xdf, 0xe7, 0x6a, 0x92, 0xb8, - 0x03, 0x4f, 0x86, 0x76, 0xf1, 0xc8, 0xb2, 0xdf, 0x17, 0x59, 0x9b, 0xf6, 0x5d, 0x81, 0xb2, 0xe5, - 0x62, 0xf7, 0x48, 0xbf, 0xbb, 0xcb, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x04, 0x68, 0x72, 0x89, - 0xe8, 0x03, 0x00, 0x00, + // 529 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x41, 0x6f, 0xd3, 0x30, + 0x14, 0xc7, 0x97, 0x66, 0x5b, 0xa9, 0xbb, 0xb5, 0x93, 0x29, 0xc2, 0xec, 0x10, 0x55, 0x45, 0xa0, + 0x56, 0x88, 0x06, 0x6d, 0x9f, 0x60, 0x63, 0x1c, 0xa0, 0x9a, 0x84, 0x8a, 0xb4, 0x03, 0x42, 0x0a, + 0x4e, 0xfc, 0x96, 0x9a, 0x26, 0x76, 0x49, 0x9c, 0x76, 0xf9, 0x16, 0x7c, 0x2c, 0x8e, 0xbb, 0xc1, + 0x11, 0xb5, 0x1f, 0x82, 0x2b, 0x8a, 0x93, 0x96, 0x90, 0xaa, 0x12, 0x97, 0xf6, 0xe5, 0xf7, 0xfe, + 0xff, 0x67, 0xbf, 0x67, 0x1b, 0xb5, 0xbd, 0x09, 0x7c, 0x65, 0x36, 0xe3, 0x6c, 0x38, 0x8b, 0xa4, + 0x92, 0xf8, 0xb1, 0x06, 0x9c, 0x0d, 0xf5, 0xbf, 0x90, 0x0c, 0xf2, 0xe8, 0xf4, 0x89, 0x2f, 0xa5, + 0x1f, 0x80, 0xad, 0x65, 0x6e, 0x72, 0x6b, 0x53, 0x91, 0xe6, 0x9e, 0xd3, 0x8e, 0x2f, 0x7d, 0xa9, + 0x43, 0x3b, 0x8b, 0x0a, 0x8a, 0xf3, 0xd2, 0x9e, 0x0c, 0x43, 0x29, 0x72, 0xd6, 0xfb, 0x6d, 0x22, + 0xf3, 0x8a, 0x33, 0xdc, 0x42, 0x35, 0xce, 0x88, 0xd1, 0x35, 0xfa, 0x8d, 0x71, 0x8d, 0x33, 0x6c, + 0x21, 0xe4, 0x49, 0xa1, 0x22, 0x19, 0x04, 0x10, 0x91, 0x5a, 0xd7, 0xec, 0x37, 0xc6, 0x25, 0x82, + 0x3f, 0xa1, 0x87, 0x73, 0x88, 0xf8, 0x2d, 0xf7, 0xa8, 0xe2, 0x52, 0x38, 0x21, 0xa8, 0x89, 0x64, + 0xc4, 0xec, 0x9a, 0xfd, 0xe6, 0xd9, 0x8b, 0xe1, 0x8e, 0x3d, 0x0f, 0x6f, 0x4a, 0x9e, 0x6b, 0x6d, + 0x19, 0xe3, 0xf9, 0x16, 0xc3, 0xcf, 0x51, 0x8b, 0x26, 0x6a, 0x02, 0x42, 0x15, 0x9c, 0xec, 0xeb, + 0x1d, 0x54, 0x28, 0x1e, 0xa0, 0x13, 0x1a, 0xc7, 0x10, 0x95, 0xb7, 0x70, 0xa0, 0x95, 0xed, 0x0d, + 0x2f, 0x4a, 0x9e, 0xa3, 0x47, 0x1e, 0x9d, 0x51, 0x97, 0x07, 0x5c, 0xa5, 0x0e, 0x17, 0x73, 0x59, + 0x54, 0x3e, 0xd4, 0xfa, 0xce, 0xdf, 0xe4, 0xdb, 0x4d, 0xae, 0x62, 0x62, 0x10, 0x80, 0x9f, 0x9b, + 0xea, 0x55, 0xd3, 0xd5, 0x26, 0x87, 0x9f, 0xa2, 0xe3, 0x29, 0xa4, 0x0e, 0xf5, 0x23, 0x80, 0x10, + 0x84, 0x22, 0x0f, 0xb4, 0xf8, 0x68, 0x0a, 0xe9, 0xc5, 0x9a, 0xe1, 0x4b, 0x54, 0x8f, 0x21, 0x9a, + 0x73, 0x0f, 0x48, 0x43, 0xcf, 0xac, 0xbf, 0x73, 0x66, 0x1f, 0x72, 0xdd, 0x1b, 0xc1, 0x66, 0x92, + 0x0b, 0x35, 0x5e, 0x1b, 0x71, 0x0f, 0x1d, 0xd3, 0x20, 0x96, 0xce, 0x54, 0xc8, 0x85, 0x70, 0x68, + 0x4c, 0x90, 0x5e, 0xa8, 0x99, 0xc1, 0x51, 0xc6, 0x2e, 0x62, 0x4c, 0x50, 0x3d, 0x3b, 0x35, 0xb8, + 0x53, 0xa4, 0xa9, 0xb3, 0xeb, 0xcf, 0xde, 0x0f, 0x03, 0xe1, 0xed, 0xe3, 0xd8, 0xba, 0x08, 0x18, + 0xed, 0xab, 0x74, 0x06, 0xa4, 0xa6, 0x89, 0x8e, 0x2b, 0x97, 0xc3, 0xd4, 0x99, 0xf2, 0xe5, 0x18, + 0xa1, 0xd6, 0x2c, 0x71, 0x03, 0xee, 0x39, 0xd9, 0x20, 0xbe, 0x2c, 0xa6, 0xfa, 0xf8, 0x9a, 0x67, + 0xcf, 0x76, 0xf6, 0x38, 0x82, 0xf4, 0x86, 0x06, 0x09, 0xbc, 0xa7, 0x3c, 0x1a, 0x1f, 0xe5, 0xe6, + 0x11, 0xa4, 0xef, 0x16, 0x53, 0xfc, 0x0a, 0x75, 0x4a, 0xc5, 0xc2, 0x24, 0x50, 0xdc, 0xa5, 0x31, + 0x90, 0x03, 0xbd, 0x2c, 0xde, 0x68, 0xaf, 0xd7, 0x99, 0xde, 0x67, 0xd4, 0xae, 0xcc, 0xec, 0xbf, + 0xba, 0x1a, 0xa0, 0x93, 0x62, 0xb2, 0x0e, 0x14, 0xbe, 0xa2, 0xb7, 0x76, 0xfc, 0x6f, 0xb9, 0xcb, + 0xd7, 0xdf, 0x97, 0x96, 0x71, 0xbf, 0xb4, 0x8c, 0x5f, 0x4b, 0xcb, 0xf8, 0xb6, 0xb2, 0xf6, 0xee, + 0x57, 0xd6, 0xde, 0xcf, 0x95, 0xb5, 0xf7, 0x71, 0xe0, 0x73, 0x35, 0x49, 0xdc, 0xa1, 0x27, 0x43, + 0xbb, 0x78, 0x6e, 0xd9, 0xef, 0xcb, 0xac, 0x57, 0xfb, 0xae, 0x40, 0xd9, 0x72, 0xb1, 0x7b, 0xa8, + 0x5f, 0xe0, 0xf9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x21, 0x4c, 0xae, 0x48, 0xf2, 0x03, 0x00, + 0x00, } func (m *Did) Marshal() (dAtA []byte, err error) { @@ -525,7 +525,7 @@ func (m *VerificationMethod) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *DidService) Marshal() (dAtA []byte, err error) { +func (m *ServiceEndpoint) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -535,12 +535,12 @@ func (m *DidService) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *DidService) MarshalTo(dAtA []byte) (int, error) { +func (m *ServiceEndpoint) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DidService) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ServiceEndpoint) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -684,7 +684,7 @@ func (m *VerificationMethod) Size() (n int) { return n } -func (m *DidService) Size() (n int) { +func (m *ServiceEndpoint) Size() (n int) { if m == nil { return 0 } @@ -1027,7 +1027,7 @@ func (m *Did) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Service = append(m.Service, &DidService{}) + m.Service = append(m.Service, &ServiceEndpoint{}) if err := m.Service[len(m.Service)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -1329,7 +1329,7 @@ func (m *VerificationMethod) Unmarshal(dAtA []byte) error { } return nil } -func (m *DidService) Unmarshal(dAtA []byte) error { +func (m *ServiceEndpoint) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1352,10 +1352,10 @@ func (m *DidService) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: DidService: wiretype end group for non-group") + return fmt.Errorf("proto: ServiceEndpoint: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: DidService: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ServiceEndpoint: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index 2a20667d8..45646853f 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -19,5 +19,10 @@ var ( ErrDidDocNotFound = sdkerrors.Register(ModuleName, 1201, "DID Doc not found") ErrVerificationMethodNotFound = sdkerrors.Register(ModuleName, 1202, "verification method not found") ErrUnexpectedDidVersion = sdkerrors.Register(ModuleName, 1203, "unexpected DID version") - ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1300, "invalid cred def value") + ErrInvalidDidStateValue = sdkerrors.Register(ModuleName, 1300, "invalid did state value") + ErrInvalidCredDefStateValue = sdkerrors.Register(ModuleName, 1301, "invalid cred def state value") + ErrInvalidSchemaStateValue = sdkerrors.Register(ModuleName, 1302, "invalid schema state value") + ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1303, "invalid cred def value") + ErrSetToState = sdkerrors.Register(ModuleName, 1304, "cannot set to state") + ErrNotImplemented = sdkerrors.Register(ModuleName, 1501, "not implemented") ) diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index d26ccf587..5ba5f8142 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -2,17 +2,18 @@ package types import ( "github.com/cheqd/cheqd-node/x/cheqd/utils" + "github.com/cosmos/cosmos-sdk/codec/types" ) var _ IdentityMsg = &MsgCreateCredDef{} -func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, controller []string, value *MsgCreateCredDef_ClType) *MsgCreateCredDef { +func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, controller []string, value types.Any) *MsgCreateCredDef { return &MsgCreateCredDef{ Id: id, SchemaId: schemaId, Tag: tag, Type: signatureType, - Value: value, + Value: &value, Controller: controller, } } diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 6ba6eb17f..1a4d02598 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -16,7 +16,7 @@ func NewMsgCreateDid( capabilityDelegation []string, keyAgreement []string, alsoKnownAs []string, - service []*DidService, + service []*ServiceEndpoint, context []string, ) *MsgCreateDid { return &MsgCreateDid{ @@ -146,7 +146,7 @@ func NewMsgUpdateDid( capabilityDelegation []string, keyAgreement []string, alsoKnownAs []string, - service []*DidService, + service []*ServiceEndpoint, context []string, ) *MsgUpdateDid { return &MsgUpdateDid{ @@ -302,7 +302,7 @@ func ValidateVerificationMethod(namespace string, vm *VerificationMethod) error return nil } -func ValidateServices(namespace string, did string, services []*DidService) error { +func ValidateServices(namespace string, did string, services []*ServiceEndpoint) error { for i, s := range services { if err := ValidateService(namespace, s); err != nil { return ErrBadRequestInvalidService.Wrap(sdkerrors.Wrapf(err, "index %d, value %s", i, s.Id).Error()) @@ -322,7 +322,7 @@ func ValidateServices(namespace string, did string, services []*DidService) erro return nil } -func ValidateService(namespace string, s *DidService) error { +func ValidateService(namespace string, s *ServiceEndpoint) error { if !utils.IsDidFragment(namespace, s.Id) { return ErrBadRequestIsNotDidFragment.Wrap(s.Id) } @@ -344,7 +344,7 @@ func IncludeVerificationMethod(did string, vms []*VerificationMethod, id string) return false } -func IncludeService(did string, services []*DidService, id string) bool { +func IncludeService(did string, services []*ServiceEndpoint, id string) bool { for _, s := range services { if utils.ResolveId(did, s.Id) == utils.ResolveId(did, id) { return true diff --git a/x/cheqd/types/messages_write_request.go b/x/cheqd/types/messages_write_request.go index bb03427b9..58155697e 100644 --- a/x/cheqd/types/messages_write_request.go +++ b/x/cheqd/types/messages_write_request.go @@ -7,10 +7,9 @@ import ( var _ sdk.Msg = &MsgWriteRequest{} -func NewMsgWriteRequest(data *types.Any, metadata []*KeyValuePair, signatures []*SignInfo) *MsgWriteRequest { +func NewMsgWriteRequest(data *types.Any, signatures []*SignInfo) *MsgWriteRequest { return &MsgWriteRequest{ Data: data, - Metadata: metadata, Signatures: signatures, } } diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index fa8632b0c..f50b1b784 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -10,144 +10,146 @@ import ( const Prefix = "did:cheqd:test:" func TestNewMsgCreateCredDef(t *testing.T) { - cases := []struct { - valid bool - msg *MsgCreateCredDef - errMsg string - }{ - { - true, - NewMsgCreateCredDef( - "did:cheqd:test:aaaaa?service=CL-CredDef", - "schema", - "", - "CL-CredDef", - []string{"did:cheqd:test:alice"}, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "", - }, - { - true, - NewMsgCreateCredDef( - "did:cheqd:test:aaaaa?service=CL-CredDef", - "schema", - "tag", - "CL-CredDef", - []string{"did:cheqd:test:alice"}, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "", - }, - { - false, - NewMsgCreateCredDef( - "?service=CL-CredDef", - "", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: nil}), - "Id: is not DID", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice#key-1?service=CL-CredDef", - "", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: nil}), - "Id: is not DID", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice", - "", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "Id must end with resource type '?service=CL-CredDef': bad request", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "SchemaId: is required", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", + // TODO fix after cred_def implementation + /* + cases := []struct { + valid bool + msg *MsgCreateCredDef + errMsg string + }{ + { + true, + NewMsgCreateCredDef( + "did:cheqd:test:aaaaa?service=CL-CredDef", + "schema", + "", + "CL-CredDef", + []string{"did:cheqd:test:alice"}, + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "", + }, + { + true, + NewMsgCreateCredDef( + "did:cheqd:test:aaaaa?service=CL-CredDef", + "schema", + "tag", + "CL-CredDef", + []string{"did:cheqd:test:alice"}, + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), "", - nil, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "SignatureType: is required", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "ss", - []string{"did:cheqd:test:alice"}, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "ss is not allowed type: bad request", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "CL-CredDef", - nil, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "Controller: is required", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "CL-CredDef", - []string{"1"}, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "Controller item 1: is not DID", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "CL-CredDef", - []string{"did:cheqd:test:alice"}, - &MsgCreateCredDef_ClType{ClType: nil}), - "Value: is required", - }, - } + }, + { + false, + NewMsgCreateCredDef( + "?service=CL-CredDef", + "", + "", + "", + nil, + &MsgCreateCredDef_ClType{ClType: nil}), + "Id: is not DID", + }, + { + false, + NewMsgCreateCredDef( + "did:cheqd:test:alice#key-1?service=CL-CredDef", + "", + "", + "", + nil, + &MsgCreateCredDef_ClType{ClType: nil}), + "Id: is not DID", + }, + { + false, + NewMsgCreateCredDef( + "did:cheqd:test:alice", + "", + "", + "", + nil, + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), + "Id must end with resource type '?service=CL-CredDef': bad request", + }, + { + false, + NewMsgCreateCredDef( + "did:cheqd:test:alice?service=CL-CredDef", + "", + "", + "", + nil, + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), + "SchemaId: is required", + }, + { + false, + NewMsgCreateCredDef( + "did:cheqd:test:alice?service=CL-CredDef", + "schema-1", + "", + "", + nil, + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), + "SignatureType: is required", + }, + { + false, + NewMsgCreateCredDef( + "did:cheqd:test:alice?service=CL-CredDef", + "schema-1", + "", + "ss", + []string{"did:cheqd:test:alice"}, + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), + "ss is not allowed type: bad request", + }, + { + false, + NewMsgCreateCredDef( + "did:cheqd:test:alice?service=CL-CredDef", + "schema-1", + "", + "CL-CredDef", + nil, + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), + "Controller: is required", + }, + { + false, + NewMsgCreateCredDef( + "did:cheqd:test:alice?service=CL-CredDef", + "schema-1", + "", + "CL-CredDef", + []string{"1"}, + &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), + "Controller item 1: is not DID", + }, + { + false, + NewMsgCreateCredDef( + "did:cheqd:test:alice?service=CL-CredDef", + "schema-1", + "", + "CL-CredDef", + []string{"did:cheqd:test:alice"}, + &MsgCreateCredDef_ClType{ClType: nil}), + "Value: is required", + }, + } - for _, tc := range cases { - err := tc.msg.ValidateBasic(Prefix) + for _, tc := range cases { + err := tc.msg.ValidateBasic(Prefix) - if tc.valid { - require.Nil(t, err) - } else { - require.Error(t, err) - require.Equal(t, tc.errMsg, err.Error()) - } - } + if tc.valid { + require.Nil(t, err) + } else { + require.Error(t, err) + require.Equal(t, tc.errMsg, err.Error()) + } + }*/ } func TestNewMsgWriteRequestValidation(t *testing.T) { @@ -156,11 +158,11 @@ func TestNewMsgWriteRequestValidation(t *testing.T) { msg *MsgWriteRequest errMsg string }{ - {true, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), ""}, - {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, nil, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), "Invalid Data: it cannot be empty: bad request"}, - {false, NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, nil, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), "Invalid Data: it cannot be empty: bad request"}, - {false, NewMsgWriteRequest(nil, nil, nil), "Data: is required"}, - {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil, nil), "Signatures: is required"}, + {true, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), ""}, + {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1"}, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), "Invalid Data: it cannot be empty: bad request"}, + {false, NewMsgWriteRequest(&ctypes.Any{Value: []byte{1}}, []*SignInfo{{VerificationMethodId: "foo", Signature: "bar"}}), "Invalid Data: it cannot be empty: bad request"}, + {false, NewMsgWriteRequest(nil, nil), "Data: is required"}, + {false, NewMsgWriteRequest(&ctypes.Any{TypeUrl: "1", Value: []byte{1}}, nil), "Signatures: is required"}, } for _, tc := range cases { @@ -611,7 +613,7 @@ func TestNewMsgCreateDid(t *testing.T) { &MsgCreateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ {}, }, }, @@ -622,7 +624,7 @@ func TestNewMsgCreateDid(t *testing.T) { &MsgCreateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ { Id: "weqweqw", }, @@ -635,7 +637,7 @@ func TestNewMsgCreateDid(t *testing.T) { &MsgCreateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ { Id: "#service-1", }, @@ -648,7 +650,7 @@ func TestNewMsgCreateDid(t *testing.T) { &MsgCreateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ { Id: "#service-1", Type: "DIDCommMessaging", @@ -666,7 +668,7 @@ func TestNewMsgCreateDid(t *testing.T) { &MsgCreateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ { Id: "did:cheqd:test:alice#service-1", Type: "DIDCommMessaging", @@ -693,7 +695,7 @@ func TestNewMsgCreateDid(t *testing.T) { &MsgCreateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{}, + Service: []*ServiceEndpoint{}, }, "", }, @@ -1003,7 +1005,7 @@ func TestNewMsgUpdateDid(t *testing.T) { &MsgUpdateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ {}, }, }, @@ -1014,7 +1016,7 @@ func TestNewMsgUpdateDid(t *testing.T) { &MsgUpdateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ { Id: "weqweqw", }, @@ -1027,7 +1029,7 @@ func TestNewMsgUpdateDid(t *testing.T) { &MsgUpdateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ { Id: "#service-1", }, @@ -1040,7 +1042,7 @@ func TestNewMsgUpdateDid(t *testing.T) { &MsgUpdateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ { Id: "#service-1", Type: "DIDCommMessaging", @@ -1058,7 +1060,7 @@ func TestNewMsgUpdateDid(t *testing.T) { &MsgUpdateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{ + Service: []*ServiceEndpoint{ { Id: "did:cheqd:test:alice#service-1", Type: "DIDCommMessaging", @@ -1085,7 +1087,7 @@ func TestNewMsgUpdateDid(t *testing.T) { &MsgUpdateDid{ Id: "did:cheqd:test:alice", Controller: []string{"did:cheqd:test:alice"}, - Service: []*DidService{}, + Service: []*ServiceEndpoint{}, }, "", }, diff --git a/x/cheqd/types/query.pb.go b/x/cheqd/types/query.pb.go index adb73cae6..14f959c3f 100644 --- a/x/cheqd/types/query.pb.go +++ b/x/cheqd/types/query.pb.go @@ -75,7 +75,8 @@ func (m *QueryGetCredDefRequest) GetId() string { } type QueryGetCredDefResponse struct { - CredDef *CredDef `protobuf:"bytes,1,opt,name=cred_def,json=credDef,proto3" json:"cred_def,omitempty"` + CredDef *CredDef `protobuf:"bytes,1,opt,name=cred_def,json=credDef,proto3" json:"cred_def,omitempty"` + Metadata *Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *QueryGetCredDefResponse) Reset() { *m = QueryGetCredDefResponse{} } @@ -118,6 +119,13 @@ func (m *QueryGetCredDefResponse) GetCredDef() *CredDef { return nil } +func (m *QueryGetCredDefResponse) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + type QueryGetSchemaRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -163,7 +171,8 @@ func (m *QueryGetSchemaRequest) GetId() string { } type QueryGetSchemaResponse struct { - Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` + Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` + Metadata *Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *QueryGetSchemaResponse) Reset() { *m = QueryGetSchemaResponse{} } @@ -206,6 +215,13 @@ func (m *QueryGetSchemaResponse) GetSchema() *Schema { return nil } +func (m *QueryGetSchemaResponse) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + type QueryGetDidRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -314,38 +330,39 @@ func init() { func init() { proto.RegisterFile("cheqd/query.proto", fileDescriptor_bf3698559b3858f5) } var fileDescriptor_bf3698559b3858f5 = []byte{ - // 491 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xc1, 0x6b, 0x13, 0x41, - 0x14, 0xc6, 0x33, 0x09, 0xa6, 0x75, 0x0a, 0x8a, 0x53, 0x6c, 0xcb, 0x52, 0xb6, 0xed, 0x5a, 0x69, - 0x6d, 0x75, 0xc7, 0xc6, 0x83, 0x07, 0xf1, 0x62, 0x03, 0x9e, 0x3c, 0x34, 0x42, 0x0f, 0x5e, 0x64, - 0xb2, 0xf3, 0x9a, 0x0c, 0x34, 0x3b, 0x9b, 0xcc, 0x44, 0x2c, 0xe2, 0x45, 0xbc, 0x78, 0x13, 0xc4, + // 499 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0xc1, 0x6b, 0x13, 0x41, + 0x14, 0xc6, 0x3b, 0x09, 0xa6, 0x75, 0x0a, 0x8a, 0x53, 0x6c, 0xcb, 0x52, 0xb6, 0xed, 0x5a, 0x69, + 0x6d, 0x75, 0xc7, 0xc6, 0x83, 0x07, 0xf1, 0x62, 0x03, 0x9e, 0x3c, 0x18, 0xc1, 0x83, 0x17, 0x99, + 0xec, 0xbc, 0x26, 0x03, 0xcd, 0xce, 0x26, 0x33, 0x11, 0x8b, 0x78, 0x11, 0x2f, 0xde, 0x0a, 0xd2, 0x83, 0x7f, 0x91, 0x1e, 0x0b, 0x5e, 0x3c, 0x4a, 0xe2, 0x1f, 0x22, 0x3b, 0xf3, 0xd6, 0x1a, 0x74, - 0x68, 0x4e, 0x09, 0x1f, 0xdf, 0xf7, 0xbe, 0xdf, 0x9b, 0x99, 0xa5, 0x37, 0xb2, 0x3e, 0x0c, 0x25, - 0x1f, 0x8e, 0x61, 0x74, 0x96, 0x16, 0x23, 0x6d, 0x35, 0x5b, 0x75, 0x92, 0x92, 0xa9, 0xfb, 0xcd, - 0xb5, 0x04, 0xff, 0x2f, 0x5a, 0xef, 0x69, 0xdd, 0x3b, 0x05, 0x2e, 0x0a, 0xc5, 0x45, 0x9e, 0x6b, - 0x2b, 0xac, 0xd2, 0xb9, 0xf1, 0xb1, 0x68, 0x2f, 0xd3, 0x66, 0xa0, 0x0d, 0xef, 0x0a, 0x03, 0x7e, - 0x1e, 0x7f, 0x75, 0xd0, 0x05, 0x2b, 0x0e, 0x78, 0x21, 0x7a, 0x2a, 0x77, 0x66, 0xf4, 0x2e, 0xfb, - 0xd6, 0x6c, 0x04, 0xb2, 0x0d, 0x27, 0x28, 0x32, 0x2f, 0x9a, 0xac, 0x0f, 0x03, 0x81, 0xda, 0x75, - 0xaf, 0x95, 0x34, 0x5e, 0x58, 0x41, 0x93, 0x15, 0x16, 0x8e, 0xc5, 0xe9, 0x18, 0xbc, 0x9e, 0xec, - 0xd2, 0x95, 0xa3, 0xb2, 0xf3, 0x29, 0xd8, 0x43, 0x3f, 0xb5, 0x03, 0xc3, 0x31, 0x18, 0xcb, 0xae, - 0xd1, 0xba, 0x92, 0x6b, 0x64, 0x93, 0xec, 0x5e, 0xed, 0xd4, 0x95, 0x4c, 0x8e, 0xe9, 0xea, 0x3f, - 0x4e, 0x53, 0xe8, 0xdc, 0x00, 0x7b, 0x44, 0x17, 0x4b, 0xa4, 0x97, 0x12, 0x4e, 0x5c, 0x60, 0xa9, - 0xb5, 0x99, 0x06, 0x0e, 0x23, 0xad, 0xb2, 0x0b, 0xb8, 0x44, 0xb2, 0x43, 0x6f, 0x56, 0x73, 0x9f, - 0xbb, 0x15, 0x42, 0x00, 0x47, 0x17, 0xa8, 0x95, 0x11, 0xfb, 0x1f, 0xd2, 0xa6, 0xdf, 0x1e, 0xdb, - 0x37, 0x82, 0xed, 0x18, 0x44, 0x7b, 0xb2, 0x4d, 0x59, 0x35, 0xb2, 0xad, 0x64, 0xa8, 0xf8, 0x3d, - 0xa1, 0xcb, 0x33, 0x36, 0xac, 0x4d, 0x69, 0x43, 0xa2, 0x71, 0xa9, 0xb5, 0x1e, 0xec, 0x2c, 0x23, - 0xa5, 0x91, 0x3d, 0xa6, 0x8b, 0x03, 0xb0, 0x42, 0x0a, 0x2b, 0xd6, 0xea, 0x2e, 0xb4, 0x15, 0x0c, - 0x3d, 0x43, 0x63, 0xe7, 0x4f, 0xa4, 0xf5, 0xb5, 0x41, 0xaf, 0x38, 0x0c, 0xf6, 0x85, 0xd0, 0x05, - 0x3c, 0x47, 0xc6, 0x83, 0x23, 0xfe, 0x7f, 0xaf, 0xd1, 0xfd, 0xf9, 0x03, 0x7e, 0xcf, 0x64, 0xff, - 0xdd, 0xf7, 0x5f, 0x9f, 0xea, 0xb7, 0xd9, 0x2d, 0x8e, 0xcf, 0xaf, 0xca, 0xf1, 0x99, 0xe7, 0xc8, - 0xdf, 0x28, 0xf9, 0x96, 0x7d, 0x26, 0xb4, 0xe9, 0x4f, 0x99, 0xa5, 0x97, 0x36, 0xcd, 0x5c, 0x78, - 0xc4, 0xe7, 0xf6, 0x23, 0xd8, 0x9e, 0x03, 0xdb, 0x66, 0x49, 0x00, 0xcc, 0xdf, 0xb2, 0xe7, 0xfa, - 0x40, 0x68, 0xa3, 0xad, 0x24, 0xdb, 0xbf, 0xb4, 0xe4, 0xe2, 0x25, 0x44, 0x77, 0xe7, 0x33, 0x23, - 0xce, 0x8e, 0xc3, 0xd9, 0x62, 0x1b, 0x01, 0x1c, 0xa9, 0xa4, 0x63, 0x79, 0x72, 0xf8, 0x6d, 0x12, - 0x93, 0xf3, 0x49, 0x4c, 0x7e, 0x4e, 0x62, 0xf2, 0x71, 0x1a, 0xd7, 0xce, 0xa7, 0x71, 0xed, 0xc7, - 0x34, 0xae, 0xbd, 0xb8, 0xd3, 0x53, 0xb6, 0x3f, 0xee, 0xa6, 0x99, 0x1e, 0xfc, 0x3d, 0xe4, 0x9e, - 0x9b, 0xf2, 0x1a, 0x25, 0x7b, 0x56, 0x80, 0xe9, 0x36, 0xdd, 0x07, 0xfc, 0xe0, 0x77, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x62, 0xfa, 0xdc, 0xa6, 0x8a, 0x04, 0x00, 0x00, + 0x68, 0xa0, 0xa7, 0x5d, 0x3e, 0xbe, 0xef, 0xbd, 0xdf, 0x9b, 0x79, 0xbb, 0xf4, 0x46, 0xd6, 0x83, + 0x81, 0xe4, 0x83, 0x11, 0x0c, 0x8f, 0xd3, 0x62, 0xa8, 0xad, 0x66, 0x2b, 0x4e, 0x52, 0x32, 0x75, + 0xcf, 0x5c, 0x4b, 0xf0, 0x6f, 0xd1, 0x5a, 0x57, 0xeb, 0xee, 0x11, 0x70, 0x51, 0x28, 0x2e, 0xf2, + 0x5c, 0x5b, 0x61, 0x95, 0xce, 0x8d, 0x8f, 0x45, 0xbb, 0x99, 0x36, 0x7d, 0x6d, 0x78, 0x47, 0x18, + 0xf0, 0xf5, 0xf8, 0x9b, 0xfd, 0x0e, 0x58, 0xb1, 0xcf, 0x0b, 0xd1, 0x55, 0xb9, 0x33, 0xa3, 0x77, + 0xc9, 0x77, 0xcd, 0x86, 0x20, 0x5b, 0x70, 0x88, 0x22, 0xf3, 0xa2, 0xc9, 0x7a, 0xd0, 0x17, 0xa8, + 0x5d, 0xf7, 0x5a, 0x49, 0xe3, 0x85, 0x65, 0x34, 0x59, 0x61, 0xe1, 0xa5, 0x38, 0x1a, 0x81, 0xd7, + 0x93, 0x1d, 0xba, 0xfc, 0xbc, 0xec, 0xf9, 0x14, 0xec, 0x81, 0xaf, 0xda, 0x86, 0xc1, 0x08, 0x8c, + 0x65, 0xd7, 0x68, 0x4d, 0xc9, 0x55, 0xb2, 0x41, 0x76, 0xae, 0xb6, 0x6b, 0x4a, 0x26, 0xa7, 0x84, + 0xae, 0xfc, 0x63, 0x35, 0x85, 0xce, 0x0d, 0xb0, 0x47, 0x74, 0xa1, 0x64, 0x7a, 0x2d, 0xe1, 0xd0, + 0x25, 0x16, 0x9b, 0x1b, 0x69, 0xe0, 0x34, 0xd2, 0x2a, 0x3b, 0x8f, 0x53, 0xb0, 0xc7, 0x74, 0xa1, + 0x0f, 0x56, 0x48, 0x61, 0xc5, 0x6a, 0xcd, 0x85, 0x37, 0x83, 0xe1, 0x67, 0x68, 0x6c, 0xff, 0x89, + 0x24, 0xdb, 0xf4, 0x66, 0x85, 0xf5, 0xc2, 0x1d, 0x41, 0x68, 0x80, 0x13, 0x72, 0x3e, 0x6b, 0xe5, + 0x44, 0xfe, 0x87, 0xb4, 0xe1, 0x8f, 0x0f, 0xe9, 0xd7, 0x83, 0x00, 0x18, 0x44, 0xfb, 0x65, 0xd9, + 0xb7, 0x28, 0xab, 0x88, 0x5a, 0x4a, 0x86, 0xc0, 0x3f, 0x12, 0xba, 0x34, 0x65, 0x43, 0xea, 0x94, + 0xd6, 0x25, 0x1a, 0x17, 0x9b, 0x6b, 0xc1, 0xbe, 0x65, 0xa4, 0x34, 0x5e, 0x12, 0xb6, 0xf9, 0xb5, + 0x4e, 0xaf, 0x38, 0x0c, 0xf6, 0x85, 0xd0, 0x79, 0xbc, 0x46, 0xc6, 0x83, 0x25, 0xfe, 0xbf, 0x57, + 0xd1, 0xfd, 0xd9, 0x03, 0x7e, 0xce, 0x64, 0xef, 0xc3, 0xf7, 0x5f, 0x9f, 0x6b, 0xb7, 0xd9, 0x2d, + 0x8e, 0xeb, 0x5f, 0xe5, 0xf8, 0xd4, 0xe7, 0xc0, 0xdf, 0x29, 0xf9, 0x9e, 0x9d, 0x12, 0xda, 0xf0, + 0x97, 0xc4, 0xd2, 0x0b, 0x3b, 0x4d, 0x2d, 0x4c, 0xc4, 0x67, 0xf6, 0x23, 0xd8, 0xae, 0x03, 0xdb, + 0x62, 0x49, 0x00, 0xcc, 0x2f, 0x89, 0xe7, 0xfa, 0x44, 0x68, 0xbd, 0xa5, 0x24, 0xdb, 0xbb, 0xb0, + 0xc9, 0xf9, 0x26, 0x44, 0x77, 0x67, 0x33, 0x23, 0xce, 0xb6, 0xc3, 0xd9, 0x64, 0xeb, 0x01, 0x1c, + 0xa9, 0xa4, 0x63, 0x79, 0x72, 0xf0, 0x6d, 0x1c, 0x93, 0xb3, 0x71, 0x4c, 0x7e, 0x8e, 0x63, 0x72, + 0x32, 0x89, 0xe7, 0xce, 0x26, 0xf1, 0xdc, 0x8f, 0x49, 0x3c, 0xf7, 0xea, 0x4e, 0x57, 0xd9, 0xde, + 0xa8, 0x93, 0x66, 0xba, 0xff, 0x77, 0x91, 0x7b, 0xae, 0xca, 0x5b, 0x94, 0xec, 0x71, 0x01, 0xa6, + 0xd3, 0x70, 0x3f, 0x90, 0x07, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xca, 0x57, 0x8a, 0x8b, 0x0a, + 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -552,6 +569,18 @@ func (m *QueryGetCredDefResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } if m.CredDef != nil { { size, err := m.CredDef.MarshalToSizedBuffer(dAtA[:i]) @@ -617,6 +646,18 @@ func (m *QueryGetSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } if m.Schema != nil { { size, err := m.Schema.MarshalToSizedBuffer(dAtA[:i]) @@ -743,6 +784,10 @@ func (m *QueryGetCredDefResponse) Size() (n int) { l = m.CredDef.Size() n += 1 + l + sovQuery(uint64(l)) } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovQuery(uint64(l)) + } return n } @@ -769,6 +814,10 @@ func (m *QueryGetSchemaResponse) Size() (n int) { l = m.Schema.Size() n += 1 + l + sovQuery(uint64(l)) } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovQuery(uint64(l)) + } return n } @@ -955,6 +1004,42 @@ func (m *QueryGetCredDefResponse) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &Metadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1123,6 +1208,42 @@ func (m *QueryGetSchemaResponse) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &Metadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) diff --git a/x/cheqd/types/stateValue.go b/x/cheqd/types/stateValue.go new file mode 100644 index 000000000..1b38ab38e --- /dev/null +++ b/x/cheqd/types/stateValue.go @@ -0,0 +1,88 @@ +package types + +import ( + "encoding/base64" + "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/gogo/protobuf/proto" + "github.com/tendermint/tendermint/crypto/tmhash" +) + +const ( + StateValueDid = "/cheqdid.cheqdnode.cheqd.Did" + StateValueCredDef = "/cheqdid.cheqdnode.cheqd.CredDef" + StateValueSchema = "/cheqdid.cheqdnode.cheqd.Schema" +) + +func NewStateValue(msg proto.Message, metadata *Metadata) (*StateValue, error) { + data, err := types.NewAnyWithValue(msg) + if err != nil { + return nil, ErrInvalidDidStateValue.Wrap(err.Error()) + } + + return &StateValue{Data: data, Metadata: metadata}, nil +} + +func NewMetadata(ctx sdk.Context) Metadata { + created := ctx.BlockTime().String() + txHash := base64.StdEncoding.EncodeToString(tmhash.Sum(ctx.TxBytes())) + + return Metadata{Created: created, Updated: created, Deactivated: false, VersionId: txHash} +} + +func (m StateValue) GetDid() (*Did, error) { + value, isValue := m.Data.GetCachedValue().(Did) + if isValue { + return &value, nil + } + + if m.Data.TypeUrl != StateValueDid { + return nil, ErrInvalidDidStateValue.Wrap(m.Data.TypeUrl) + } + + state := Did{} + err := state.Unmarshal(m.Data.Value) + if err != nil { + return nil, ErrInvalidDidStateValue.Wrap(err.Error()) + } + + return &state, nil +} + +func (m StateValue) GetCredDef() (*CredDef, error) { + value, isValue := m.Data.GetCachedValue().(CredDef) + if isValue { + return &value, nil + } + + if m.Data.TypeUrl != StateValueCredDef { + return nil, ErrInvalidCredDefStateValue.Wrap(m.Data.TypeUrl) + } + + state := CredDef{} + err := state.Unmarshal(m.Data.Value) + if err != nil { + return nil, ErrInvalidCredDefStateValue.Wrap(err.Error()) + } + + return &state, nil +} + +func (m StateValue) GetSchema() (*Schema, error) { + value, isValue := m.Data.GetCachedValue().(Schema) + if isValue { + return &value, nil + } + + if m.Data.TypeUrl != StateValueSchema { + return nil, ErrInvalidSchemaStateValue.Wrap(m.Data.TypeUrl) + } + + state := Schema{} + err := state.Unmarshal(m.Data.Value) + if err != nil { + return nil, ErrInvalidSchemaStateValue.Wrap(err.Error()) + } + + return &state, nil +} diff --git a/x/cheqd/types/stateValue.pb.go b/x/cheqd/types/stateValue.pb.go index 7814d0ed3..7c3d1fe2b 100644 --- a/x/cheqd/types/stateValue.pb.go +++ b/x/cheqd/types/stateValue.pb.go @@ -5,6 +5,7 @@ package types import ( fmt "fmt" + types "github.com/cosmos/cosmos-sdk/codec/types" proto "github.com/gogo/protobuf/proto" io "io" math "math" @@ -23,14 +24,8 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type StateValue struct { - // Types that are valid to be assigned to Data: - // *StateValue_Did - // *StateValue_Schema - // *StateValue_CredDef - Data isStateValue_Data `protobuf_oneof:"data"` - TxHash string `protobuf:"bytes,4,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - Timestamp string `protobuf:"bytes,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Metadata *Metadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` + Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Metadata *Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *StateValue) Reset() { *m = StateValue{} } @@ -66,68 +61,13 @@ func (m *StateValue) XXX_DiscardUnknown() { var xxx_messageInfo_StateValue proto.InternalMessageInfo -type isStateValue_Data interface { - isStateValue_Data() - MarshalTo([]byte) (int, error) - Size() int -} - -type StateValue_Did struct { - Did *Did `protobuf:"bytes,1,opt,name=did,proto3,oneof" json:"did,omitempty"` -} -type StateValue_Schema struct { - Schema *Schema `protobuf:"bytes,2,opt,name=schema,proto3,oneof" json:"schema,omitempty"` -} -type StateValue_CredDef struct { - CredDef *CredDef `protobuf:"bytes,3,opt,name=cred_def,json=credDef,proto3,oneof" json:"cred_def,omitempty"` -} - -func (*StateValue_Did) isStateValue_Data() {} -func (*StateValue_Schema) isStateValue_Data() {} -func (*StateValue_CredDef) isStateValue_Data() {} - -func (m *StateValue) GetData() isStateValue_Data { +func (m *StateValue) GetData() *types.Any { if m != nil { return m.Data } return nil } -func (m *StateValue) GetDid() *Did { - if x, ok := m.GetData().(*StateValue_Did); ok { - return x.Did - } - return nil -} - -func (m *StateValue) GetSchema() *Schema { - if x, ok := m.GetData().(*StateValue_Schema); ok { - return x.Schema - } - return nil -} - -func (m *StateValue) GetCredDef() *CredDef { - if x, ok := m.GetData().(*StateValue_CredDef); ok { - return x.CredDef - } - return nil -} - -func (m *StateValue) GetTxHash() string { - if m != nil { - return m.TxHash - } - return "" -} - -func (m *StateValue) GetTimestamp() string { - if m != nil { - return m.Timestamp - } - return "" -} - func (m *StateValue) GetMetadata() *Metadata { if m != nil { return m.Metadata @@ -135,15 +75,6 @@ func (m *StateValue) GetMetadata() *Metadata { return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*StateValue) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*StateValue_Did)(nil), - (*StateValue_Schema)(nil), - (*StateValue_CredDef)(nil), - } -} - // metadata type Metadata struct { Created string `protobuf:"bytes,1,opt,name=created,proto3" json:"created,omitempty"` @@ -221,31 +152,27 @@ func init() { func init() { proto.RegisterFile("cheqd/stateValue.proto", fileDescriptor_8f10490b1a4abc33) } var fileDescriptor_8f10490b1a4abc33 = []byte{ - // 369 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0x3d, 0x4f, 0xfa, 0x40, - 0x1c, 0x6e, 0x81, 0x7f, 0xa1, 0xc7, 0xf0, 0x4f, 0xce, 0x44, 0x1a, 0x82, 0xb5, 0x32, 0xe1, 0x60, - 0x31, 0x3a, 0x39, 0xb8, 0x00, 0x43, 0x1d, 0x5c, 0x8e, 0xc4, 0xc1, 0x85, 0x1c, 0xbd, 0x1f, 0xf6, - 0x12, 0x4b, 0x2b, 0x3d, 0x08, 0x4e, 0x7e, 0x05, 0x3f, 0x8d, 0x9f, 0xc1, 0x91, 0xd1, 0xd1, 0xc0, - 0x17, 0x31, 0xf7, 0x02, 0xba, 0x74, 0xe9, 0xf5, 0x9e, 0x97, 0x7b, 0xee, 0xb9, 0xfc, 0xd0, 0x71, - 0x9c, 0xc0, 0x0b, 0xeb, 0x17, 0x82, 0x0a, 0x78, 0xa0, 0xcf, 0x4b, 0x08, 0xf3, 0x45, 0x26, 0x32, - 0xdc, 0x52, 0x38, 0x67, 0xa1, 0x5a, 0xe7, 0x19, 0x03, 0xfd, 0xd7, 0xfe, 0xaf, 0x0d, 0x92, 0x52, - 0xca, 0xf6, 0x91, 0x06, 0xe2, 0x05, 0xb0, 0x11, 0xcc, 0x0c, 0x88, 0xcd, 0xb1, 0x71, 0x02, 0x29, - 0xd5, 0x58, 0xf7, 0xa3, 0x82, 0xd0, 0xf8, 0x90, 0x83, 0x2f, 0x51, 0x95, 0x71, 0xe6, 0xd9, 0x81, - 0xdd, 0x6b, 0x5e, 0x75, 0xc2, 0x92, 0xbc, 0x70, 0xc4, 0x59, 0x64, 0x11, 0x29, 0xc5, 0x37, 0xc8, - 0xd1, 0x07, 0x7a, 0x15, 0x65, 0x3a, 0x2d, 0x35, 0x8d, 0x95, 0x2c, 0xb2, 0x88, 0x31, 0xe0, 0x5b, - 0xd4, 0x90, 0x17, 0x9c, 0x30, 0x98, 0x79, 0x55, 0x65, 0x0e, 0x4a, 0xcd, 0x43, 0xdd, 0x24, 0xb2, - 0x48, 0xdd, 0x94, 0xc2, 0x2d, 0x54, 0x17, 0xeb, 0x49, 0x42, 0x8b, 0xc4, 0xab, 0x05, 0x76, 0xcf, - 0x25, 0x8e, 0x58, 0x47, 0xb4, 0x48, 0x70, 0x07, 0xb9, 0x82, 0xa7, 0x50, 0x08, 0x9a, 0xe6, 0xde, - 0x3f, 0x45, 0xfd, 0x02, 0x32, 0x35, 0x05, 0x41, 0x19, 0x15, 0xd4, 0x73, 0x54, 0xea, 0x59, 0x69, - 0xea, 0xbd, 0x11, 0x92, 0x83, 0x65, 0xe0, 0xa0, 0x9a, 0x5c, 0xbb, 0x6f, 0xa8, 0xb1, 0x67, 0xb1, - 0x87, 0xe4, 0xa5, 0xa8, 0x00, 0xfd, 0x72, 0x2e, 0xd9, 0x6f, 0x25, 0xb3, 0xcc, 0x99, 0x62, 0x2a, - 0x9a, 0x31, 0x5b, 0x1c, 0xa0, 0x26, 0x03, 0x1a, 0x0b, 0xbe, 0x52, 0xac, 0xec, 0xdf, 0x20, 0x7f, - 0x21, 0x7c, 0x82, 0xd0, 0x0a, 0x16, 0x05, 0xcf, 0xe6, 0x13, 0xce, 0x4c, 0x45, 0xd7, 0x20, 0x77, - 0x6c, 0x30, 0xfc, 0xdc, 0xfa, 0xf6, 0x66, 0xeb, 0xdb, 0xdf, 0x5b, 0xdf, 0x7e, 0xdf, 0xf9, 0xd6, - 0x66, 0xe7, 0x5b, 0x5f, 0x3b, 0xdf, 0x7a, 0x3c, 0x7f, 0xe2, 0x22, 0x59, 0x4e, 0xc3, 0x38, 0x4b, - 0xfb, 0x66, 0x0e, 0xe4, 0xf7, 0x42, 0x16, 0xeb, 0xaf, 0x0d, 0x24, 0x5e, 0x73, 0x28, 0xa6, 0x8e, - 0x9a, 0x82, 0xeb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x9a, 0x56, 0xd4, 0x72, 0x02, 0x00, - 0x00, + // 307 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0xbf, 0x4e, 0xc3, 0x30, + 0x10, 0xc6, 0xeb, 0x52, 0x41, 0xeb, 0x0e, 0x48, 0x06, 0x41, 0xa9, 0x84, 0x55, 0x3a, 0x95, 0x01, + 0x47, 0x82, 0x99, 0x81, 0x3f, 0x0b, 0x03, 0x4b, 0x90, 0x18, 0x58, 0x90, 0x6b, 0x5f, 0xdb, 0x48, + 0x6d, 0x1c, 0x12, 0xa7, 0x22, 0x13, 0xaf, 0xc0, 0x63, 0x31, 0x76, 0x64, 0x44, 0xc9, 0x8b, 0xa0, + 0x9c, 0x9d, 0x8a, 0x85, 0xc5, 0xf6, 0xfd, 0xbe, 0xef, 0xb3, 0xcf, 0x47, 0x8f, 0xd4, 0x02, 0xde, + 0x74, 0x90, 0x59, 0x69, 0xe1, 0x59, 0x2e, 0x73, 0x10, 0x49, 0x6a, 0xac, 0x61, 0xc7, 0xc8, 0x23, + 0x2d, 0x70, 0x8f, 0x8d, 0x06, 0x77, 0x1a, 0xee, 0xbb, 0x40, 0x2d, 0xa1, 0x73, 0x78, 0xe0, 0x80, + 0x4a, 0x41, 0xdf, 0xc3, 0xcc, 0x43, 0xe6, 0xaf, 0x55, 0x0b, 0x58, 0x49, 0xcf, 0x4e, 0xe6, 0xc6, + 0xcc, 0x97, 0x10, 0x60, 0x35, 0xcd, 0x67, 0x81, 0x8c, 0x0b, 0x27, 0x8d, 0x73, 0x4a, 0x9f, 0xb6, + 0x1d, 0xb0, 0x09, 0xed, 0x68, 0x69, 0xe5, 0x80, 0x8c, 0xc8, 0xa4, 0x7f, 0x79, 0x28, 0x5c, 0x4e, + 0x34, 0x39, 0x71, 0x13, 0x17, 0x21, 0x3a, 0xd8, 0x35, 0xed, 0xae, 0xc0, 0x4a, 0x74, 0xb7, 0xd1, + 0x7d, 0x26, 0xfe, 0x69, 0x5c, 0x3c, 0x7a, 0x63, 0xb8, 0x8d, 0x8c, 0x3f, 0x68, 0xb7, 0xa1, 0x6c, + 0x40, 0xf7, 0x54, 0x0a, 0xd2, 0x82, 0xc6, 0x77, 0x7b, 0x61, 0x53, 0xd6, 0x4a, 0x9e, 0x68, 0x54, + 0xda, 0x4e, 0xf1, 0x25, 0x1b, 0xd1, 0xbe, 0x06, 0xa9, 0x6c, 0xb4, 0x46, 0x75, 0x67, 0x44, 0x26, + 0xdd, 0xf0, 0x2f, 0x62, 0xa7, 0x94, 0xae, 0x21, 0xcd, 0x22, 0x13, 0xbf, 0x46, 0x7a, 0xd0, 0xc1, + 0x78, 0xcf, 0x93, 0x07, 0x7d, 0x7b, 0xf7, 0x55, 0x72, 0xb2, 0x29, 0x39, 0xf9, 0x29, 0x39, 0xf9, + 0xac, 0x78, 0x6b, 0x53, 0xf1, 0xd6, 0x77, 0xc5, 0x5b, 0x2f, 0xe7, 0xf3, 0xc8, 0x2e, 0xf2, 0xa9, + 0x50, 0x66, 0x15, 0xf8, 0x01, 0xd7, 0xeb, 0x45, 0xfd, 0xa1, 0xe0, 0xdd, 0x23, 0x5b, 0x24, 0x90, + 0x4d, 0x77, 0x71, 0x30, 0x57, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf6, 0xf9, 0x96, 0xfd, 0xcb, + 0x01, 0x00, 0x00, } func (m *StateValue) Marshal() (dAtA []byte, err error) { @@ -278,44 +205,11 @@ func (m *StateValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintStateValue(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x32 - } - if len(m.Timestamp) > 0 { - i -= len(m.Timestamp) - copy(dAtA[i:], m.Timestamp) - i = encodeVarintStateValue(dAtA, i, uint64(len(m.Timestamp))) - i-- - dAtA[i] = 0x2a - } - if len(m.TxHash) > 0 { - i -= len(m.TxHash) - copy(dAtA[i:], m.TxHash) - i = encodeVarintStateValue(dAtA, i, uint64(len(m.TxHash))) - i-- - dAtA[i] = 0x22 + dAtA[i] = 0x12 } if m.Data != nil { { - size := m.Data.Size() - i -= size - if _, err := m.Data.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - } - } - return len(dAtA) - i, nil -} - -func (m *StateValue_Did) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *StateValue_Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.Did != nil { - { - size, err := m.Did.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Data.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -327,48 +221,7 @@ func (m *StateValue_Did) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } -func (m *StateValue_Schema) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} -func (m *StateValue_Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.Schema != nil { - { - size, err := m.Schema.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintStateValue(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - return len(dAtA) - i, nil -} -func (m *StateValue_CredDef) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *StateValue_CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.CredDef != nil { - { - size, err := m.CredDef.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintStateValue(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - return len(dAtA) - i, nil -} func (m *Metadata) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -441,14 +294,7 @@ func (m *StateValue) Size() (n int) { var l int _ = l if m.Data != nil { - n += m.Data.Size() - } - l = len(m.TxHash) - if l > 0 { - n += 1 + l + sovStateValue(uint64(l)) - } - l = len(m.Timestamp) - if l > 0 { + l = m.Data.Size() n += 1 + l + sovStateValue(uint64(l)) } if m.Metadata != nil { @@ -458,42 +304,6 @@ func (m *StateValue) Size() (n int) { return n } -func (m *StateValue_Did) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Did != nil { - l = m.Did.Size() - n += 1 + l + sovStateValue(uint64(l)) - } - return n -} -func (m *StateValue_Schema) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Schema != nil { - l = m.Schema.Size() - n += 1 + l + sovStateValue(uint64(l)) - } - return n -} -func (m *StateValue_CredDef) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.CredDef != nil { - l = m.CredDef.Size() - n += 1 + l + sovStateValue(uint64(l)) - } - return n -} func (m *Metadata) Size() (n int) { if m == nil { return 0 @@ -555,42 +365,7 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStateValue - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthStateValue - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthStateValue - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &Did{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Data = &StateValue_Did{v} - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -617,112 +392,14 @@ func (m *StateValue) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &Schema{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Data = &StateValue_Schema{v} - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CredDef", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStateValue - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthStateValue + if m.Data == nil { + m.Data = &types.Any{} } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthStateValue - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &CredDef{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Data = &StateValue_CredDef{v} iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TxHash", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStateValue - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthStateValue - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStateValue - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TxHash = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStateValue - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthStateValue - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthStateValue - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Timestamp = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 476fb821b..885df95fb 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -28,70 +28,17 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type MsgWriteRequestSignObject struct { - Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Metadata []*KeyValuePair `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (m *MsgWriteRequestSignObject) Reset() { *m = MsgWriteRequestSignObject{} } -func (m *MsgWriteRequestSignObject) String() string { return proto.CompactTextString(m) } -func (*MsgWriteRequestSignObject) ProtoMessage() {} -func (*MsgWriteRequestSignObject) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{0} -} -func (m *MsgWriteRequestSignObject) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgWriteRequestSignObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgWriteRequestSignObject.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgWriteRequestSignObject) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgWriteRequestSignObject.Merge(m, src) -} -func (m *MsgWriteRequestSignObject) XXX_Size() int { - return m.Size() -} -func (m *MsgWriteRequestSignObject) XXX_DiscardUnknown() { - xxx_messageInfo_MsgWriteRequestSignObject.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgWriteRequestSignObject proto.InternalMessageInfo - -func (m *MsgWriteRequestSignObject) GetData() *types.Any { - if m != nil { - return m.Data - } - return nil -} - -func (m *MsgWriteRequestSignObject) GetMetadata() []*KeyValuePair { - if m != nil { - return m.Metadata - } - return nil -} - // this line is used by starport scaffolding # proto/tx/message type MsgWriteRequest struct { - Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Signatures []*SignInfo `protobuf:"bytes,2,rep,name=signatures,proto3" json:"signatures,omitempty"` - Metadata []*KeyValuePair `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty"` + Data *types.Any `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Signatures []*SignInfo `protobuf:"bytes,2,rep,name=signatures,proto3" json:"signatures,omitempty"` } func (m *MsgWriteRequest) Reset() { *m = MsgWriteRequest{} } func (m *MsgWriteRequest) String() string { return proto.CompactTextString(m) } func (*MsgWriteRequest) ProtoMessage() {} func (*MsgWriteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{1} + return fileDescriptor_d0277a2196c64ae2, []int{0} } func (m *MsgWriteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -134,13 +81,6 @@ func (m *MsgWriteRequest) GetSignatures() []*SignInfo { return nil } -func (m *MsgWriteRequest) GetMetadata() []*KeyValuePair { - if m != nil { - return m.Metadata - } - return nil -} - type SignInfo struct { VerificationMethodId string `protobuf:"bytes,1,opt,name=verification_method_id,json=verificationMethodId,proto3" json:"verification_method_id,omitempty"` Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` @@ -150,7 +90,7 @@ func (m *SignInfo) Reset() { *m = SignInfo{} } func (m *SignInfo) String() string { return proto.CompactTextString(m) } func (*SignInfo) ProtoMessage() {} func (*SignInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{2} + return fileDescriptor_d0277a2196c64ae2, []int{1} } func (m *SignInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -194,22 +134,19 @@ func (m *SignInfo) GetSignature() string { } type MsgCreateCredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - // Types that are valid to be assigned to Value: - // *MsgCreateCredDef_ClType - // *MsgCreateCredDef_AnyType - Value isMsgCreateCredDef_Value `protobuf_oneof:"value"` - Controller []string `protobuf:"bytes,7,rep,name=controller,proto3" json:"controller,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` + Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + Controller []string `protobuf:"bytes,5,rep,name=controller,proto3" json:"controller,omitempty"` + Value *types.Any `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` } func (m *MsgCreateCredDef) Reset() { *m = MsgCreateCredDef{} } func (m *MsgCreateCredDef) String() string { return proto.CompactTextString(m) } func (*MsgCreateCredDef) ProtoMessage() {} func (*MsgCreateCredDef) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{3} + return fileDescriptor_d0277a2196c64ae2, []int{2} } func (m *MsgCreateCredDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -238,29 +175,6 @@ func (m *MsgCreateCredDef) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCreateCredDef proto.InternalMessageInfo -type isMsgCreateCredDef_Value interface { - isMsgCreateCredDef_Value() - MarshalTo([]byte) (int, error) - Size() int -} - -type MsgCreateCredDef_ClType struct { - ClType *CredDefValue `protobuf:"bytes,5,opt,name=cl_type,json=clType,proto3,oneof" json:"cl_type,omitempty"` -} -type MsgCreateCredDef_AnyType struct { - AnyType *types.Any `protobuf:"bytes,6,opt,name=any_type,json=anyType,proto3,oneof" json:"any_type,omitempty"` -} - -func (*MsgCreateCredDef_ClType) isMsgCreateCredDef_Value() {} -func (*MsgCreateCredDef_AnyType) isMsgCreateCredDef_Value() {} - -func (m *MsgCreateCredDef) GetValue() isMsgCreateCredDef_Value { - if m != nil { - return m.Value - } - return nil -} - func (m *MsgCreateCredDef) GetId() string { if m != nil { return m.Id @@ -289,20 +203,6 @@ func (m *MsgCreateCredDef) GetType() string { return "" } -func (m *MsgCreateCredDef) GetClType() *CredDefValue { - if x, ok := m.GetValue().(*MsgCreateCredDef_ClType); ok { - return x.ClType - } - return nil -} - -func (m *MsgCreateCredDef) GetAnyType() *types.Any { - if x, ok := m.GetValue().(*MsgCreateCredDef_AnyType); ok { - return x.AnyType - } - return nil -} - func (m *MsgCreateCredDef) GetController() []string { if m != nil { return m.Controller @@ -310,12 +210,11 @@ func (m *MsgCreateCredDef) GetController() []string { return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*MsgCreateCredDef) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*MsgCreateCredDef_ClType)(nil), - (*MsgCreateCredDef_AnyType)(nil), +func (m *MsgCreateCredDef) GetValue() *types.Any { + if m != nil { + return m.Value } + return nil } type MsgCreateCredDefResponse struct { @@ -326,7 +225,7 @@ func (m *MsgCreateCredDefResponse) Reset() { *m = MsgCreateCredDefRespon func (m *MsgCreateCredDefResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateCredDefResponse) ProtoMessage() {} func (*MsgCreateCredDefResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{4} + return fileDescriptor_d0277a2196c64ae2, []int{3} } func (m *MsgCreateCredDefResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -375,7 +274,7 @@ func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } func (m *MsgCreateSchema) String() string { return proto.CompactTextString(m) } func (*MsgCreateSchema) ProtoMessage() {} func (*MsgCreateSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{5} + return fileDescriptor_d0277a2196c64ae2, []int{4} } func (m *MsgCreateSchema) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -454,7 +353,7 @@ func (m *MsgCreateSchemaResponse) Reset() { *m = MsgCreateSchemaResponse func (m *MsgCreateSchemaResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateSchemaResponse) ProtoMessage() {} func (*MsgCreateSchemaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{6} + return fileDescriptor_d0277a2196c64ae2, []int{5} } func (m *MsgCreateSchemaResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -500,7 +399,7 @@ type MsgCreateDid struct { CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` KeyAgreement []string `protobuf:"bytes,8,rep,name=key_agreement,json=keyAgreement,proto3" json:"key_agreement,omitempty"` AlsoKnownAs []string `protobuf:"bytes,9,rep,name=also_known_as,json=alsoKnownAs,proto3" json:"also_known_as,omitempty"` - Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` + Service []*ServiceEndpoint `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` Context []string `protobuf:"bytes,11,rep,name=context,proto3" json:"context,omitempty"` } @@ -508,7 +407,7 @@ func (m *MsgCreateDid) Reset() { *m = MsgCreateDid{} } func (m *MsgCreateDid) String() string { return proto.CompactTextString(m) } func (*MsgCreateDid) ProtoMessage() {} func (*MsgCreateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{7} + return fileDescriptor_d0277a2196c64ae2, []int{6} } func (m *MsgCreateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -600,7 +499,7 @@ func (m *MsgCreateDid) GetAlsoKnownAs() []string { return nil } -func (m *MsgCreateDid) GetService() []*DidService { +func (m *MsgCreateDid) GetService() []*ServiceEndpoint { if m != nil { return m.Service } @@ -622,7 +521,7 @@ func (m *MsgCreateDidResponse) Reset() { *m = MsgCreateDidResponse{} } func (m *MsgCreateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateDidResponse) ProtoMessage() {} func (*MsgCreateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{8} + return fileDescriptor_d0277a2196c64ae2, []int{7} } func (m *MsgCreateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -668,7 +567,7 @@ type MsgUpdateDid struct { CapabilityDelegation []string `protobuf:"bytes,7,rep,name=capability_delegation,json=capabilityDelegation,proto3" json:"capability_delegation,omitempty"` KeyAgreement []string `protobuf:"bytes,8,rep,name=key_agreement,json=keyAgreement,proto3" json:"key_agreement,omitempty"` AlsoKnownAs []string `protobuf:"bytes,9,rep,name=also_known_as,json=alsoKnownAs,proto3" json:"also_known_as,omitempty"` - Service []*DidService `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` + Service []*ServiceEndpoint `protobuf:"bytes,10,rep,name=service,proto3" json:"service,omitempty"` Context []string `protobuf:"bytes,11,rep,name=context,proto3" json:"context,omitempty"` VersionId string `protobuf:"bytes,12,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` } @@ -677,7 +576,7 @@ func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } func (m *MsgUpdateDid) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDid) ProtoMessage() {} func (*MsgUpdateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{9} + return fileDescriptor_d0277a2196c64ae2, []int{8} } func (m *MsgUpdateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -769,7 +668,7 @@ func (m *MsgUpdateDid) GetAlsoKnownAs() []string { return nil } -func (m *MsgUpdateDid) GetService() []*DidService { +func (m *MsgUpdateDid) GetService() []*ServiceEndpoint { if m != nil { return m.Service } @@ -798,7 +697,7 @@ func (m *MsgUpdateDidResponse) Reset() { *m = MsgUpdateDidResponse{} } func (m *MsgUpdateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDidResponse) ProtoMessage() {} func (*MsgUpdateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{10} + return fileDescriptor_d0277a2196c64ae2, []int{9} } func (m *MsgUpdateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -835,7 +734,6 @@ func (m *MsgUpdateDidResponse) GetId() string { } func init() { - proto.RegisterType((*MsgWriteRequestSignObject)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequestSignObject") proto.RegisterType((*MsgWriteRequest)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest") proto.RegisterType((*SignInfo)(nil), "cheqdid.cheqdnode.cheqd.SignInfo") proto.RegisterType((*MsgCreateCredDef)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDef") @@ -851,62 +749,56 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 866 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xf6, 0x57, 0x62, 0xfb, 0xcd, 0xa7, 0xa6, 0x81, 0x6e, 0x03, 0x58, 0xc1, 0x15, 0x95, 0x03, - 0xaa, 0x4d, 0x53, 0xae, 0x48, 0xa4, 0xc9, 0xa1, 0x56, 0x15, 0x40, 0x1b, 0x28, 0x12, 0x42, 0x58, - 0xe3, 0x9d, 0x37, 0xeb, 0x69, 0xd6, 0x33, 0xee, 0xce, 0xd8, 0x64, 0xcf, 0x5c, 0x38, 0x72, 0xe6, - 0xc8, 0x95, 0x5f, 0xc1, 0x8d, 0x63, 0x8f, 0x1c, 0x51, 0xf2, 0x33, 0xb8, 0xa0, 0x99, 0x59, 0x3b, - 0xf6, 0xba, 0x4b, 0x03, 0xe2, 0x46, 0x2f, 0xc9, 0xec, 0x33, 0xef, 0xc7, 0xf3, 0x3e, 0xf3, 0x64, - 0x26, 0xb0, 0x19, 0x0c, 0xf0, 0x39, 0xeb, 0xe8, 0x8b, 0xf6, 0x28, 0x96, 0x5a, 0x92, 0xdb, 0xf6, - 0x9b, 0xb3, 0xb6, 0xfd, 0x2d, 0x24, 0x43, 0xb7, 0xda, 0xbd, 0x13, 0x4a, 0x19, 0x46, 0xd8, 0xb1, - 0x61, 0xfd, 0xf1, 0x59, 0x87, 0x8a, 0xc4, 0xe5, 0xec, 0x12, 0x57, 0x23, 0x90, 0xc3, 0xa1, 0x14, - 0x29, 0xb6, 0xe5, 0x30, 0x53, 0xc9, 0x01, 0xb7, 0xd2, 0xa0, 0x18, 0xd9, 0x31, 0x9e, 0x39, 0xb0, - 0xf9, 0x43, 0x11, 0xee, 0x9c, 0xa8, 0xf0, 0xab, 0x98, 0x6b, 0xf4, 0xf1, 0xf9, 0x18, 0x95, 0x3e, - 0xe5, 0xa1, 0xf8, 0xac, 0xff, 0x0c, 0x03, 0x4d, 0x5a, 0x50, 0x61, 0x54, 0x53, 0xaf, 0xb8, 0x57, - 0x6c, 0xad, 0x1d, 0xec, 0xb4, 0x1d, 0x83, 0xf6, 0x94, 0x41, 0xfb, 0x50, 0x24, 0xbe, 0x8d, 0x20, - 0x87, 0x50, 0x1b, 0xa2, 0xa6, 0x36, 0xba, 0xb4, 0x57, 0x6e, 0xad, 0x1d, 0xbc, 0xd7, 0xce, 0x19, - 0xa4, 0xfd, 0x04, 0x93, 0xa7, 0x34, 0x1a, 0xe3, 0xe7, 0x94, 0xc7, 0xfe, 0x2c, 0xad, 0xf9, 0x6b, - 0x11, 0xb6, 0x32, 0x54, 0xfe, 0x11, 0x01, 0x50, 0x3c, 0x14, 0x54, 0x8f, 0x63, 0x54, 0x29, 0x85, - 0x77, 0x73, 0x29, 0x98, 0x19, 0xbb, 0xe2, 0x4c, 0xfa, 0x73, 0x49, 0x0b, 0x33, 0x94, 0xff, 0xdd, - 0x0c, 0xdf, 0x42, 0x6d, 0x5a, 0x9a, 0x7c, 0x04, 0x6f, 0x4e, 0x30, 0xe6, 0x67, 0x3c, 0xa0, 0x9a, - 0x4b, 0xd1, 0x1b, 0xa2, 0x1e, 0x48, 0xd6, 0xe3, 0xcc, 0x4e, 0x53, 0xf7, 0x77, 0xe6, 0x77, 0x4f, - 0xec, 0x66, 0x97, 0x91, 0xb7, 0xa1, 0x3e, 0xa3, 0xe4, 0x95, 0x6c, 0xe0, 0x35, 0xd0, 0xfc, 0xbe, - 0x04, 0xdb, 0x27, 0x2a, 0x3c, 0x8a, 0x91, 0x6a, 0x3c, 0x72, 0x27, 0x49, 0x36, 0xa1, 0x34, 0x2b, - 0x5a, 0xe2, 0x8c, 0xbc, 0x05, 0x75, 0x15, 0x0c, 0x70, 0x48, 0x4d, 0x2f, 0x57, 0xa2, 0xe6, 0x80, - 0x2e, 0x23, 0xdb, 0x50, 0xd6, 0x34, 0xf4, 0xca, 0x16, 0x36, 0x4b, 0x42, 0xa0, 0xa2, 0x93, 0x11, - 0x7a, 0x15, 0x0b, 0xd9, 0x35, 0xf9, 0x04, 0xaa, 0x41, 0xd4, 0xb3, 0xf0, 0x8a, 0x95, 0x3e, 0x5f, - 0x89, 0x94, 0x85, 0x55, 0xe3, 0x71, 0xc1, 0x5f, 0x0d, 0xa2, 0x2f, 0x4c, 0x85, 0x07, 0x50, 0xa3, - 0x22, 0x71, 0x25, 0x56, 0xf3, 0x4f, 0xef, 0x71, 0xc1, 0xaf, 0x52, 0x91, 0xd8, 0x94, 0x06, 0x40, - 0x20, 0x85, 0x8e, 0x65, 0x14, 0x61, 0xec, 0x55, 0xf7, 0xca, 0xad, 0xba, 0x3f, 0x87, 0x3c, 0xaa, - 0xc2, 0xca, 0xc4, 0x74, 0x69, 0xbe, 0x0f, 0x5e, 0x56, 0x04, 0x1f, 0xd5, 0x48, 0x0a, 0x85, 0x59, - 0x31, 0x9a, 0x3f, 0x3b, 0x57, 0xb9, 0xe0, 0x53, 0xab, 0xc2, 0x92, 0x60, 0x53, 0x05, 0x4a, 0x73, - 0x0a, 0x10, 0xa8, 0x08, 0x3a, 0xc4, 0x54, 0x28, 0xbb, 0x26, 0x1e, 0x54, 0x27, 0x18, 0x2b, 0x2e, - 0x45, 0x2a, 0xd6, 0xf4, 0x93, 0xbc, 0x03, 0x40, 0xb5, 0x8e, 0x7b, 0x26, 0x4c, 0x79, 0x2b, 0x96, - 0x7a, 0xdd, 0x20, 0x9f, 0x1a, 0x20, 0x33, 0xd9, 0x6a, 0x76, 0xb2, 0xe6, 0x3e, 0xdc, 0xce, 0x70, - 0xcc, 0x9d, 0xe7, 0xcf, 0x32, 0xac, 0xcf, 0x62, 0x8f, 0x39, 0x5b, 0x1a, 0x66, 0xb1, 0x57, 0x29, - 0xdb, 0x8b, 0x7c, 0x03, 0xb7, 0x5e, 0x62, 0xcb, 0xd4, 0xf0, 0x1f, 0xe4, 0x1e, 0xf3, 0xd3, 0x25, - 0xb3, 0xfa, 0x64, 0xd9, 0xc0, 0xe4, 0x1e, 0x6c, 0xd2, 0xb1, 0x1e, 0xa0, 0xd0, 0x29, 0xee, 0x55, - 0x2c, 0x83, 0x0c, 0x4a, 0xf6, 0x61, 0x9b, 0x2a, 0x85, 0xf1, 0x3c, 0x05, 0x27, 0xdb, 0xd6, 0x0c, - 0x4f, 0x4b, 0x3e, 0x84, 0x37, 0x02, 0x3a, 0xa2, 0x7d, 0x1e, 0x71, 0x9d, 0xf4, 0xb8, 0x98, 0xc8, - 0xb4, 0xb2, 0xd3, 0x71, 0xe7, 0x7a, 0xb3, 0x3b, 0xdb, 0xcb, 0x24, 0x31, 0x8c, 0x30, 0x74, 0x49, - 0xd5, 0x6c, 0xd2, 0xf1, 0x6c, 0x8f, 0xdc, 0x85, 0x8d, 0x73, 0x4c, 0x7a, 0x34, 0x8c, 0x11, 0x87, - 0x28, 0xb4, 0x57, 0xb3, 0xc1, 0xeb, 0xe7, 0x98, 0x1c, 0x4e, 0x31, 0xd2, 0x84, 0x0d, 0x1a, 0x29, - 0xd9, 0x3b, 0x17, 0xf2, 0x3b, 0xd1, 0xa3, 0xca, 0xab, 0xdb, 0xa0, 0x35, 0x03, 0x3e, 0x31, 0xd8, - 0xa1, 0x22, 0x1f, 0x43, 0x55, 0x61, 0x3c, 0xe1, 0x01, 0x7a, 0x60, 0x75, 0xbd, 0x9b, 0xab, 0xeb, - 0x31, 0x67, 0xa7, 0x2e, 0xd4, 0x9f, 0xe6, 0x18, 0x9f, 0x99, 0x03, 0xc3, 0x0b, 0xed, 0xad, 0xd9, - 0xe2, 0xd3, 0xcf, 0xe6, 0x3d, 0xd8, 0x99, 0x3f, 0xfc, 0x5c, 0x97, 0xfc, 0x54, 0xb1, 0x2e, 0xf9, - 0x72, 0xc4, 0x5e, 0xbb, 0xe4, 0x7f, 0xe7, 0x12, 0x73, 0x1b, 0xa5, 0x17, 0x93, 0x79, 0x01, 0xd6, - 0xdd, 0x23, 0x92, 0x22, 0x5d, 0x96, 0x9a, 0x68, 0xe6, 0x8d, 0x3c, 0x13, 0x1d, 0xfc, 0x52, 0x86, - 0xf2, 0x89, 0x0a, 0x49, 0x04, 0x1b, 0x8b, 0x0f, 0x4e, 0x2b, 0x97, 0x67, 0xe6, 0xfd, 0xde, 0x7d, - 0xf0, 0x77, 0x91, 0x2f, 0xbf, 0xc0, 0x9f, 0xc1, 0xfa, 0xc2, 0x65, 0x7d, 0xf3, 0x66, 0x1f, 0xbe, - 0xba, 0x59, 0xe6, 0x72, 0x65, 0x50, 0xbf, 0xbe, 0x48, 0x6f, 0xde, 0xe8, 0xfe, 0xab, 0x1b, 0xcd, - 0xeb, 0xca, 0xa0, 0x7e, 0xfd, 0x87, 0xf8, 0x1f, 0x75, 0x59, 0x3a, 0xbd, 0x47, 0x47, 0xbf, 0x5d, - 0x36, 0x8a, 0x2f, 0x2e, 0x1b, 0xc5, 0x3f, 0x2e, 0x1b, 0xc5, 0x1f, 0xaf, 0x1a, 0x85, 0x17, 0x57, - 0x8d, 0xc2, 0xef, 0x57, 0x8d, 0xc2, 0xd7, 0xfb, 0x21, 0xd7, 0x83, 0x71, 0xbf, 0x1d, 0xc8, 0x61, - 0x27, 0xfd, 0x1f, 0xd0, 0xfc, 0xbc, 0x6f, 0x2a, 0x76, 0x2e, 0x52, 0xc8, 0x3c, 0x7a, 0xaa, 0xbf, - 0x6a, 0xdf, 0xe6, 0x87, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x50, 0x27, 0x32, 0x95, 0x0a, - 0x00, 0x00, + // 783 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcb, 0x6e, 0x2b, 0x35, + 0x18, 0x6e, 0x2e, 0xa7, 0xed, 0xfc, 0x49, 0x2f, 0xf2, 0x09, 0x9c, 0xa1, 0x40, 0x54, 0x06, 0xe9, + 0x28, 0x3d, 0xe8, 0x4c, 0xa0, 0x87, 0x17, 0x48, 0x5b, 0x16, 0x11, 0x0a, 0x8b, 0xa9, 0x00, 0x09, + 0x21, 0x22, 0x67, 0xfc, 0x67, 0x62, 0x3a, 0xb1, 0xd3, 0xb1, 0x13, 0x9a, 0x0d, 0xe2, 0x11, 0x78, + 0x03, 0x24, 0xb6, 0xac, 0x78, 0x0b, 0x96, 0x5d, 0xb2, 0x44, 0xed, 0x8b, 0xa0, 0xb1, 0x27, 0x97, + 0x4e, 0x9a, 0xb6, 0x0b, 0x76, 0x9c, 0x4d, 0x6b, 0x7f, 0xfe, 0xfe, 0xab, 0xbf, 0xf9, 0x1d, 0xd8, + 0x0d, 0x07, 0x78, 0xc9, 0x9a, 0xfa, 0xca, 0x1f, 0x25, 0x52, 0x4b, 0xf2, 0xc2, 0xec, 0x39, 0xf3, + 0xcd, 0x7f, 0x21, 0x19, 0xda, 0xd5, 0xc1, 0x7b, 0x91, 0x94, 0x51, 0x8c, 0x4d, 0x43, 0xeb, 0x8d, + 0xfb, 0x4d, 0x2a, 0xa6, 0xd6, 0xe6, 0x80, 0x58, 0x1f, 0xa1, 0x1c, 0x0e, 0xa5, 0xc8, 0xb0, 0x3d, + 0x8b, 0xa5, 0x9e, 0x2c, 0xf0, 0x3c, 0x23, 0x25, 0xc8, 0xce, 0xb0, 0x6f, 0x41, 0xef, 0x67, 0xd8, + 0xeb, 0xa8, 0xe8, 0xdb, 0x84, 0x6b, 0x0c, 0xf0, 0x72, 0x8c, 0x4a, 0x93, 0x06, 0x94, 0x19, 0xd5, + 0xd4, 0x2d, 0x1c, 0x16, 0x1a, 0x95, 0xe3, 0x9a, 0x6f, 0xc3, 0xfa, 0xb3, 0xb0, 0x7e, 0x4b, 0x4c, + 0x03, 0xc3, 0x20, 0x2d, 0x00, 0xc5, 0x23, 0x41, 0xf5, 0x38, 0x41, 0xe5, 0x16, 0x0f, 0x4b, 0x8d, + 0xca, 0xf1, 0x47, 0xfe, 0x9a, 0xfc, 0xfd, 0x73, 0x1e, 0x89, 0xb6, 0xe8, 0xcb, 0x60, 0xc9, 0xc8, + 0xfb, 0x01, 0xb6, 0x67, 0x38, 0xf9, 0x1c, 0xde, 0x9d, 0x60, 0xc2, 0xfb, 0x3c, 0xa4, 0x9a, 0x4b, + 0xd1, 0x1d, 0xa2, 0x1e, 0x48, 0xd6, 0xe5, 0xcc, 0xa4, 0xe2, 0x04, 0xb5, 0xe5, 0xd3, 0x8e, 0x39, + 0x6c, 0x33, 0xf2, 0x01, 0x38, 0x73, 0x7f, 0x6e, 0xd1, 0x10, 0x17, 0x80, 0xf7, 0x67, 0x01, 0xf6, + 0x3b, 0x2a, 0x3a, 0x4d, 0x90, 0x6a, 0x3c, 0xb5, 0xa5, 0x93, 0x5d, 0x28, 0xce, 0x9d, 0x16, 0x39, + 0x23, 0xef, 0x83, 0xa3, 0xc2, 0x01, 0x0e, 0x69, 0x1a, 0xcb, 0xba, 0xd8, 0xb6, 0x40, 0x9b, 0x91, + 0x7d, 0x28, 0x69, 0x1a, 0xb9, 0x25, 0x03, 0xa7, 0x4b, 0x42, 0xa0, 0xac, 0xa7, 0x23, 0x74, 0xcb, + 0x06, 0x32, 0x6b, 0x52, 0x07, 0x08, 0xa5, 0xd0, 0x89, 0x8c, 0x63, 0x4c, 0xdc, 0x67, 0x87, 0xa5, + 0x86, 0x13, 0x2c, 0x21, 0xe4, 0x15, 0x3c, 0x9b, 0xd0, 0x78, 0x8c, 0xee, 0xe6, 0x03, 0x5d, 0xb5, + 0x14, 0xef, 0x15, 0xb8, 0xf9, 0x94, 0x03, 0x54, 0x23, 0x29, 0x14, 0xe6, 0x53, 0xf7, 0x7e, 0x2f, + 0x98, 0x0b, 0xb4, 0xe4, 0x73, 0x93, 0xf3, 0x4a, 0x79, 0xb3, 0x7c, 0x8b, 0x4b, 0xf9, 0x12, 0x28, + 0x0b, 0x3a, 0xc4, 0xac, 0x2c, 0xb3, 0x26, 0x2e, 0x6c, 0x4d, 0x30, 0x51, 0x5c, 0x8a, 0xac, 0xb4, + 0xd9, 0x96, 0x7c, 0x08, 0x40, 0xb5, 0x4e, 0xba, 0x29, 0x4d, 0x65, 0xd5, 0x39, 0x29, 0xf2, 0x55, + 0x0a, 0xe4, 0x8a, 0xdf, 0xcc, 0x17, 0xef, 0x1d, 0xc1, 0x8b, 0x5c, 0x8e, 0x6b, 0xeb, 0xf9, 0xa5, + 0x0c, 0xd5, 0x39, 0xf7, 0x8c, 0xb3, 0x95, 0x62, 0xee, 0xc6, 0x2a, 0xae, 0x34, 0xfa, 0x7b, 0x78, + 0x7e, 0x8f, 0x88, 0xdc, 0x92, 0x11, 0xe7, 0x27, 0x6b, 0xc5, 0xf9, 0xcd, 0x8a, 0xb4, 0x02, 0xb2, + 0x2a, 0x37, 0xf2, 0x12, 0x76, 0xe9, 0x58, 0x0f, 0x50, 0xe8, 0x0c, 0x77, 0xcb, 0x26, 0x83, 0x1c, + 0x4a, 0x8e, 0x60, 0x9f, 0x2a, 0x85, 0xc9, 0x72, 0x0a, 0xb6, 0x6d, 0x7b, 0x73, 0x3c, 0x73, 0xf9, + 0x06, 0xde, 0x09, 0xe9, 0x88, 0xf6, 0x78, 0xcc, 0xf5, 0xb4, 0xcb, 0xc5, 0x44, 0x66, 0x9e, 0x6d, + 0x1f, 0x6b, 0x8b, 0xc3, 0xf6, 0xfc, 0x2c, 0x67, 0xc4, 0x30, 0xc6, 0xc8, 0x1a, 0x6d, 0xe5, 0x8d, + 0xce, 0xe6, 0x67, 0xe4, 0x63, 0xd8, 0xb9, 0xc0, 0x69, 0x97, 0x46, 0x09, 0xe2, 0x10, 0x85, 0x76, + 0xb7, 0x0d, 0xb9, 0x7a, 0x81, 0xd3, 0xd6, 0x0c, 0x23, 0x1e, 0xec, 0xd0, 0x58, 0xc9, 0xee, 0x85, + 0x90, 0x3f, 0x89, 0x2e, 0x55, 0xae, 0x63, 0x48, 0x95, 0x14, 0xfc, 0x32, 0xc5, 0x5a, 0x8a, 0x9c, + 0xc0, 0x96, 0xc2, 0x64, 0xc2, 0x43, 0x74, 0xc1, 0xf4, 0xb5, 0xb1, 0xfe, 0xa3, 0xb7, 0xbc, 0x2f, + 0x04, 0x1b, 0x49, 0x2e, 0x74, 0x30, 0x33, 0x4c, 0xc5, 0x96, 0xde, 0x1a, 0x5e, 0x69, 0xb7, 0x62, + 0x22, 0xcc, 0xb6, 0xde, 0x4b, 0xa8, 0x2d, 0x2b, 0x60, 0xad, 0x54, 0x7e, 0xb3, 0x52, 0xf9, 0x7a, + 0xc4, 0xde, 0x4a, 0xe5, 0xff, 0x29, 0x95, 0x74, 0x2e, 0x65, 0x23, 0x2a, 0x9d, 0xdc, 0x55, 0x3b, + 0xfc, 0x33, 0xa4, 0xcd, 0x32, 0x25, 0xcd, 0x05, 0xb2, 0x4e, 0x49, 0xc7, 0x7f, 0x94, 0xa0, 0xd4, + 0x51, 0x11, 0x89, 0x61, 0xe7, 0xee, 0x43, 0xb1, 0x3e, 0xd9, 0xdc, 0xa3, 0x79, 0xf0, 0xd9, 0x43, + 0xcc, 0xfb, 0x47, 0xf9, 0x8f, 0x50, 0xbd, 0x33, 0xb6, 0x9f, 0x1e, 0xec, 0xd3, 0xc7, 0x83, 0xe5, + 0xc6, 0x2c, 0x03, 0x67, 0x31, 0x52, 0x9f, 0x1e, 0xe8, 0xf5, 0xe3, 0x81, 0x96, 0xfb, 0xca, 0xc0, + 0x59, 0x7c, 0x8d, 0xff, 0x51, 0x94, 0x95, 0xdb, 0x3b, 0x39, 0xfd, 0xeb, 0xa6, 0x5e, 0xb8, 0xbe, + 0xa9, 0x17, 0xfe, 0xb9, 0xa9, 0x17, 0x7e, 0xbd, 0xad, 0x6f, 0x5c, 0xdf, 0xd6, 0x37, 0xfe, 0xbe, + 0xad, 0x6f, 0x7c, 0x77, 0x14, 0x71, 0x3d, 0x18, 0xf7, 0xfc, 0x50, 0x0e, 0x9b, 0xd9, 0x8f, 0x9d, + 0xf4, 0xef, 0xeb, 0xd4, 0x63, 0xf3, 0x2a, 0x83, 0xd2, 0xe7, 0x4f, 0xf5, 0x36, 0xcd, 0xc3, 0xfb, + 0xe6, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x81, 0x36, 0xbb, 0x7e, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1099,55 +991,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Metadata: "cheqd/tx.proto", } -func (m *MsgWriteRequestSignObject) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgWriteRequestSignObject) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgWriteRequestSignObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Metadata) > 0 { - for iNdEx := len(m.Metadata) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Metadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Data != nil { - { - size, err := m.Data.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *MsgWriteRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1168,20 +1011,6 @@ func (m *MsgWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Metadata) > 0 { - for iNdEx := len(m.Metadata) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Metadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } if len(m.Signatures) > 0 { for iNdEx := len(m.Signatures) - 1; iNdEx >= 0; iNdEx-- { { @@ -1268,22 +1097,25 @@ func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Value != nil { + { + size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } if len(m.Controller) > 0 { for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.Controller[iNdEx]) copy(dAtA[i:], m.Controller[iNdEx]) i = encodeVarintTx(dAtA, i, uint64(len(m.Controller[iNdEx]))) i-- - dAtA[i] = 0x3a - } - } - if m.Value != nil { - { - size := m.Value.Size() - i -= size - if _, err := m.Value.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } + dAtA[i] = 0x2a } } if len(m.Type) > 0 { @@ -1317,48 +1149,6 @@ func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *MsgCreateCredDef_ClType) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateCredDef_ClType) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.ClType != nil { - { - size, err := m.ClType.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - return len(dAtA) - i, nil -} -func (m *MsgCreateCredDef_AnyType) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateCredDef_AnyType) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.AnyType != nil { - { - size, err := m.AnyType.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - return len(dAtA) - i, nil -} func (m *MsgCreateCredDefResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1826,25 +1616,6 @@ func encodeVarintTx(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *MsgWriteRequestSignObject) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Data != nil { - l = m.Data.Size() - n += 1 + l + sovTx(uint64(l)) - } - if len(m.Metadata) > 0 { - for _, e := range m.Metadata { - l = e.Size() - n += 1 + l + sovTx(uint64(l)) - } - } - return n -} - func (m *MsgWriteRequest) Size() (n int) { if m == nil { return 0 @@ -1861,12 +1632,6 @@ func (m *MsgWriteRequest) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } - if len(m.Metadata) > 0 { - for _, e := range m.Metadata { - l = e.Size() - n += 1 + l + sovTx(uint64(l)) - } - } return n } @@ -1909,42 +1674,19 @@ func (m *MsgCreateCredDef) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if m.Value != nil { - n += m.Value.Size() - } if len(m.Controller) > 0 { for _, s := range m.Controller { l = len(s) n += 1 + l + sovTx(uint64(l)) } } - return n -} - -func (m *MsgCreateCredDef_ClType) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ClType != nil { - l = m.ClType.Size() - n += 1 + l + sovTx(uint64(l)) - } - return n -} -func (m *MsgCreateCredDef_AnyType) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.AnyType != nil { - l = m.AnyType.Size() + if m.Value != nil { + l = m.Value.Size() n += 1 + l + sovTx(uint64(l)) } return n } + func (m *MsgCreateCredDefResponse) Size() (n int) { if m == nil { return 0 @@ -2190,126 +1932,6 @@ func sovTx(x uint64) (n int) { func sozTx(x uint64) (n int) { return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *MsgWriteRequestSignObject) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgWriteRequestSignObject: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgWriteRequestSignObject: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Data == nil { - m.Data = &types.Any{} - } - if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Metadata = append(m.Metadata, &KeyValuePair{}) - if err := m.Metadata[len(m.Metadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -2409,40 +2031,6 @@ func (m *MsgWriteRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Metadata = append(m.Metadata, &KeyValuePair{}) - if err := m.Metadata[len(m.Metadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2737,9 +2325,9 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -2749,30 +2337,27 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - v := &CredDefValue{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Value = &MsgCreateCredDef_ClType{v} + m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AnyType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2799,43 +2384,12 @@ func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &types.Any{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Value = &MsgCreateCredDef_AnyType{v} - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + if m.Value == nil { + m.Value = &types.Any{} } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -3612,7 +3166,7 @@ func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Service = append(m.Service, &DidService{}) + m.Service = append(m.Service, &ServiceEndpoint{}) if err := m.Service[len(m.Service)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -4100,7 +3654,7 @@ func (m *MsgUpdateDid) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Service = append(m.Service, &DidService{}) + m.Service = append(m.Service, &ServiceEndpoint{}) if err := m.Service[len(m.Service)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } diff --git a/x/cheqd/utils/did_doc.go b/x/cheqd/utils/did_doc.go index 40bdd350a..fde6dfc1c 100644 --- a/x/cheqd/utils/did_doc.go +++ b/x/cheqd/utils/did_doc.go @@ -4,17 +4,7 @@ import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" var VerificationMethodType = []string{ "JsonWebKey2020", - "EcdsaSecp256k1VerificationKey2019", - "Ed25519VerificationKey2018", "Ed25519VerificationKey2020", - "Bls12381G1Key2020", - "Bls12381G2Key2020", - "PgpVerificationKey2021", - "RsaVerificationKey2018", - "X25519KeyAgreementKey2019", - "SchnorrSecp256k1VerificationKey2019", - "EcdsaSecp256k1RecoveryMethod2020", - "VerifiableCondition2021", } var ServiceType = []string{ From 149885aebf4c8259f42a92558b86bd2560d21cd4 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 11:49:15 +0300 Subject: [PATCH 61/74] fixed unit tests --- x/cheqd/tests/handler_test.go | 108 ++++++++++--------- x/cheqd/tests/handler_test_setup.go | 10 +- x/cheqd/tests/signature_verification_test.go | 2 +- 3 files changed, 64 insertions(+), 56 deletions(-) diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 1930e420e..ead554e05 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -1090,82 +1090,90 @@ func TestHandler_UpdateDid(t *testing.T) { } func TestHandler_CreateSchema(t *testing.T) { - setup := Setup() + // this test is not implemented + /* + setup := Setup() - keys, _, _ := setup.InitDid("did:cheqd:test:alice") - msg := setup.CreateSchema() + keys, _, _ := setup.InitDid("did:cheqd:test:alice") + msg := setup.CreateSchema() - data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) + data, _ := ptypes.NewAnyWithValue(msg) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - schema := types.MsgCreateSchemaResponse{} - _ = schema.Unmarshal(result.Data) + schema := types.MsgCreateSchemaResponse{} + _ = schema.Unmarshal(result.Data) - // query Did - state, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) - receivedSchema, _ := state.GetSchema() + // query Did + state, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) + receivedSchema, _ := state.GetSchema() - require.Equal(t, schema.Id, receivedSchema.Id) - require.Equal(t, msg.Type, receivedSchema.Type) - require.Equal(t, msg.Name, receivedSchema.Name) - require.Equal(t, msg.Version, receivedSchema.Version) - require.Equal(t, msg.AttrNames, receivedSchema.AttrNames) - require.Equal(t, msg.Controller, receivedSchema.Controller) + require.Equal(t, schema.Id, receivedSchema.Id) + require.Equal(t, msg.Type, receivedSchema.Type) + require.Equal(t, msg.Name, receivedSchema.Name) + require.Equal(t, msg.Version, receivedSchema.Version) + require.Equal(t, msg.AttrNames, receivedSchema.AttrNames) + require.Equal(t, msg.Controller, receivedSchema.Controller)*/ } func TestHandler_CreateCredDef(t *testing.T) { - setup := Setup() + // this test is not implemented + /* + setup := Setup() - keys, _, _ := setup.InitDid("did:cheqd:test:alice") - msg := setup.CreateCredDef() + keys, _, _ := setup.InitDid("did:cheqd:test:alice") + msg := setup.CreateCredDef() - data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) + data, _ := ptypes.NewAnyWithValue(msg) + result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - credDef := types.MsgCreateCredDefResponse{} - err := credDef.Unmarshal(result.Data) + credDef := types.MsgCreateCredDefResponse{} + err := credDef.Unmarshal(result.Data) - if err != nil { - log.Fatal(err) - } + if err != nil { + log.Fatal(err) + } - // query Did - //state, _ := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) - //receivedCredDef, _ := state.GetCredDef() + // query Did + //state, _ := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) + //receivedCredDef, _ := state.GetCredDef() - //expectedValue := msg.Value.(*types.MsgCreateCredDef_ClType) - //actualValue := receivedCredDef.Value.(*types.CredDef_ClType) + //expectedValue := msg.Value.(*types.MsgCreateCredDef_ClType) + //actualValue := receivedCredDef.Value.(*types.CredDef_ClType) - //require.Equal(t, credDef.Id, receivedCredDef.Id) - //require.Equal(t, expectedValue.ClType, actualValue.ClType) - //require.Equal(t, msg.SchemaId, receivedCredDef.SchemaId) - //require.Equal(t, msg.Tag, receivedCredDef.Tag) - //require.Equal(t, msg.Type, receivedCredDef.Type) - //require.Equal(t, msg.Controller, receivedCredDef.Controller) + //require.Equal(t, credDef.Id, receivedCredDef.Id) + //require.Equal(t, expectedValue.ClType, actualValue.ClType) + //require.Equal(t, msg.SchemaId, receivedCredDef.SchemaId) + //require.Equal(t, msg.Tag, receivedCredDef.Tag) + //require.Equal(t, msg.Type, receivedCredDef.Type) + //require.Equal(t, msg.Controller, receivedCredDef.Controller) + */ } func TestHandler_DidDocAlreadyExists(t *testing.T) { setup := Setup() - keys, _, _ := setup.InitDid("did:cheqd:test:alice") + _, _, _ = setup.InitDid("did:cheqd:test:alice") _, _, err := setup.InitDid("did:cheqd:test:alice") require.Error(t, err) require.Equal(t, "DID is already used by DIDDoc did:cheqd:test:alice: DID Doc exists", err.Error()) - credDefMsg := setup.CreateCredDef() - data, _ := ptypes.NewAnyWithValue(credDefMsg) - _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) + // cred_def and schmea is not implemented + /* + credDefMsg := setup.CreateCredDef() + data, _ := ptypes.NewAnyWithValue(credDefMsg) + _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) + _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - require.Error(t, err) - require.Equal(t, "DID is already used by CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) + require.Error(t, err) + require.Equal(t, "DID is already used by CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) - schemaMsg := setup.CreateSchema() - data, _ = ptypes.NewAnyWithValue(schemaMsg) - _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) + schemaMsg := setup.CreateSchema() + data, _ = ptypes.NewAnyWithValue(schemaMsg) + _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) + _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - require.Error(t, err) - require.Equal(t, "DID is already used by Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) + require.Error(t, err) + require.Equal(t, "DID is already used by Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) + */ } diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index 531b02c66..20704685d 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -229,17 +229,17 @@ func (s *TestSetup) InitDid(did string) (map[string]ed25519.PrivateKey, *types.M } func (s *TestSetup) SendUpdateDid(msg *types.MsgUpdateDid, keys map[string]ed25519.PrivateKey) (*types.Did, error) { - data, err := ptypes.NewAnyWithValue(msg) - if err != nil { - return nil, err - } - // query Did state, _ := s.Keeper.GetDid(&s.Ctx, msg.Id) if len(msg.VersionId) == 0 { msg.VersionId = state.Metadata.VersionId } + data, err := ptypes.NewAnyWithValue(msg) + if err != nil { + return nil, err + } + _, err = s.Handler(s.Ctx, s.WrapRequest(data, keys)) if err != nil { return nil, err diff --git a/x/cheqd/tests/signature_verification_test.go b/x/cheqd/tests/signature_verification_test.go index af130a4fc..4d6e6c97d 100644 --- a/x/cheqd/tests/signature_verification_test.go +++ b/x/cheqd/tests/signature_verification_test.go @@ -34,7 +34,7 @@ func TestDIDDocVerificationMethodChangedWithoutOldSignature(t *testing.T) { bobKeys, _, _ := setup.InitDid("did:cheqd:test:bob") updatedDidDoc := setup.CreateToUpdateDid(aliceDid) - updatedDidDoc.VerificationMethod[0].Type = "SchnorrSecp256k1VerificationKey2019" + updatedDidDoc.VerificationMethod[0].Type = "Ed25519VerificationKey2020" _, err := setup.SendUpdateDid(updatedDidDoc, bobKeys) // check From a202a584c7c9525d78e1560afed713183bc61df1 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 11:54:53 +0300 Subject: [PATCH 62/74] processed review comments --- x/cheqd/keeper/msg_server_cred_def.go | 2 +- x/cheqd/keeper/msg_server_did.go | 12 ++++++------ x/cheqd/keeper/msg_server_schema.go | 2 +- x/cheqd/types/identity_msg.go | 2 +- x/cheqd/types/messages_cred_def.go | 2 +- x/cheqd/types/messages_did.go | 4 ++-- x/cheqd/types/messages_schema.go | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go index 40083776e..d20c238a7 100644 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ b/x/cheqd/keeper/msg_server_cred_def.go @@ -27,7 +27,7 @@ func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteReque return nil, err } - // Checks that the element exists + // Checks that the did doesn't exist if err := k.EnsureDidIsNotUsed(ctx, credDefMsg.GetDid()); err != nil { return nil, err } diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 624a66e72..94034700b 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -21,7 +21,7 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } - if err := didMsg.ValidateBasic(prefix); err != nil { + if err := didMsg.Validate(prefix); err != nil { return nil, err } @@ -29,7 +29,7 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, err } - // Checks that the element exists + // Checks that the did doesn't exist if err := k.EnsureDidIsNotUsed(ctx, didMsg.Id); err != nil { return nil, err } @@ -69,11 +69,11 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } - if err := didMsg.ValidateBasic(prefix); err != nil { + if err := didMsg.Validate(prefix); err != nil { return nil, err } - // Checks that the element exists + // Checks that the did doesn't exist if !k.HasDid(ctx, didMsg.Id) { return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %s doesn't exist", didMsg.Id)) } @@ -88,7 +88,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, err } - if err := k.UpdateDidVerifySignature(&ctx, msg, oldDIDDoc, &didMsg); err != nil { + if err := k.VerifySignatureOnDidUpdate(&ctx, msg, oldDIDDoc, &didMsg); err != nil { return nil, err } @@ -124,7 +124,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) }, nil } -func (k msgServer) UpdateDidVerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, oldDIDDoc *types.Did, newDIDDoc *types.MsgUpdateDid) error { +func (k msgServer) VerifySignatureOnDidUpdate(ctx *sdk.Context, msg *types.MsgWriteRequest, oldDIDDoc *types.Did, newDIDDoc *types.MsgUpdateDid) error { var signers = newDIDDoc.GetSigners() // Get Old DID Doc controller if it's nil then assign self diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go index ad3929097..37a141557 100644 --- a/x/cheqd/keeper/msg_server_schema.go +++ b/x/cheqd/keeper/msg_server_schema.go @@ -26,7 +26,7 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteReques return nil, err } - // Checks that the element exists + // Checks that the did doesn't exist if err := k.EnsureDidIsNotUsed(ctx, schemaMsg.GetDid()); err != nil { return nil, err } diff --git a/x/cheqd/types/identity_msg.go b/x/cheqd/types/identity_msg.go index a5734d85e..ecdf30c96 100644 --- a/x/cheqd/types/identity_msg.go +++ b/x/cheqd/types/identity_msg.go @@ -2,7 +2,7 @@ package types type ( IdentityMsg interface { - ValidateBasic(namespace string) error + Validate(namespace string) error GetSigners() []Signer } diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index 5ba5f8142..52b83230f 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -34,7 +34,7 @@ func (msg *MsgCreateCredDef) GetDid() string { return utils.GetDidFromCredDef(msg.Id) } -func (msg *MsgCreateCredDef) ValidateBasic(namespace string) error { +func (msg *MsgCreateCredDef) Validate(namespace string) error { if !utils.IsCredDef(msg.Id) { return ErrBadRequest.Wrap("Id must end with resource type '?service=CL-CredDef'") } diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 1a4d02598..819a3868a 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -70,7 +70,7 @@ func (msg *MsgCreateDid) GetSigners() []Signer { return []Signer{} } -func (msg *MsgCreateDid) ValidateBasic(namespace string) error { +func (msg *MsgCreateDid) Validate(namespace string) error { if utils.IsNotDid(namespace, msg.Id) { return ErrBadRequestIsNotDid.Wrap("Id") } @@ -198,7 +198,7 @@ func (msg *MsgUpdateDid) GetSigners() []Signer { return []Signer{} } -func (msg *MsgUpdateDid) ValidateBasic(namespace string) error { +func (msg *MsgUpdateDid) Validate(namespace string) error { if utils.IsNotDid(namespace, msg.Id) { return ErrBadRequestIsNotDid.Wrap("Id") } diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index 3d6c57c26..9ed7e9a75 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -34,7 +34,7 @@ func (msg *MsgCreateSchema) GetDid() string { return utils.GetDidFromSchema(msg.Id) } -func (msg *MsgCreateSchema) ValidateBasic(namespace string) error { +func (msg *MsgCreateSchema) Validate(namespace string) error { if !utils.IsSchema(msg.Id) { return ErrBadRequest.Wrap("Id must end with resource type '?service=CL-Schema'") } From 9edbd2b75bdb159635ba7ecbb92edf6ad27feaf7 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 13:52:25 +0300 Subject: [PATCH 63/74] fixed tests --- x/cheqd/types/msg_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index f50b1b784..365034013 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -340,7 +340,7 @@ func TestNewMsgCreateSchema(t *testing.T) { } for _, tc := range cases { - err := tc.msg.ValidateBasic(Prefix) + err := tc.msg.Validate(Prefix) if tc.valid { require.Nil(t, err) @@ -732,7 +732,7 @@ func TestNewMsgCreateDid(t *testing.T) { } for _, tc := range cases { - err := tc.msg.ValidateBasic(Prefix) + err := tc.msg.Validate(Prefix) if tc.valid { require.Nil(t, err) @@ -1124,7 +1124,7 @@ func TestNewMsgUpdateDid(t *testing.T) { } for _, tc := range cases { - err := tc.msg.ValidateBasic(Prefix) + err := tc.msg.Validate(Prefix) if tc.valid { require.Nil(t, err) From 2d7373f078a4a725147d448ffcce7d10b0d4e580 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 15:16:35 +0300 Subject: [PATCH 64/74] changed signature derivation --- x/cheqd/keeper/msg_server_did.go | 8 ++++---- x/cheqd/keeper/verify.go | 10 +++++++--- x/cheqd/tests/handler_test.go | 4 ++-- x/cheqd/types/identity_msg.go | 1 + x/cheqd/types/messages_cred_def.go | 4 ++++ x/cheqd/types/messages_did.go | 8 ++++++++ x/cheqd/types/messages_schema.go | 4 ++++ 7 files changed, 30 insertions(+), 9 deletions(-) diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 94034700b..0129efd20 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -25,7 +25,7 @@ func (k msgServer) CreateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, err } - if err := k.VerifySignature(&ctx, msg, didMsg.GetSigners()); err != nil { + if err := k.VerifySignature(&ctx, &didMsg, didMsg.GetSigners(), msg.GetSignatures()); err != nil { return nil, err } @@ -88,7 +88,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, err } - if err := k.VerifySignatureOnDidUpdate(&ctx, msg, oldDIDDoc, &didMsg); err != nil { + if err := k.VerifySignatureOnDidUpdate(&ctx, oldDIDDoc, &didMsg, msg.Signatures); err != nil { return nil, err } @@ -124,7 +124,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) }, nil } -func (k msgServer) VerifySignatureOnDidUpdate(ctx *sdk.Context, msg *types.MsgWriteRequest, oldDIDDoc *types.Did, newDIDDoc *types.MsgUpdateDid) error { +func (k msgServer) VerifySignatureOnDidUpdate(ctx *sdk.Context, oldDIDDoc *types.Did, newDIDDoc *types.MsgUpdateDid, signatures []*types.SignInfo) error { var signers = newDIDDoc.GetSigners() // Get Old DID Doc controller if it's nil then assign self @@ -166,7 +166,7 @@ func (k msgServer) VerifySignatureOnDidUpdate(ctx *sdk.Context, msg *types.MsgWr } } - if err := k.VerifySignature(ctx, msg, signers); err != nil { + if err := k.VerifySignature(ctx, newDIDDoc, signers, signatures); err != nil { return err } diff --git a/x/cheqd/keeper/verify.go b/x/cheqd/keeper/verify.go index 9a6bd55ff..7a3ee6c31 100644 --- a/x/cheqd/keeper/verify.go +++ b/x/cheqd/keeper/verify.go @@ -10,12 +10,16 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, signers []types.Signer) error { +func (k *Keeper) VerifySignature(ctx *sdk.Context, msg types.IdentityMsg, signers []types.Signer, signatures []*types.SignInfo) error { if len(signers) == 0 { return types.ErrInvalidSignature.Wrap("At least one signer should be present") } - signingInput := msg.Data.Value + if len(signatures) == 0 { + return types.ErrInvalidSignature.Wrap("At least one signature should be present") + } + + signingInput := msg.GetSignBytes() for _, signer := range signers { if signer.VerificationMethod == nil { @@ -33,7 +37,7 @@ func (k *Keeper) VerifySignature(ctx *sdk.Context, msg *types.MsgWriteRequest, s signer.VerificationMethod = didDoc.VerificationMethod } - valid, err := VerifyIdentitySignature(signer, msg.Signatures, signingInput) + valid, err := VerifyIdentitySignature(signer, signatures, signingInput) if err != nil { return sdkerrors.Wrap(types.ErrInvalidSignature, err.Error()) } diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index ead554e05..7e6f1cd44 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -248,7 +248,7 @@ func TestCreateDID(t *testing.T) { Id: "did:cheqd:test:controller1", Controller: []string{AliceDID, BobDID}, }, - errMsg: "signature did:cheqd:test:alice not found: invalid signature detected", + errMsg: "At least one signature should be present: invalid signature detected", }, { valid: false, @@ -257,7 +257,7 @@ func TestCreateDID(t *testing.T) { Id: "did:cheqd:test:controller1", Controller: []string{AliceDID, BobDID}, }, - errMsg: "signature did:cheqd:test:alice not found: invalid signature detected", + errMsg: "At least one signature should be present: invalid signature detected", }, { valid: false, diff --git a/x/cheqd/types/identity_msg.go b/x/cheqd/types/identity_msg.go index ecdf30c96..f532c6959 100644 --- a/x/cheqd/types/identity_msg.go +++ b/x/cheqd/types/identity_msg.go @@ -4,6 +4,7 @@ type ( IdentityMsg interface { Validate(namespace string) error GetSigners() []Signer + GetSignBytes() []byte } Signer struct { diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go index 52b83230f..3e569bef2 100644 --- a/x/cheqd/types/messages_cred_def.go +++ b/x/cheqd/types/messages_cred_def.go @@ -69,3 +69,7 @@ func (msg *MsgCreateCredDef) Validate(namespace string) error { return nil } + +func (msg *MsgCreateCredDef) GetSignBytes() []byte { + return ModuleCdc.MustMarshal(msg) +} diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 819a3868a..2e2028c4a 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -134,6 +134,10 @@ func (msg *MsgCreateDid) Validate(namespace string) error { return nil } +func (msg *MsgCreateDid) GetSignBytes() []byte { + return ModuleCdc.MustMarshal(msg) +} + var _ IdentityMsg = &MsgUpdateDid{} func NewMsgUpdateDid( @@ -262,6 +266,10 @@ func (msg *MsgUpdateDid) Validate(namespace string) error { return nil } +func (msg *MsgUpdateDid) GetSignBytes() []byte { + return ModuleCdc.MustMarshal(msg) +} + func ValidateVerificationMethods(namespace string, did string, vms []*VerificationMethod) error { for i, vm := range vms { if err := ValidateVerificationMethod(namespace, vm); err != nil { diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go index 9ed7e9a75..f18373038 100644 --- a/x/cheqd/types/messages_schema.go +++ b/x/cheqd/types/messages_schema.go @@ -77,3 +77,7 @@ func (msg *MsgCreateSchema) Validate(namespace string) error { return nil } + +func (msg *MsgCreateSchema) GetSignBytes() []byte { + return ModuleCdc.MustMarshal(msg) +} From 1bd4ff135f8c657c1f6749d153bd2008b049a6c5 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 16:39:49 +0300 Subject: [PATCH 65/74] removed cred_def and schema from protobuf --- proto/cheqd/credDef.proto | 21 - proto/cheqd/did.proto | 1 - proto/cheqd/genesis.proto | 2 - proto/cheqd/query.proto | 30 - proto/cheqd/schema.proto | 15 - proto/cheqd/stateValue.proto | 3 - proto/cheqd/tx.proto | 32 - x/cheqd/types/did.pb.go | 70 +- x/cheqd/types/genesis.pb.go | 18 +- x/cheqd/types/query.pb.go | 1020 ++-------------------- x/cheqd/types/query.pb.gw.go | 202 ----- x/cheqd/types/stateValue.pb.go | 40 +- x/cheqd/types/tx.pb.go | 1440 ++------------------------------ 13 files changed, 191 insertions(+), 2703 deletions(-) delete mode 100644 proto/cheqd/credDef.proto delete mode 100644 proto/cheqd/schema.proto diff --git a/proto/cheqd/credDef.proto b/proto/cheqd/credDef.proto deleted file mode 100644 index da6c78efd..000000000 --- a/proto/cheqd/credDef.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; -package cheqdid.cheqdnode.cheqd; -import "google/protobuf/any.proto"; - -option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; - -import "gogoproto/gogo.proto"; - -message CredDef { - string id = 1; - string schema_id = 2; - string tag = 3; - string type = 4; - repeated string controller = 5; - google.protobuf.Any value = 6; -} - -message CredDefCLValue { - map primary = 1; - map revocation = 2; //optional -} diff --git a/proto/cheqd/did.proto b/proto/cheqd/did.proto index f31ecad09..57f88d385 100644 --- a/proto/cheqd/did.proto +++ b/proto/cheqd/did.proto @@ -4,7 +4,6 @@ package cheqdid.cheqdnode.cheqd; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; import "google/protobuf/any.proto"; -import "gogoproto/gogo.proto"; import "cheqd/common.proto"; message Did { diff --git a/proto/cheqd/genesis.proto b/proto/cheqd/genesis.proto index 952736826..7eae54093 100644 --- a/proto/cheqd/genesis.proto +++ b/proto/cheqd/genesis.proto @@ -2,8 +2,6 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; // this line is used by starport scaffolding # genesis/proto/import -import "cheqd/credDef.proto"; -import "cheqd/schema.proto"; import "cheqd/did.proto"; option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; diff --git a/proto/cheqd/query.proto b/proto/cheqd/query.proto index 630b5ea4d..bde693475 100644 --- a/proto/cheqd/query.proto +++ b/proto/cheqd/query.proto @@ -4,8 +4,6 @@ package cheqdid.cheqdnode.cheqd; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; // this line is used by starport scaffolding # 1 -import "cheqd/credDef.proto"; -import "cheqd/schema.proto"; import "cheqd/did.proto"; import "cheqd/stateValue.proto"; @@ -13,39 +11,11 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // Query defines the gRPC querier service. service Query { - // this line is used by starport scaffolding # 2 - rpc CredDef(QueryGetCredDefRequest) returns (QueryGetCredDefResponse) { - option (google.api.http).get = "/cheqd/cheqdnode/cheqd/credDef/{id}"; - } - - rpc Schema(QueryGetSchemaRequest) returns (QueryGetSchemaResponse) { - option (google.api.http).get = "/cheqd/cheqdnode/cheqd/schema/{id}"; - } - rpc Did(QueryGetDidRequest) returns (QueryGetDidResponse) { option (google.api.http).get = "/cheqd/cheqdnode/cheqd/did/{id}"; } } -// this line is used by starport scaffolding # 3 -message QueryGetCredDefRequest { - string id = 1; -} - -message QueryGetCredDefResponse { - CredDef cred_def = 1; - Metadata metadata = 2; -} - -message QueryGetSchemaRequest { - string id = 1; -} - -message QueryGetSchemaResponse { - Schema schema = 1; - Metadata metadata = 2; -} - message QueryGetDidRequest { string id = 1; } diff --git a/proto/cheqd/schema.proto b/proto/cheqd/schema.proto deleted file mode 100644 index 704b91b67..000000000 --- a/proto/cheqd/schema.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; -package cheqdid.cheqdnode.cheqd; - -option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; - -import "gogoproto/gogo.proto"; - -message Schema { - string id = 1; - string type = 2; - string name = 3; - string version = 4; - repeated string attr_names = 5; - repeated string controller = 6; -} diff --git a/proto/cheqd/stateValue.proto b/proto/cheqd/stateValue.proto index 19f58c795..eeac2de53 100644 --- a/proto/cheqd/stateValue.proto +++ b/proto/cheqd/stateValue.proto @@ -1,8 +1,5 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; -import "cheqd/did.proto"; -import "cheqd/credDef.proto"; -import "cheqd/schema.proto"; import "google/protobuf/any.proto"; // this line is used by starport scaffolding # proto/tx/import diff --git a/proto/cheqd/tx.proto b/proto/cheqd/tx.proto index 8049225fd..456d8e4f3 100644 --- a/proto/cheqd/tx.proto +++ b/proto/cheqd/tx.proto @@ -1,9 +1,7 @@ syntax = "proto3"; package cheqdid.cheqdnode.cheqd; import "google/protobuf/any.proto"; -import "cheqd/common.proto"; import "cheqd/did.proto"; -import "cheqd/credDef.proto"; // this line is used by starport scaffolding # proto/tx/import @@ -11,9 +9,6 @@ option go_package = "github.com/cheqd/cheqd-node/x/cheqd/types"; // Msg defines the Msg service. service Msg { - // this line is used by starport scaffolding # proto/tx/rpc - rpc CreateCredDef(MsgWriteRequest) returns (MsgCreateCredDefResponse); - rpc CreateSchema(MsgWriteRequest) returns (MsgCreateSchemaResponse); rpc CreateDid(MsgWriteRequest) returns (MsgCreateDidResponse); rpc UpdateDid(MsgWriteRequest) returns (MsgUpdateDidResponse); } @@ -29,32 +24,6 @@ message SignInfo { string signature = 2; } -message MsgCreateCredDef { - string id = 1; - string schema_id = 2; - string tag = 3; - string type = 4; - repeated string controller = 5; - google.protobuf.Any value = 6; -} - -message MsgCreateCredDefResponse { - string id = 1; -} - -message MsgCreateSchema { - string id = 1; - string type = 2; - string name = 3; - string version = 4; - repeated string attr_names = 5; - repeated string controller = 6; -} - -message MsgCreateSchemaResponse { - string id = 1; -} - message MsgCreateDid { string id = 1; repeated string controller = 2; @@ -88,7 +57,6 @@ message MsgUpdateDid { string version_id = 12; } - message MsgUpdateDidResponse { string id = 1; } diff --git a/x/cheqd/types/did.pb.go b/x/cheqd/types/did.pb.go index ab7c08b98..09af7a4af 100644 --- a/x/cheqd/types/did.pb.go +++ b/x/cheqd/types/did.pb.go @@ -6,7 +6,6 @@ package types import ( fmt "fmt" _ "github.com/cosmos/cosmos-sdk/codec/types" - _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" io "io" math "math" @@ -293,41 +292,40 @@ func init() { func init() { proto.RegisterFile("cheqd/did.proto", fileDescriptor_382ab0c0f6b6850e) } var fileDescriptor_382ab0c0f6b6850e = []byte{ - // 529 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x41, 0x6f, 0xd3, 0x30, - 0x14, 0xc7, 0x97, 0x66, 0x5b, 0xa9, 0xbb, 0xb5, 0x93, 0x29, 0xc2, 0xec, 0x10, 0x55, 0x45, 0xa0, - 0x56, 0x88, 0x06, 0x6d, 0x9f, 0x60, 0x63, 0x1c, 0xa0, 0x9a, 0x84, 0x8a, 0xb4, 0x03, 0x42, 0x0a, - 0x4e, 0xfc, 0x96, 0x9a, 0x26, 0x76, 0x49, 0x9c, 0x76, 0xf9, 0x16, 0x7c, 0x2c, 0x8e, 0xbb, 0xc1, - 0x11, 0xb5, 0x1f, 0x82, 0x2b, 0x8a, 0x93, 0x96, 0x90, 0xaa, 0x12, 0x97, 0xf6, 0xe5, 0xf7, 0xfe, - 0xff, 0x67, 0xbf, 0x67, 0x1b, 0xb5, 0xbd, 0x09, 0x7c, 0x65, 0x36, 0xe3, 0x6c, 0x38, 0x8b, 0xa4, - 0x92, 0xf8, 0xb1, 0x06, 0x9c, 0x0d, 0xf5, 0xbf, 0x90, 0x0c, 0xf2, 0xe8, 0xf4, 0x89, 0x2f, 0xa5, - 0x1f, 0x80, 0xad, 0x65, 0x6e, 0x72, 0x6b, 0x53, 0x91, 0xe6, 0x9e, 0xd3, 0x8e, 0x2f, 0x7d, 0xa9, - 0x43, 0x3b, 0x8b, 0x0a, 0x8a, 0xf3, 0xd2, 0x9e, 0x0c, 0x43, 0x29, 0x72, 0xd6, 0xfb, 0x6d, 0x22, - 0xf3, 0x8a, 0x33, 0xdc, 0x42, 0x35, 0xce, 0x88, 0xd1, 0x35, 0xfa, 0x8d, 0x71, 0x8d, 0x33, 0x6c, - 0x21, 0xe4, 0x49, 0xa1, 0x22, 0x19, 0x04, 0x10, 0x91, 0x5a, 0xd7, 0xec, 0x37, 0xc6, 0x25, 0x82, - 0x3f, 0xa1, 0x87, 0x73, 0x88, 0xf8, 0x2d, 0xf7, 0xa8, 0xe2, 0x52, 0x38, 0x21, 0xa8, 0x89, 0x64, - 0xc4, 0xec, 0x9a, 0xfd, 0xe6, 0xd9, 0x8b, 0xe1, 0x8e, 0x3d, 0x0f, 0x6f, 0x4a, 0x9e, 0x6b, 0x6d, - 0x19, 0xe3, 0xf9, 0x16, 0xc3, 0xcf, 0x51, 0x8b, 0x26, 0x6a, 0x02, 0x42, 0x15, 0x9c, 0xec, 0xeb, - 0x1d, 0x54, 0x28, 0x1e, 0xa0, 0x13, 0x1a, 0xc7, 0x10, 0x95, 0xb7, 0x70, 0xa0, 0x95, 0xed, 0x0d, - 0x2f, 0x4a, 0x9e, 0xa3, 0x47, 0x1e, 0x9d, 0x51, 0x97, 0x07, 0x5c, 0xa5, 0x0e, 0x17, 0x73, 0x59, - 0x54, 0x3e, 0xd4, 0xfa, 0xce, 0xdf, 0xe4, 0xdb, 0x4d, 0xae, 0x62, 0x62, 0x10, 0x80, 0x9f, 0x9b, - 0xea, 0x55, 0xd3, 0xd5, 0x26, 0x87, 0x9f, 0xa2, 0xe3, 0x29, 0xa4, 0x0e, 0xf5, 0x23, 0x80, 0x10, - 0x84, 0x22, 0x0f, 0xb4, 0xf8, 0x68, 0x0a, 0xe9, 0xc5, 0x9a, 0xe1, 0x4b, 0x54, 0x8f, 0x21, 0x9a, - 0x73, 0x0f, 0x48, 0x43, 0xcf, 0xac, 0xbf, 0x73, 0x66, 0x1f, 0x72, 0xdd, 0x1b, 0xc1, 0x66, 0x92, - 0x0b, 0x35, 0x5e, 0x1b, 0x71, 0x0f, 0x1d, 0xd3, 0x20, 0x96, 0xce, 0x54, 0xc8, 0x85, 0x70, 0x68, - 0x4c, 0x90, 0x5e, 0xa8, 0x99, 0xc1, 0x51, 0xc6, 0x2e, 0x62, 0x4c, 0x50, 0x3d, 0x3b, 0x35, 0xb8, - 0x53, 0xa4, 0xa9, 0xb3, 0xeb, 0xcf, 0xde, 0x0f, 0x03, 0xe1, 0xed, 0xe3, 0xd8, 0xba, 0x08, 0x18, - 0xed, 0xab, 0x74, 0x06, 0xa4, 0xa6, 0x89, 0x8e, 0x2b, 0x97, 0xc3, 0xd4, 0x99, 0xf2, 0xe5, 0x18, - 0xa1, 0xd6, 0x2c, 0x71, 0x03, 0xee, 0x39, 0xd9, 0x20, 0xbe, 0x2c, 0xa6, 0xfa, 0xf8, 0x9a, 0x67, - 0xcf, 0x76, 0xf6, 0x38, 0x82, 0xf4, 0x86, 0x06, 0x09, 0xbc, 0xa7, 0x3c, 0x1a, 0x1f, 0xe5, 0xe6, - 0x11, 0xa4, 0xef, 0x16, 0x53, 0xfc, 0x0a, 0x75, 0x4a, 0xc5, 0xc2, 0x24, 0x50, 0xdc, 0xa5, 0x31, - 0x90, 0x03, 0xbd, 0x2c, 0xde, 0x68, 0xaf, 0xd7, 0x99, 0xde, 0x67, 0xd4, 0xae, 0xcc, 0xec, 0xbf, - 0xba, 0x1a, 0xa0, 0x93, 0x62, 0xb2, 0x0e, 0x14, 0xbe, 0xa2, 0xb7, 0x76, 0xfc, 0x6f, 0xb9, 0xcb, - 0xd7, 0xdf, 0x97, 0x96, 0x71, 0xbf, 0xb4, 0x8c, 0x5f, 0x4b, 0xcb, 0xf8, 0xb6, 0xb2, 0xf6, 0xee, - 0x57, 0xd6, 0xde, 0xcf, 0x95, 0xb5, 0xf7, 0x71, 0xe0, 0x73, 0x35, 0x49, 0xdc, 0xa1, 0x27, 0x43, - 0xbb, 0x78, 0x6e, 0xd9, 0xef, 0xcb, 0xac, 0x57, 0xfb, 0xae, 0x40, 0xd9, 0x72, 0xb1, 0x7b, 0xa8, - 0x5f, 0xe0, 0xf9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x21, 0x4c, 0xae, 0x48, 0xf2, 0x03, 0x00, - 0x00, + // 520 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x41, 0x6f, 0x12, 0x41, + 0x14, 0xc7, 0x59, 0xb6, 0x2d, 0xf2, 0x68, 0xa1, 0x19, 0x6b, 0x1c, 0x7b, 0xd8, 0x10, 0x8c, 0x06, + 0x62, 0x04, 0xd3, 0x7e, 0x82, 0xd6, 0x7a, 0x50, 0xd2, 0xc4, 0x60, 0xd2, 0x83, 0x31, 0x59, 0x67, + 0x77, 0x5e, 0x61, 0x64, 0x77, 0x06, 0x77, 0x67, 0xa1, 0xfb, 0x2d, 0xfc, 0x58, 0x1e, 0x7b, 0xd3, + 0xa3, 0x81, 0x0f, 0xe1, 0xd5, 0xec, 0xec, 0x82, 0x08, 0x21, 0xf1, 0x02, 0xb3, 0xbf, 0xf7, 0xff, + 0xbf, 0x99, 0xf7, 0xe6, 0x0d, 0x34, 0xfc, 0x11, 0x7e, 0xe5, 0x3d, 0x2e, 0x78, 0x77, 0x12, 0x29, + 0xad, 0xc8, 0x63, 0x03, 0x04, 0xef, 0x9a, 0x7f, 0xa9, 0x38, 0xe6, 0xab, 0xd3, 0x27, 0x43, 0xa5, + 0x86, 0x01, 0xf6, 0x8c, 0xcc, 0x4b, 0x6e, 0x7b, 0x4c, 0xa6, 0xb9, 0xe7, 0x94, 0xe4, 0x49, 0x7c, + 0x15, 0x86, 0x4a, 0xe6, 0xac, 0xf5, 0xdb, 0x06, 0xfb, 0x4a, 0x70, 0x52, 0x87, 0xb2, 0xe0, 0xd4, + 0x6a, 0x5a, 0xed, 0xea, 0xa0, 0x2c, 0x38, 0x71, 0x00, 0x7c, 0x25, 0x75, 0xa4, 0x82, 0x00, 0x23, + 0x5a, 0x6e, 0xda, 0xed, 0xea, 0x60, 0x8d, 0x90, 0x4f, 0xf0, 0x70, 0x8a, 0x91, 0xb8, 0x15, 0x3e, + 0xd3, 0x42, 0x49, 0x37, 0x44, 0x3d, 0x52, 0x9c, 0xda, 0x4d, 0xbb, 0x5d, 0x3b, 0x7b, 0xd1, 0xdd, + 0x71, 0xba, 0xee, 0xcd, 0x9a, 0xe7, 0xda, 0x58, 0x06, 0x64, 0xba, 0xc5, 0xc8, 0x73, 0xa8, 0xb3, + 0x44, 0x8f, 0x50, 0xea, 0x82, 0xd3, 0x3d, 0x73, 0x82, 0x0d, 0x4a, 0x3a, 0x70, 0xcc, 0xe2, 0x18, + 0xa3, 0xf5, 0x23, 0xec, 0x1b, 0x65, 0x63, 0xc5, 0x8b, 0x94, 0xe7, 0xf0, 0xc8, 0x67, 0x13, 0xe6, + 0x89, 0x40, 0xe8, 0xd4, 0x15, 0x72, 0xaa, 0x8a, 0xcc, 0x07, 0x46, 0x7f, 0xf2, 0x37, 0xf8, 0x76, + 0x15, 0xdb, 0x30, 0x71, 0x0c, 0x70, 0x98, 0x9b, 0x2a, 0x9b, 0xa6, 0xab, 0x55, 0x8c, 0x3c, 0x85, + 0xa3, 0x31, 0xa6, 0x2e, 0x1b, 0x46, 0x88, 0x21, 0x4a, 0x4d, 0x1f, 0x18, 0xf1, 0xe1, 0x18, 0xd3, + 0x8b, 0x25, 0x23, 0x97, 0x50, 0x89, 0x31, 0x9a, 0x0a, 0x1f, 0x69, 0xd5, 0xf4, 0xac, 0xbd, 0xb3, + 0x67, 0x1f, 0x72, 0xdd, 0x1b, 0xc9, 0x27, 0x4a, 0x48, 0x3d, 0x58, 0x1a, 0x49, 0x0b, 0x8e, 0x58, + 0x10, 0x2b, 0x77, 0x2c, 0xd5, 0x4c, 0xba, 0x2c, 0xa6, 0x60, 0x36, 0xaa, 0x65, 0xb0, 0x9f, 0xb1, + 0x8b, 0x98, 0x50, 0xa8, 0x64, 0xb7, 0x86, 0x77, 0x9a, 0xd6, 0x4c, 0x74, 0xf9, 0xd9, 0xfa, 0x61, + 0x01, 0xd9, 0xbe, 0x8e, 0xad, 0x41, 0x20, 0xb0, 0xa7, 0xd3, 0x09, 0xd2, 0xb2, 0x21, 0x66, 0xbd, + 0x31, 0x1c, 0xb6, 0x89, 0xac, 0x0f, 0x47, 0x1f, 0xea, 0x93, 0xc4, 0x0b, 0x84, 0xef, 0x66, 0x8d, + 0xf8, 0x32, 0x1b, 0x9b, 0xeb, 0xab, 0x9d, 0x3d, 0xdb, 0x59, 0x63, 0x1f, 0xd3, 0x1b, 0x16, 0x24, + 0xf8, 0x9e, 0x89, 0x68, 0x70, 0x98, 0x9b, 0xfb, 0x98, 0xbe, 0x9b, 0x8d, 0xc9, 0x2b, 0x38, 0x59, + 0x4b, 0x16, 0x26, 0x81, 0x16, 0x1e, 0x8b, 0x91, 0xee, 0x9b, 0x6d, 0xc9, 0x4a, 0x7b, 0xbd, 0x8c, + 0xb4, 0x3e, 0x43, 0x63, 0xa3, 0x67, 0xff, 0x55, 0x55, 0x07, 0x8e, 0x8b, 0xce, 0xba, 0x58, 0xf8, + 0x8a, 0xda, 0x1a, 0xf1, 0xbf, 0xe9, 0x2e, 0x5f, 0x7f, 0x9f, 0x3b, 0xd6, 0xfd, 0xdc, 0xb1, 0x7e, + 0xcd, 0x1d, 0xeb, 0xdb, 0xc2, 0x29, 0xdd, 0x2f, 0x9c, 0xd2, 0xcf, 0x85, 0x53, 0xfa, 0xd8, 0x19, + 0x0a, 0x3d, 0x4a, 0xbc, 0xae, 0xaf, 0xc2, 0x5e, 0xf1, 0xdc, 0xb2, 0xdf, 0x97, 0x59, 0xad, 0xbd, + 0xbb, 0x02, 0x65, 0xdb, 0xc5, 0xde, 0x81, 0x79, 0x81, 0xe7, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, + 0xeb, 0x2c, 0x24, 0xc7, 0xdc, 0x03, 0x00, 0x00, } func (m *Did) Marshal() (dAtA []byte, err error) { diff --git a/x/cheqd/types/genesis.pb.go b/x/cheqd/types/genesis.pb.go index 2ed17e451..b73171728 100644 --- a/x/cheqd/types/genesis.pb.go +++ b/x/cheqd/types/genesis.pb.go @@ -66,18 +66,16 @@ func init() { func init() { proto.RegisterFile("cheqd/genesis.proto", fileDescriptor_125930f9f5015ae5) } var fileDescriptor_125930f9f5015ae5 = []byte{ - // 164 bytes of a gzipped FileDescriptorProto + // 141 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0xce, 0x48, 0x2d, 0x4c, 0xd1, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, - 0x12, 0x07, 0x0b, 0x66, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x0a, 0xaa, - 0x3a, 0xb9, 0x28, 0x35, 0xc5, 0x25, 0x35, 0x0d, 0xa2, 0x5a, 0x4a, 0x08, 0x22, 0x58, 0x9c, 0x9c, - 0x91, 0x9a, 0x9b, 0x08, 0x15, 0xe3, 0x87, 0x88, 0x81, 0xcc, 0x00, 0x0b, 0x28, 0xf1, 0x71, 0xf1, - 0xb8, 0x43, 0xec, 0x08, 0x2e, 0x49, 0x2c, 0x49, 0x75, 0x72, 0x3e, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, - 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, - 0xc6, 0x63, 0x39, 0x86, 0x28, 0xcd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, - 0x7d, 0xa8, 0x75, 0x20, 0x52, 0x17, 0xe4, 0x0c, 0xfd, 0x0a, 0xa8, 0x50, 0x49, 0x65, 0x41, 0x6a, - 0x71, 0x12, 0x1b, 0xd8, 0x6c, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd7, 0xc6, 0x12, 0x42, - 0xc5, 0x00, 0x00, 0x00, + 0x12, 0x07, 0x0b, 0x66, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x8a, 0x1f, + 0xa2, 0x1a, 0x24, 0x05, 0x56, 0xa9, 0xc4, 0xc7, 0xc5, 0xe3, 0x0e, 0xd1, 0x1a, 0x5c, 0x92, 0x58, + 0x92, 0xea, 0xe4, 0x7c, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, + 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x9a, 0xe9, + 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0x10, 0x53, 0xc0, 0xa4, 0x2e, 0xc8, + 0x74, 0xfd, 0x0a, 0xa8, 0x50, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x6c, 0x63, 0x40, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x53, 0x0e, 0xbf, 0x9c, 0x00, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/cheqd/types/query.pb.go b/x/cheqd/types/query.pb.go index 14f959c3f..eb1c4f90f 100644 --- a/x/cheqd/types/query.pb.go +++ b/x/cheqd/types/query.pb.go @@ -29,199 +29,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// this line is used by starport scaffolding # 3 -type QueryGetCredDefRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -} - -func (m *QueryGetCredDefRequest) Reset() { *m = QueryGetCredDefRequest{} } -func (m *QueryGetCredDefRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetCredDefRequest) ProtoMessage() {} -func (*QueryGetCredDefRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{0} -} -func (m *QueryGetCredDefRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetCredDefRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetCredDefRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetCredDefRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetCredDefRequest.Merge(m, src) -} -func (m *QueryGetCredDefRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetCredDefRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetCredDefRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetCredDefRequest proto.InternalMessageInfo - -func (m *QueryGetCredDefRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type QueryGetCredDefResponse struct { - CredDef *CredDef `protobuf:"bytes,1,opt,name=cred_def,json=credDef,proto3" json:"cred_def,omitempty"` - Metadata *Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (m *QueryGetCredDefResponse) Reset() { *m = QueryGetCredDefResponse{} } -func (m *QueryGetCredDefResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetCredDefResponse) ProtoMessage() {} -func (*QueryGetCredDefResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{1} -} -func (m *QueryGetCredDefResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetCredDefResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetCredDefResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetCredDefResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetCredDefResponse.Merge(m, src) -} -func (m *QueryGetCredDefResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetCredDefResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetCredDefResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetCredDefResponse proto.InternalMessageInfo - -func (m *QueryGetCredDefResponse) GetCredDef() *CredDef { - if m != nil { - return m.CredDef - } - return nil -} - -func (m *QueryGetCredDefResponse) GetMetadata() *Metadata { - if m != nil { - return m.Metadata - } - return nil -} - -type QueryGetSchemaRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -} - -func (m *QueryGetSchemaRequest) Reset() { *m = QueryGetSchemaRequest{} } -func (m *QueryGetSchemaRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetSchemaRequest) ProtoMessage() {} -func (*QueryGetSchemaRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{2} -} -func (m *QueryGetSchemaRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetSchemaRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetSchemaRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetSchemaRequest.Merge(m, src) -} -func (m *QueryGetSchemaRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetSchemaRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetSchemaRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetSchemaRequest proto.InternalMessageInfo - -func (m *QueryGetSchemaRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type QueryGetSchemaResponse struct { - Schema *Schema `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` - Metadata *Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (m *QueryGetSchemaResponse) Reset() { *m = QueryGetSchemaResponse{} } -func (m *QueryGetSchemaResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetSchemaResponse) ProtoMessage() {} -func (*QueryGetSchemaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{3} -} -func (m *QueryGetSchemaResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetSchemaResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetSchemaResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetSchemaResponse.Merge(m, src) -} -func (m *QueryGetSchemaResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetSchemaResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetSchemaResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetSchemaResponse proto.InternalMessageInfo - -func (m *QueryGetSchemaResponse) GetSchema() *Schema { - if m != nil { - return m.Schema - } - return nil -} - -func (m *QueryGetSchemaResponse) GetMetadata() *Metadata { - if m != nil { - return m.Metadata - } - return nil -} - type QueryGetDidRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } @@ -230,7 +37,7 @@ func (m *QueryGetDidRequest) Reset() { *m = QueryGetDidRequest{} } func (m *QueryGetDidRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetDidRequest) ProtoMessage() {} func (*QueryGetDidRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{4} + return fileDescriptor_bf3698559b3858f5, []int{0} } func (m *QueryGetDidRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -275,7 +82,7 @@ func (m *QueryGetDidResponse) Reset() { *m = QueryGetDidResponse{} } func (m *QueryGetDidResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetDidResponse) ProtoMessage() {} func (*QueryGetDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_bf3698559b3858f5, []int{5} + return fileDescriptor_bf3698559b3858f5, []int{1} } func (m *QueryGetDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -319,10 +126,6 @@ func (m *QueryGetDidResponse) GetMetadata() *Metadata { } func init() { - proto.RegisterType((*QueryGetCredDefRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetCredDefRequest") - proto.RegisterType((*QueryGetCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetCredDefResponse") - proto.RegisterType((*QueryGetSchemaRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetSchemaRequest") - proto.RegisterType((*QueryGetSchemaResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetSchemaResponse") proto.RegisterType((*QueryGetDidRequest)(nil), "cheqdid.cheqdnode.cheqd.QueryGetDidRequest") proto.RegisterType((*QueryGetDidResponse)(nil), "cheqdid.cheqdnode.cheqd.QueryGetDidResponse") } @@ -330,39 +133,28 @@ func init() { func init() { proto.RegisterFile("cheqd/query.proto", fileDescriptor_bf3698559b3858f5) } var fileDescriptor_bf3698559b3858f5 = []byte{ - // 499 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0xc1, 0x6b, 0x13, 0x41, - 0x14, 0xc6, 0x3b, 0x09, 0xa6, 0x75, 0x0a, 0x8a, 0x53, 0x6c, 0xcb, 0x52, 0xb6, 0xed, 0x5a, 0x69, - 0x6d, 0x75, 0xc7, 0xc6, 0x83, 0x07, 0xf1, 0x62, 0x03, 0x9e, 0x3c, 0x18, 0xc1, 0x83, 0x17, 0x99, - 0xec, 0xbc, 0x26, 0x03, 0xcd, 0xce, 0x26, 0x33, 0x11, 0x8b, 0x78, 0x11, 0x2f, 0xde, 0x0a, 0xd2, - 0x83, 0x7f, 0x91, 0x1e, 0x0b, 0x5e, 0x3c, 0x4a, 0xe2, 0x1f, 0x22, 0x3b, 0xf3, 0xd6, 0x1a, 0x74, - 0x68, 0xa0, 0xa7, 0x5d, 0x3e, 0xbe, 0xef, 0xbd, 0xdf, 0x9b, 0x79, 0xbb, 0xf4, 0x46, 0xd6, 0x83, - 0x81, 0xe4, 0x83, 0x11, 0x0c, 0x8f, 0xd3, 0x62, 0xa8, 0xad, 0x66, 0x2b, 0x4e, 0x52, 0x32, 0x75, - 0xcf, 0x5c, 0x4b, 0xf0, 0x6f, 0xd1, 0x5a, 0x57, 0xeb, 0xee, 0x11, 0x70, 0x51, 0x28, 0x2e, 0xf2, - 0x5c, 0x5b, 0x61, 0x95, 0xce, 0x8d, 0x8f, 0x45, 0xbb, 0x99, 0x36, 0x7d, 0x6d, 0x78, 0x47, 0x18, - 0xf0, 0xf5, 0xf8, 0x9b, 0xfd, 0x0e, 0x58, 0xb1, 0xcf, 0x0b, 0xd1, 0x55, 0xb9, 0x33, 0xa3, 0x77, - 0xc9, 0x77, 0xcd, 0x86, 0x20, 0x5b, 0x70, 0x88, 0x22, 0xf3, 0xa2, 0xc9, 0x7a, 0xd0, 0x17, 0xa8, - 0x5d, 0xf7, 0x5a, 0x49, 0xe3, 0x85, 0x65, 0x34, 0x59, 0x61, 0xe1, 0xa5, 0x38, 0x1a, 0x81, 0xd7, - 0x93, 0x1d, 0xba, 0xfc, 0xbc, 0xec, 0xf9, 0x14, 0xec, 0x81, 0xaf, 0xda, 0x86, 0xc1, 0x08, 0x8c, - 0x65, 0xd7, 0x68, 0x4d, 0xc9, 0x55, 0xb2, 0x41, 0x76, 0xae, 0xb6, 0x6b, 0x4a, 0x26, 0xa7, 0x84, - 0xae, 0xfc, 0x63, 0x35, 0x85, 0xce, 0x0d, 0xb0, 0x47, 0x74, 0xa1, 0x64, 0x7a, 0x2d, 0xe1, 0xd0, - 0x25, 0x16, 0x9b, 0x1b, 0x69, 0xe0, 0x34, 0xd2, 0x2a, 0x3b, 0x8f, 0x53, 0xb0, 0xc7, 0x74, 0xa1, - 0x0f, 0x56, 0x48, 0x61, 0xc5, 0x6a, 0xcd, 0x85, 0x37, 0x83, 0xe1, 0x67, 0x68, 0x6c, 0xff, 0x89, - 0x24, 0xdb, 0xf4, 0x66, 0x85, 0xf5, 0xc2, 0x1d, 0x41, 0x68, 0x80, 0x13, 0x72, 0x3e, 0x6b, 0xe5, - 0x44, 0xfe, 0x87, 0xb4, 0xe1, 0x8f, 0x0f, 0xe9, 0xd7, 0x83, 0x00, 0x18, 0x44, 0xfb, 0x65, 0xd9, - 0xb7, 0x28, 0xab, 0x88, 0x5a, 0x4a, 0x86, 0xc0, 0x3f, 0x12, 0xba, 0x34, 0x65, 0x43, 0xea, 0x94, - 0xd6, 0x25, 0x1a, 0x17, 0x9b, 0x6b, 0xc1, 0xbe, 0x65, 0xa4, 0x34, 0x5e, 0x12, 0xb6, 0xf9, 0xb5, - 0x4e, 0xaf, 0x38, 0x0c, 0xf6, 0x85, 0xd0, 0x79, 0xbc, 0x46, 0xc6, 0x83, 0x25, 0xfe, 0xbf, 0x57, - 0xd1, 0xfd, 0xd9, 0x03, 0x7e, 0xce, 0x64, 0xef, 0xc3, 0xf7, 0x5f, 0x9f, 0x6b, 0xb7, 0xd9, 0x2d, - 0x8e, 0xeb, 0x5f, 0xe5, 0xf8, 0xd4, 0xe7, 0xc0, 0xdf, 0x29, 0xf9, 0x9e, 0x9d, 0x12, 0xda, 0xf0, - 0x97, 0xc4, 0xd2, 0x0b, 0x3b, 0x4d, 0x2d, 0x4c, 0xc4, 0x67, 0xf6, 0x23, 0xd8, 0xae, 0x03, 0xdb, - 0x62, 0x49, 0x00, 0xcc, 0x2f, 0x89, 0xe7, 0xfa, 0x44, 0x68, 0xbd, 0xa5, 0x24, 0xdb, 0xbb, 0xb0, - 0xc9, 0xf9, 0x26, 0x44, 0x77, 0x67, 0x33, 0x23, 0xce, 0xb6, 0xc3, 0xd9, 0x64, 0xeb, 0x01, 0x1c, - 0xa9, 0xa4, 0x63, 0x79, 0x72, 0xf0, 0x6d, 0x1c, 0x93, 0xb3, 0x71, 0x4c, 0x7e, 0x8e, 0x63, 0x72, - 0x32, 0x89, 0xe7, 0xce, 0x26, 0xf1, 0xdc, 0x8f, 0x49, 0x3c, 0xf7, 0xea, 0x4e, 0x57, 0xd9, 0xde, - 0xa8, 0x93, 0x66, 0xba, 0xff, 0x77, 0x91, 0x7b, 0xae, 0xca, 0x5b, 0x94, 0xec, 0x71, 0x01, 0xa6, - 0xd3, 0x70, 0x3f, 0x90, 0x07, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xca, 0x57, 0x8a, 0x8b, 0x0a, - 0x05, 0x00, 0x00, + // 336 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0xbf, 0x4b, 0xc3, 0x40, + 0x14, 0xc7, 0x7b, 0x29, 0x8a, 0x9e, 0xa0, 0x78, 0x82, 0x96, 0x52, 0xa2, 0x2d, 0x82, 0xbf, 0x73, + 0xb4, 0xce, 0x2e, 0x5a, 0x70, 0x72, 0xb0, 0x83, 0x83, 0xdb, 0xa5, 0xf7, 0x48, 0x0f, 0xda, 0x5c, + 0xda, 0x7b, 0x11, 0x8b, 0xb8, 0x88, 0x8b, 0x9b, 0xd0, 0x7f, 0xca, 0xb1, 0xe0, 0xe2, 0x28, 0xad, + 0x7f, 0x88, 0xe4, 0x2e, 0x14, 0x45, 0x0a, 0x4e, 0x09, 0x5f, 0x3e, 0x9f, 0xef, 0xcb, 0x7b, 0xa1, + 0xeb, 0xed, 0x0e, 0xf4, 0x25, 0xef, 0xa7, 0x30, 0x18, 0x06, 0xc9, 0x40, 0xa3, 0x66, 0x5b, 0x36, + 0x52, 0x32, 0xb0, 0xcf, 0x58, 0x4b, 0x70, 0x6f, 0xe5, 0x4a, 0xa4, 0x75, 0xd4, 0x05, 0x2e, 0x12, + 0xc5, 0x45, 0x1c, 0x6b, 0x14, 0xa8, 0x74, 0x6c, 0x9c, 0x56, 0x3e, 0x6c, 0x6b, 0xd3, 0xd3, 0x86, + 0x87, 0xc2, 0x80, 0xeb, 0xe3, 0x77, 0xf5, 0x10, 0x50, 0xd4, 0x79, 0x22, 0x22, 0x15, 0x5b, 0x38, + 0x67, 0xd7, 0xdc, 0xd4, 0x6c, 0x88, 0x0b, 0x36, 0x5d, 0x60, 0x50, 0x20, 0xdc, 0x88, 0x6e, 0x0a, + 0x2e, 0xaf, 0xed, 0x52, 0x76, 0x9d, 0x55, 0x5d, 0x02, 0x36, 0x95, 0x6c, 0x41, 0x3f, 0x05, 0x83, + 0x6c, 0x95, 0x7a, 0x4a, 0x96, 0xc8, 0x0e, 0xd9, 0x5f, 0x6e, 0x79, 0x4a, 0xd6, 0x9e, 0x09, 0xdd, + 0xf8, 0x85, 0x99, 0x44, 0xc7, 0x06, 0x58, 0x40, 0x8b, 0x32, 0x07, 0x57, 0x1a, 0x95, 0x60, 0xce, + 0x5e, 0x41, 0xa6, 0x64, 0x20, 0x3b, 0xa3, 0x4b, 0x3d, 0x40, 0x21, 0x05, 0x8a, 0x92, 0x67, 0xa5, + 0xea, 0x5c, 0xe9, 0x2a, 0x07, 0x5b, 0x33, 0xa5, 0x31, 0x22, 0x74, 0xc1, 0x7e, 0x06, 0x7b, 0x21, + 0xb4, 0xd8, 0x54, 0x92, 0x1d, 0xcd, 0xd5, 0xff, 0x6e, 0x55, 0x3e, 0xfe, 0x1f, 0xec, 0x76, 0xab, + 0xed, 0x3d, 0xbd, 0x7f, 0x8d, 0xbc, 0x2a, 0xdb, 0xe6, 0xee, 0x74, 0x33, 0x87, 0xcf, 0x6e, 0xcb, + 0x1f, 0x94, 0x7c, 0x3c, 0xbf, 0x78, 0x9b, 0xf8, 0x64, 0x3c, 0xf1, 0xc9, 0xe7, 0xc4, 0x27, 0xaf, + 0x53, 0xbf, 0x30, 0x9e, 0xfa, 0x85, 0x8f, 0xa9, 0x5f, 0xb8, 0x3d, 0x88, 0x14, 0x76, 0xd2, 0x30, + 0x68, 0xeb, 0xde, 0xcf, 0x92, 0x13, 0xdb, 0x72, 0x9f, 0x47, 0x38, 0x4c, 0xc0, 0x84, 0x8b, 0xf6, + 0x77, 0x9c, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0x66, 0x9f, 0x6e, 0xbd, 0x2f, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -377,9 +169,6 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { - // this line is used by starport scaffolding # 2 - CredDef(ctx context.Context, in *QueryGetCredDefRequest, opts ...grpc.CallOption) (*QueryGetCredDefResponse, error) - Schema(ctx context.Context, in *QueryGetSchemaRequest, opts ...grpc.CallOption) (*QueryGetSchemaResponse, error) Did(ctx context.Context, in *QueryGetDidRequest, opts ...grpc.CallOption) (*QueryGetDidResponse, error) } @@ -391,24 +180,6 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } -func (c *queryClient) CredDef(ctx context.Context, in *QueryGetCredDefRequest, opts ...grpc.CallOption) (*QueryGetCredDefResponse, error) { - out := new(QueryGetCredDefResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/CredDef", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Schema(ctx context.Context, in *QueryGetSchemaRequest, opts ...grpc.CallOption) (*QueryGetSchemaResponse, error) { - out := new(QueryGetSchemaResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/Schema", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *queryClient) Did(ctx context.Context, in *QueryGetDidRequest, opts ...grpc.CallOption) (*QueryGetDidResponse, error) { out := new(QueryGetDidResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Query/Did", in, out, opts...) @@ -420,9 +191,6 @@ func (c *queryClient) Did(ctx context.Context, in *QueryGetDidRequest, opts ...g // QueryServer is the server API for Query service. type QueryServer interface { - // this line is used by starport scaffolding # 2 - CredDef(context.Context, *QueryGetCredDefRequest) (*QueryGetCredDefResponse, error) - Schema(context.Context, *QueryGetSchemaRequest) (*QueryGetSchemaResponse, error) Did(context.Context, *QueryGetDidRequest) (*QueryGetDidResponse, error) } @@ -430,12 +198,6 @@ type QueryServer interface { type UnimplementedQueryServer struct { } -func (*UnimplementedQueryServer) CredDef(ctx context.Context, req *QueryGetCredDefRequest) (*QueryGetCredDefResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CredDef not implemented") -} -func (*UnimplementedQueryServer) Schema(ctx context.Context, req *QueryGetSchemaRequest) (*QueryGetSchemaResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Schema not implemented") -} func (*UnimplementedQueryServer) Did(ctx context.Context, req *QueryGetDidRequest) (*QueryGetDidResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Did not implemented") } @@ -444,42 +206,6 @@ func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) } -func _Query_CredDef_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetCredDefRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).CredDef(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Query/CredDef", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).CredDef(ctx, req.(*QueryGetCredDefRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Schema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetSchemaRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Schema(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Query/Schema", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Schema(ctx, req.(*QueryGetSchemaRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Query_Did_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryGetDidRequest) if err := dec(in); err != nil { @@ -502,14 +228,6 @@ var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "cheqdid.cheqdnode.cheqd.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "CredDef", - Handler: _Query_CredDef_Handler, - }, - { - MethodName: "Schema", - Handler: _Query_Schema_Handler, - }, { MethodName: "Did", Handler: _Query_Did_Handler, @@ -519,7 +237,7 @@ var _Query_serviceDesc = grpc.ServiceDesc{ Metadata: "cheqd/query.proto", } -func (m *QueryGetCredDefRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryGetDidRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -529,12 +247,12 @@ func (m *QueryGetCredDefRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryGetCredDefRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetDidRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetCredDefRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetDidRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -549,7 +267,7 @@ func (m *QueryGetCredDefRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *QueryGetCredDefResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryGetDidResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -559,12 +277,12 @@ func (m *QueryGetCredDefResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryGetCredDefResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetDidResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetCredDefResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetDidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -581,9 +299,9 @@ func (m *QueryGetCredDefResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x12 } - if m.CredDef != nil { + if m.Did != nil { { - size, err := m.CredDef.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Did.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -596,257 +314,43 @@ func (m *QueryGetCredDefResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *QueryGetSchemaRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ } - return dAtA[:n], nil -} - -func (m *QueryGetSchemaRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + dAtA[offset] = uint8(v) + return base } - -func (m *QueryGetSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i +func (m *QueryGetDidRequest) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa + l = len(m.Id) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) } - return len(dAtA) - i, nil + return n } -func (m *QueryGetSchemaResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryGetDidResponse) Size() (n int) { + if m == nil { + return 0 } - return dAtA[:n], nil -} - -func (m *QueryGetSchemaResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i var l int _ = l + if m.Did != nil { + l = m.Did.Size() + n += 1 + l + sovQuery(uint64(l)) + } if m.Metadata != nil { - { - size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.Schema != nil { - { - size, err := m.Schema.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryGetDidRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetDidRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetDidRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryGetDidResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetDidResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetDidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Metadata != nil { - { - size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.Did != nil { - { - size, err := m.Did.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *QueryGetCredDefRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetCredDefResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.CredDef != nil { - l = m.CredDef.Size() - n += 1 + l + sovQuery(uint64(l)) - } - if m.Metadata != nil { - l = m.Metadata.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetSchemaRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetSchemaResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Schema != nil { - l = m.Schema.Size() - n += 1 + l + sovQuery(uint64(l)) - } - if m.Metadata != nil { - l = m.Metadata.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetDidRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetDidResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Did != nil { - l = m.Did.Size() - n += 1 + l + sovQuery(uint64(l)) - } - if m.Metadata != nil { - l = m.Metadata.Size() - n += 1 + l + sovQuery(uint64(l)) + l = m.Metadata.Size() + n += 1 + l + sovQuery(uint64(l)) } return n } @@ -857,414 +361,6 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *QueryGetCredDefRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetCredDefRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetCredDefRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetCredDefResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetCredDefResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetCredDefResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CredDef", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.CredDef == nil { - m.CredDef = &CredDef{} - } - if err := m.CredDef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Metadata == nil { - m.Metadata = &Metadata{} - } - if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetSchemaRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetSchemaRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetSchemaResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetSchemaResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Schema == nil { - m.Schema = &Schema{} - } - if err := m.Schema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Metadata == nil { - m.Metadata = &Metadata{} - } - if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *QueryGetDidRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/cheqd/types/query.pb.gw.go b/x/cheqd/types/query.pb.gw.go index 0f49f0add..42585a95b 100644 --- a/x/cheqd/types/query.pb.gw.go +++ b/x/cheqd/types/query.pb.gw.go @@ -33,114 +33,6 @@ var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage var _ = metadata.Join -func request_Query_CredDef_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetCredDefRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := client.CredDef(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_CredDef_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetCredDefRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := server.CredDef(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_Schema_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetSchemaRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := client.Schema(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Schema_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetSchemaRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } - - protoReq.Id, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - msg, err := server.Schema(ctx, &protoReq) - return msg, metadata, err - -} - func request_Query_Did_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryGetDidRequest var metadata runtime.ServerMetadata @@ -201,52 +93,6 @@ func local_request_Query_Did_0(ctx context.Context, marshaler runtime.Marshaler, // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { - mux.Handle("GET", pattern_Query_CredDef_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_CredDef_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_CredDef_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Schema_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Schema_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Schema_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_Query_Did_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -311,46 +157,6 @@ func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // "QueryClient" to call the correct interceptors. func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { - mux.Handle("GET", pattern_Query_CredDef_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_CredDef_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_CredDef_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Schema_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Schema_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Schema_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_Query_Did_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -375,17 +181,9 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_CredDef_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "credDef", "id"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_Schema_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "schema", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_Did_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"cheqd", "cheqdnode", "did", "id"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( - forward_Query_CredDef_0 = runtime.ForwardResponseMessage - - forward_Query_Schema_0 = runtime.ForwardResponseMessage - forward_Query_Did_0 = runtime.ForwardResponseMessage ) diff --git a/x/cheqd/types/stateValue.pb.go b/x/cheqd/types/stateValue.pb.go index 7c3d1fe2b..107e6d124 100644 --- a/x/cheqd/types/stateValue.pb.go +++ b/x/cheqd/types/stateValue.pb.go @@ -152,27 +152,25 @@ func init() { func init() { proto.RegisterFile("cheqd/stateValue.proto", fileDescriptor_8f10490b1a4abc33) } var fileDescriptor_8f10490b1a4abc33 = []byte{ - // 307 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0xbf, 0x4e, 0xc3, 0x30, - 0x10, 0xc6, 0xeb, 0x52, 0x41, 0xeb, 0x0e, 0x48, 0x06, 0x41, 0xa9, 0x84, 0x55, 0x3a, 0x95, 0x01, - 0x47, 0x82, 0x99, 0x81, 0x3f, 0x0b, 0x03, 0x4b, 0x90, 0x18, 0x58, 0x90, 0x6b, 0x5f, 0xdb, 0x48, - 0x6d, 0x1c, 0x12, 0xa7, 0x22, 0x13, 0xaf, 0xc0, 0x63, 0x31, 0x76, 0x64, 0x44, 0xc9, 0x8b, 0xa0, - 0x9c, 0x9d, 0x8a, 0x85, 0xc5, 0xf6, 0xfd, 0xbe, 0xef, 0xb3, 0xcf, 0x47, 0x8f, 0xd4, 0x02, 0xde, - 0x74, 0x90, 0x59, 0x69, 0xe1, 0x59, 0x2e, 0x73, 0x10, 0x49, 0x6a, 0xac, 0x61, 0xc7, 0xc8, 0x23, - 0x2d, 0x70, 0x8f, 0x8d, 0x06, 0x77, 0x1a, 0xee, 0xbb, 0x40, 0x2d, 0xa1, 0x73, 0x78, 0xe0, 0x80, - 0x4a, 0x41, 0xdf, 0xc3, 0xcc, 0x43, 0xe6, 0xaf, 0x55, 0x0b, 0x58, 0x49, 0xcf, 0x4e, 0xe6, 0xc6, - 0xcc, 0x97, 0x10, 0x60, 0x35, 0xcd, 0x67, 0x81, 0x8c, 0x0b, 0x27, 0x8d, 0x73, 0x4a, 0x9f, 0xb6, - 0x1d, 0xb0, 0x09, 0xed, 0x68, 0x69, 0xe5, 0x80, 0x8c, 0xc8, 0xa4, 0x7f, 0x79, 0x28, 0x5c, 0x4e, - 0x34, 0x39, 0x71, 0x13, 0x17, 0x21, 0x3a, 0xd8, 0x35, 0xed, 0xae, 0xc0, 0x4a, 0x74, 0xb7, 0xd1, - 0x7d, 0x26, 0xfe, 0x69, 0x5c, 0x3c, 0x7a, 0x63, 0xb8, 0x8d, 0x8c, 0x3f, 0x68, 0xb7, 0xa1, 0x6c, - 0x40, 0xf7, 0x54, 0x0a, 0xd2, 0x82, 0xc6, 0x77, 0x7b, 0x61, 0x53, 0xd6, 0x4a, 0x9e, 0x68, 0x54, - 0xda, 0x4e, 0xf1, 0x25, 0x1b, 0xd1, 0xbe, 0x06, 0xa9, 0x6c, 0xb4, 0x46, 0x75, 0x67, 0x44, 0x26, - 0xdd, 0xf0, 0x2f, 0x62, 0xa7, 0x94, 0xae, 0x21, 0xcd, 0x22, 0x13, 0xbf, 0x46, 0x7a, 0xd0, 0xc1, - 0x78, 0xcf, 0x93, 0x07, 0x7d, 0x7b, 0xf7, 0x55, 0x72, 0xb2, 0x29, 0x39, 0xf9, 0x29, 0x39, 0xf9, - 0xac, 0x78, 0x6b, 0x53, 0xf1, 0xd6, 0x77, 0xc5, 0x5b, 0x2f, 0xe7, 0xf3, 0xc8, 0x2e, 0xf2, 0xa9, - 0x50, 0x66, 0x15, 0xf8, 0x01, 0xd7, 0xeb, 0x45, 0xfd, 0xa1, 0xe0, 0xdd, 0x23, 0x5b, 0x24, 0x90, - 0x4d, 0x77, 0x71, 0x30, 0x57, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf6, 0xf9, 0x96, 0xfd, 0xcb, - 0x01, 0x00, 0x00, + // 282 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0xb1, 0x4e, 0xc3, 0x30, + 0x10, 0x86, 0xe3, 0x52, 0x41, 0xea, 0x6e, 0x16, 0x82, 0x80, 0x84, 0x15, 0x3a, 0x85, 0x01, 0x47, + 0x82, 0x99, 0x01, 0x98, 0x18, 0x58, 0x82, 0xc4, 0xc0, 0x82, 0x9c, 0xf8, 0x48, 0x23, 0xb5, 0x71, + 0x48, 0x9c, 0x8a, 0x4c, 0xbc, 0x02, 0x8f, 0xc5, 0xd8, 0x91, 0x11, 0x25, 0x2f, 0x82, 0x7a, 0x4e, + 0x2a, 0x96, 0x2e, 0xb6, 0xef, 0xff, 0xff, 0xcf, 0xa7, 0x3b, 0x7a, 0x94, 0xcc, 0xe1, 0x5d, 0x85, + 0x95, 0x91, 0x06, 0x9e, 0xe5, 0xa2, 0x06, 0x51, 0x94, 0xda, 0x68, 0x76, 0x8c, 0x7a, 0xa6, 0x04, + 0xde, 0xb9, 0x56, 0x60, 0x5f, 0xa7, 0x27, 0xa9, 0xd6, 0xe9, 0x02, 0x42, 0x8c, 0xc5, 0xf5, 0x5b, + 0x28, 0xf3, 0xc6, 0x32, 0xb3, 0x9a, 0xd2, 0xa7, 0xed, 0x3f, 0x2c, 0xa0, 0x63, 0x25, 0x8d, 0xf4, + 0x88, 0x4f, 0x82, 0xe9, 0xd5, 0xa1, 0xb0, 0x9c, 0x18, 0x38, 0x71, 0x9b, 0x37, 0x11, 0x26, 0xd8, + 0x0d, 0x75, 0x97, 0x60, 0x24, 0xa6, 0x47, 0x98, 0x3e, 0x17, 0x3b, 0xda, 0x8b, 0xc7, 0x3e, 0x18, + 0x6d, 0x91, 0xd9, 0x27, 0x75, 0x07, 0x95, 0x79, 0xf4, 0x20, 0x29, 0x41, 0x1a, 0x50, 0xd8, 0x77, + 0x12, 0x0d, 0xe5, 0xc6, 0xa9, 0x0b, 0x85, 0xce, 0xc8, 0x3a, 0x7d, 0xc9, 0x7c, 0x3a, 0x55, 0x20, + 0x13, 0x93, 0xad, 0xd0, 0xdd, 0xf3, 0x49, 0xe0, 0x46, 0xff, 0x25, 0x76, 0x46, 0xe9, 0x0a, 0xca, + 0x2a, 0xd3, 0xf9, 0x6b, 0xa6, 0xbc, 0x31, 0xe2, 0x93, 0x5e, 0x79, 0x50, 0x77, 0xf7, 0xdf, 0x2d, + 0x27, 0xeb, 0x96, 0x93, 0xdf, 0x96, 0x93, 0xaf, 0x8e, 0x3b, 0xeb, 0x8e, 0x3b, 0x3f, 0x1d, 0x77, + 0x5e, 0x2e, 0xd2, 0xcc, 0xcc, 0xeb, 0x58, 0x24, 0x7a, 0x19, 0xda, 0x45, 0xe3, 0x79, 0xb9, 0x19, + 0x28, 0xfc, 0xe8, 0x25, 0xd3, 0x14, 0x50, 0xc5, 0xfb, 0xb8, 0x98, 0xeb, 0xbf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x80, 0xeb, 0x46, 0x6b, 0x91, 0x01, 0x00, 0x00, } func (m *StateValue) Marshal() (dAtA []byte, err error) { diff --git a/x/cheqd/types/tx.pb.go b/x/cheqd/types/tx.pb.go index 885df95fb..96dec2205 100644 --- a/x/cheqd/types/tx.pb.go +++ b/x/cheqd/types/tx.pb.go @@ -133,262 +133,6 @@ func (m *SignInfo) GetSignature() string { return "" } -type MsgCreateCredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - Controller []string `protobuf:"bytes,5,rep,name=controller,proto3" json:"controller,omitempty"` - Value *types.Any `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *MsgCreateCredDef) Reset() { *m = MsgCreateCredDef{} } -func (m *MsgCreateCredDef) String() string { return proto.CompactTextString(m) } -func (*MsgCreateCredDef) ProtoMessage() {} -func (*MsgCreateCredDef) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{2} -} -func (m *MsgCreateCredDef) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCreateCredDef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCreateCredDef.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgCreateCredDef) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateCredDef.Merge(m, src) -} -func (m *MsgCreateCredDef) XXX_Size() int { - return m.Size() -} -func (m *MsgCreateCredDef) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateCredDef.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCreateCredDef proto.InternalMessageInfo - -func (m *MsgCreateCredDef) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *MsgCreateCredDef) GetSchemaId() string { - if m != nil { - return m.SchemaId - } - return "" -} - -func (m *MsgCreateCredDef) GetTag() string { - if m != nil { - return m.Tag - } - return "" -} - -func (m *MsgCreateCredDef) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *MsgCreateCredDef) GetController() []string { - if m != nil { - return m.Controller - } - return nil -} - -func (m *MsgCreateCredDef) GetValue() *types.Any { - if m != nil { - return m.Value - } - return nil -} - -type MsgCreateCredDefResponse struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -} - -func (m *MsgCreateCredDefResponse) Reset() { *m = MsgCreateCredDefResponse{} } -func (m *MsgCreateCredDefResponse) String() string { return proto.CompactTextString(m) } -func (*MsgCreateCredDefResponse) ProtoMessage() {} -func (*MsgCreateCredDefResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{3} -} -func (m *MsgCreateCredDefResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCreateCredDefResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCreateCredDefResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgCreateCredDefResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateCredDefResponse.Merge(m, src) -} -func (m *MsgCreateCredDefResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgCreateCredDefResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateCredDefResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCreateCredDefResponse proto.InternalMessageInfo - -func (m *MsgCreateCredDefResponse) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type MsgCreateSchema struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` - AttrNames []string `protobuf:"bytes,5,rep,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` - Controller []string `protobuf:"bytes,6,rep,name=controller,proto3" json:"controller,omitempty"` -} - -func (m *MsgCreateSchema) Reset() { *m = MsgCreateSchema{} } -func (m *MsgCreateSchema) String() string { return proto.CompactTextString(m) } -func (*MsgCreateSchema) ProtoMessage() {} -func (*MsgCreateSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{4} -} -func (m *MsgCreateSchema) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCreateSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCreateSchema.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgCreateSchema) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateSchema.Merge(m, src) -} -func (m *MsgCreateSchema) XXX_Size() int { - return m.Size() -} -func (m *MsgCreateSchema) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateSchema.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCreateSchema proto.InternalMessageInfo - -func (m *MsgCreateSchema) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *MsgCreateSchema) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *MsgCreateSchema) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *MsgCreateSchema) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func (m *MsgCreateSchema) GetAttrNames() []string { - if m != nil { - return m.AttrNames - } - return nil -} - -func (m *MsgCreateSchema) GetController() []string { - if m != nil { - return m.Controller - } - return nil -} - -type MsgCreateSchemaResponse struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -} - -func (m *MsgCreateSchemaResponse) Reset() { *m = MsgCreateSchemaResponse{} } -func (m *MsgCreateSchemaResponse) String() string { return proto.CompactTextString(m) } -func (*MsgCreateSchemaResponse) ProtoMessage() {} -func (*MsgCreateSchemaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{5} -} -func (m *MsgCreateSchemaResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCreateSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCreateSchemaResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgCreateSchemaResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateSchemaResponse.Merge(m, src) -} -func (m *MsgCreateSchemaResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgCreateSchemaResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateSchemaResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCreateSchemaResponse proto.InternalMessageInfo - -func (m *MsgCreateSchemaResponse) GetId() string { - if m != nil { - return m.Id - } - return "" -} - type MsgCreateDid struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Controller []string `protobuf:"bytes,2,rep,name=controller,proto3" json:"controller,omitempty"` @@ -407,7 +151,7 @@ func (m *MsgCreateDid) Reset() { *m = MsgCreateDid{} } func (m *MsgCreateDid) String() string { return proto.CompactTextString(m) } func (*MsgCreateDid) ProtoMessage() {} func (*MsgCreateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{6} + return fileDescriptor_d0277a2196c64ae2, []int{2} } func (m *MsgCreateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -521,7 +265,7 @@ func (m *MsgCreateDidResponse) Reset() { *m = MsgCreateDidResponse{} } func (m *MsgCreateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateDidResponse) ProtoMessage() {} func (*MsgCreateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{7} + return fileDescriptor_d0277a2196c64ae2, []int{3} } func (m *MsgCreateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -576,7 +320,7 @@ func (m *MsgUpdateDid) Reset() { *m = MsgUpdateDid{} } func (m *MsgUpdateDid) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDid) ProtoMessage() {} func (*MsgUpdateDid) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{8} + return fileDescriptor_d0277a2196c64ae2, []int{4} } func (m *MsgUpdateDid) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -697,7 +441,7 @@ func (m *MsgUpdateDidResponse) Reset() { *m = MsgUpdateDidResponse{} } func (m *MsgUpdateDidResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDidResponse) ProtoMessage() {} func (*MsgUpdateDidResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d0277a2196c64ae2, []int{9} + return fileDescriptor_d0277a2196c64ae2, []int{5} } func (m *MsgUpdateDidResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -736,10 +480,6 @@ func (m *MsgUpdateDidResponse) GetId() string { func init() { proto.RegisterType((*MsgWriteRequest)(nil), "cheqdid.cheqdnode.cheqd.MsgWriteRequest") proto.RegisterType((*SignInfo)(nil), "cheqdid.cheqdnode.cheqd.SignInfo") - proto.RegisterType((*MsgCreateCredDef)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDef") - proto.RegisterType((*MsgCreateCredDefResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateCredDefResponse") - proto.RegisterType((*MsgCreateSchema)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchema") - proto.RegisterType((*MsgCreateSchemaResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateSchemaResponse") proto.RegisterType((*MsgCreateDid)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateDid") proto.RegisterType((*MsgCreateDidResponse)(nil), "cheqdid.cheqdnode.cheqd.MsgCreateDidResponse") proto.RegisterType((*MsgUpdateDid)(nil), "cheqdid.cheqdnode.cheqd.MsgUpdateDid") @@ -749,56 +489,45 @@ func init() { func init() { proto.RegisterFile("cheqd/tx.proto", fileDescriptor_d0277a2196c64ae2) } var fileDescriptor_d0277a2196c64ae2 = []byte{ - // 783 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcb, 0x6e, 0x2b, 0x35, - 0x18, 0x6e, 0x2e, 0xa7, 0xed, 0xfc, 0x49, 0x2f, 0xf2, 0x09, 0x9c, 0xa1, 0x40, 0x54, 0x06, 0xe9, - 0x28, 0x3d, 0xe8, 0x4c, 0xa0, 0x87, 0x17, 0x48, 0x5b, 0x16, 0x11, 0x0a, 0x8b, 0xa9, 0x00, 0x09, - 0x21, 0x22, 0x67, 0xfc, 0x67, 0x62, 0x3a, 0xb1, 0xd3, 0xb1, 0x13, 0x9a, 0x0d, 0xe2, 0x11, 0x78, - 0x03, 0x24, 0xb6, 0xac, 0x78, 0x0b, 0x96, 0x5d, 0xb2, 0x44, 0xed, 0x8b, 0xa0, 0xb1, 0x27, 0x97, - 0x4e, 0x9a, 0xb6, 0x0b, 0x76, 0x9c, 0x4d, 0x6b, 0x7f, 0xfe, 0xfe, 0xab, 0xbf, 0xf9, 0x1d, 0xd8, - 0x0d, 0x07, 0x78, 0xc9, 0x9a, 0xfa, 0xca, 0x1f, 0x25, 0x52, 0x4b, 0xf2, 0xc2, 0xec, 0x39, 0xf3, - 0xcd, 0x7f, 0x21, 0x19, 0xda, 0xd5, 0xc1, 0x7b, 0x91, 0x94, 0x51, 0x8c, 0x4d, 0x43, 0xeb, 0x8d, - 0xfb, 0x4d, 0x2a, 0xa6, 0xd6, 0xe6, 0x80, 0x58, 0x1f, 0xa1, 0x1c, 0x0e, 0xa5, 0xc8, 0xb0, 0x3d, - 0x8b, 0xa5, 0x9e, 0x2c, 0xf0, 0x3c, 0x23, 0x25, 0xc8, 0xce, 0xb0, 0x6f, 0x41, 0xef, 0x67, 0xd8, - 0xeb, 0xa8, 0xe8, 0xdb, 0x84, 0x6b, 0x0c, 0xf0, 0x72, 0x8c, 0x4a, 0x93, 0x06, 0x94, 0x19, 0xd5, - 0xd4, 0x2d, 0x1c, 0x16, 0x1a, 0x95, 0xe3, 0x9a, 0x6f, 0xc3, 0xfa, 0xb3, 0xb0, 0x7e, 0x4b, 0x4c, - 0x03, 0xc3, 0x20, 0x2d, 0x00, 0xc5, 0x23, 0x41, 0xf5, 0x38, 0x41, 0xe5, 0x16, 0x0f, 0x4b, 0x8d, - 0xca, 0xf1, 0x47, 0xfe, 0x9a, 0xfc, 0xfd, 0x73, 0x1e, 0x89, 0xb6, 0xe8, 0xcb, 0x60, 0xc9, 0xc8, - 0xfb, 0x01, 0xb6, 0x67, 0x38, 0xf9, 0x1c, 0xde, 0x9d, 0x60, 0xc2, 0xfb, 0x3c, 0xa4, 0x9a, 0x4b, - 0xd1, 0x1d, 0xa2, 0x1e, 0x48, 0xd6, 0xe5, 0xcc, 0xa4, 0xe2, 0x04, 0xb5, 0xe5, 0xd3, 0x8e, 0x39, - 0x6c, 0x33, 0xf2, 0x01, 0x38, 0x73, 0x7f, 0x6e, 0xd1, 0x10, 0x17, 0x80, 0xf7, 0x67, 0x01, 0xf6, - 0x3b, 0x2a, 0x3a, 0x4d, 0x90, 0x6a, 0x3c, 0xb5, 0xa5, 0x93, 0x5d, 0x28, 0xce, 0x9d, 0x16, 0x39, - 0x23, 0xef, 0x83, 0xa3, 0xc2, 0x01, 0x0e, 0x69, 0x1a, 0xcb, 0xba, 0xd8, 0xb6, 0x40, 0x9b, 0x91, - 0x7d, 0x28, 0x69, 0x1a, 0xb9, 0x25, 0x03, 0xa7, 0x4b, 0x42, 0xa0, 0xac, 0xa7, 0x23, 0x74, 0xcb, - 0x06, 0x32, 0x6b, 0x52, 0x07, 0x08, 0xa5, 0xd0, 0x89, 0x8c, 0x63, 0x4c, 0xdc, 0x67, 0x87, 0xa5, - 0x86, 0x13, 0x2c, 0x21, 0xe4, 0x15, 0x3c, 0x9b, 0xd0, 0x78, 0x8c, 0xee, 0xe6, 0x03, 0x5d, 0xb5, - 0x14, 0xef, 0x15, 0xb8, 0xf9, 0x94, 0x03, 0x54, 0x23, 0x29, 0x14, 0xe6, 0x53, 0xf7, 0x7e, 0x2f, - 0x98, 0x0b, 0xb4, 0xe4, 0x73, 0x93, 0xf3, 0x4a, 0x79, 0xb3, 0x7c, 0x8b, 0x4b, 0xf9, 0x12, 0x28, - 0x0b, 0x3a, 0xc4, 0xac, 0x2c, 0xb3, 0x26, 0x2e, 0x6c, 0x4d, 0x30, 0x51, 0x5c, 0x8a, 0xac, 0xb4, - 0xd9, 0x96, 0x7c, 0x08, 0x40, 0xb5, 0x4e, 0xba, 0x29, 0x4d, 0x65, 0xd5, 0x39, 0x29, 0xf2, 0x55, - 0x0a, 0xe4, 0x8a, 0xdf, 0xcc, 0x17, 0xef, 0x1d, 0xc1, 0x8b, 0x5c, 0x8e, 0x6b, 0xeb, 0xf9, 0xa5, - 0x0c, 0xd5, 0x39, 0xf7, 0x8c, 0xb3, 0x95, 0x62, 0xee, 0xc6, 0x2a, 0xae, 0x34, 0xfa, 0x7b, 0x78, - 0x7e, 0x8f, 0x88, 0xdc, 0x92, 0x11, 0xe7, 0x27, 0x6b, 0xc5, 0xf9, 0xcd, 0x8a, 0xb4, 0x02, 0xb2, - 0x2a, 0x37, 0xf2, 0x12, 0x76, 0xe9, 0x58, 0x0f, 0x50, 0xe8, 0x0c, 0x77, 0xcb, 0x26, 0x83, 0x1c, - 0x4a, 0x8e, 0x60, 0x9f, 0x2a, 0x85, 0xc9, 0x72, 0x0a, 0xb6, 0x6d, 0x7b, 0x73, 0x3c, 0x73, 0xf9, - 0x06, 0xde, 0x09, 0xe9, 0x88, 0xf6, 0x78, 0xcc, 0xf5, 0xb4, 0xcb, 0xc5, 0x44, 0x66, 0x9e, 0x6d, - 0x1f, 0x6b, 0x8b, 0xc3, 0xf6, 0xfc, 0x2c, 0x67, 0xc4, 0x30, 0xc6, 0xc8, 0x1a, 0x6d, 0xe5, 0x8d, - 0xce, 0xe6, 0x67, 0xe4, 0x63, 0xd8, 0xb9, 0xc0, 0x69, 0x97, 0x46, 0x09, 0xe2, 0x10, 0x85, 0x76, - 0xb7, 0x0d, 0xb9, 0x7a, 0x81, 0xd3, 0xd6, 0x0c, 0x23, 0x1e, 0xec, 0xd0, 0x58, 0xc9, 0xee, 0x85, - 0x90, 0x3f, 0x89, 0x2e, 0x55, 0xae, 0x63, 0x48, 0x95, 0x14, 0xfc, 0x32, 0xc5, 0x5a, 0x8a, 0x9c, - 0xc0, 0x96, 0xc2, 0x64, 0xc2, 0x43, 0x74, 0xc1, 0xf4, 0xb5, 0xb1, 0xfe, 0xa3, 0xb7, 0xbc, 0x2f, - 0x04, 0x1b, 0x49, 0x2e, 0x74, 0x30, 0x33, 0x4c, 0xc5, 0x96, 0xde, 0x1a, 0x5e, 0x69, 0xb7, 0x62, - 0x22, 0xcc, 0xb6, 0xde, 0x4b, 0xa8, 0x2d, 0x2b, 0x60, 0xad, 0x54, 0x7e, 0xb3, 0x52, 0xf9, 0x7a, - 0xc4, 0xde, 0x4a, 0xe5, 0xff, 0x29, 0x95, 0x74, 0x2e, 0x65, 0x23, 0x2a, 0x9d, 0xdc, 0x55, 0x3b, - 0xfc, 0x33, 0xa4, 0xcd, 0x32, 0x25, 0xcd, 0x05, 0xb2, 0x4e, 0x49, 0xc7, 0x7f, 0x94, 0xa0, 0xd4, - 0x51, 0x11, 0x89, 0x61, 0xe7, 0xee, 0x43, 0xb1, 0x3e, 0xd9, 0xdc, 0xa3, 0x79, 0xf0, 0xd9, 0x43, - 0xcc, 0xfb, 0x47, 0xf9, 0x8f, 0x50, 0xbd, 0x33, 0xb6, 0x9f, 0x1e, 0xec, 0xd3, 0xc7, 0x83, 0xe5, - 0xc6, 0x2c, 0x03, 0x67, 0x31, 0x52, 0x9f, 0x1e, 0xe8, 0xf5, 0xe3, 0x81, 0x96, 0xfb, 0xca, 0xc0, - 0x59, 0x7c, 0x8d, 0xff, 0x51, 0x94, 0x95, 0xdb, 0x3b, 0x39, 0xfd, 0xeb, 0xa6, 0x5e, 0xb8, 0xbe, - 0xa9, 0x17, 0xfe, 0xb9, 0xa9, 0x17, 0x7e, 0xbd, 0xad, 0x6f, 0x5c, 0xdf, 0xd6, 0x37, 0xfe, 0xbe, - 0xad, 0x6f, 0x7c, 0x77, 0x14, 0x71, 0x3d, 0x18, 0xf7, 0xfc, 0x50, 0x0e, 0x9b, 0xd9, 0x8f, 0x9d, - 0xf4, 0xef, 0xeb, 0xd4, 0x63, 0xf3, 0x2a, 0x83, 0xd2, 0xe7, 0x4f, 0xf5, 0x36, 0xcd, 0xc3, 0xfb, - 0xe6, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x81, 0x36, 0xbb, 0x7e, 0x09, 0x00, 0x00, + // 594 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x55, 0xcd, 0x6e, 0xd3, 0x4c, + 0x14, 0x6d, 0xd2, 0x7e, 0x6d, 0x7d, 0xd3, 0x9f, 0x4f, 0x43, 0x00, 0x53, 0x81, 0x55, 0x8c, 0x54, + 0xa5, 0x42, 0x75, 0xa4, 0x96, 0x17, 0x48, 0x5b, 0x16, 0x11, 0xca, 0xc6, 0x08, 0x90, 0x10, 0xc2, + 0x9a, 0x78, 0x6e, 0x9d, 0x51, 0xdd, 0x19, 0xd7, 0x33, 0x09, 0xf5, 0x06, 0xf1, 0x08, 0xbc, 0x01, + 0xaf, 0xc3, 0xb2, 0xec, 0x58, 0xa2, 0xf6, 0x45, 0x90, 0xc7, 0x8e, 0x13, 0x25, 0x84, 0x15, 0x3b, + 0xd8, 0x24, 0x99, 0x73, 0xcf, 0x3d, 0x73, 0xee, 0xe4, 0x68, 0x06, 0xb6, 0xc2, 0x01, 0x5e, 0xb2, + 0xb6, 0xbe, 0xf2, 0x92, 0x54, 0x6a, 0x49, 0xee, 0x9b, 0x35, 0x67, 0x9e, 0xf9, 0x16, 0x92, 0x61, + 0xf1, 0x6b, 0xe7, 0x41, 0x24, 0x65, 0x14, 0x63, 0xdb, 0xd0, 0xfa, 0xc3, 0xb3, 0x36, 0x15, 0x59, + 0xd1, 0xb3, 0xb3, 0x5d, 0x68, 0xe4, 0x5d, 0x06, 0x70, 0x3f, 0xc2, 0x76, 0x4f, 0x45, 0x6f, 0x52, + 0xae, 0xd1, 0xc7, 0xcb, 0x21, 0x2a, 0x4d, 0x5a, 0xb0, 0xc2, 0xa8, 0xa6, 0x76, 0x6d, 0xb7, 0xd6, + 0x6a, 0x1c, 0x36, 0xbd, 0x42, 0xcd, 0x1b, 0xab, 0x79, 0x1d, 0x91, 0xf9, 0x86, 0x41, 0x3a, 0x00, + 0x8a, 0x47, 0x82, 0xea, 0x61, 0x8a, 0xca, 0xae, 0xef, 0x2e, 0xb7, 0x1a, 0x87, 0x8f, 0xbd, 0x05, + 0xb6, 0xbc, 0x97, 0x3c, 0x12, 0x5d, 0x71, 0x26, 0xfd, 0xa9, 0x26, 0xf7, 0x3d, 0xac, 0x8f, 0x71, + 0xf2, 0x0c, 0xee, 0x8d, 0x30, 0xe5, 0x67, 0x3c, 0xa4, 0x9a, 0x4b, 0x11, 0x5c, 0xa0, 0x1e, 0x48, + 0x16, 0x70, 0x66, 0xac, 0x58, 0x7e, 0x73, 0xba, 0xda, 0x33, 0xc5, 0x2e, 0x23, 0x0f, 0xc1, 0xaa, + 0xf4, 0xec, 0xba, 0x21, 0x4e, 0x00, 0xf7, 0xd3, 0x0a, 0x6c, 0xf4, 0x54, 0x74, 0x92, 0x22, 0xd5, + 0x78, 0xca, 0x19, 0xd9, 0x82, 0x7a, 0x25, 0x58, 0xe7, 0x8c, 0x38, 0x00, 0xa1, 0x14, 0x3a, 0x95, + 0x71, 0x8c, 0xa9, 0x99, 0xc1, 0xf2, 0xa7, 0x10, 0xf2, 0x0e, 0xee, 0xfc, 0xc2, 0x94, 0xbd, 0x6c, + 0x86, 0x7d, 0xba, 0x70, 0xd8, 0xd7, 0x73, 0x56, 0x7d, 0x32, 0x6f, 0x9f, 0xec, 0xc1, 0x16, 0x1d, + 0xea, 0x01, 0x0a, 0x5d, 0xe2, 0xf6, 0x8a, 0x71, 0x30, 0x83, 0x92, 0x7d, 0xf8, 0x9f, 0x2a, 0x85, + 0xe9, 0xb4, 0x85, 0xff, 0x0c, 0x73, 0xbb, 0xc2, 0x4b, 0xc9, 0x23, 0xb8, 0x1b, 0xd2, 0x84, 0xf6, + 0x79, 0xcc, 0x75, 0x16, 0x70, 0x31, 0x92, 0xa5, 0xf2, 0xaa, 0xe1, 0x37, 0x27, 0xc5, 0x6e, 0x55, + 0x9b, 0x69, 0x62, 0x18, 0x63, 0x54, 0x34, 0xad, 0xcd, 0x36, 0x9d, 0x56, 0x35, 0xf2, 0x04, 0x36, + 0xcf, 0x31, 0x0b, 0x68, 0x94, 0x22, 0x5e, 0xa0, 0xd0, 0xf6, 0xba, 0x21, 0x6f, 0x9c, 0x63, 0xd6, + 0x19, 0x63, 0xc4, 0x85, 0x4d, 0x1a, 0x2b, 0x19, 0x9c, 0x0b, 0xf9, 0x41, 0x04, 0x54, 0xd9, 0x96, + 0x21, 0x35, 0x72, 0xf0, 0x45, 0x8e, 0x75, 0x14, 0x39, 0x86, 0x35, 0x85, 0xe9, 0x88, 0x87, 0x68, + 0x83, 0x39, 0xd7, 0xd6, 0xe2, 0x10, 0x15, 0xbc, 0xe7, 0x82, 0x25, 0x92, 0x0b, 0xed, 0x8f, 0x1b, + 0x89, 0x0d, 0x6b, 0xf9, 0xbf, 0x86, 0x57, 0xda, 0x6e, 0x98, 0x1d, 0xc6, 0x4b, 0x77, 0x0f, 0x9a, + 0xd3, 0x09, 0xf0, 0x51, 0x25, 0x52, 0x28, 0x9c, 0x4d, 0x82, 0xfb, 0xa5, 0x88, 0xca, 0xab, 0x84, + 0xfd, 0x8b, 0xca, 0xdf, 0x19, 0x15, 0xf2, 0x08, 0x60, 0x84, 0xa9, 0xca, 0x4f, 0x8e, 0x33, 0x7b, + 0xa3, 0xb8, 0x4c, 0x4a, 0xa4, 0xcb, 0xca, 0x24, 0x55, 0x01, 0x59, 0x94, 0xa4, 0xc3, 0x6f, 0x35, + 0x58, 0xee, 0xa9, 0x88, 0x30, 0xb0, 0x26, 0x17, 0xcf, 0x62, 0xa3, 0x33, 0x17, 0xf0, 0xce, 0xc1, + 0xef, 0x98, 0xf3, 0x39, 0x66, 0x60, 0x4d, 0x32, 0xfb, 0x87, 0x76, 0x99, 0x9b, 0xf1, 0xf8, 0xe4, + 0xeb, 0x8d, 0x53, 0xbb, 0xbe, 0x71, 0x6a, 0x3f, 0x6e, 0x9c, 0xda, 0xe7, 0x5b, 0x67, 0xe9, 0xfa, + 0xd6, 0x59, 0xfa, 0x7e, 0xeb, 0x2c, 0xbd, 0xdd, 0x8f, 0xb8, 0x1e, 0x0c, 0xfb, 0x5e, 0x28, 0x2f, + 0xda, 0xc5, 0xf3, 0x62, 0x3e, 0x0f, 0x72, 0xc5, 0xf6, 0x55, 0x09, 0xe9, 0x2c, 0x41, 0xd5, 0x5f, + 0x35, 0x8f, 0xc8, 0xd1, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x51, 0x45, 0x39, 0xaa, 0xcb, 0x06, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -813,9 +542,6 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { - // this line is used by starport scaffolding # proto/tx/rpc - CreateCredDef(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) - CreateSchema(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) CreateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) UpdateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgUpdateDidResponse, error) } @@ -828,24 +554,6 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) CreateCredDef(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateCredDefResponse, error) { - out := new(MsgCreateCredDefResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateCredDef", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) CreateSchema(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateSchemaResponse, error) { - out := new(MsgCreateSchemaResponse) - err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateSchema", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) CreateDid(ctx context.Context, in *MsgWriteRequest, opts ...grpc.CallOption) (*MsgCreateDidResponse, error) { out := new(MsgCreateDidResponse) err := c.cc.Invoke(ctx, "/cheqdid.cheqdnode.cheqd.Msg/CreateDid", in, out, opts...) @@ -866,9 +574,6 @@ func (c *msgClient) UpdateDid(ctx context.Context, in *MsgWriteRequest, opts ... // MsgServer is the server API for Msg service. type MsgServer interface { - // this line is used by starport scaffolding # proto/tx/rpc - CreateCredDef(context.Context, *MsgWriteRequest) (*MsgCreateCredDefResponse, error) - CreateSchema(context.Context, *MsgWriteRequest) (*MsgCreateSchemaResponse, error) CreateDid(context.Context, *MsgWriteRequest) (*MsgCreateDidResponse, error) UpdateDid(context.Context, *MsgWriteRequest) (*MsgUpdateDidResponse, error) } @@ -877,12 +582,6 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) CreateCredDef(ctx context.Context, req *MsgWriteRequest) (*MsgCreateCredDefResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateCredDef not implemented") -} -func (*UnimplementedMsgServer) CreateSchema(ctx context.Context, req *MsgWriteRequest) (*MsgCreateSchemaResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateSchema not implemented") -} func (*UnimplementedMsgServer) CreateDid(ctx context.Context, req *MsgWriteRequest) (*MsgCreateDidResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateDid not implemented") } @@ -894,42 +593,6 @@ func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } -func _Msg_CreateCredDef_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgWriteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).CreateCredDef(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateCredDef", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateCredDef(ctx, req.(*MsgWriteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_CreateSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgWriteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).CreateSchema(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cheqdid.cheqdnode.cheqd.Msg/CreateSchema", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateSchema(ctx, req.(*MsgWriteRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_CreateDid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgWriteRequest) if err := dec(in); err != nil { @@ -970,14 +633,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "cheqdid.cheqdnode.cheqd.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "CreateCredDef", - Handler: _Msg_CreateCredDef_Handler, - }, - { - MethodName: "CreateSchema", - Handler: _Msg_CreateSchema_Handler, - }, { MethodName: "CreateDid", Handler: _Msg_CreateDid_Handler, @@ -1077,7 +732,7 @@ func (m *SignInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *MsgCreateCredDef) Marshal() (dAtA []byte, err error) { +func (m *MsgCreateDid) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1087,247 +742,46 @@ func (m *MsgCreateCredDef) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgCreateCredDef) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgCreateDid) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgCreateCredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Value != nil { - { - size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.Context) > 0 { + for iNdEx := len(m.Context) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Context[iNdEx]) + copy(dAtA[i:], m.Context[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Context[iNdEx]))) + i-- + dAtA[i] = 0x5a + } + } + if len(m.Service) > 0 { + for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Service[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x52 } - i-- - dAtA[i] = 0x32 } - if len(m.Controller) > 0 { - for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Controller[iNdEx]) - copy(dAtA[i:], m.Controller[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Controller[iNdEx]))) + if len(m.AlsoKnownAs) > 0 { + for iNdEx := len(m.AlsoKnownAs) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AlsoKnownAs[iNdEx]) + copy(dAtA[i:], m.AlsoKnownAs[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AlsoKnownAs[iNdEx]))) i-- - dAtA[i] = 0x2a - } - } - if len(m.Type) > 0 { - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintTx(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0x22 - } - if len(m.Tag) > 0 { - i -= len(m.Tag) - copy(dAtA[i:], m.Tag) - i = encodeVarintTx(dAtA, i, uint64(len(m.Tag))) - i-- - dAtA[i] = 0x1a - } - if len(m.SchemaId) > 0 { - i -= len(m.SchemaId) - copy(dAtA[i:], m.SchemaId) - i = encodeVarintTx(dAtA, i, uint64(len(m.SchemaId))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgCreateCredDefResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgCreateCredDefResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateCredDefResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgCreateSchema) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgCreateSchema) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Controller) > 0 { - for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Controller[iNdEx]) - copy(dAtA[i:], m.Controller[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Controller[iNdEx]))) - i-- - dAtA[i] = 0x32 - } - } - if len(m.AttrNames) > 0 { - for iNdEx := len(m.AttrNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AttrNames[iNdEx]) - copy(dAtA[i:], m.AttrNames[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.AttrNames[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } - if len(m.Version) > 0 { - i -= len(m.Version) - copy(dAtA[i:], m.Version) - i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) - i-- - dAtA[i] = 0x22 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintTx(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0x1a - } - if len(m.Type) > 0 { - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintTx(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgCreateSchemaResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgCreateSchemaResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintTx(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgCreateDid) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgCreateDid) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateDid) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Context) > 0 { - for iNdEx := len(m.Context) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Context[iNdEx]) - copy(dAtA[i:], m.Context[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Context[iNdEx]))) - i-- - dAtA[i] = 0x5a - } - } - if len(m.Service) > 0 { - for iNdEx := len(m.Service) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Service[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x52 - } - } - if len(m.AlsoKnownAs) > 0 { - for iNdEx := len(m.AlsoKnownAs) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AlsoKnownAs[iNdEx]) - copy(dAtA[i:], m.AlsoKnownAs[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.AlsoKnownAs[iNdEx]))) - i-- - dAtA[i] = 0x4a + dAtA[i] = 0x4a } } if len(m.KeyAgreement) > 0 { @@ -1652,104 +1106,6 @@ func (m *SignInfo) Size() (n int) { return n } -func (m *MsgCreateCredDef) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.SchemaId) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Tag) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Type) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if len(m.Controller) > 0 { - for _, s := range m.Controller { - l = len(s) - n += 1 + l + sovTx(uint64(l)) - } - } - if m.Value != nil { - l = m.Value.Size() - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgCreateCredDefResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgCreateSchema) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Type) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Name) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Version) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if len(m.AttrNames) > 0 { - for _, s := range m.AttrNames { - l = len(s) - n += 1 + l + sovTx(uint64(l)) - } - } - if len(m.Controller) > 0 { - for _, s := range m.Controller { - l = len(s) - n += 1 + l + sovTx(uint64(l)) - } - } - return n -} - -func (m *MsgCreateSchemaResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - func (m *MsgCreateDid) Size() (n int) { if m == nil { return 0 @@ -2166,658 +1522,6 @@ func (m *SignInfo) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCreateCredDef) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateCredDef: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateCredDef: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SchemaId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SchemaId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Tag", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Tag = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Value == nil { - m.Value = &types.Any{} - } - if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgCreateCredDefResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateCredDefResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateCredDefResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgCreateSchema) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateSchema: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateSchema: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttrNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttrNames = append(m.AttrNames, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgCreateSchemaResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateSchemaResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *MsgCreateDid) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 From d1319da978d3d07cfc6bba7c8176298368603030 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 16:48:09 +0300 Subject: [PATCH 66/74] removed cred_def and schema from handler and keeper and types --- x/cheqd/handler.go | 8 - x/cheqd/keeper/cred_def.go | 99 --- x/cheqd/keeper/grpc_query_cred_def.go | 29 - x/cheqd/keeper/grpc_query_schema.go | 29 - x/cheqd/keeper/keeper.go | 15 +- x/cheqd/keeper/msg_server_cred_def.go | 37 - x/cheqd/keeper/msg_server_schema.go | 47 -- x/cheqd/keeper/query.go | 7 - x/cheqd/keeper/query_cred_def.go | 25 - x/cheqd/keeper/query_schema.go | 25 - x/cheqd/keeper/schema.go | 99 --- x/cheqd/tests/handler_test.go | 124 --- x/cheqd/tests/handler_test_setup.go | 56 -- x/cheqd/types/codec.go | 7 - x/cheqd/types/credDef.pb.go | 1072 ------------------------- x/cheqd/types/messages.go | 8 - x/cheqd/types/messages_cred_def.go | 75 -- x/cheqd/types/messages_schema.go | 83 -- x/cheqd/types/msg_test.go | 317 -------- x/cheqd/types/query.go | 8 - x/cheqd/types/schema.pb.go | 584 -------------- x/cheqd/types/stateValue.go | 38 - 22 files changed, 1 insertion(+), 2791 deletions(-) delete mode 100644 x/cheqd/keeper/cred_def.go delete mode 100644 x/cheqd/keeper/grpc_query_cred_def.go delete mode 100644 x/cheqd/keeper/grpc_query_schema.go delete mode 100644 x/cheqd/keeper/msg_server_cred_def.go delete mode 100644 x/cheqd/keeper/msg_server_schema.go delete mode 100644 x/cheqd/keeper/query_cred_def.go delete mode 100644 x/cheqd/keeper/query_schema.go delete mode 100644 x/cheqd/keeper/schema.go delete mode 100644 x/cheqd/types/credDef.pb.go delete mode 100644 x/cheqd/types/messages_cred_def.go delete mode 100644 x/cheqd/types/messages_schema.go delete mode 100644 x/cheqd/types/schema.pb.go diff --git a/x/cheqd/handler.go b/x/cheqd/handler.go index ea1cfe002..d2ad6a239 100644 --- a/x/cheqd/handler.go +++ b/x/cheqd/handler.go @@ -23,14 +23,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { switch parsedMsg.Data.TypeUrl { // this line is used by starport scaffolding # 1 - case types.MessageCreateCredDef: - res, err := msgServer.CreateCredDef(sdk.WrapSDKContext(ctx), parsedMsg) - return sdk.WrapServiceResult(ctx, res, err) - - case types.MessageCreateSchema: - res, err := msgServer.CreateSchema(sdk.WrapSDKContext(ctx), parsedMsg) - return sdk.WrapServiceResult(ctx, res, err) - case types.MessageCreateDid: res, err := msgServer.CreateDid(sdk.WrapSDKContext(ctx), parsedMsg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/cheqd/keeper/cred_def.go b/x/cheqd/keeper/cred_def.go deleted file mode 100644 index 51cf48444..000000000 --- a/x/cheqd/keeper/cred_def.go +++ /dev/null @@ -1,99 +0,0 @@ -package keeper - -import ( - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "strconv" -) - -// GetCredDefCount get the total number of credDef -func (k Keeper) GetCredDefCount(ctx sdk.Context) uint64 { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefCountKey)) - byteKey := types.KeyPrefix(types.CredDefCountKey) - bz := store.Get(byteKey) - - // Count doesn't exist: no element - if bz == nil { - return 0 - } - - // Parse bytes - count, err := strconv.ParseUint(string(bz), 10, 64) - if err != nil { - // Panic because the count should be always formattable to iint64 - panic("cannot decode count") - } - - return count -} - -// SetCredDefCount set the total number of credDef -func (k Keeper) SetCredDefCount(ctx sdk.Context, count uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefCountKey)) - byteKey := types.KeyPrefix(types.CredDefCountKey) - bz := []byte(strconv.FormatUint(count, 10)) - store.Set(byteKey, bz) -} - -// AppendCredDef appends a CredDef in the store with a new id and update the count -func (k Keeper) AppendCredDef( - ctx sdk.Context, - CredDef types.CredDef, - metadata *types.Metadata, -) (*string, error) { - // Create the CredDef - count := k.GetCredDefCount(ctx) - - err := k.SetCredDef(ctx, CredDef, metadata) - if err != nil { - return nil, err - } - - // Update CredDef count - k.SetCredDefCount(ctx, count+1) - - return &CredDef.Id, nil -} - -// SetCredDef set a specific cred def in the store -func (k Keeper) SetCredDef(ctx sdk.Context, CredDef types.CredDef, metadata *types.Metadata) error { - stateValue, err := types.NewStateValue(&CredDef, metadata) - if err != nil { - return types.ErrSetToState.Wrap(err.Error()) - } - - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - b := k.cdc.MustMarshal(stateValue) - store.Set(GetCredDefIDBytes(CredDef.Id), b) - return nil -} - -// GetCredDef returns a credDef from its id -func (k Keeper) GetCredDef(ctx sdk.Context, id string) (*types.StateValue, error) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - - if !k.HasCredDef(ctx, id) { - return nil, sdkerrors.ErrNotFound - } - - var value types.StateValue - var bytes = store.Get(GetCredDefIDBytes(id)) - if err := k.cdc.Unmarshal(bytes, &value); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) - } - - return &value, nil -} - -// HasCredDef checks if the credDef exists in the store -func (k Keeper) HasCredDef(ctx sdk.Context, id string) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.CredDefKey)) - return store.Has(GetCredDefIDBytes(id)) -} - -// GetCredDefIDBytes returns the byte representation of the ID -func GetCredDefIDBytes(id string) []byte { - return []byte(id) -} diff --git a/x/cheqd/keeper/grpc_query_cred_def.go b/x/cheqd/keeper/grpc_query_cred_def.go deleted file mode 100644 index 206cbfafc..000000000 --- a/x/cheqd/keeper/grpc_query_cred_def.go +++ /dev/null @@ -1,29 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) CredDef(c context.Context, req *types.QueryGetCredDefRequest) (*types.QueryGetCredDefResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - state, err := k.GetCredDef(ctx, req.Id) - if err != nil { - return nil, err - } - - credDef, err := state.GetCredDef() - if err != nil { - return nil, err - } - - return &types.QueryGetCredDefResponse{CredDef: credDef, Metadata: state.Metadata}, nil -} diff --git a/x/cheqd/keeper/grpc_query_schema.go b/x/cheqd/keeper/grpc_query_schema.go deleted file mode 100644 index 7d7c92fd9..000000000 --- a/x/cheqd/keeper/grpc_query_schema.go +++ /dev/null @@ -1,29 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cheqd/cheqd-node/x/cheqd/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) Schema(c context.Context, req *types.QueryGetSchemaRequest) (*types.QueryGetSchemaResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - state, err := k.GetSchema(ctx, req.Id) - if err != nil { - return nil, err - } - - schema, err := state.GetSchema() - if err != nil { - return nil, err - } - - return &types.QueryGetSchemaResponse{Schema: schema, Metadata: state.Metadata}, nil -} diff --git a/x/cheqd/keeper/keeper.go b/x/cheqd/keeper/keeper.go index eb250b042..6ef4ccade 100644 --- a/x/cheqd/keeper/keeper.go +++ b/x/cheqd/keeper/keeper.go @@ -2,7 +2,6 @@ package keeper import ( "fmt" - "github.com/cheqd/cheqd-node/x/cheqd/utils" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/tendermint/tendermint/libs/log" @@ -32,11 +31,7 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { // IsDidUsed checks if the did is used by DIDDoc, Schema or CredDef func (k Keeper) IsDidUsed(ctx sdk.Context, did string) bool { - if k.HasDid(ctx, did) || k.HasSchema(ctx, utils.GetSchemaFromDid(did)) ||k.HasCredDef(ctx, utils.GetCredDefFromDid(did)) { - return true - } - - return false + return k.HasDid(ctx, did) } func (k Keeper) EnsureDidIsNotUsed(ctx sdk.Context, did string) error { @@ -44,13 +39,5 @@ func (k Keeper) EnsureDidIsNotUsed(ctx sdk.Context, did string) error { return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID is already used by DIDDoc %s", did)) } - if k.HasSchema(ctx, utils.GetSchemaFromDid(did)) { - return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID is already used by Schema %s", did)) - } - - if k.HasCredDef(ctx, utils.GetCredDefFromDid(did)) { - return sdkerrors.Wrap(types.ErrDidDocExists, fmt.Sprintf("DID is already used by CredDef %s", did)) - } - return nil } diff --git a/x/cheqd/keeper/msg_server_cred_def.go b/x/cheqd/keeper/msg_server_cred_def.go deleted file mode 100644 index d20c238a7..000000000 --- a/x/cheqd/keeper/msg_server_cred_def.go +++ /dev/null @@ -1,37 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cheqd/cheqd-node/x/cheqd/types" -) - -func (k msgServer) CreateCredDef(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateCredDefResponse, error) { - return nil, types.ErrNotImplemented.Wrap("CreateCredDef") - - /* - ctx := sdk.UnwrapSDKContext(goCtx) - prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" - - var credDefMsg types.MsgCreateCredDef - err := k.cdc.Unmarshal(msg.Data.Value, &credDefMsg) - if err != nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) - } - - if err := credDefMsg.ValidateBasic(prefix); err != nil { - return nil, err - } - - if err := k.VerifySignature(&ctx, msg, credDefMsg.GetSigners()); err != nil { - return nil, err - } - - // Checks that the did doesn't exist - if err := k.EnsureDidIsNotUsed(ctx, credDefMsg.GetDid()); err != nil { - return nil, err - } - - // TODO: implement cred def - */ -} diff --git a/x/cheqd/keeper/msg_server_schema.go b/x/cheqd/keeper/msg_server_schema.go deleted file mode 100644 index 37a141557..000000000 --- a/x/cheqd/keeper/msg_server_schema.go +++ /dev/null @@ -1,47 +0,0 @@ -package keeper - -import ( - "context" - "github.com/cheqd/cheqd-node/x/cheqd/types" -) - -func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgWriteRequest) (*types.MsgCreateSchemaResponse, error) { - return nil, types.ErrNotImplemented.Wrap("Schema") - - /* - ctx := sdk.UnwrapSDKContext(goCtx) - prefix := types.DidPrefix + ":" + types.DidMethod + ":" + ctx.ChainID() + ":" - - var schemaMsg types.MsgCreateSchema - err := k.cdc.Unmarshal(msg.Data.Value, &schemaMsg) - if err != nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) - } - - if err := schemaMsg.ValidateBasic(prefix); err != nil { - return nil, err - } - - if err := k.VerifySignature(&ctx, msg, schemaMsg.GetSigners()); err != nil { - return nil, err - } - - // Checks that the did doesn't exist - if err := k.EnsureDidIsNotUsed(ctx, schemaMsg.GetDid()); err != nil { - return nil, err - } - - k.AppendSchema( - ctx, - schemaMsg.Id, - schemaMsg.Type, - schemaMsg.Name, - schemaMsg.Version, - schemaMsg.AttrNames, - schemaMsg.Controller, - ) - - return &types.MsgCreateSchemaResponse{ - Id: schemaMsg.Id, - }, nil*/ -} diff --git a/x/cheqd/keeper/query.go b/x/cheqd/keeper/query.go index 22a1e0ee8..c4a323118 100644 --- a/x/cheqd/keeper/query.go +++ b/x/cheqd/keeper/query.go @@ -19,13 +19,6 @@ func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { ) switch path[0] { - // this line is used by starport scaffolding # 2 - case types.QueryGetCredDef: - return getCredDef(ctx, path[1], k, legacyQuerierCdc) - - case types.QueryGetSchema: - return getSchema(ctx, path[1], k, legacyQuerierCdc) - case types.QueryGetDid: return getDid(ctx, path[1], k, legacyQuerierCdc) diff --git a/x/cheqd/keeper/query_cred_def.go b/x/cheqd/keeper/query_cred_def.go deleted file mode 100644 index 72f6fe36b..000000000 --- a/x/cheqd/keeper/query_cred_def.go +++ /dev/null @@ -1,25 +0,0 @@ -package keeper - -import ( - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -func getCredDef(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - if !keeper.HasCredDef(ctx, id) { - return nil, sdkerrors.ErrKeyNotFound - } - - msg, err := keeper.GetCredDef(ctx, id) - if err != nil { - return nil, err - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} diff --git a/x/cheqd/keeper/query_schema.go b/x/cheqd/keeper/query_schema.go deleted file mode 100644 index b8ba8c457..000000000 --- a/x/cheqd/keeper/query_schema.go +++ /dev/null @@ -1,25 +0,0 @@ -package keeper - -import ( - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -func getSchema(ctx sdk.Context, id string, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) { - if !keeper.HasSchema(ctx, id) { - return nil, sdkerrors.ErrKeyNotFound - } - - msg, err := keeper.GetSchema(ctx, id) - if err != nil { - return nil, err - } - - bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, msg) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) - } - - return bz, nil -} diff --git a/x/cheqd/keeper/schema.go b/x/cheqd/keeper/schema.go deleted file mode 100644 index a3e497309..000000000 --- a/x/cheqd/keeper/schema.go +++ /dev/null @@ -1,99 +0,0 @@ -package keeper - -import ( - "github.com/cheqd/cheqd-node/x/cheqd/types" - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "strconv" -) - -// GetSchemaCount get the total number of schema -func (k Keeper) GetSchemaCount(ctx sdk.Context) uint64 { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaCountKey)) - byteKey := types.KeyPrefix(types.SchemaCountKey) - bz := store.Get(byteKey) - - // Count doesn't exist: no element - if bz == nil { - return 0 - } - - // Parse bytes - count, err := strconv.ParseUint(string(bz), 10, 64) - if err != nil { - // Panic because the count should be always formattable to iint64 - panic("cannot decode count") - } - - return count -} - -// SetSchemaCount set the total number of schema -func (k Keeper) SetSchemaCount(ctx sdk.Context, count uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaCountKey)) - byteKey := types.KeyPrefix(types.SchemaCountKey) - bz := []byte(strconv.FormatUint(count, 10)) - store.Set(byteKey, bz) -} - -// AppendSchema appends a schema in the store with a new id and update the count -func (k Keeper) AppendSchema( - ctx sdk.Context, - schema types.Schema, - metadata *types.Metadata, -) (*string, error) { - // Create the schema - count := k.GetSchemaCount(ctx) - - err := k.SetSchema(ctx, schema, metadata) - if err != nil { - return nil, err - } - - // Update schema count - k.SetSchemaCount(ctx, count+1) - - return &schema.Id, nil -} - -// SetSchema set a specific cred def in the store -func (k Keeper) SetSchema(ctx sdk.Context, schema types.Schema, metadata *types.Metadata) error { - stateValue, err := types.NewStateValue(&schema, metadata) - if err != nil { - return types.ErrSetToState.Wrap(err.Error()) - } - - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - b := k.cdc.MustMarshal(stateValue) - store.Set(GetSchemaIDBytes(schema.Id), b) - return nil -} - -// GetSchema returns a schema from its id -func (k Keeper) GetSchema(ctx sdk.Context, id string) (*types.StateValue, error) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - - if !k.HasSchema(ctx, id) { - return nil, sdkerrors.ErrNotFound - } - - var value types.StateValue - var bytes = store.Get(GetSchemaIDBytes(id)) - if err := k.cdc.Unmarshal(bytes, &value); err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidType, err.Error()) - } - - return &value, nil -} - -// HasSchema checks if the schema exists in the store -func (k Keeper) HasSchema(ctx sdk.Context, id string) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.SchemaKey)) - return store.Has(GetSchemaIDBytes(id)) -} - -// GetSchemaIDBytes returns the byte representation of the ID -func GetSchemaIDBytes(id string) []byte { - return []byte(id) -} diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 7e6f1cd44..9170731cf 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -3,12 +3,9 @@ package tests import ( "crypto/ed25519" "github.com/btcsuite/btcutil/base58" - "log" "testing" - "crypto/rand" "github.com/cheqd/cheqd-node/x/cheqd/types" - ptypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/stretchr/testify/require" ) @@ -1047,108 +1044,6 @@ func TestUpdateDid(t *testing.T) { } } -func TestHandler_UpdateDid(t *testing.T) { - setup := Setup() - - //Init did - keys, did, _ := setup.InitDid("did:cheqd:test:alice") - - // query Did - state, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) - - //Init priv key - newPubKey, _, _ := ed25519.GenerateKey(rand.Reader) - - oldDid, _ := state.GetDid() - didMsgUpdate := setup.UpdateDid(oldDid, newPubKey, state.Metadata.VersionId) - dataUpdate, _ := ptypes.NewAnyWithValue(didMsgUpdate) - resultUpdate, _ := setup.Handler(setup.Ctx, setup.WrapRequest(dataUpdate, keys)) - - didUpdated := types.MsgUpdateDidResponse{} - errUpdate := didUpdated.Unmarshal(resultUpdate.Data) - - if errUpdate != nil { - log.Fatal(errUpdate) - } - - // query Did - updatedState, _ := setup.Keeper.GetDid(&setup.Ctx, did.Id) - receivedUpdatedDid, _ := updatedState.GetDid() - - // check - require.Equal(t, didUpdated.Id, receivedUpdatedDid.Id) - require.Equal(t, didMsgUpdate.Controller, receivedUpdatedDid.Controller) - require.Equal(t, didMsgUpdate.VerificationMethod, receivedUpdatedDid.VerificationMethod) - require.Equal(t, didMsgUpdate.Authentication, receivedUpdatedDid.Authentication) - require.Equal(t, didMsgUpdate.AssertionMethod, receivedUpdatedDid.AssertionMethod) - require.Equal(t, didMsgUpdate.CapabilityInvocation, receivedUpdatedDid.CapabilityInvocation) - require.Equal(t, didMsgUpdate.CapabilityDelegation, receivedUpdatedDid.CapabilityDelegation) - require.Equal(t, didMsgUpdate.KeyAgreement, receivedUpdatedDid.KeyAgreement) - require.Equal(t, didMsgUpdate.AlsoKnownAs, receivedUpdatedDid.AlsoKnownAs) - require.Equal(t, didMsgUpdate.Service, receivedUpdatedDid.Service) - require.NotEqual(t, oldDid.VerificationMethod, receivedUpdatedDid.VerificationMethod) -} - -func TestHandler_CreateSchema(t *testing.T) { - // this test is not implemented - /* - setup := Setup() - - keys, _, _ := setup.InitDid("did:cheqd:test:alice") - msg := setup.CreateSchema() - - data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - - schema := types.MsgCreateSchemaResponse{} - _ = schema.Unmarshal(result.Data) - - // query Did - state, _ := setup.Keeper.GetSchema(setup.Ctx, schema.Id) - receivedSchema, _ := state.GetSchema() - - require.Equal(t, schema.Id, receivedSchema.Id) - require.Equal(t, msg.Type, receivedSchema.Type) - require.Equal(t, msg.Name, receivedSchema.Name) - require.Equal(t, msg.Version, receivedSchema.Version) - require.Equal(t, msg.AttrNames, receivedSchema.AttrNames) - require.Equal(t, msg.Controller, receivedSchema.Controller)*/ -} - -func TestHandler_CreateCredDef(t *testing.T) { - // this test is not implemented - /* - setup := Setup() - - keys, _, _ := setup.InitDid("did:cheqd:test:alice") - msg := setup.CreateCredDef() - - data, _ := ptypes.NewAnyWithValue(msg) - result, _ := setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - - credDef := types.MsgCreateCredDefResponse{} - err := credDef.Unmarshal(result.Data) - - if err != nil { - log.Fatal(err) - } - - // query Did - //state, _ := setup.Keeper.GetCredDef(setup.Ctx, credDef.Id) - //receivedCredDef, _ := state.GetCredDef() - - //expectedValue := msg.Value.(*types.MsgCreateCredDef_ClType) - //actualValue := receivedCredDef.Value.(*types.CredDef_ClType) - - //require.Equal(t, credDef.Id, receivedCredDef.Id) - //require.Equal(t, expectedValue.ClType, actualValue.ClType) - //require.Equal(t, msg.SchemaId, receivedCredDef.SchemaId) - //require.Equal(t, msg.Tag, receivedCredDef.Tag) - //require.Equal(t, msg.Type, receivedCredDef.Type) - //require.Equal(t, msg.Controller, receivedCredDef.Controller) - */ -} - func TestHandler_DidDocAlreadyExists(t *testing.T) { setup := Setup() @@ -1157,23 +1052,4 @@ func TestHandler_DidDocAlreadyExists(t *testing.T) { require.Error(t, err) require.Equal(t, "DID is already used by DIDDoc did:cheqd:test:alice: DID Doc exists", err.Error()) - - // cred_def and schmea is not implemented - /* - credDefMsg := setup.CreateCredDef() - data, _ := ptypes.NewAnyWithValue(credDefMsg) - _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - - require.Error(t, err) - require.Equal(t, "DID is already used by CredDef did:cheqd:test:cred-def-1: DID Doc exists", err.Error()) - - schemaMsg := setup.CreateSchema() - data, _ = ptypes.NewAnyWithValue(schemaMsg) - _, _ = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - _, err = setup.Handler(setup.Ctx, setup.WrapRequest(data, keys)) - - require.Error(t, err) - require.Equal(t, "DID is already used by Schema did:cheqd:test:schema-1: DID Doc exists", err.Error()) - */ } diff --git a/x/cheqd/tests/handler_test_setup.go b/x/cheqd/tests/handler_test_setup.go index 20704685d..38abdc74e 100644 --- a/x/cheqd/tests/handler_test_setup.go +++ b/x/cheqd/tests/handler_test_setup.go @@ -103,32 +103,6 @@ func (s *TestSetup) CreateDid(pubKey ed25519.PublicKey, did string) *types.MsgCr } } -func (s *TestSetup) UpdateDid(did *types.Did, pubKey ed25519.PublicKey, versionId string) *types.MsgUpdateDid { - PublicKeyMultibase := "z" + base58.Encode(pubKey) - - VerificationMethod := types.VerificationMethod{ - Id: "did:cheqd:test:alice#key-2", - Type: "Ed25519VerificationKey2020", - Controller: "Controller", - PublicKeyMultibase: PublicKeyMultibase, - } - - return &types.MsgUpdateDid{ - Id: did.Id, - Controller: did.Controller, - VerificationMethod: []*types.VerificationMethod{did.VerificationMethod[0], &VerificationMethod}, - Authentication: append(did.Authentication, "#key-2"), - AssertionMethod: did.AssertionMethod, - CapabilityInvocation: did.CapabilityInvocation, - CapabilityDelegation: did.CapabilityDelegation, - KeyAgreement: did.KeyAgreement, - AlsoKnownAs: did.AlsoKnownAs, - Service: did.Service, - VersionId: versionId, - Context: did.Context, - } -} - func (s *TestSetup) CreateToUpdateDid(did *types.MsgCreateDid) *types.MsgUpdateDid { return &types.MsgUpdateDid{ Id: did.Id, @@ -145,36 +119,6 @@ func (s *TestSetup) CreateToUpdateDid(did *types.MsgCreateDid) *types.MsgUpdateD } } -func (s *TestSetup) CreateSchema() *types.MsgCreateSchema { - return &types.MsgCreateSchema{ - Id: "did:cheqd:test:schema-1?service=CL-Schema", - Type: "CL-Schema", - Name: "name", - Version: "version", - AttrNames: []string{"attr1", "attr2"}, - Controller: []string{"did:cheqd:test:alice"}, - } -} - -func (s *TestSetup) CreateCredDef() *types.MsgCreateCredDef { - /*Value := types.MsgCreateCredDef_ClType{ - ClType: &types.CredDefValue{ - Primary: map[string]*ptypes.Any{"first": nil}, - Revocation: map[string]*ptypes.Any{"second": nil}, - }, - } - - return &types.MsgCreateCredDef{ - Id: "did:cheqd:test:cred-def-1?service=CL-CredDef", - SchemaId: "schema-1", - Tag: "tag", - Type: "CL-CredDef", - Value: &Value, - Controller: []string{"did:cheqd:test:alice"}, - }*/ - return nil -} - func (s *TestSetup) WrapRequest(data *ptypes.Any, keys map[string]ed25519.PrivateKey) *types.MsgWriteRequest { result := types.MsgWriteRequest{ Data: data, diff --git a/x/cheqd/types/codec.go b/x/cheqd/types/codec.go index 22be930f7..e610f88ff 100644 --- a/x/cheqd/types/codec.go +++ b/x/cheqd/types/codec.go @@ -9,13 +9,8 @@ import ( func RegisterCodec(cdc *codec.LegacyAmino) { // this line is used by starport scaffolding # 2 - cdc.RegisterConcrete(&MsgCreateCredDef{}, "cheqd/CreateCredDef", nil) - - cdc.RegisterConcrete(&MsgCreateSchema{}, "cheqd/CreateSchema", nil) - cdc.RegisterConcrete(&MsgCreateDid{}, "cheqd/CreateDid", nil) cdc.RegisterConcrete(&MsgUpdateDid{}, "cheqd/UpdateDid", nil) - } func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { @@ -26,8 +21,6 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterInterface(MessageCreateDid, (*IdentityMsg)(nil), &MsgCreateDid{}) registry.RegisterInterface(MessageUpdateDid, (*IdentityMsg)(nil), &MsgUpdateDid{}) - registry.RegisterInterface(MessageCreateSchema, (*IdentityMsg)(nil), &MsgCreateSchema{}) - registry.RegisterInterface(MessageCreateCredDef, (*IdentityMsg)(nil), &MsgCreateCredDef{}) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/cheqd/types/credDef.pb.go b/x/cheqd/types/credDef.pb.go deleted file mode 100644 index bce2d7368..000000000 --- a/x/cheqd/types/credDef.pb.go +++ /dev/null @@ -1,1072 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: cheqd/credDef.proto - -package types - -import ( - fmt "fmt" - types "github.com/cosmos/cosmos-sdk/codec/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type CredDef struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SchemaId string `protobuf:"bytes,2,opt,name=schema_id,json=schemaId,proto3" json:"schema_id,omitempty"` - Tag string `protobuf:"bytes,3,opt,name=tag,proto3" json:"tag,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - Controller []string `protobuf:"bytes,5,rep,name=controller,proto3" json:"controller,omitempty"` - Value *types.Any `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *CredDef) Reset() { *m = CredDef{} } -func (m *CredDef) String() string { return proto.CompactTextString(m) } -func (*CredDef) ProtoMessage() {} -func (*CredDef) Descriptor() ([]byte, []int) { - return fileDescriptor_bc069326307a6009, []int{0} -} -func (m *CredDef) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *CredDef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_CredDef.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *CredDef) XXX_Merge(src proto.Message) { - xxx_messageInfo_CredDef.Merge(m, src) -} -func (m *CredDef) XXX_Size() int { - return m.Size() -} -func (m *CredDef) XXX_DiscardUnknown() { - xxx_messageInfo_CredDef.DiscardUnknown(m) -} - -var xxx_messageInfo_CredDef proto.InternalMessageInfo - -func (m *CredDef) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *CredDef) GetSchemaId() string { - if m != nil { - return m.SchemaId - } - return "" -} - -func (m *CredDef) GetTag() string { - if m != nil { - return m.Tag - } - return "" -} - -func (m *CredDef) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *CredDef) GetController() []string { - if m != nil { - return m.Controller - } - return nil -} - -func (m *CredDef) GetValue() *types.Any { - if m != nil { - return m.Value - } - return nil -} - -type CredDefCLValue struct { - Primary map[string]*types.Any `protobuf:"bytes,1,rep,name=primary,proto3" json:"primary,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Revocation map[string]*types.Any `protobuf:"bytes,2,rep,name=revocation,proto3" json:"revocation,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (m *CredDefCLValue) Reset() { *m = CredDefCLValue{} } -func (m *CredDefCLValue) String() string { return proto.CompactTextString(m) } -func (*CredDefCLValue) ProtoMessage() {} -func (*CredDefCLValue) Descriptor() ([]byte, []int) { - return fileDescriptor_bc069326307a6009, []int{1} -} -func (m *CredDefCLValue) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *CredDefCLValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_CredDefCLValue.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *CredDefCLValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_CredDefCLValue.Merge(m, src) -} -func (m *CredDefCLValue) XXX_Size() int { - return m.Size() -} -func (m *CredDefCLValue) XXX_DiscardUnknown() { - xxx_messageInfo_CredDefCLValue.DiscardUnknown(m) -} - -var xxx_messageInfo_CredDefCLValue proto.InternalMessageInfo - -func (m *CredDefCLValue) GetPrimary() map[string]*types.Any { - if m != nil { - return m.Primary - } - return nil -} - -func (m *CredDefCLValue) GetRevocation() map[string]*types.Any { - if m != nil { - return m.Revocation - } - return nil -} - -func init() { - proto.RegisterType((*CredDef)(nil), "cheqdid.cheqdnode.cheqd.CredDef") - proto.RegisterType((*CredDefCLValue)(nil), "cheqdid.cheqdnode.cheqd.CredDefCLValue") - proto.RegisterMapType((map[string]*types.Any)(nil), "cheqdid.cheqdnode.cheqd.CredDefCLValue.PrimaryEntry") - proto.RegisterMapType((map[string]*types.Any)(nil), "cheqdid.cheqdnode.cheqd.CredDefCLValue.RevocationEntry") -} - -func init() { proto.RegisterFile("cheqd/credDef.proto", fileDescriptor_bc069326307a6009) } - -var fileDescriptor_bc069326307a6009 = []byte{ - // 386 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0xcf, 0x4a, 0xe3, 0x40, - 0x1c, 0xc7, 0x3b, 0x49, 0xff, 0x6c, 0xa7, 0x4b, 0x77, 0x99, 0x2d, 0xec, 0x6c, 0x16, 0x42, 0xe8, - 0x29, 0xbb, 0xb0, 0x13, 0xe8, 0x0a, 0x8a, 0x37, 0xad, 0x1e, 0x04, 0x91, 0x12, 0x41, 0xc1, 0x8b, - 0xa4, 0x99, 0x69, 0x1a, 0x4c, 0x33, 0x75, 0x9a, 0x16, 0xf3, 0x16, 0x3e, 0x86, 0x8f, 0xe2, 0xb1, - 0x47, 0x8f, 0xa5, 0x7d, 0x11, 0x99, 0x99, 0x54, 0xab, 0x20, 0x0a, 0x5e, 0x92, 0x2f, 0x1f, 0xe6, - 0xf7, 0x99, 0x1f, 0xdf, 0x04, 0xfe, 0x08, 0x87, 0xec, 0x9a, 0x7a, 0xa1, 0x60, 0xf4, 0x80, 0x0d, - 0xc8, 0x58, 0xf0, 0x8c, 0xa3, 0x9f, 0x0a, 0xc6, 0x94, 0xa8, 0x77, 0xca, 0x29, 0xd3, 0xc9, 0xfa, - 0x15, 0x71, 0x1e, 0x25, 0xcc, 0x53, 0xc7, 0xfa, 0xd3, 0x81, 0x17, 0xa4, 0xb9, 0x9e, 0xb1, 0x5a, - 0x11, 0x8f, 0xb8, 0x8a, 0x9e, 0x4c, 0x9a, 0xb6, 0xef, 0x00, 0xac, 0x75, 0xb5, 0x1b, 0x35, 0xa1, - 0x11, 0x53, 0x0c, 0x1c, 0xe0, 0xd6, 0x7d, 0x23, 0xa6, 0xe8, 0x37, 0xac, 0x4f, 0xc2, 0x21, 0x1b, - 0x05, 0x97, 0x31, 0xc5, 0x86, 0xc2, 0x5f, 0x34, 0x38, 0xa2, 0xe8, 0x3b, 0x34, 0xb3, 0x20, 0xc2, - 0xa6, 0xc2, 0x32, 0x22, 0x04, 0xcb, 0x59, 0x3e, 0x66, 0xb8, 0xac, 0x90, 0xca, 0xc8, 0x86, 0x30, - 0xe4, 0x69, 0x26, 0x78, 0x92, 0x30, 0x81, 0x2b, 0x8e, 0xe9, 0xd6, 0xfd, 0x0d, 0x82, 0xfe, 0xc2, - 0xca, 0x2c, 0x48, 0xa6, 0x0c, 0x57, 0x1d, 0xe0, 0x36, 0x3a, 0x2d, 0xa2, 0xf7, 0x27, 0xeb, 0xfd, - 0xc9, 0x5e, 0x9a, 0xfb, 0xfa, 0x48, 0x7b, 0x61, 0xc0, 0x66, 0xb1, 0x6a, 0xf7, 0xf8, 0x4c, 0x22, - 0x74, 0x02, 0x6b, 0x63, 0x11, 0x8f, 0x02, 0x91, 0x63, 0xe0, 0x98, 0x6e, 0xa3, 0xb3, 0x45, 0xde, - 0x68, 0x86, 0xbc, 0x9c, 0x24, 0x3d, 0x3d, 0x76, 0x98, 0x66, 0x22, 0xf7, 0xd7, 0x12, 0x74, 0x0e, - 0xa1, 0x60, 0x33, 0x1e, 0x06, 0x59, 0xcc, 0x53, 0x6c, 0x28, 0xe5, 0xf6, 0x47, 0x95, 0xfe, 0xd3, - 0xa4, 0xb6, 0x6e, 0xa8, 0xac, 0x1e, 0xfc, 0xba, 0x79, 0xa3, 0x6c, 0xef, 0x8a, 0xe5, 0x45, 0xd7, - 0x32, 0x3e, 0x37, 0x61, 0xbc, 0xdb, 0xc4, 0xae, 0xb1, 0x03, 0xac, 0x53, 0xf8, 0xed, 0xd5, 0x85, - 0x9f, 0x97, 0xee, 0x77, 0xef, 0x97, 0x36, 0x98, 0x2f, 0x6d, 0xb0, 0x58, 0xda, 0xe0, 0x76, 0x65, - 0x97, 0xe6, 0x2b, 0xbb, 0xf4, 0xb0, 0xb2, 0x4b, 0x17, 0x7f, 0xa2, 0x38, 0x1b, 0x4e, 0xfb, 0x24, - 0xe4, 0x23, 0xaf, 0xf8, 0x23, 0xe5, 0xf3, 0x9f, 0xac, 0xc3, 0xbb, 0x29, 0x90, 0xfc, 0xe4, 0x93, - 0x7e, 0x55, 0xd9, 0xff, 0x3f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x16, 0xed, 0x92, 0xc0, 0xba, 0x02, - 0x00, 0x00, -} - -func (m *CredDef) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *CredDef) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *CredDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Value != nil { - { - size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintCredDef(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - if len(m.Controller) > 0 { - for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Controller[iNdEx]) - copy(dAtA[i:], m.Controller[iNdEx]) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.Controller[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } - if len(m.Type) > 0 { - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0x22 - } - if len(m.Tag) > 0 { - i -= len(m.Tag) - copy(dAtA[i:], m.Tag) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.Tag))) - i-- - dAtA[i] = 0x1a - } - if len(m.SchemaId) > 0 { - i -= len(m.SchemaId) - copy(dAtA[i:], m.SchemaId) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.SchemaId))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintCredDef(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *CredDefCLValue) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *CredDefCLValue) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *CredDefCLValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Revocation) > 0 { - for k := range m.Revocation { - v := m.Revocation[k] - baseI := i - if v != nil { - { - size, err := v.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintCredDef(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintCredDef(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintCredDef(dAtA, i, uint64(baseI-i)) - i-- - dAtA[i] = 0x12 - } - } - if len(m.Primary) > 0 { - for k := range m.Primary { - v := m.Primary[k] - baseI := i - if v != nil { - { - size, err := v.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintCredDef(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintCredDef(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintCredDef(dAtA, i, uint64(baseI-i)) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func encodeVarintCredDef(dAtA []byte, offset int, v uint64) int { - offset -= sovCredDef(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *CredDef) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovCredDef(uint64(l)) - } - l = len(m.SchemaId) - if l > 0 { - n += 1 + l + sovCredDef(uint64(l)) - } - l = len(m.Tag) - if l > 0 { - n += 1 + l + sovCredDef(uint64(l)) - } - l = len(m.Type) - if l > 0 { - n += 1 + l + sovCredDef(uint64(l)) - } - if len(m.Controller) > 0 { - for _, s := range m.Controller { - l = len(s) - n += 1 + l + sovCredDef(uint64(l)) - } - } - if m.Value != nil { - l = m.Value.Size() - n += 1 + l + sovCredDef(uint64(l)) - } - return n -} - -func (m *CredDefCLValue) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Primary) > 0 { - for k, v := range m.Primary { - _ = k - _ = v - l = 0 - if v != nil { - l = v.Size() - l += 1 + sovCredDef(uint64(l)) - } - mapEntrySize := 1 + len(k) + sovCredDef(uint64(len(k))) + l - n += mapEntrySize + 1 + sovCredDef(uint64(mapEntrySize)) - } - } - if len(m.Revocation) > 0 { - for k, v := range m.Revocation { - _ = k - _ = v - l = 0 - if v != nil { - l = v.Size() - l += 1 + sovCredDef(uint64(l)) - } - mapEntrySize := 1 + len(k) + sovCredDef(uint64(len(k))) + l - n += mapEntrySize + 1 + sovCredDef(uint64(mapEntrySize)) - } - } - return n -} - -func sovCredDef(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozCredDef(x uint64) (n int) { - return sovCredDef(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *CredDef) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CredDef: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CredDef: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SchemaId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SchemaId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Tag", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Tag = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Value == nil { - m.Value = &types.Any{} - } - if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipCredDef(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCredDef - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *CredDefCLValue) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CredDefCLValue: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CredDefCLValue: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Primary", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Primary == nil { - m.Primary = make(map[string]*types.Any) - } - var mapkey string - var mapvalue *types.Any - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthCredDef - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthCredDef - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var mapmsglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - mapmsglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if mapmsglen < 0 { - return ErrInvalidLengthCredDef - } - postmsgIndex := iNdEx + mapmsglen - if postmsgIndex < 0 { - return ErrInvalidLengthCredDef - } - if postmsgIndex > l { - return io.ErrUnexpectedEOF - } - mapvalue = &types.Any{} - if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { - return err - } - iNdEx = postmsgIndex - } else { - iNdEx = entryPreIndex - skippy, err := skipCredDef(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCredDef - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.Primary[mapkey] = mapvalue - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Revocation", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthCredDef - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthCredDef - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Revocation == nil { - m.Revocation = make(map[string]*types.Any) - } - var mapkey string - var mapvalue *types.Any - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthCredDef - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthCredDef - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var mapmsglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowCredDef - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - mapmsglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if mapmsglen < 0 { - return ErrInvalidLengthCredDef - } - postmsgIndex := iNdEx + mapmsglen - if postmsgIndex < 0 { - return ErrInvalidLengthCredDef - } - if postmsgIndex > l { - return io.ErrUnexpectedEOF - } - mapvalue = &types.Any{} - if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { - return err - } - iNdEx = postmsgIndex - } else { - iNdEx = entryPreIndex - skippy, err := skipCredDef(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCredDef - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.Revocation[mapkey] = mapvalue - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipCredDef(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCredDef - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipCredDef(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowCredDef - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowCredDef - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowCredDef - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthCredDef - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupCredDef - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthCredDef - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthCredDef = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowCredDef = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupCredDef = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/cheqd/types/messages.go b/x/cheqd/types/messages.go index ec9dfbfa0..9fbe723d9 100644 --- a/x/cheqd/types/messages.go +++ b/x/cheqd/types/messages.go @@ -7,11 +7,3 @@ const ( const ( MessageUpdateDid = "/cheqdid.cheqdnode.cheqd.MsgUpdateDid" ) - -const ( - MessageCreateSchema = "/cheqdid.cheqdnode.cheqd.MsgCreateSchema" -) - -const ( - MessageCreateCredDef = "/cheqdid.cheqdnode.cheqd.MsgCreateCredDef" -) diff --git a/x/cheqd/types/messages_cred_def.go b/x/cheqd/types/messages_cred_def.go deleted file mode 100644 index 3e569bef2..000000000 --- a/x/cheqd/types/messages_cred_def.go +++ /dev/null @@ -1,75 +0,0 @@ -package types - -import ( - "github.com/cheqd/cheqd-node/x/cheqd/utils" - "github.com/cosmos/cosmos-sdk/codec/types" -) - -var _ IdentityMsg = &MsgCreateCredDef{} - -func NewMsgCreateCredDef(id string, schemaId string, tag string, signatureType string, controller []string, value types.Any) *MsgCreateCredDef { - return &MsgCreateCredDef{ - Id: id, - SchemaId: schemaId, - Tag: tag, - Type: signatureType, - Value: &value, - Controller: controller, - } -} - -func (msg *MsgCreateCredDef) GetSigners() []Signer { - result := make([]Signer, len(msg.Controller)) - - for i, signer := range msg.Controller { - result[i] = Signer{ - Signer: signer, - } - } - - return result -} - -func (msg *MsgCreateCredDef) GetDid() string { - return utils.GetDidFromCredDef(msg.Id) -} - -func (msg *MsgCreateCredDef) Validate(namespace string) error { - if !utils.IsCredDef(msg.Id) { - return ErrBadRequest.Wrap("Id must end with resource type '?service=CL-CredDef'") - } - - if utils.IsNotDid(namespace, msg.GetDid()) { - return ErrBadRequestIsNotDid.Wrap("Id") - } - - if msg.Value == nil || msg.Value.Size() == 0 { - return ErrBadRequestIsRequired.Wrap("Value") - } - - if len(msg.SchemaId) == 0 { - return ErrBadRequestIsRequired.Wrap("SchemaId") - } - - if len(msg.Type) == 0 { - return ErrBadRequestIsRequired.Wrap("SignatureType") - } - - if utils.IsNotCredDefSignatureType(msg.Type) { - return ErrBadRequest.Wrapf("%s is not allowed type", msg.Type) - } - - if len(msg.Controller) == 0 { - return ErrBadRequestIsRequired.Wrap("Controller") - } - - if notValid, i := utils.ArrayContainsNotDid(namespace, msg.Controller); notValid { - return ErrBadRequestIsNotDid.Wrapf("Controller item %s", msg.Controller[i]) - } - - return nil -} - -func (msg *MsgCreateCredDef) GetSignBytes() []byte { - return ModuleCdc.MustMarshal(msg) -} diff --git a/x/cheqd/types/messages_schema.go b/x/cheqd/types/messages_schema.go deleted file mode 100644 index f18373038..000000000 --- a/x/cheqd/types/messages_schema.go +++ /dev/null @@ -1,83 +0,0 @@ -package types - -import ( - "github.com/cheqd/cheqd-node/x/cheqd/utils" -) - -var _ IdentityMsg = &MsgCreateSchema{} -var MaxAttrNamesCount = 125 - -func NewMsgCreateSchema(id string, typeSchema string, name string, version string, attrNames []string, controller []string) *MsgCreateSchema { - return &MsgCreateSchema{ - Id: id, - Type: typeSchema, - Name: name, - Version: version, - AttrNames: attrNames, - Controller: controller, - } -} - -func (msg *MsgCreateSchema) GetSigners() []Signer { - result := make([]Signer, len(msg.Controller)) - - for i, signer := range msg.Controller { - result[i] = Signer{ - Signer: signer, - } - } - - return result -} - -func (msg *MsgCreateSchema) GetDid() string { - return utils.GetDidFromSchema(msg.Id) -} - -func (msg *MsgCreateSchema) Validate(namespace string) error { - if !utils.IsSchema(msg.Id) { - return ErrBadRequest.Wrap("Id must end with resource type '?service=CL-Schema'") - } - - if utils.IsNotDid(namespace, msg.GetDid()) { - return ErrBadRequestIsNotDid.Wrap("Id") - } - - if len(msg.Type) == 0 { - return ErrBadRequestIsRequired.Wrap("Type") - } - - if utils.IsNotSchemaType(msg.Type) { - return ErrBadRequest.Wrapf("%s is not allowed type", msg.Type) - } - - if len(msg.AttrNames) == 0 { - return ErrBadRequestIsRequired.Wrap("AttrNames") - } - - if len(msg.AttrNames) > MaxAttrNamesCount { - return ErrBadRequest.Wrapf("AttrNames: Expected max length 125, got: %d", len(msg.AttrNames)) - } - - if len(msg.Name) == 0 { - return ErrBadRequestIsRequired.Wrap("Name") - } - - if len(msg.Version) == 0 { - return ErrBadRequestIsRequired.Wrap("Version") - } - - if len(msg.Controller) == 0 { - return ErrBadRequestIsRequired.Wrap("Controller") - } - - if notValid, i := utils.ArrayContainsNotDid(namespace, msg.Controller); notValid { - return ErrBadRequestIsNotDid.Wrapf("Controller item %s", msg.Controller[i]) - } - - return nil -} - -func (msg *MsgCreateSchema) GetSignBytes() []byte { - return ModuleCdc.MustMarshal(msg) -} diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index 365034013..48c61bcbb 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -9,149 +9,6 @@ import ( const Prefix = "did:cheqd:test:" -func TestNewMsgCreateCredDef(t *testing.T) { - // TODO fix after cred_def implementation - /* - cases := []struct { - valid bool - msg *MsgCreateCredDef - errMsg string - }{ - { - true, - NewMsgCreateCredDef( - "did:cheqd:test:aaaaa?service=CL-CredDef", - "schema", - "", - "CL-CredDef", - []string{"did:cheqd:test:alice"}, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "", - }, - { - true, - NewMsgCreateCredDef( - "did:cheqd:test:aaaaa?service=CL-CredDef", - "schema", - "tag", - "CL-CredDef", - []string{"did:cheqd:test:alice"}, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "", - }, - { - false, - NewMsgCreateCredDef( - "?service=CL-CredDef", - "", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: nil}), - "Id: is not DID", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice#key-1?service=CL-CredDef", - "", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: nil}), - "Id: is not DID", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice", - "", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "Id must end with resource type '?service=CL-CredDef': bad request", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "SchemaId: is required", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "", - nil, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "SignatureType: is required", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "ss", - []string{"did:cheqd:test:alice"}, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "ss is not allowed type: bad request", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "CL-CredDef", - nil, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "Controller: is required", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "CL-CredDef", - []string{"1"}, - &MsgCreateCredDef_ClType{ClType: &CredDefValue{Primary: nil, Revocation: nil}}), - "Controller item 1: is not DID", - }, - { - false, - NewMsgCreateCredDef( - "did:cheqd:test:alice?service=CL-CredDef", - "schema-1", - "", - "CL-CredDef", - []string{"did:cheqd:test:alice"}, - &MsgCreateCredDef_ClType{ClType: nil}), - "Value: is required", - }, - } - - for _, tc := range cases { - err := tc.msg.ValidateBasic(Prefix) - - if tc.valid { - require.Nil(t, err) - } else { - require.Error(t, err) - require.Equal(t, tc.errMsg, err.Error()) - } - }*/ -} - func TestNewMsgWriteRequestValidation(t *testing.T) { cases := []struct { valid bool @@ -177,180 +34,6 @@ func TestNewMsgWriteRequestValidation(t *testing.T) { } } -func TestNewMsgCreateSchema(t *testing.T) { - cases := []struct { - valid bool - msg *MsgCreateSchema - errMsg string - }{ - { - true, - NewMsgCreateSchema( - "did:cheqd:test:aaaaa?service=CL-Schema", - "CL-Schema", - "schema", - "version1", - []string{"did:cheqd:test:alice"}, - []string{"did:cheqd:test:alice"}), - "", - }, - { - false, - NewMsgCreateSchema( - "?service=CL-Schema", - "", - "", - "", - nil, - nil), - "Id: is not DID", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice#key-1?service=CL-Schema", - "", - "", - "", - nil, - nil), - "Id: is not DID", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice", - "", - "", - "", - nil, - nil), - "Id must end with resource type '?service=CL-Schema': bad request", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "", - "", - "", - nil, - nil), - "Type: is required", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "schema-1", - "", - "", - nil, - nil), - "schema-1 is not allowed type: bad request", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "schema-1", - "", - "ss", - []string{"did:cheqd:test:alice"}, - nil), - "schema-1 is not allowed type: bad request", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "CL-Schema", - "", - "", - nil, - nil), - "AttrNames: is required", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "CL-Schema", - "", - "", - []string{}, - nil), - "AttrNames: is required", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "CL-Schema", - "", - "", - []string{"1", "2"}, - nil), - "Name: is required", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "CL-Schema", - "", - "", - make([]string, 126), - nil), - "AttrNames: Expected max length 125, got: 126: bad request", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "CL-Schema", - "schema", - "", - []string{"1"}, - nil), - "Version: is required", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "CL-Schema", - "schema", - "version", - []string{"1"}, - nil), - "Controller: is required", - }, - { - false, - NewMsgCreateSchema( - "did:cheqd:test:alice?service=CL-Schema", - "CL-Schema", - "schema", - "version", - []string{"1"}, - []string{"1"}), - "Controller item 1: is not DID", - }, - } - - for _, tc := range cases { - err := tc.msg.Validate(Prefix) - - if tc.valid { - require.Nil(t, err) - } else { - require.Error(t, err) - require.Equal(t, tc.errMsg, err.Error()) - } - } -} - func TestNewMsgCreateDid(t *testing.T) { cases := []struct { valid bool diff --git a/x/cheqd/types/query.go b/x/cheqd/types/query.go index 8776d4ec8..8a6cb7eb4 100644 --- a/x/cheqd/types/query.go +++ b/x/cheqd/types/query.go @@ -3,11 +3,3 @@ package types const ( QueryGetDid = "get-did" ) - -const ( - QueryGetSchema = "get-schema" -) - -const ( - QueryGetCredDef = "get-credDef" -) diff --git a/x/cheqd/types/schema.pb.go b/x/cheqd/types/schema.pb.go deleted file mode 100644 index 9b8031e60..000000000 --- a/x/cheqd/types/schema.pb.go +++ /dev/null @@ -1,584 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: cheqd/schema.proto - -package types - -import ( - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Schema struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` - AttrNames []string `protobuf:"bytes,5,rep,name=attr_names,json=attrNames,proto3" json:"attr_names,omitempty"` - Controller []string `protobuf:"bytes,6,rep,name=controller,proto3" json:"controller,omitempty"` -} - -func (m *Schema) Reset() { *m = Schema{} } -func (m *Schema) String() string { return proto.CompactTextString(m) } -func (*Schema) ProtoMessage() {} -func (*Schema) Descriptor() ([]byte, []int) { - return fileDescriptor_96d8c360e747a40a, []int{0} -} -func (m *Schema) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Schema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Schema.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Schema) XXX_Merge(src proto.Message) { - xxx_messageInfo_Schema.Merge(m, src) -} -func (m *Schema) XXX_Size() int { - return m.Size() -} -func (m *Schema) XXX_DiscardUnknown() { - xxx_messageInfo_Schema.DiscardUnknown(m) -} - -var xxx_messageInfo_Schema proto.InternalMessageInfo - -func (m *Schema) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Schema) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *Schema) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Schema) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func (m *Schema) GetAttrNames() []string { - if m != nil { - return m.AttrNames - } - return nil -} - -func (m *Schema) GetController() []string { - if m != nil { - return m.Controller - } - return nil -} - -func init() { - proto.RegisterType((*Schema)(nil), "cheqdid.cheqdnode.cheqd.Schema") -} - -func init() { proto.RegisterFile("cheqd/schema.proto", fileDescriptor_96d8c360e747a40a) } - -var fileDescriptor_96d8c360e747a40a = []byte{ - // 242 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0xce, 0x48, 0x2d, - 0x4c, 0xd1, 0x2f, 0x4e, 0xce, 0x48, 0xcd, 0x4d, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, - 0x07, 0x8b, 0x65, 0xa6, 0xe8, 0x81, 0xe9, 0xbc, 0xfc, 0x94, 0x54, 0x08, 0x4b, 0x4a, 0x24, 0x3d, - 0x3f, 0x3d, 0x1f, 0xac, 0x46, 0x1f, 0xc4, 0x82, 0x28, 0x57, 0x9a, 0xc9, 0xc8, 0xc5, 0x16, 0x0c, - 0xd6, 0x2f, 0xc4, 0xc7, 0xc5, 0x94, 0x99, 0x22, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0xc4, 0x94, - 0x99, 0x22, 0x24, 0xc4, 0xc5, 0x52, 0x52, 0x59, 0x90, 0x2a, 0xc1, 0x04, 0x16, 0x01, 0xb3, 0x41, - 0x62, 0x79, 0x89, 0xb9, 0xa9, 0x12, 0xcc, 0x10, 0x31, 0x10, 0x5b, 0x48, 0x82, 0x8b, 0xbd, 0x2c, - 0xb5, 0xa8, 0x38, 0x33, 0x3f, 0x4f, 0x82, 0x05, 0x2c, 0x0c, 0xe3, 0x0a, 0xc9, 0x72, 0x71, 0x25, - 0x96, 0x94, 0x14, 0xc5, 0x83, 0x94, 0x15, 0x4b, 0xb0, 0x2a, 0x30, 0x6b, 0x70, 0x06, 0x71, 0x82, - 0x44, 0xfc, 0x40, 0x02, 0x42, 0x72, 0x5c, 0x5c, 0xc9, 0xf9, 0x79, 0x25, 0x45, 0xf9, 0x39, 0x39, - 0xa9, 0x45, 0x12, 0x6c, 0x60, 0x69, 0x24, 0x11, 0x27, 0xe7, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, - 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, - 0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, - 0x87, 0x84, 0x01, 0x98, 0xd4, 0x05, 0x79, 0x57, 0xbf, 0x02, 0x2a, 0x04, 0x72, 0x70, 0x71, 0x12, - 0x1b, 0xd8, 0x9f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0xab, 0x48, 0x4b, 0x2c, 0x01, - 0x00, 0x00, -} - -func (m *Schema) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Schema) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Controller) > 0 { - for iNdEx := len(m.Controller) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Controller[iNdEx]) - copy(dAtA[i:], m.Controller[iNdEx]) - i = encodeVarintSchema(dAtA, i, uint64(len(m.Controller[iNdEx]))) - i-- - dAtA[i] = 0x32 - } - } - if len(m.AttrNames) > 0 { - for iNdEx := len(m.AttrNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AttrNames[iNdEx]) - copy(dAtA[i:], m.AttrNames[iNdEx]) - i = encodeVarintSchema(dAtA, i, uint64(len(m.AttrNames[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } - if len(m.Version) > 0 { - i -= len(m.Version) - copy(dAtA[i:], m.Version) - i = encodeVarintSchema(dAtA, i, uint64(len(m.Version))) - i-- - dAtA[i] = 0x22 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintSchema(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0x1a - } - if len(m.Type) > 0 { - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintSchema(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintSchema(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintSchema(dAtA []byte, offset int, v uint64) int { - offset -= sovSchema(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Schema) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovSchema(uint64(l)) - } - l = len(m.Type) - if l > 0 { - n += 1 + l + sovSchema(uint64(l)) - } - l = len(m.Name) - if l > 0 { - n += 1 + l + sovSchema(uint64(l)) - } - l = len(m.Version) - if l > 0 { - n += 1 + l + sovSchema(uint64(l)) - } - if len(m.AttrNames) > 0 { - for _, s := range m.AttrNames { - l = len(s) - n += 1 + l + sovSchema(uint64(l)) - } - } - if len(m.Controller) > 0 { - for _, s := range m.Controller { - l = len(s) - n += 1 + l + sovSchema(uint64(l)) - } - } - return n -} - -func sovSchema(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozSchema(x uint64) (n int) { - return sovSchema(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Schema) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSchema - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Schema: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Schema: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSchema - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSchema - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthSchema - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSchema - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSchema - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthSchema - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSchema - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSchema - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthSchema - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSchema - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSchema - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthSchema - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AttrNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSchema - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSchema - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthSchema - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AttrNames = append(m.AttrNames, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSchema - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSchema - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthSchema - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = append(m.Controller, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSchema(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthSchema - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipSchema(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSchema - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSchema - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSchema - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthSchema - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupSchema - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthSchema - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthSchema = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowSchema = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupSchema = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/cheqd/types/stateValue.go b/x/cheqd/types/stateValue.go index 1b38ab38e..aee1ce060 100644 --- a/x/cheqd/types/stateValue.go +++ b/x/cheqd/types/stateValue.go @@ -48,41 +48,3 @@ func (m StateValue) GetDid() (*Did, error) { return &state, nil } - -func (m StateValue) GetCredDef() (*CredDef, error) { - value, isValue := m.Data.GetCachedValue().(CredDef) - if isValue { - return &value, nil - } - - if m.Data.TypeUrl != StateValueCredDef { - return nil, ErrInvalidCredDefStateValue.Wrap(m.Data.TypeUrl) - } - - state := CredDef{} - err := state.Unmarshal(m.Data.Value) - if err != nil { - return nil, ErrInvalidCredDefStateValue.Wrap(err.Error()) - } - - return &state, nil -} - -func (m StateValue) GetSchema() (*Schema, error) { - value, isValue := m.Data.GetCachedValue().(Schema) - if isValue { - return &value, nil - } - - if m.Data.TypeUrl != StateValueSchema { - return nil, ErrInvalidSchemaStateValue.Wrap(m.Data.TypeUrl) - } - - state := Schema{} - err := state.Unmarshal(m.Data.Value) - if err != nil { - return nil, ErrInvalidSchemaStateValue.Wrap(err.Error()) - } - - return &state, nil -} From c50b01e22039af06db1df406c585ed59ef42ee35 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 16:51:32 +0300 Subject: [PATCH 67/74] removed cred_def and schema from keys and utils --- vue/src/views/Types.vue | 2 -- x/cheqd/types/errors.go | 4 ---- x/cheqd/types/keys.go | 10 ---------- x/cheqd/types/stateValue.go | 4 +--- x/cheqd/utils/cred_def.go | 24 ------------------------ x/cheqd/utils/schema.go | 24 ------------------------ 6 files changed, 1 insertion(+), 67 deletions(-) delete mode 100644 x/cheqd/utils/cred_def.go delete mode 100644 x/cheqd/utils/schema.go diff --git a/vue/src/views/Types.vue b/vue/src/views/Types.vue index 4da878219..aaaae1ed6 100644 --- a/vue/src/views/Types.vue +++ b/vue/src/views/Types.vue @@ -2,8 +2,6 @@
- -
diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index 45646853f..d4c6a7d20 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -20,9 +20,5 @@ var ( ErrVerificationMethodNotFound = sdkerrors.Register(ModuleName, 1202, "verification method not found") ErrUnexpectedDidVersion = sdkerrors.Register(ModuleName, 1203, "unexpected DID version") ErrInvalidDidStateValue = sdkerrors.Register(ModuleName, 1300, "invalid did state value") - ErrInvalidCredDefStateValue = sdkerrors.Register(ModuleName, 1301, "invalid cred def state value") - ErrInvalidSchemaStateValue = sdkerrors.Register(ModuleName, 1302, "invalid schema state value") - ErrInvalidCredDefValue = sdkerrors.Register(ModuleName, 1303, "invalid cred def value") ErrSetToState = sdkerrors.Register(ModuleName, 1304, "cannot set to state") - ErrNotImplemented = sdkerrors.Register(ModuleName, 1501, "not implemented") ) diff --git a/x/cheqd/types/keys.go b/x/cheqd/types/keys.go index 2686fdecd..5bd568d94 100644 --- a/x/cheqd/types/keys.go +++ b/x/cheqd/types/keys.go @@ -26,13 +26,3 @@ const ( DidKey = "did:" DidCountKey = "did-count:" ) - -const ( - SchemaKey = "schema:" - SchemaCountKey = "schema-count:" -) - -const ( - CredDefKey = "cred-def:" - CredDefCountKey = "cred-def-count:" -) diff --git a/x/cheqd/types/stateValue.go b/x/cheqd/types/stateValue.go index aee1ce060..9e3265fb4 100644 --- a/x/cheqd/types/stateValue.go +++ b/x/cheqd/types/stateValue.go @@ -9,9 +9,7 @@ import ( ) const ( - StateValueDid = "/cheqdid.cheqdnode.cheqd.Did" - StateValueCredDef = "/cheqdid.cheqdnode.cheqd.CredDef" - StateValueSchema = "/cheqdid.cheqdnode.cheqd.Schema" + StateValueDid = "/cheqdid.cheqdnode.cheqd.Did" ) func NewStateValue(msg proto.Message, metadata *Metadata) (*StateValue, error) { diff --git a/x/cheqd/utils/cred_def.go b/x/cheqd/utils/cred_def.go deleted file mode 100644 index c24faa3ab..000000000 --- a/x/cheqd/utils/cred_def.go +++ /dev/null @@ -1,24 +0,0 @@ -package utils - -import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" - -var AllowedCredDefSignatureType = []string{"CL-CredDef"} - -var CredDefSuffix = "?service=CL-CredDef" -var CredDefSuffixLen = len(CredDefSuffix) - -func IsNotCredDefSignatureType(signatureType string) bool { - return !strings.Include(AllowedCredDefSignatureType, signatureType) -} - -func IsCredDef(did string) bool { - return len(did) >= CredDefSuffixLen && did[len(did)-CredDefSuffixLen:] == CredDefSuffix -} - -func GetDidFromCredDef(credDef string) string { - return credDef[:len(credDef)-CredDefSuffixLen] -} - -func GetCredDefFromDid(did string) string { - return did + CredDefSuffix -} diff --git a/x/cheqd/utils/schema.go b/x/cheqd/utils/schema.go deleted file mode 100644 index d192d40c1..000000000 --- a/x/cheqd/utils/schema.go +++ /dev/null @@ -1,24 +0,0 @@ -package utils - -import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" - -var SchemaSuffix = "?service=CL-Schema" -var SchemaSuffixLen = len(SchemaSuffix) - -var AllowedSchemaType = []string{"CL-Schema"} - -func IsNotSchemaType(schemaType string) bool { - return !strings.Include(AllowedSchemaType, schemaType) -} - -func IsSchema(did string) bool { - return len(did) >= SchemaSuffixLen && did[len(did)-SchemaSuffixLen:] == SchemaSuffix -} - -func GetDidFromSchema(schema string) string { - return schema[:len(schema)-SchemaSuffixLen] -} - -func GetSchemaFromDid(did string) string { - return did + SchemaSuffix -} From e4b183fbb7b731d512e32f4e1f450a5b32b3a0bd Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 16:55:10 +0300 Subject: [PATCH 68/74] removed cred_def and schema from comments --- x/cheqd/genesis.go | 76 ---------------------------------------- x/cheqd/keeper/keeper.go | 2 +- 2 files changed, 1 insertion(+), 77 deletions(-) diff --git a/x/cheqd/genesis.go b/x/cheqd/genesis.go index 9b5c49024..77803b6ae 100644 --- a/x/cheqd/genesis.go +++ b/x/cheqd/genesis.go @@ -9,46 +9,6 @@ import ( // InitGenesis initializes the cheqd module's state from a provided genesis // state. func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - // this line is used by starport scaffolding # genesis/module/init - // Set all the credDef - //for _, elem := range genState.CredDefList { - // k.SetCredDef(ctx, *elem) - //} - // - //// Set credDef count - //k.SetCredDefCount(ctx, uint64(len(genState.CredDefList))) - // - //// Set all the schema - //for _, elem := range genState.SchemaList { - // k.SetSchema(ctx, *elem) - //} - // - //// Set schema count - //k.SetSchemaCount(ctx, uint64(len(genState.SchemaList))) - // - //// Set all the attrib - //for _, elem := range genState.AttribList { - // k.SetAttrib(ctx, *elem) - //} - // - //// Set attrib count - //k.SetAttribCount(ctx, uint64(len(genState.AttribList))) - // - //// Set all the did - //for _, elem := range genState.DidList { - // k.SetDid(ctx, *elem) - //} - // - //// Set did count - //k.SetDidCount(ctx, uint64(len(genState.DidList))) - // - //// Set all the nym - //for _, elem := range genState.NymList { - // k.SetNym(ctx, *elem) - //} - // - //// Set nym count - //k.SetNymCount(ctx, uint64(len(genState.NymList))) } @@ -56,41 +16,5 @@ func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { genesis := types.DefaultGenesis() - // this line is used by starport scaffolding # genesis/module/export - // Get all credDef - //credDefList := k.GetAllCredDef(ctx) - //for _, elem := range credDefList { - // elem := elem - // genesis.CredDefList = append(genesis.CredDefList, &elem) - //} - // - //// Get all schema - //schemaList := k.GetAllSchema(ctx) - //for _, elem := range schemaList { - // elem := elem - // genesis.SchemaList = append(genesis.SchemaList, &elem) - //} - // - //// Get all attrib - //attribList := k.GetAllAttrib(ctx) - //for _, elem := range attribList { - // elem := elem - // genesis.AttribList = append(genesis.AttribList, &elem) - //} - // - //// Get all did - //didList := k.GetAllDid(ctx) - //for _, elem := range didList { - // elem := elem - // genesis.DidList = append(genesis.DidList, &elem) - //} - // - //// Get all nym - //nymList := k.GetAllNym(ctx) - //for _, elem := range nymList { - // elem := elem - // genesis.NymList = append(genesis.NymList, &elem) - //} - return genesis } diff --git a/x/cheqd/keeper/keeper.go b/x/cheqd/keeper/keeper.go index 6ef4ccade..384aa2b6b 100644 --- a/x/cheqd/keeper/keeper.go +++ b/x/cheqd/keeper/keeper.go @@ -29,7 +29,7 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -// IsDidUsed checks if the did is used by DIDDoc, Schema or CredDef +// IsDidUsed checks if the did is used by DIDDoc func (k Keeper) IsDidUsed(ctx sdk.Context, did string) bool { return k.HasDid(ctx, did) } From 0ccc79cb3066a92ddd8dfc4d2afd126f7a2d8db7 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 19:19:20 +0300 Subject: [PATCH 69/74] added decode multibase function --- go.mod | 1 + go.sum | 8 ++++++++ x/cheqd/keeper/utils.go | 11 +++-------- x/cheqd/types/did.go | 19 +++++++++++++++++++ x/cheqd/types/errors.go | 2 ++ 5 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 x/cheqd/types/did.go diff --git a/go.mod b/go.mod index 31480e818..a82187707 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/google/go-cmp v0.5.6 // indirect github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/multiformats/go-multibase v0.0.3 // indirect github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.2.1 diff --git a/go.sum b/go.sum index e1724b236..df9c4bb05 100644 --- a/go.sum +++ b/go.sum @@ -721,9 +721,17 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwd github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= +github.com/mr-tron/base58 v1.1.0 h1:Y51FGVJ91WBqCEabAi5OPUz38eAx8DakuAm5svLcsfQ= +github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI= +github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= +github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= +github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-multibase v0.0.3 h1:l/B6bJDQjvQ5G52jw4QGSYeOTZoAwIO77RblWplfIqk= +github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= diff --git a/x/cheqd/keeper/utils.go b/x/cheqd/keeper/utils.go index f0ce01ec4..277d554d4 100644 --- a/x/cheqd/keeper/utils.go +++ b/x/cheqd/keeper/utils.go @@ -2,9 +2,6 @@ package keeper import ( "crypto/ed25519" - "errors" - "fmt" - "github.com/btcsuite/btcutil/base58" "github.com/cheqd/cheqd-node/x/cheqd/types" ) @@ -13,17 +10,15 @@ func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { if authentication == id { for _, vm := range signer.VerificationMethod { if vm.Id == id { - return base58.Decode(vm.PublicKeyMultibase[1:]), nil + return vm.GetPublicKey() } } - msg := fmt.Sprintf("Verification Method %s not found", id) - return nil, errors.New(msg) + return nil, types.ErrVerificationMethodNotFound.Wrap(id) } } - msg := fmt.Sprintf("Authentication %s not found", id) - return nil, errors.New(msg) + return nil, types.ErrVerificationMethodNotFound.Wrap(id) } func FindVerificationMethod(vms []*types.VerificationMethod, id string) *types.VerificationMethod { diff --git a/x/cheqd/types/did.go b/x/cheqd/types/did.go new file mode 100644 index 000000000..752b2a0b9 --- /dev/null +++ b/x/cheqd/types/did.go @@ -0,0 +1,19 @@ +package types + +import "github.com/multiformats/go-multibase" + +func (v VerificationMethod) GetPublicKey() ([]byte, error) { + if len(v.PublicKeyMultibase) > 0 { + _, key, err := multibase.Decode(v.PublicKeyMultibase) + if err != nil { + return nil, ErrInvalidPublicKey.Wrapf("Cannot decode verification method '%s' public key", v.Id) + } + return key, nil + } + + if len(v.PublicKeyJwk) > 0 { + return nil, ErrInvalidPublicKey.Wrap("JWK format not supported") + } + + return nil, ErrInvalidPublicKey.Wrapf("verification method '%s' public key not found", v.Id) +} diff --git a/x/cheqd/types/errors.go b/x/cheqd/types/errors.go index d4c6a7d20..88c0b1e75 100644 --- a/x/cheqd/types/errors.go +++ b/x/cheqd/types/errors.go @@ -19,6 +19,8 @@ var ( ErrDidDocNotFound = sdkerrors.Register(ModuleName, 1201, "DID Doc not found") ErrVerificationMethodNotFound = sdkerrors.Register(ModuleName, 1202, "verification method not found") ErrUnexpectedDidVersion = sdkerrors.Register(ModuleName, 1203, "unexpected DID version") + ErrInvalidPublicKey = sdkerrors.Register(ModuleName, 1204, "invalid public key") ErrInvalidDidStateValue = sdkerrors.Register(ModuleName, 1300, "invalid did state value") ErrSetToState = sdkerrors.Register(ModuleName, 1304, "cannot set to state") + ErrNotImplemented = sdkerrors.Register(ModuleName, 1501, "not implemented") ) From f8a8cb0cfcacef0aa3396914ea50d97c2ad4502f Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Thu, 28 Oct 2021 20:17:56 +0300 Subject: [PATCH 70/74] added verification method check --- x/cheqd/types/messages_did.go | 15 ++++++++- x/cheqd/types/msg_test.go | 62 +++++++++++++++++++++-------------- x/cheqd/utils/did_doc.go | 15 ++++++--- 3 files changed, 61 insertions(+), 31 deletions(-) diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 2e2028c4a..87c371504 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -295,7 +295,20 @@ func ValidateVerificationMethod(namespace string, vm *VerificationMethod) error return ErrBadRequestIsNotDidFragment.Wrap(vm.Id) } - if !utils.IsVerificationMethodType(vm.Type) { + if len(vm.PublicKeyMultibase) != 0 && len(vm.PublicKeyJwk) != 0 { + return ErrBadRequest.Wrap("contains multiple verification material properties") + } + + switch utils.IsVerificationMethodType(vm.Type) { + case utils.PublicKeyJwk: + if len(vm.PublicKeyJwk) == 0 { + return ErrBadRequest.Wrapf("%s: should contain `PublicKeyJwk` verification material property", vm.Type) + } + case utils.PublicKeyMultibase: + if len(vm.PublicKeyMultibase) == 0 { + return ErrBadRequest.Wrapf("%s: should contain `PublicKeyMultibase` verification material property", vm.Type) + } + default: return ErrBadRequest.Wrapf("%s: unsupported verification method type", vm.Type) } diff --git a/x/cheqd/types/msg_test.go b/x/cheqd/types/msg_test.go index 48c61bcbb..e1495922a 100644 --- a/x/cheqd/types/msg_test.go +++ b/x/cheqd/types/msg_test.go @@ -224,7 +224,7 @@ func TestNewMsgCreateDid(t *testing.T) { }, Controller: []string{"did:cheqd:test:alice"}, }, - "index 0, value did:cheqd:test:alice#key-1: The verification method must contain either a PublicKeyMultibase or a PublicKeyJwk: bad request: invalid verification method", + "index 0, value did:cheqd:test:alice#key-1: JsonWebKey2020: should contain `PublicKeyJwk` verification material property: bad request: invalid verification method", }, { false, @@ -239,7 +239,7 @@ func TestNewMsgCreateDid(t *testing.T) { }, Controller: []string{"did:cheqd:test:alice"}, }, - "index 0, value did:cheqd:test:alice#key-1: Controller: is required: invalid verification method", + "index 0, value did:cheqd:test:alice#key-1: JsonWebKey2020: should contain `PublicKeyJwk` verification material property: bad request: invalid verification method", }, { false, @@ -248,13 +248,13 @@ func TestNewMsgCreateDid(t *testing.T) { VerificationMethod: []*VerificationMethod{ { Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, { Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, @@ -270,15 +270,20 @@ func TestNewMsgCreateDid(t *testing.T) { VerificationMethod: []*VerificationMethod{ { Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, { - Id: "did:cheqd:test:alice#key-2", - Type: "JsonWebKey2020", - PublicKeyMultibase: "tetetet", - Controller: "did:cheqd:test:alice", + Id: "did:cheqd:test:alice#key-2", + Type: "JsonWebKey2020", + PublicKeyJwk: []*KeyValuePair{ + { + Key: "x", + Value: "sadad", + }, + }, + Controller: "did:cheqd:test:alice", }, { Id: "did:cheqd:test:alice#key-3", @@ -397,14 +402,19 @@ func TestNewMsgCreateDid(t *testing.T) { Authentication: []string{"#key-1", "did:cheqd:test:alice#key-2"}, VerificationMethod: []*VerificationMethod{ { - Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", - PublicKeyMultibase: "tetetet", - Controller: "did:cheqd:test:alice", + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyJwk: []*KeyValuePair{ + { + Key: "x", + Value: "sadad", + }, + }, + Controller: "did:cheqd:test:alice", }, { Id: "did:cheqd:test:alice#key-2", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, @@ -611,12 +621,12 @@ func TestNewMsgUpdateDid(t *testing.T) { VerificationMethod: []*VerificationMethod{ { Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", }, }, Controller: []string{"did:cheqd:test:alice"}, }, - "index 0, value did:cheqd:test:alice#key-1: The verification method must contain either a PublicKeyMultibase or a PublicKeyJwk: bad request: invalid verification method", + "index 0, value did:cheqd:test:alice#key-1: Ed25519VerificationKey2020: should contain `PublicKeyMultibase` verification material property: bad request: invalid verification method", }, { false, @@ -624,9 +634,11 @@ func TestNewMsgUpdateDid(t *testing.T) { Id: "did:cheqd:test:alice", VerificationMethod: []*VerificationMethod{ { - Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", - PublicKeyMultibase: "tetetet", + Id: "did:cheqd:test:alice#key-1", + Type: "JsonWebKey2020", + PublicKeyJwk: []*KeyValuePair{ + {Key: "x", Value: "y"}, + }, }, }, Controller: []string{"did:cheqd:test:alice"}, @@ -640,13 +652,13 @@ func TestNewMsgUpdateDid(t *testing.T) { VerificationMethod: []*VerificationMethod{ { Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, { Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, @@ -662,13 +674,13 @@ func TestNewMsgUpdateDid(t *testing.T) { VerificationMethod: []*VerificationMethod{ { Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, { Id: "did:cheqd:test:alice#key-2", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, @@ -790,13 +802,13 @@ func TestNewMsgUpdateDid(t *testing.T) { VerificationMethod: []*VerificationMethod{ { Id: "did:cheqd:test:alice#key-1", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, { Id: "did:cheqd:test:alice#key-2", - Type: "JsonWebKey2020", + Type: "Ed25519VerificationKey2020", PublicKeyMultibase: "tetetet", Controller: "did:cheqd:test:alice", }, diff --git a/x/cheqd/utils/did_doc.go b/x/cheqd/utils/did_doc.go index fde6dfc1c..9103c47b5 100644 --- a/x/cheqd/utils/did_doc.go +++ b/x/cheqd/utils/did_doc.go @@ -2,9 +2,14 @@ package utils import "github.com/cheqd/cheqd-node/x/cheqd/utils/strings" -var VerificationMethodType = []string{ - "JsonWebKey2020", - "Ed25519VerificationKey2020", +const ( + PublicKeyJwk = "PublicKeyJwk" + PublicKeyMultibase = "PublicKeyMultibase" +) + +var VerificationMethodType = map[string]string{ + "JsonWebKey2020": PublicKeyJwk, + "Ed25519VerificationKey2020": PublicKeyMultibase, } var ServiceType = []string{ @@ -12,8 +17,8 @@ var ServiceType = []string{ "DIDCommMessaging", } -func IsVerificationMethodType(vmType string) bool { - return strings.Include(VerificationMethodType, vmType) +func IsVerificationMethodType(vmType string) string { + return VerificationMethodType[vmType] } func IsDidServiceType(sType string) bool { From b91ead3cb14ba814c4044e8dd9de91e96634bd83 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 29 Oct 2021 18:23:31 +0300 Subject: [PATCH 71/74] changed function name according PR --- go.mod | 2 +- x/cheqd/keeper/did.go | 2 +- x/cheqd/keeper/msg_server_did.go | 1 + x/cheqd/keeper/utils.go | 10 +++----- x/cheqd/types/messages_did.go | 44 ++++++++++++++++---------------- x/cheqd/utils/did.go | 16 +++++------- x/cheqd/utils/did_doc.go | 6 ++--- x/cheqd/utils/strings/array.go | 8 +++--- 8 files changed, 42 insertions(+), 47 deletions(-) diff --git a/go.mod b/go.mod index a82187707..8d19c7566 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/google/go-cmp v0.5.6 // indirect github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/multiformats/go-multibase v0.0.3 // indirect + github.com/multiformats/go-multibase v0.0.3 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.2.1 diff --git a/x/cheqd/keeper/did.go b/x/cheqd/keeper/did.go index 0dbbc553b..ce0f116de 100644 --- a/x/cheqd/keeper/did.go +++ b/x/cheqd/keeper/did.go @@ -37,7 +37,7 @@ func (k Keeper) SetDidCount(ctx sdk.Context, count uint64) { store.Set(byteKey, bz) } -// AppendDid appends a did in the store with a new id and update the count +// AppendDid appends a did in the store with a new id and updates the count func (k Keeper) AppendDid(ctx sdk.Context, did types.Did, metadata *types.Metadata) (*string, error) { // Create the did count := k.GetDidCount(ctx) diff --git a/x/cheqd/keeper/msg_server_did.go b/x/cheqd/keeper/msg_server_did.go index 0129efd20..d1f187042 100644 --- a/x/cheqd/keeper/msg_server_did.go +++ b/x/cheqd/keeper/msg_server_did.go @@ -92,6 +92,7 @@ func (k msgServer) UpdateDid(goCtx context.Context, msg *types.MsgWriteRequest) return nil, err } + // replay protection if oldStateValue.Metadata.VersionId != didMsg.VersionId { errMsg := fmt.Sprintf("Ecpected %s with version %s. Got version %s", didMsg.Id, oldStateValue.Metadata.VersionId, didMsg.VersionId) return nil, sdkerrors.Wrap(types.ErrUnexpectedDidVersion, errMsg) diff --git a/x/cheqd/keeper/utils.go b/x/cheqd/keeper/utils.go index 277d554d4..f9f9004a5 100644 --- a/x/cheqd/keeper/utils.go +++ b/x/cheqd/keeper/utils.go @@ -8,13 +8,11 @@ import ( func FindPublicKey(signer types.Signer, id string) (ed25519.PublicKey, error) { for _, authentication := range signer.Authentication { if authentication == id { - for _, vm := range signer.VerificationMethod { - if vm.Id == id { - return vm.GetPublicKey() - } + vm := FindVerificationMethod(signer.VerificationMethod, id) + if vm == nil { + return nil, types.ErrVerificationMethodNotFound.Wrap(id) } - - return nil, types.ErrVerificationMethodNotFound.Wrap(id) + return vm.GetPublicKey() } } diff --git a/x/cheqd/types/messages_did.go b/x/cheqd/types/messages_did.go index 87c371504..ed8e300ca 100644 --- a/x/cheqd/types/messages_did.go +++ b/x/cheqd/types/messages_did.go @@ -40,16 +40,16 @@ func (msg *MsgCreateDid) GetSigners() []Signer { if len(msg.Controller) > 0 { result := make([]Signer, len(msg.Controller)) - for i, signer := range msg.Controller { - if signer == msg.Id { + for i, controller := range msg.Controller { + if controller == msg.Id { result[i] = Signer{ - Signer: signer, + Signer: controller, Authentication: msg.Authentication, VerificationMethod: msg.VerificationMethod, } } else { result[i] = Signer{ - Signer: signer, + Signer: controller, } } } @@ -71,11 +71,11 @@ func (msg *MsgCreateDid) GetSigners() []Signer { } func (msg *MsgCreateDid) Validate(namespace string) error { - if utils.IsNotDid(namespace, msg.Id) { + if !utils.IsValidDid(namespace, msg.Id) { return ErrBadRequestIsNotDid.Wrap("Id") } - if notValid, i := utils.ArrayContainsNotDid(namespace, msg.Controller); notValid { + if notValid, i := utils.IsNotValidDIDArray(namespace, msg.Controller); notValid { return ErrBadRequestIsNotDid.Wrapf("Controller item %s at position %d", msg.Controller[i], i) } @@ -87,19 +87,19 @@ func (msg *MsgCreateDid) Validate(namespace string) error { return err } - if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.Authentication); notValid { + if notValid, i := utils.IsNotValidDIDArrayFragment(namespace, msg.Authentication); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("Authentication item %s", msg.Authentication[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.CapabilityInvocation); notValid { + if notValid, i := utils.IsNotValidDIDArrayFragment(namespace, msg.CapabilityInvocation); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityInvocation item %s", msg.CapabilityInvocation[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.CapabilityDelegation); notValid { + if notValid, i := utils.IsNotValidDIDArrayFragment(namespace, msg.CapabilityDelegation); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityDelegation item %s", msg.CapabilityDelegation[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.KeyAgreement); notValid { + if notValid, i := utils.IsNotValidDIDArrayFragment(namespace, msg.KeyAgreement); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("KeyAgreement item %s", msg.KeyAgreement[i]) } @@ -172,16 +172,16 @@ func (msg *MsgUpdateDid) GetSigners() []Signer { if len(msg.Controller) > 0 { result := make([]Signer, len(msg.Controller)) - for i, signer := range msg.Controller { - if signer == msg.Id { + for i, controller := range msg.Controller { + if controller == msg.Id { result[i] = Signer{ - Signer: signer, + Signer: controller, Authentication: msg.Authentication, VerificationMethod: msg.VerificationMethod, } } else { result[i] = Signer{ - Signer: signer, + Signer: controller, } } } @@ -203,11 +203,11 @@ func (msg *MsgUpdateDid) GetSigners() []Signer { } func (msg *MsgUpdateDid) Validate(namespace string) error { - if utils.IsNotDid(namespace, msg.Id) { + if !utils.IsValidDid(namespace, msg.Id) { return ErrBadRequestIsNotDid.Wrap("Id") } - if notValid, i := utils.ArrayContainsNotDid(namespace, msg.Controller); notValid { + if notValid, i := utils.IsNotValidDIDArray(namespace, msg.Controller); notValid { return ErrBadRequestIsNotDid.Wrapf("Controller item %s at position %d", msg.Controller[i], i) } @@ -219,19 +219,19 @@ func (msg *MsgUpdateDid) Validate(namespace string) error { return err } - if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.Authentication); notValid { + if notValid, i := utils.IsNotValidDIDArrayFragment(namespace, msg.Authentication); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("Authentication item %s", msg.Authentication[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.CapabilityInvocation); notValid { + if notValid, i := utils.IsNotValidDIDArrayFragment(namespace, msg.CapabilityInvocation); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityInvocation item %s", msg.CapabilityInvocation[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.CapabilityDelegation); notValid { + if notValid, i := utils.IsNotValidDIDArrayFragment(namespace, msg.CapabilityDelegation); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("CapabilityDelegation item %s", msg.CapabilityDelegation[i]) } - if notValid, i := utils.ArrayContainsNotDidFragment(namespace, msg.KeyAgreement); notValid { + if notValid, i := utils.IsNotValidDIDArrayFragment(namespace, msg.KeyAgreement); notValid { return ErrBadRequestIsNotDidFragment.Wrapf("KeyAgreement item %s", msg.KeyAgreement[i]) } @@ -299,7 +299,7 @@ func ValidateVerificationMethod(namespace string, vm *VerificationMethod) error return ErrBadRequest.Wrap("contains multiple verification material properties") } - switch utils.IsVerificationMethodType(vm.Type) { + switch utils.GetVerificationMethodType(vm.Type) { case utils.PublicKeyJwk: if len(vm.PublicKeyJwk) == 0 { return ErrBadRequest.Wrapf("%s: should contain `PublicKeyJwk` verification material property", vm.Type) @@ -348,7 +348,7 @@ func ValidateService(namespace string, s *ServiceEndpoint) error { return ErrBadRequestIsNotDidFragment.Wrap(s.Id) } - if !utils.IsDidServiceType(s.Type) { + if !utils.IsValidDidServiceType(s.Type) { return ErrBadRequest.Wrapf("%s: unsupported service type", s.Type) } diff --git a/x/cheqd/utils/did.go b/x/cheqd/utils/did.go index bad52cd69..a15435926 100644 --- a/x/cheqd/utils/did.go +++ b/x/cheqd/utils/did.go @@ -22,7 +22,7 @@ func IsDidFragment(prefix string, didUrl string) bool { } did, _ := SplitDidUrlIntoDidAndFragment(didUrl) - return IsDid(prefix, did) + return IsValidDid(prefix, did) } func IsFullDidFragment(prefix string, didUrl string) bool { @@ -31,7 +31,7 @@ func IsFullDidFragment(prefix string, didUrl string) bool { } did, _ := SplitDidUrlIntoDidAndFragment(didUrl) - return IsDid(prefix, did) + return IsValidDid(prefix, did) } func ResolveId(did string, methodId string) string { @@ -45,9 +45,9 @@ func ResolveId(did string, methodId string) string { return result } -func ArrayContainsNotDid(prefix string, array []string) (bool, int) { +func IsNotValidDIDArray(prefix string, array []string) (bool, int) { for i, did := range array { - if IsNotDid(prefix, did) { + if !IsValidDid(prefix, did) { return true, i } } @@ -55,7 +55,7 @@ func ArrayContainsNotDid(prefix string, array []string) (bool, int) { return false, 0 } -func ArrayContainsNotDidFragment(prefix string, array []string) (bool, int) { +func IsNotValidDIDArrayFragment(prefix string, array []string) (bool, int) { for i, did := range array { if !IsDidFragment(prefix, did) { return true, i @@ -65,11 +65,7 @@ func ArrayContainsNotDidFragment(prefix string, array []string) (bool, int) { return false, 0 } -func IsNotDid(prefix string, did string) bool { - return !IsDid(prefix, did) -} - -func IsDid(prefix string, did string) bool { +func IsValidDid(prefix string, did string) bool { if len(did) == 0 { return false } diff --git a/x/cheqd/utils/did_doc.go b/x/cheqd/utils/did_doc.go index 9103c47b5..abf3e33d8 100644 --- a/x/cheqd/utils/did_doc.go +++ b/x/cheqd/utils/did_doc.go @@ -17,10 +17,10 @@ var ServiceType = []string{ "DIDCommMessaging", } -func IsVerificationMethodType(vmType string) string { +func GetVerificationMethodType(vmType string) string { return VerificationMethodType[vmType] } -func IsDidServiceType(sType string) bool { - return strings.Include(ServiceType, sType) +func IsValidDidServiceType(sType string) bool { + return strings.Contains(ServiceType, sType) } diff --git a/x/cheqd/utils/strings/array.go b/x/cheqd/utils/strings/array.go index d9b4b4781..0b4ffeab3 100644 --- a/x/cheqd/utils/strings/array.go +++ b/x/cheqd/utils/strings/array.go @@ -1,6 +1,6 @@ package strings -func Index(vs []string, t string) int { +func IndexOf(vs []string, t string) int { for i, v := range vs { if v == t { return i @@ -10,8 +10,8 @@ func Index(vs []string, t string) int { return -1 } -func Include(vs []string, t string) bool { - return Index(vs, t) >= 0 +func Contains(vs []string, t string) bool { + return IndexOf(vs, t) >= 0 } func Filter(vs []string, f func(string) bool) []string { @@ -26,6 +26,6 @@ func Filter(vs []string, f func(string) bool) []string { func Complement(vs []string, ts []string) []string { return Filter(vs, func(s string) bool { - return !Include(ts, s) + return !Contains(ts, s) }) } From f7006737307b8e1c19da3fad5941d3821dcb4260 Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 29 Oct 2021 18:30:26 +0300 Subject: [PATCH 72/74] fixed lint --- x/cheqd/utils/did_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/cheqd/utils/did_test.go b/x/cheqd/utils/did_test.go index 47553d62a..76d8bd56a 100644 --- a/x/cheqd/utils/did_test.go +++ b/x/cheqd/utils/did_test.go @@ -25,7 +25,7 @@ func TestIsDid(t *testing.T) { } for _, tc := range cases { - isDid := IsDid("did:cheqd:test:", tc.did) + isDid := IsValidDid("did:cheqd:test:", tc.did) if tc.valid { require.True(t, isDid) From c9c9fa7f02ca1d0322a245a678d190cdf3257c3b Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 29 Oct 2021 18:37:23 +0300 Subject: [PATCH 73/74] fixed tests --- x/cheqd/tests/handler_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/x/cheqd/tests/handler_test.go b/x/cheqd/tests/handler_test.go index 9170731cf..c78b70cac 100644 --- a/x/cheqd/tests/handler_test.go +++ b/x/cheqd/tests/handler_test.go @@ -293,7 +293,7 @@ func TestCreateDID(t *testing.T) { keys: map[string]KeyPair{ BobKey4: keys[BobKey4], }, - errMsg: "Authentication did:cheqd:test:bob#key-4 not found: invalid signature detected", + errMsg: "did:cheqd:test:bob#key-4: verification method not found: invalid signature detected", }, { valid: false, @@ -308,7 +308,7 @@ func TestCreateDID(t *testing.T) { BobKey4: keys[BobKey4], CharlieKey3: keys[CharlieKey3], }, - errMsg: "Authentication did:cheqd:test:bob#key-4 not found: invalid signature detected", + errMsg: "did:cheqd:test:bob#key-4: verification method not found: invalid signature detected", }, { valid: false, @@ -348,7 +348,7 @@ func TestCreateDID(t *testing.T) { keys: map[string]KeyPair{ "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), }, - errMsg: "Authentication did:cheqd:test:123456qwertyui#key-2 not found: invalid signature detected", + errMsg: "did:cheqd:test:123456qwertyui#key-2: verification method not found: invalid signature detected", }, { valid: false, @@ -370,7 +370,7 @@ func TestCreateDID(t *testing.T) { AliceKey1: keys[AliceKey1], "did:cheqd:test:123456qwertyui#key-2": GenerateKeyPair(), }, - errMsg: "Authentication did:cheqd:test:123456qwertyui#key-2 not found: invalid signature detected", + errMsg: "did:cheqd:test:123456qwertyui#key-2: verification method not found: invalid signature detected", }, { valid: false, @@ -546,7 +546,7 @@ func TestUpdateDid(t *testing.T) { }, }, }, - errMsg: "Authentication did:cheqd:test:alice#key-1 not found: invalid signature detected", + errMsg: "did:cheqd:test:alice#key-1: verification method not found: invalid signature detected", }, { valid: true, @@ -755,7 +755,7 @@ func TestUpdateDid(t *testing.T) { }, }, }, - errMsg: "Authentication did:cheqd:test:alice#key-1 not found: invalid signature detected", + errMsg: "did:cheqd:test:alice#key-1: verification method not found: invalid signature detected", }, { valid: true, From da7e7a29b37a7a9dcbe1ac915a4bf84ffa04c2fe Mon Sep 17 00:00:00 2001 From: Alexander Martynov Date: Fri, 29 Oct 2021 19:23:53 +0300 Subject: [PATCH 74/74] documented cheqd errors --- docs/errors.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 docs/errors.md diff --git a/docs/errors.md b/docs/errors.md new file mode 100644 index 000000000..067f4a5ee --- /dev/null +++ b/docs/errors.md @@ -0,0 +1,21 @@ +# Registered cheqd errors + +## Overview + +| Name | Code | Description | +|---|---|---| +| ErrBadRequest | 1000 | The request the client made is incorrect or corrupt | +| ErrBadRequestIsRequired | 1001 | The request does not contain required property | +| ErrBadRequestIsNotDid | 1002 | The request contains invalid `id` property | +| ErrBadRequestInvalidVerMethod | 1003 | The request contains invalid verification method | +| ErrBadRequestInvalidService | 1004 | The request contains invalid service | +| ErrBadRequestIsNotDidFragment | 1005 | The request contains invalid verification method id | +| ErrInvalidSignature | 1100 | Invalid signature detected | +| ErrDidDocExists | 1200 | An attempt to create a DID Doc that exists in the ledger detected | +| ErrDidDocNotFound | 1201 | The DID Doc not found in the ledger | +| ErrVerificationMethodNotFound | 1202 | The DID Doc does not contain the requested verification method | +| ErrUnexpectedDidVersion | 1203 | Replay protected failed. An attempt to update DID Doc with wrong version detected | +| ErrInvalidPublicKey | 1204 | Unable to decode public key | +| ErrInvalidDidStateValue | 1300 | Unable to unmarshall stored document | +| ErrSetToState | 1304 | Unable to set value into the ledger | +| ErrNotImplemented | 1501 | The method is not implemented |

e&PtLO|Cvi= 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

RAgQB;;16>B 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 +^$KtV8hBB0l^ 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 oC+@KmN0Br@ffZ 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