From e4ec983213ac7a8d08c9d69daf68e5a8507634a2 Mon Sep 17 00:00:00 2001 From: Denis Kirillov Date: Wed, 24 Aug 2022 19:03:48 +0300 Subject: [PATCH] [#678] Update SDK to fix panic on go1.19 Signed-off-by: Denis Kirillov --- go.mod | 7 +++---- go.sum | 11 ++++++----- internal/neofs/neofs.go | 12 ++++++------ internal/neofs/tree_signature.go | 13 +++++-------- 4 files changed, 20 insertions(+), 23 deletions(-) diff --git a/go.mod b/go.mod index 7e690cc9..b183477c 100644 --- a/go.mod +++ b/go.mod @@ -10,8 +10,8 @@ require ( github.com/minio/sio v0.3.0 github.com/nats-io/nats.go v1.13.1-0.20220121202836-972a071d373d github.com/nspcc-dev/neo-go v0.99.1 - github.com/nspcc-dev/neofs-api-go/v2 v2.13.1 - github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.6.0.20220808095525-4e31b4f23169 + github.com/nspcc-dev/neofs-api-go/v2 v2.13.2-0.20220818094951-98db3fa28419 + github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.6.0.20220824140410-7537fa0decc5 github.com/panjf2000/ants/v2 v2.5.0 github.com/prometheus/client_golang v1.11.0 github.com/spf13/pflag v1.0.5 @@ -51,11 +51,10 @@ require ( github.com/nspcc-dev/hrw v1.0.9 // indirect github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20220727202624-6c7a401f776a // indirect github.com/nspcc-dev/neofs-contract v0.15.3 // indirect - github.com/nspcc-dev/neofs-crypto v0.3.0 // indirect + github.com/nspcc-dev/neofs-crypto v0.4.0 github.com/nspcc-dev/rfc6979 v0.2.0 // indirect github.com/nspcc-dev/tzhash v1.6.1 // indirect github.com/pelletier/go-toml v1.9.3 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.26.0 // indirect diff --git a/go.sum b/go.sum index 963c0389..7c5934eb 100644 --- a/go.sum +++ b/go.sum @@ -349,18 +349,19 @@ github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20220727202624-6c7a401f776a h1:ND github.com/nspcc-dev/neo-go/pkg/interop v0.0.0-20220727202624-6c7a401f776a/go.mod h1:QBE0I30F2kOAISNpT5oks82yF4wkkUq3SCfI3Hqgx/Y= github.com/nspcc-dev/neofs-api-go/v2 v2.11.0-pre.0.20211201134523-3604d96f3fe1/go.mod h1:oS8dycEh8PPf2Jjp6+8dlwWyEv2Dy77h/XhhcdxYEFs= github.com/nspcc-dev/neofs-api-go/v2 v2.11.1/go.mod h1:oS8dycEh8PPf2Jjp6+8dlwWyEv2Dy77h/XhhcdxYEFs= -github.com/nspcc-dev/neofs-api-go/v2 v2.13.1 h1:s/xOhWtypsrevlhx4VzqiqFSLipSxLKc09IiFpfShHk= -github.com/nspcc-dev/neofs-api-go/v2 v2.13.1/go.mod h1:73j09Xa7I2zQbM3HCvAHnDHPYiiWnEHa1d6Z6RDMBLU= +github.com/nspcc-dev/neofs-api-go/v2 v2.13.2-0.20220818094951-98db3fa28419 h1:NFj8D0UYfHzvC+gIhK7yIUOyEcZi21caQsuYVbJGrVU= +github.com/nspcc-dev/neofs-api-go/v2 v2.13.2-0.20220818094951-98db3fa28419/go.mod h1:NAaDfOnFWIbAFkTj7pNQ+cknVue0JbdeRT9QQaeBCEY= github.com/nspcc-dev/neofs-contract v0.15.3 h1:7+NwyTtxFAnIevz0hR/XxQf6R2Ej2scjVR2bnnJnhBM= github.com/nspcc-dev/neofs-contract v0.15.3/go.mod h1:BXVZUZUJxrmmDETglXHI8+5DSgn84B9y5DoSWqEjYCs= github.com/nspcc-dev/neofs-crypto v0.2.0/go.mod h1:F/96fUzPM3wR+UGsPi3faVNmFlA9KAEAUQR7dMxZmNA= github.com/nspcc-dev/neofs-crypto v0.2.3/go.mod h1:8w16GEJbH6791ktVqHN9YRNH3s9BEEKYxGhlFnp0cDw= -github.com/nspcc-dev/neofs-crypto v0.3.0 h1:zlr3pgoxuzrmGCxc5W8dGVfA9Rro8diFvVnBg0L4ifM= github.com/nspcc-dev/neofs-crypto v0.3.0/go.mod h1:8w16GEJbH6791ktVqHN9YRNH3s9BEEKYxGhlFnp0cDw= +github.com/nspcc-dev/neofs-crypto v0.4.0 h1:5LlrUAM5O0k1+sH/sktBtrgfWtq1pgpDs09fZo+KYi4= +github.com/nspcc-dev/neofs-crypto v0.4.0/go.mod h1:6XJ8kbXgOfevbI2WMruOtI+qUJXNwSGM/E9eClXxPHs= github.com/nspcc-dev/neofs-sdk-go v0.0.0-20211201182451-a5b61c4f6477/go.mod h1:dfMtQWmBHYpl9Dez23TGtIUKiFvCIxUZq/CkSIhEpz4= github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220113123743-7f3162110659/go.mod h1:/jay1lr3w7NQd/VDBkEhkJmDmyPNsu4W+QV2obsUV40= -github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.6.0.20220808095525-4e31b4f23169 h1:rmdnXZevYxXHkzwtt7dDVEeLnEQhsMDrWxa3oc7odwQ= -github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.6.0.20220808095525-4e31b4f23169/go.mod h1:Wiw/FcQVxtvuOO70TidxFcQzFcyh8FFwqyCHscmf2rY= +github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.6.0.20220824140410-7537fa0decc5 h1:BkjgenUQeXnMnbvdpyn8tOoxZmaeKOsN6EEq8wF9Xnw= +github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.6.0.20220824140410-7537fa0decc5/go.mod h1:BQPxy2sOURSegZJVnrwYDagPtKI3H1Ctc7e0yS0xHvk= github.com/nspcc-dev/rfc6979 v0.1.0/go.mod h1:exhIh1PdpDC5vQmyEsGvc4YDM/lyQp/452QxGq/UEso= github.com/nspcc-dev/rfc6979 v0.2.0 h1:3e1WNxrN60/6N0DW7+UYisLeZJyfqZTNOjeV/toYvOE= github.com/nspcc-dev/rfc6979 v0.2.0/go.mod h1:exhIh1PdpDC5vQmyEsGvc4YDM/lyQp/452QxGq/UEso= diff --git a/internal/neofs/neofs.go b/internal/neofs/neofs.go index 98d952ce..2e123dfd 100644 --- a/internal/neofs/neofs.go +++ b/internal/neofs/neofs.go @@ -98,7 +98,7 @@ func (x *NeoFS) Container(ctx context.Context, idCnr cid.ID) (*container.Contain return nil, fmt.Errorf("read container via connection pool: %w", err) } - return res, nil + return &res, nil } var basicACLZero acl.Basic @@ -149,7 +149,7 @@ func (x *NeoFS) CreateContainer(ctx context.Context, prm layer.PrmContainerCreat return cid.ID{}, fmt.Errorf("save container via connection pool: %w", err) } - return *idCnr, nil + return idCnr, nil } // UserContainers implements neofs.NeoFS interface method. @@ -193,7 +193,7 @@ func (x *NeoFS) ContainerEACL(ctx context.Context, id cid.ID) (*eacl.Table, erro return nil, fmt.Errorf("read eACL via connection pool: %w", err) } - return res, nil + return &res, nil } // DeleteContainer implements neofs.NeoFS interface method. @@ -276,7 +276,7 @@ func (x *NeoFS) CreateObject(ctx context.Context, prm layer.PrmObjectCreate) (oi return oid.ID{}, fmt.Errorf("save object via connection pool: %w", err) } - return *idObj, nil + return idObj, nil } // SelectObjects implements neofs.NeoFS interface method. @@ -402,7 +402,7 @@ func (x *NeoFS) ReadObject(ctx context.Context, prm layer.PrmObjectRead) (*layer } return &layer.ObjectPart{ - Head: hdr, + Head: &hdr, }, nil } else if prm.PayloadRange[0]+prm.PayloadRange[1] == 0 { res, err := x.pool.GetObject(ctx, prmGet) @@ -440,7 +440,7 @@ func (x *NeoFS) ReadObject(ctx context.Context, prm layer.PrmObjectRead) (*layer } return &layer.ObjectPart{ - Payload: payloadReader{res}, + Payload: payloadReader{&res}, }, nil } diff --git a/internal/neofs/tree_signature.go b/internal/neofs/tree_signature.go index 4b7d91f2..5351f546 100644 --- a/internal/neofs/tree_signature.go +++ b/internal/neofs/tree_signature.go @@ -2,21 +2,18 @@ package neofs import ( - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/sha512" - + crypto "github.com/nspcc-dev/neofs-crypto" "google.golang.org/protobuf/proto" ) func (c *TreeClient) signData(buf []byte, f func(key, sign []byte)) error { - hash := sha512.Sum512(buf) - x, y, err := ecdsa.Sign(rand.Reader, &c.key.PrivateKey, hash[:]) + // crypto package should not be used outside of API libraries (see neofs-node#491). + // For now tree service does not include into SDK Client nor SDK Pool, so there is no choice. + // When SDK library adopts Tree service client, this should be dropped. + sign, err := crypto.Sign(&c.key.PrivateKey, buf) if err != nil { return err } - sign := elliptic.Marshal(elliptic.P256(), x, y) f(c.key.PublicKey().Bytes(), sign) return nil