Skip to content

Commit abc8169

Browse files
committed
Import the BDN/Gnark module from upstream dedis
It's probably going to take a while for upstream to merge the changes so we're importing just the changed package (BDN) and the new package (Gnark) into this repo. That way we avoid forking the entire repo but can still import our changes. Any changes to these pacakges should be submitted as PRs to upstream _first_, then backported to this repo. Includes: - dedis/kyber#546 - dedis/kyber#551 - dedis/kyber#553
1 parent 4724fef commit abc8169

24 files changed

+2010
-31
lines changed

Diff for: blssig/aggregation.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import (
66
"fmt"
77
"runtime/debug"
88

9-
"github.com/filecoin-project/go-f3/gpbft"
10-
"github.com/filecoin-project/go-f3/internal/measurements"
9+
"go.dedis.ch/kyber/v4"
1110
"go.opentelemetry.io/otel/metric"
1211

13-
"go.dedis.ch/kyber/v4"
14-
"go.dedis.ch/kyber/v4/sign"
12+
"github.com/filecoin-project/go-f3/gpbft"
13+
"github.com/filecoin-project/go-f3/internal/bls/bdn"
14+
"github.com/filecoin-project/go-f3/internal/measurements"
1515
)
1616

1717
// Max size of the point cache.
@@ -93,7 +93,7 @@ func (v *Verifier) VerifyAggregate(msg []byte, signature []byte, pubkeys []gpbft
9393
return v.scheme.Verify(aggPubKey, msg, signature)
9494
}
9595

96-
func (v *Verifier) pubkeysToMask(pubkeys []gpbft.PubKey) (*sign.Mask, error) {
96+
func (v *Verifier) pubkeysToMask(pubkeys []gpbft.PubKey) (*bdn.Mask, error) {
9797
kPubkeys := make([]kyber.Point, 0, len(pubkeys))
9898
for i, p := range pubkeys {
9999
point, err := v.pubkeyToPoint(p)
@@ -103,9 +103,9 @@ func (v *Verifier) pubkeysToMask(pubkeys []gpbft.PubKey) (*sign.Mask, error) {
103103
kPubkeys = append(kPubkeys, point.Clone())
104104
}
105105

106-
mask, err := sign.NewMask(kPubkeys, nil)
106+
mask, err := bdn.NewMask(v.keyGroup, kPubkeys, nil)
107107
if err != nil {
108-
return nil, fmt.Errorf("creating key mask: %w", err)
108+
return nil, fmt.Errorf("creating bdn mask: %w", err)
109109
}
110110
for i := range kPubkeys {
111111
err := mask.SetBit(i, true)

Diff for: blssig/cache_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ import (
55
"testing"
66

77
"github.com/stretchr/testify/require"
8-
bls12381 "go.dedis.ch/kyber/v4/pairing/bls12381/kilic"
9-
"go.dedis.ch/kyber/v4/sign/bdn"
108

119
"github.com/filecoin-project/go-f3/gpbft"
10+
"github.com/filecoin-project/go-f3/internal/bls/bdn"
11+
bls12381 "github.com/filecoin-project/go-f3/internal/bls/gnark"
1212
)
1313

1414
const maxCacheMemory uint64 = 10 << 20 // 10MiB
1515

1616
func TestCacheMemory(t *testing.T) {
17-
suite := bls12381.NewBLS12381Suite()
17+
suite := bls12381.NewSuiteBLS12381()
1818
scheme := bdn.NewSchemeOnG2(suite)
1919

2020
rand := suite.RandomStream()

Diff for: blssig/signer.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import (
66
"errors"
77

88
"github.com/filecoin-project/go-f3/gpbft"
9+
"github.com/filecoin-project/go-f3/internal/bls/bdn"
10+
bls12381 "github.com/filecoin-project/go-f3/internal/bls/gnark"
911
"go.dedis.ch/kyber/v4"
10-
bls12381 "go.dedis.ch/kyber/v4/pairing/bls12381/kilic"
11-
"go.dedis.ch/kyber/v4/sign/bdn"
1212
)
1313

1414
var _ gpbft.Signer = (*Signer)(nil)
@@ -21,7 +21,7 @@ type Signer struct {
2121

2222
func SignerWithKeyOnG1(pub gpbft.PubKey, privKey kyber.Scalar) *Signer {
2323
return &Signer{
24-
scheme: bdn.NewSchemeOnG2(bls12381.NewBLS12381Suite()),
24+
scheme: bdn.NewSchemeOnG2(bls12381.NewSuiteBLS12381()),
2525
pubKey: pub,
2626
privKey: privKey,
2727
}

Diff for: blssig/verifier.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import (
88
"sync"
99

1010
"go.dedis.ch/kyber/v4"
11-
bls12381 "go.dedis.ch/kyber/v4/pairing/bls12381/kilic"
12-
"go.dedis.ch/kyber/v4/sign/bdn"
1311
"go.opentelemetry.io/otel/metric"
1412

1513
"github.com/filecoin-project/go-f3/gpbft"
14+
"github.com/filecoin-project/go-f3/internal/bls/bdn"
15+
bls12381 "github.com/filecoin-project/go-f3/internal/bls/gnark"
1616
"github.com/filecoin-project/go-f3/internal/measurements"
1717
)
1818

@@ -25,7 +25,7 @@ type Verifier struct {
2525
}
2626

2727
func VerifierWithKeyOnG1() *Verifier {
28-
suite := bls12381.NewBLS12381Suite()
28+
suite := bls12381.NewSuiteBLS12381()
2929
return &Verifier{
3030
scheme: bdn.NewSchemeOnG2(suite),
3131
keyGroup: suite.G1(),

Diff for: blssig/verifier_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import (
44
"context"
55
"testing"
66

7+
"github.com/filecoin-project/go-f3/internal/bls/bdn"
8+
bls12381 "github.com/filecoin-project/go-f3/internal/bls/gnark"
79
"github.com/stretchr/testify/require"
8-
bls12381 "go.dedis.ch/kyber/v4/pairing/bls12381/kilic"
9-
"go.dedis.ch/kyber/v4/sign/bdn"
1010
)
1111

1212
func BenchmarkBLSSigning(b *testing.B) {
1313
var (
14-
blsSuit = bls12381.NewBLS12381Suite()
14+
blsSuit = bls12381.NewSuiteBLS12381()
1515
blsSchema = bdn.NewSchemeOnG2(blsSuit)
1616
)
1717
privKey, pubKey := blsSchema.NewKeyPair(blsSuit.RandomStream())

Diff for: go.mod

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module github.com/filecoin-project/go-f3
33
go 1.22
44

55
require (
6+
github.com/consensys/gnark-crypto v0.12.1
67
github.com/filecoin-project/go-bitfield v0.2.4
78
github.com/filecoin-project/go-clock v0.1.0
89
github.com/filecoin-project/go-state-types v0.14.0
@@ -35,7 +36,9 @@ require (
3536
github.com/andybalholm/brotli v1.1.0 // indirect
3637
github.com/benbjohnson/clock v1.3.5 // indirect
3738
github.com/beorn7/perks v1.0.1 // indirect
39+
github.com/bits-and-blooms/bitset v1.13.0 // indirect
3840
github.com/cespare/xxhash/v2 v2.3.0 // indirect
41+
github.com/consensys/bavard v0.1.13 // indirect
3942
github.com/containerd/cgroups v1.1.0 // indirect
4043
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
4144
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
@@ -62,7 +65,6 @@ require (
6265
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
6366
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
6467
github.com/jbenet/goprocess v0.1.4 // indirect
65-
github.com/kilic/bls12-381 v0.1.0 // indirect
6668
github.com/klauspost/compress v1.17.9 // indirect
6769
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
6870
github.com/koron/go-ssdp v0.0.4 // indirect
@@ -82,6 +84,7 @@ require (
8284
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
8385
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
8486
github.com/minio/sha256-simd v1.0.1 // indirect
87+
github.com/mmcloughlin/addchain v0.4.0 // indirect
8588
github.com/mr-tron/base58 v1.2.0 // indirect
8689
github.com/multiformats/go-base32 v0.1.0 // indirect
8790
github.com/multiformats/go-base36 v0.2.0 // indirect
@@ -128,6 +131,7 @@ require (
128131
github.com/stretchr/objx v0.5.2 // indirect
129132
github.com/syndtr/goleveldb v1.0.0 // indirect
130133
github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect
134+
go.dedis.ch/fixbuf v1.0.3 // indirect
131135
go.opentelemetry.io/otel/trace v1.28.0 // indirect
132136
go.uber.org/dig v1.17.1 // indirect
133137
go.uber.org/fx v1.21.1 // indirect
@@ -140,4 +144,5 @@ require (
140144
google.golang.org/protobuf v1.34.2 // indirect
141145
gopkg.in/yaml.v3 v3.0.1 // indirect
142146
lukechampine.com/blake3 v1.2.1 // indirect
147+
rsc.io/tmplfunc v0.0.3 // indirect
143148
)

Diff for: go.sum

+18-3
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,18 @@ github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZx
1818
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
1919
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
2020
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
21+
github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
22+
github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
2123
github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
2224
github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
2325
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
2426
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
2527
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
2628
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
29+
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
30+
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
31+
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
32+
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
2733
github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE=
2834
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
2935
github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
@@ -108,6 +114,7 @@ github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OI
108114
github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo=
109115
github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
110116
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
117+
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
111118
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
112119
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
113120
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -152,8 +159,6 @@ github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZl
152159
github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU=
153160
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
154161
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
155-
github.com/kilic/bls12-381 v0.1.0 h1:encrdjqKMEvabVQ7qYOKu1OvhqpK4s47wDYtNiPtlp4=
156-
github.com/kilic/bls12-381 v0.1.0/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhdmfzw1ig=
157162
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
158163
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
159164
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
@@ -173,6 +178,8 @@ github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
173178
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
174179
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
175180
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
181+
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
182+
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
176183
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
177184
github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
178185
github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM=
@@ -224,6 +231,9 @@ github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+
224231
github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
225232
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
226233
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
234+
github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
235+
github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
236+
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
227237
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
228238
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
229239
github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8=
@@ -434,6 +444,8 @@ go.dedis.ch/fixbuf v1.0.3 h1:hGcV9Cd/znUxlusJ64eAlExS+5cJDIyTyEG+otu5wQs=
434444
go.dedis.ch/fixbuf v1.0.3/go.mod h1:yzJMt34Wa5xD37V5RTdmp38cz3QhMagdGoem9anUalw=
435445
go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240916105431-b283c0cdd30a h1:FF9ZER1DSNuJWcpC/P9AJ9LpswxPxyyQ65YTOqdzDd0=
436446
go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240916105431-b283c0cdd30a/go.mod h1:tg6jwKTYEjm94VxkFwiQy+ec9hoQvccIU989wNjXWVI=
447+
go.dedis.ch/protobuf v1.0.11 h1:FTYVIEzY/bfl37lu3pR4lIj+F9Vp1jE8oh91VmxKgLo=
448+
go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYrJ4=
437449
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
438450
go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
439451
go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
@@ -555,7 +567,6 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w
555567
golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
556568
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
557569
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
558-
golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
559570
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
560571
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
561572
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -661,6 +672,8 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD
661672
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
662673
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
663674
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
675+
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
676+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
664677
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
665678
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
666679
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
@@ -672,5 +685,7 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh
672685
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
673686
lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI=
674687
lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
688+
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
689+
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
675690
sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=
676691
sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=

0 commit comments

Comments
 (0)