Skip to content

Commit 0472761

Browse files
jannikluhnulope
authored andcommitted
Update shcrypto
(cherry picked from commit 4e536e5)
1 parent c3d889e commit 0472761

File tree

11 files changed

+299
-361
lines changed

11 files changed

+299
-361
lines changed

rolling-shutter/app/messages.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"math/big"
55

66
"github.com/ethereum/go-ethereum/common"
7-
bn256 "github.com/ethereum/go-ethereum/crypto/bn256/cloudflare"
7+
"github.com/ethereum/go-ethereum/crypto/bls12381"
88
"github.com/pkg/errors"
99

1010
"github.com/shutter-network/shutter/shlib/shcrypto"
@@ -54,14 +54,17 @@ func ParsePolyEvalMsg(msg *shmsg.PolyEval, sender common.Address) (*PolyEval, er
5454

5555
// ParsePolyCommitmentMsg converts a shmsg.PolyCommitmentMsg to an app.PolyCommitmentMsg.
5656
func ParsePolyCommitmentMsg(msg *shmsg.PolyCommitment, sender common.Address) (*PolyCommitment, error) {
57+
g2 := bls12381.NewG2()
5758
gammas := shcrypto.Gammas{}
5859
for _, g := range msg.Gammas {
59-
g2 := new(bn256.G2)
60-
_, err := g2.Unmarshal(g)
60+
p, err := g2.FromBytes(g)
6161
if err != nil {
6262
return nil, err
6363
}
64-
gammas = append(gammas, g2)
64+
if !g2.IsOnCurve(p) {
65+
return nil, errors.Errorf("invalid gamma value %x", g)
66+
}
67+
gammas = append(gammas, p)
6568
}
6669
return &PolyCommitment{
6770
Sender: sender,

rolling-shutter/cmd/cryptocmd/jsontests.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"os"
1111

1212
"github.com/ethereum/go-ethereum/common/hexutil"
13-
bn256 "github.com/ethereum/go-ethereum/crypto/bn256/cloudflare"
13+
"github.com/ethereum/go-ethereum/crypto/bls12381"
1414
"github.com/spf13/cobra"
1515

1616
"github.com/shutter-network/shutter/shlib/shcrypto"
@@ -452,12 +452,13 @@ func createEncryptionTest(keygen *testkeygen.KeyGenerator, message []byte) (*enc
452452
// tamperEncryptedMessage changes the C1 value of EncryptedMessage, which allows to test for malleability issues.
453453
func tamperEncryptedMessage(keygen *testkeygen.KeyGenerator, et encryptionTest) encryptionTest {
454454
decryptionKey := keygen.EpochSecretKey(et.EpochID)
455-
var c1 *bn256.G2
455+
g2 := bls12381.NewG2()
456+
var c1 *bls12381.PointG2
456457
var err error
457458

458459
for i := 1; i <= 10000; i++ {
459460
c1 = et.Expected.C1
460-
c1.Add(c1, c1)
461+
g2.Add(c1, c1, c1)
461462
et.Expected.C1 = c1
462463
sigma := et.Expected.Sigma(decryptionKey)
463464
decryptedBlocks := shcrypto.DecryptBlocks(et.Expected.C3, sigma)

rolling-shutter/go.mod

Lines changed: 79 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
11
module github.com/shutter-network/rolling-shutter/rolling-shutter
22

3-
go 1.21
3+
go 1.21.4
44

5-
toolchain go1.21.4
5+
//replace github.com/ethereum/go-ethereum v1.13.5 => ../../shop-geth/
66

77
require (
88
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0
99
github.com/benbjohnson/clock v1.3.5
1010
github.com/bitwurx/jrpc2 v0.0.0-20220302204700-52c6dbbeb536
1111
github.com/deepmap/oapi-codegen v1.9.1
12-
github.com/ethereum/go-ethereum v1.13.4
12+
github.com/ethereum/go-ethereum v1.13.11
1313
github.com/getkin/kin-openapi v0.87.0
1414
github.com/go-chi/chi/v5 v5.0.10
1515
github.com/google/go-cmp v0.6.0
16-
github.com/google/uuid v1.3.0
17-
github.com/icza/gog v0.0.0-20240408124036-741771d15ae3
16+
github.com/google/uuid v1.6.0
17+
github.com/icza/gog v0.0.0-20240529172513-3355cf65d018
1818
github.com/ipfs/go-log/v2 v2.5.1
1919
github.com/jackc/pgconn v1.14.1
2020
github.com/jackc/pgx/v4 v4.18.1
2121
github.com/justinas/alice v1.2.0
2222
github.com/kr/pretty v0.3.1
23-
github.com/libp2p/go-libp2p v0.31.0
24-
github.com/libp2p/go-libp2p-kad-dht v0.21.1
25-
github.com/libp2p/go-libp2p-pubsub v0.9.3
23+
github.com/libp2p/go-libp2p v0.32.1
24+
github.com/libp2p/go-libp2p-kad-dht v0.25.1
25+
github.com/libp2p/go-libp2p-pubsub v0.10.0
2626
github.com/mitchellh/mapstructure v1.5.0
27-
github.com/multiformats/go-multiaddr v0.11.0
28-
github.com/pelletier/go-toml/v2 v2.0.9
27+
github.com/multiformats/go-multiaddr v0.12.0
28+
github.com/pelletier/go-toml/v2 v2.1.0
2929
github.com/pkg/errors v0.9.1
30-
github.com/prometheus/client_golang v1.14.0
30+
github.com/prometheus/client_golang v1.17.0
3131
github.com/rs/zerolog v1.28.0
3232
github.com/shutter-network/shutter/shlib v0.1.18
3333
github.com/shutter-network/txtypes v0.1.0
@@ -37,37 +37,44 @@ require (
3737
github.com/spf13/viper v1.13.0
3838
github.com/tendermint/go-amino v0.16.0
3939
github.com/tendermint/tendermint v0.37.0-rc2
40-
go.opentelemetry.io/otel v1.14.0
41-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0
42-
go.opentelemetry.io/otel/metric v0.37.0
43-
go.opentelemetry.io/otel/sdk v1.14.0
44-
go.opentelemetry.io/otel/sdk/metric v0.37.0
45-
go.opentelemetry.io/otel/trace v1.14.0
46-
go.opentelemetry.io/proto/otlp v0.19.0
47-
golang.org/x/crypto v0.14.0
48-
golang.org/x/sync v0.3.0
49-
google.golang.org/protobuf v1.30.0
40+
go.opentelemetry.io/otel v1.27.0
41+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0
42+
go.opentelemetry.io/otel/sdk v1.27.0
43+
go.opentelemetry.io/otel/sdk/metric v1.27.0
44+
go.opentelemetry.io/otel/trace v1.27.0
45+
go.opentelemetry.io/proto/otlp v1.3.1
46+
golang.org/x/crypto v0.21.0
47+
golang.org/x/sync v0.6.0
48+
google.golang.org/protobuf v1.34.1
5049
gopkg.in/yaml.v3 v3.0.1
5150
gotest.tools v2.2.0+incompatible
5251
gotest.tools/v3 v3.5.1
5352
)
5453

5554
require (
5655
github.com/DataDog/zstd v1.5.2 // indirect
57-
github.com/VictoriaMetrics/fastcache v1.6.0 // indirect
56+
github.com/Microsoft/go-winio v0.6.1 // indirect
57+
github.com/VictoriaMetrics/fastcache v1.12.1 // indirect
58+
github.com/allegro/bigcache v1.2.1 // indirect
5859
github.com/beorn7/perks v1.0.1 // indirect
60+
github.com/bits-and-blooms/bitset v1.10.0 // indirect
5961
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
6062
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 // indirect
6163
github.com/cespare/xxhash v1.1.0 // indirect
6264
github.com/cespare/xxhash/v2 v2.2.0 // indirect
63-
github.com/cockroachdb/errors v1.9.1 // indirect
65+
github.com/cockroachdb/errors v1.11.1 // indirect
6466
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
65-
github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 // indirect
66-
github.com/cockroachdb/redact v1.1.3 // indirect
67+
github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect
68+
github.com/cockroachdb/redact v1.1.5 // indirect
69+
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
70+
github.com/consensys/bavard v0.1.13 // indirect
71+
github.com/consensys/gnark-crypto v0.12.1 // indirect
6772
github.com/containerd/cgroups v1.1.0 // indirect
6873
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
6974
github.com/cosmos/gogoproto v1.4.1 // indirect
7075
github.com/cosmos/gorocksdb v1.2.0 // indirect
76+
github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect
77+
github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect
7178
github.com/creachadair/taskgroup v0.3.2 // indirect
7279
github.com/davecgh/go-spew v1.1.1 // indirect
7380
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
@@ -79,33 +86,34 @@ require (
7986
github.com/docker/go-units v0.5.0 // indirect
8087
github.com/dustin/go-humanize v1.0.1 // indirect
8188
github.com/elastic/gosigar v0.14.2 // indirect
89+
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
8290
github.com/fjl/memsize v0.0.1 // indirect
8391
github.com/flynn/noise v1.0.0 // indirect
8492
github.com/francoispqt/gojay v1.2.13 // indirect
85-
github.com/fsnotify/fsnotify v1.6.0 // indirect
93+
github.com/fsnotify/fsnotify v1.7.0 // indirect
8694
github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect
95+
github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect
8796
github.com/getsentry/sentry-go v0.18.0 // indirect
8897
github.com/ghodss/yaml v1.0.0 // indirect
8998
github.com/go-kit/kit v0.12.0 // indirect
9099
github.com/go-kit/log v0.2.1 // indirect
91100
github.com/go-logfmt/logfmt v0.5.1 // indirect
92-
github.com/go-logr/logr v1.2.4 // indirect
101+
github.com/go-logr/logr v1.4.1 // indirect
93102
github.com/go-logr/stdr v1.2.2 // indirect
94-
github.com/go-ole/go-ole v1.2.6 // indirect
103+
github.com/go-ole/go-ole v1.3.0 // indirect
95104
github.com/go-openapi/jsonpointer v0.19.6 // indirect
96105
github.com/go-openapi/swag v0.22.4 // indirect
97-
github.com/go-stack/stack v1.8.1 // indirect
98106
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
99107
github.com/godbus/dbus/v5 v5.1.0 // indirect
100108
github.com/gofrs/flock v0.8.1 // indirect
101109
github.com/gogo/protobuf v1.3.2 // indirect
102-
github.com/golang/mock v1.6.0 // indirect
103-
github.com/golang/protobuf v1.5.3 // indirect
110+
github.com/golang/protobuf v1.5.4 // indirect
104111
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
105112
github.com/google/btree v1.0.1 // indirect
113+
github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 // indirect
106114
github.com/google/gopacket v1.1.19 // indirect
107115
github.com/google/orderedcode v0.0.1 // indirect
108-
github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect
116+
github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect
109117
github.com/gorilla/mux v1.8.0 // indirect
110118
github.com/gorilla/websocket v1.5.0 // indirect
111119
github.com/gtank/merlin v0.1.1 // indirect
@@ -116,13 +124,13 @@ require (
116124
github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect
117125
github.com/hashicorp/hcl v1.0.0 // indirect
118126
github.com/holiman/bloomfilter/v2 v2.0.3 // indirect
119-
github.com/holiman/uint256 v1.2.3 // indirect
120-
github.com/huin/goupnp v1.2.0 // indirect
127+
github.com/holiman/uint256 v1.2.4 // indirect
128+
github.com/huin/goupnp v1.3.0 // indirect
121129
github.com/inconshreveable/mousetrap v1.0.1 // indirect
130+
github.com/ipfs/boxo v0.10.0 // indirect
122131
github.com/ipfs/go-cid v0.4.1 // indirect
123132
github.com/ipfs/go-datastore v0.6.0 // indirect
124133
github.com/ipfs/go-ipfs-util v0.0.3 // indirect
125-
github.com/ipfs/go-ipns v0.3.1 // indirect
126134
github.com/ipfs/go-log v1.0.5 // indirect
127135
github.com/ipld/go-ipld-prime v0.20.0 // indirect
128136
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
@@ -137,8 +145,7 @@ require (
137145
github.com/jbenet/goprocess v0.1.4 // indirect
138146
github.com/jmhodges/levigo v1.0.0 // indirect
139147
github.com/josharian/intern v1.0.0 // indirect
140-
github.com/json-iterator/go v1.1.12 // indirect
141-
github.com/klauspost/compress v1.16.7 // indirect
148+
github.com/klauspost/compress v1.17.2 // indirect
142149
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
143150
github.com/koron/go-ssdp v0.0.4 // indirect
144151
github.com/kr/text v0.2.0 // indirect
@@ -148,8 +155,9 @@ require (
148155
github.com/libp2p/go-cidranger v1.1.0 // indirect
149156
github.com/libp2p/go-flow-metrics v0.1.0 // indirect
150157
github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect
151-
github.com/libp2p/go-libp2p-kbucket v0.5.0 // indirect
158+
github.com/libp2p/go-libp2p-kbucket v0.6.3 // indirect
152159
github.com/libp2p/go-libp2p-record v0.2.0 // indirect
160+
github.com/libp2p/go-libp2p-routing-helpers v0.7.2 // indirect
153161
github.com/libp2p/go-msgio v0.3.0 // indirect
154162
github.com/libp2p/go-nat v0.2.0 // indirect
155163
github.com/libp2p/go-netroute v0.2.1 // indirect
@@ -159,17 +167,16 @@ require (
159167
github.com/mailru/easyjson v0.7.7 // indirect
160168
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
161169
github.com/mattn/go-colorable v0.1.13 // indirect
162-
github.com/mattn/go-isatty v0.0.19 // indirect
170+
github.com/mattn/go-isatty v0.0.20 // indirect
163171
github.com/mattn/go-runewidth v0.0.15 // indirect
164172
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
165-
github.com/miekg/dns v1.1.55 // indirect
173+
github.com/miekg/dns v1.1.56 // indirect
166174
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
167175
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
168176
github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect
169177
github.com/minio/highwayhash v1.0.2 // indirect
170178
github.com/minio/sha256-simd v1.0.1 // indirect
171-
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
172-
github.com/modern-go/reflect2 v1.0.2 // indirect
179+
github.com/mmcloughlin/addchain v0.4.0 // indirect
173180
github.com/mr-tron/base58 v1.2.0 // indirect
174181
github.com/multiformats/go-base32 v0.1.0 // indirect
175182
github.com/multiformats/go-base36 v0.2.0 // indirect
@@ -178,61 +185,65 @@ require (
178185
github.com/multiformats/go-multibase v0.2.0 // indirect
179186
github.com/multiformats/go-multicodec v0.9.0 // indirect
180187
github.com/multiformats/go-multihash v0.2.3 // indirect
181-
github.com/multiformats/go-multistream v0.4.1 // indirect
188+
github.com/multiformats/go-multistream v0.5.0 // indirect
182189
github.com/multiformats/go-varint v0.0.7 // indirect
183190
github.com/olekukonko/tablewriter v0.0.5 // indirect
184-
github.com/onsi/ginkgo/v2 v2.11.0 // indirect
191+
github.com/onsi/ginkgo/v2 v2.13.0 // indirect
192+
github.com/onsi/gomega v1.30.0 // indirect
185193
github.com/opencontainers/runtime-spec v1.1.0 // indirect
186194
github.com/opentracing/opentracing-go v1.2.0 // indirect
187195
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
188196
github.com/pelletier/go-toml v1.9.5 // indirect
189197
github.com/petermattis/goid v0.0.0-20230808133559-b036b712a89b // indirect
190198
github.com/polydawn/refmt v0.89.0 // indirect
191-
github.com/prometheus/client_model v0.4.0 // indirect
192-
github.com/prometheus/common v0.40.0 // indirect
193-
github.com/prometheus/procfs v0.9.0 // indirect
199+
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
200+
github.com/prometheus/common v0.44.0 // indirect
201+
github.com/prometheus/procfs v0.11.1 // indirect
194202
github.com/quic-go/qpack v0.4.0 // indirect
195-
github.com/quic-go/qtls-go1-20 v0.3.3 // indirect
196-
github.com/quic-go/quic-go v0.38.1 // indirect
197-
github.com/quic-go/webtransport-go v0.5.3 // indirect
203+
github.com/quic-go/qtls-go1-20 v0.3.4 // indirect
204+
github.com/quic-go/quic-go v0.39.3 // indirect
205+
github.com/quic-go/webtransport-go v0.6.0 // indirect
198206
github.com/raulk/go-watchdog v1.3.0 // indirect
199207
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
200-
github.com/rivo/uniseg v0.2.0 // indirect
201-
github.com/rogpeppe/go-internal v1.9.0 // indirect
202-
github.com/rs/cors v1.8.3 // indirect
208+
github.com/rivo/uniseg v0.4.3 // indirect
209+
github.com/rogpeppe/go-internal v1.12.0 // indirect
210+
github.com/rs/cors v1.9.0 // indirect
203211
github.com/rs/xid v1.4.0 // indirect
204212
github.com/sasha-s/go-deadlock v0.3.1 // indirect
205213
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
206214
github.com/spaolacci/murmur3 v1.1.0 // indirect
207215
github.com/spf13/cast v1.5.1 // indirect
208216
github.com/spf13/jwalterweatherman v1.1.0 // indirect
209217
github.com/subosito/gotenv v1.4.2 // indirect
210-
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
218+
github.com/supranational/blst v0.3.11 // indirect
219+
github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect
211220
github.com/tendermint/tm-db v0.6.7 // indirect
212221
github.com/tklauser/go-sysconf v0.3.12 // indirect
213222
github.com/tklauser/numcpus v0.6.1 // indirect
214223
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
215224
github.com/yusufpapurcu/wmi v1.2.3 // indirect
216225
go.etcd.io/bbolt v1.3.7 // indirect
217226
go.opencensus.io v0.24.0 // indirect
218-
go.uber.org/dig v1.17.0 // indirect
219-
go.uber.org/fx v1.20.0 // indirect
227+
go.opentelemetry.io/otel/metric v1.27.0 // indirect
228+
go.uber.org/dig v1.17.1 // indirect
229+
go.uber.org/fx v1.20.1 // indirect
230+
go.uber.org/mock v0.3.0 // indirect
220231
go.uber.org/multierr v1.11.0 // indirect
221-
go.uber.org/zap v1.25.0 // indirect
222-
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect
223-
golang.org/x/mod v0.12.0 // indirect
224-
golang.org/x/net v0.14.0 // indirect
225-
golang.org/x/sys v0.14.0 // indirect
226-
golang.org/x/text v0.13.0 // indirect
227-
golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect
228-
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
229-
google.golang.org/grpc v1.54.1 // indirect
232+
go.uber.org/zap v1.26.0 // indirect
233+
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
234+
golang.org/x/mod v0.14.0 // indirect
235+
golang.org/x/net v0.23.0 // indirect
236+
golang.org/x/sys v0.20.0 // indirect
237+
golang.org/x/text v0.15.0 // indirect
238+
golang.org/x/time v0.4.0 // indirect
239+
golang.org/x/tools v0.15.0 // indirect
240+
gonum.org/v1/gonum v0.13.0 // indirect
241+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect
242+
google.golang.org/grpc v1.64.0 // indirect
230243
gopkg.in/ini.v1 v1.67.0 // indirect
231-
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
232244
gopkg.in/yaml.v2 v2.4.0 // indirect
233245
lukechampine.com/blake3 v1.2.1 // indirect
246+
rsc.io/tmplfunc v0.0.3 // indirect
234247
)
235248

236249
replace github.com/bitwurx/jrpc2 => github.com/ulope/jrpc2 v0.0.0-20230706135348-a95cf3d96bd2
237-
238-
replace github.com/ethereum/go-ethereum => github.com/ethereum/go-ethereum v1.12.0

0 commit comments

Comments
 (0)