[#1100] *: Adopt new SDK's owner.ID API

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2022-01-21 15:15:10 +03:00 committed by Alex Vanin
parent 4b5404047c
commit fee2f5a330
21 changed files with 32 additions and 134 deletions

View file

@ -192,12 +192,6 @@ var cmdSubnetCreate = &cobra.Command{
return fmt.Errorf("read private key: %w", err)
}
// calculate wallet address from key
n3Wallet, err := owner.NEO3WalletFromPublicKey(&key.PrivateKey.PublicKey)
if err != nil {
return fmt.Errorf("wallet from key: %w", err)
}
// generate subnet ID and marshal it
var (
id subnetid.ID
@ -220,7 +214,7 @@ var cmdSubnetCreate = &cobra.Command{
}
// declare creator ID and encode it
creator := *owner.NewIDFromNeo3Wallet(n3Wallet)
creator := *owner.NewIDFromPublicKey(&key.PrivateKey.PublicKey)
// fill subnet info and encode it
var info subnet.Info

View file

@ -41,10 +41,7 @@ var accountingBalanceCmd = &cobra.Command{
exitOnErr(cmd, err)
if balanceOwner == "" {
wallet, err := owner.NEO3WalletFromPublicKey(&key.PublicKey)
exitOnErr(cmd, err)
oid = owner.NewIDFromNeo3Wallet(wallet)
oid = owner.NewIDFromPublicKey(&key.PublicKey)
} else {
oid, err = ownerFromString(balanceOwner)
exitOnErr(cmd, err)

View file

@ -116,10 +116,7 @@ var listContainersCmd = &cobra.Command{
exitOnErr(cmd, err)
if containerOwner == "" {
wallet, err := owner.NEO3WalletFromPublicKey(&key.PublicKey)
exitOnErr(cmd, err)
oid = owner.NewIDFromNeo3Wallet(wallet)
oid = owner.NewIDFromPublicKey(&key.PublicKey)
} else {
oid, err = ownerFromString(containerOwner)
exitOnErr(cmd, err)

View file

@ -594,13 +594,7 @@ func getObjectHash(cmd *cobra.Command, _ []string) {
}
func getOwnerID(key *ecdsa.PrivateKey) (*owner.ID, error) {
w, err := owner.NEO3WalletFromPublicKey(&key.PublicKey)
if err != nil {
return nil, err
}
ownerID := owner.NewID()
ownerID.SetNeo3Wallet(w)
return ownerID, nil
return owner.NewIDFromPublicKey(&key.PublicKey), nil
}
var searchUnaryOpVocabulary = map[string]object.SearchMatchType{

View file

@ -228,15 +228,11 @@ func initCfg(path string) *cfg {
key := nodeconfig.Key(appCfg)
neo3Wallet, err := owner.NEO3WalletFromPublicKey(&key.PrivateKey.PublicKey)
fatalOnErr(err)
ownerIDFromKey := owner.NewID()
ownerIDFromKey.SetNeo3Wallet(neo3Wallet)
ownerIDFromKey := owner.NewIDFromPublicKey(&key.PrivateKey.PublicKey)
var logPrm logger.Prm
err = logPrm.SetLevelString(
err := logPrm.SetLevelString(
loggerconfig.Level(appCfg),
)
fatalOnErr(err)

View file

@ -3,7 +3,6 @@ package main
import (
"bytes"
"context"
"crypto/ecdsa"
"fmt"
"github.com/nspcc-dev/neofs-api-go/v2/object"
@ -183,12 +182,6 @@ func (x *coreClientConstructor) Get(info coreclient.NodeInfo) (coreclient.MultiA
func initObjectService(c *cfg) {
ls := c.cfgObject.cfgLocalStorage.localStorage
keyStorage := util.NewKeyStorage(&c.key.PrivateKey, c.privateTokenStore, c.cfgNetmap.state)
nodeOwner := owner.NewID()
neo3Wallet, err := owner.NEO3WalletFromPublicKey((*ecdsa.PublicKey)(c.key.PublicKey()))
fatalOnErr(err)
nodeOwner.SetNeo3Wallet(neo3Wallet)
clientConstructor := &reputationClientConstructor{
log: c.log,

2
go.mod
View file

@ -13,7 +13,7 @@ require (
github.com/nspcc-dev/hrw v1.0.9
github.com/nspcc-dev/neo-go v0.98.0
github.com/nspcc-dev/neofs-api-go/v2 v2.11.2-0.20220114101721-227a871a04ac
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220119080627-f83ff628fb19
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220121080144-596774ce5bd3
github.com/nspcc-dev/tzhash v1.4.0
github.com/panjf2000/ants/v2 v2.4.0
github.com/paulmach/orb v0.2.2

4
go.sum
View file

@ -371,8 +371,8 @@ github.com/nspcc-dev/neofs-crypto v0.2.3/go.mod h1:8w16GEJbH6791ktVqHN9YRNH3s9BE
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-sdk-go v0.0.0-20211201182451-a5b61c4f6477/go.mod h1:dfMtQWmBHYpl9Dez23TGtIUKiFvCIxUZq/CkSIhEpz4=
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220119080627-f83ff628fb19 h1:VuOztHAvvu0ZK7ng6EillhlEunHy34TQr5/13k0fSUU=
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220119080627-f83ff628fb19/go.mod h1:fhs4v6uts7bEgwYP05NXbAQlQ0YhK4WVjJRKQKFKBxY=
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220121080144-596774ce5bd3 h1:Llot/7cnQwCfhSrnNLDhuYxKpX4Ay+xa6x7B1jI2eaU=
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220121080144-596774ce5bd3/go.mod h1:fhs4v6uts7bEgwYP05NXbAQlQ0YhK4WVjJRKQKFKBxY=
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=

View file

@ -26,10 +26,9 @@ func TestCheckFormat(t *testing.T) {
require.Error(t, CheckFormat(c))
wallet, err := owner.NEO3WalletFromPublicKey(&test.DecodeKey(-1).PublicKey)
require.NoError(t, err)
oid := owner.NewIDFromPublicKey(&test.DecodeKey(-1).PublicKey)
c.SetOwnerID(owner.NewIDFromNeo3Wallet(wallet))
c.SetOwnerID(oid)
// set incorrect nonce
cV2 := c.ToV2()

View file

@ -122,14 +122,7 @@ func (v *FormatValidator) checkOwnerKey(id *owner.ID, key []byte) error {
return err
}
wallet, err := owner.NEO3WalletFromPublicKey((*ecdsa.PublicKey)(pub))
if err != nil {
// TODO: check via NeoFSID
return err
}
id2 := owner.NewID()
id2.SetNeo3Wallet(wallet)
id2 := owner.NewIDFromPublicKey((*ecdsa.PublicKey)(pub))
if !id.Equal(id2) {
return fmt.Errorf("(%T) different owner identifiers %s/%s", v, id, id2)

View file

@ -34,16 +34,10 @@ func testObjectID(t *testing.T) *object.ID {
return id
}
func blankValidObject(t *testing.T, key *ecdsa.PrivateKey) *RawObject {
wallet, err := owner.NEO3WalletFromPublicKey(&key.PublicKey)
require.NoError(t, err)
ownerID := owner.NewID()
ownerID.SetNeo3Wallet(wallet)
func blankValidObject(key *ecdsa.PrivateKey) *RawObject {
obj := NewRaw()
obj.SetContainerID(cidtest.ID())
obj.SetOwnerID(ownerID)
obj.SetOwnerID(owner.NewIDFromPublicKey(&key.PublicKey))
return obj
}
@ -94,11 +88,10 @@ func TestFormatValidator_Validate(t *testing.T) {
})
t.Run("correct w/ session token", func(t *testing.T) {
w, err := owner.NEO3WalletFromPublicKey((*ecdsa.PublicKey)(ownerKey.PublicKey()))
require.NoError(t, err)
oid := owner.NewIDFromPublicKey((*ecdsa.PublicKey)(ownerKey.PublicKey()))
tok := sessiontest.Token()
tok.SetOwnerID(owner.NewIDFromNeo3Wallet(w))
tok.SetOwnerID(oid)
obj := NewRaw()
obj.SetContainerID(cidtest.ID())
@ -111,7 +104,7 @@ func TestFormatValidator_Validate(t *testing.T) {
})
t.Run("correct w/o session token", func(t *testing.T) {
obj := blankValidObject(t, &ownerKey.PrivateKey)
obj := blankValidObject(&ownerKey.PrivateKey)
require.NoError(t, object.SetIDWithSignature(&ownerKey.PrivateKey, obj.SDK()))
@ -188,7 +181,7 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("expiration", func(t *testing.T) {
fn := func(val string) *Object {
obj := blankValidObject(t, &ownerKey.PrivateKey)
obj := blankValidObject(&ownerKey.PrivateKey)
a := object.NewAttribute()
a.SetKey(objectV2.SysAttributeExpEpoch)
@ -222,7 +215,7 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("attributes", func(t *testing.T) {
t.Run("duplication", func(t *testing.T) {
obj := blankValidObject(t, &ownerKey.PrivateKey)
obj := blankValidObject(&ownerKey.PrivateKey)
a1 := object.NewAttribute()
a1.SetKey("key1")
@ -244,7 +237,7 @@ func TestFormatValidator_Validate(t *testing.T) {
})
t.Run("empty value", func(t *testing.T) {
obj := blankValidObject(t, &ownerKey.PrivateKey)
obj := blankValidObject(&ownerKey.PrivateKey)
a := object.NewAttribute()
a.SetKey("key")

View file

@ -52,17 +52,7 @@ func (cp *Processor) checkKeyOwnership(ownerIDSrc ownerIDSource, key *keys.Publi
}
}
// TODO: need more convenient way to do this
w, err := owner.NEO3WalletFromPublicKey(&ecdsa.PublicKey{
Curve: key.Curve,
X: key.X,
Y: key.Y,
})
if err != nil {
return err
}
if ownerIDSrc.OwnerID().Equal(owner.NewIDFromNeo3Wallet(w)) {
if ownerIDSrc.OwnerID().Equal(owner.NewIDFromPublicKey((*ecdsa.PublicKey)(key))) {
return nil
}

View file

@ -319,13 +319,5 @@ func ownerFromKey(key []byte) (*owner.ID, error) {
return nil, err
}
n3wallet, err := owner.NEO3WalletFromPublicKey((*ecdsa.PublicKey)(pubKey))
if err != nil {
return nil, err
}
o := owner.NewID()
o.SetNeo3Wallet(n3wallet)
return o, nil
return owner.NewIDFromPublicKey((*ecdsa.PublicKey)(pubKey)), nil
}

View file

@ -4,7 +4,6 @@ import (
"math/big"
"sync"
"github.com/mr-tron/base58"
"github.com/nspcc-dev/neo-go/pkg/encoding/address"
"github.com/nspcc-dev/neo-go/pkg/util"
"github.com/nspcc-dev/neofs-node/pkg/innerring/processors/settlement/common"
@ -85,16 +84,12 @@ func bankOwnerID() (*owner.ID, error) {
u := util.Uint160{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // todo: define const
1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
d, err := base58.Decode(address.Uint160ToString(u))
o := owner.NewID()
err := o.Parse(address.Uint160ToString(u))
if err != nil {
return nil, err
}
var w owner.NEO3Wallet
copy(w[:], d)
o := owner.NewID()
o.SetNeo3Wallet(&w)
return o, nil
}

View file

@ -187,15 +187,7 @@ func (s settlementDeps) ResolveKey(ni common.NodeInfo) (*owner.ID, error) {
return nil, err
}
w, err := owner.NEO3WalletFromPublicKey((*ecdsa.PublicKey)(pub))
if err != nil {
return nil, err
}
id := owner.NewID()
id.SetNeo3Wallet(w)
return id, nil
return owner.NewIDFromPublicKey((*ecdsa.PublicKey)(pub)), nil
}
func (s settlementDeps) Transfer(sender, recipient *owner.ID, amount *big.Int, details []byte) {

View file

@ -204,13 +204,8 @@ func (x putSubnetEvent) ReadCreator(id *owner.ID) error {
return err
}
wal, err := owner.NEO3WalletFromPublicKey((*ecdsa.PublicKey)(key))
if err != nil {
return err
}
// it would be better if we could do it not like this
*id = *owner.NewIDFromNeo3Wallet(wal)
*id = *owner.NewIDFromPublicKey((*ecdsa.PublicKey)(key))
return nil
}

View file

@ -88,11 +88,8 @@ func generateRawObjectWithCID(t *testing.T, cid *cid.ID) *object.RawObject {
version.SetMajor(2)
version.SetMinor(1)
w, err := owner.NEO3WalletFromPublicKey(&test.DecodeKey(-1).PublicKey)
require.NoError(t, err)
csum := new(checksum.Checksum)
csum.SetSHA256(sha256.Sum256(w.Bytes()))
csum.SetSHA256(sha256.Sum256(owner.PublicKeyToIDBytes(&test.DecodeKey(-1).PublicKey)))
csumTZ := new(checksum.Checksum)
csumTZ.SetTillichZemor(tz.Sum(csum.Sum()))

View file

@ -69,11 +69,8 @@ func generateRawObjectWithCID(t *testing.T, cid *cid.ID) *object.RawObject {
version.SetMajor(2)
version.SetMinor(1)
w, err := owner.NEO3WalletFromPublicKey(&test.DecodeKey(-1).PublicKey)
require.NoError(t, err)
csum := new(checksum.Checksum)
csum.SetSHA256(sha256.Sum256(w.Bytes()))
csum.SetSHA256(sha256.Sum256(owner.PublicKeyToIDBytes(&test.DecodeKey(-1).PublicKey)))
csumTZ := new(checksum.Checksum)
csumTZ.SetTillichZemor(tz.Sum(csum.Sum()))

View file

@ -73,11 +73,8 @@ func generateRawObjectWithCID(t *testing.T, cid *cid.ID) *object.RawObject {
version.SetMajor(2)
version.SetMinor(1)
w, err := owner.NEO3WalletFromPublicKey(&test.DecodeKey(-1).PublicKey)
require.NoError(t, err)
csum := new(checksum.Checksum)
csum.SetSHA256(sha256.Sum256(w.Bytes()))
csum.SetSHA256(sha256.Sum256(owner.PublicKeyToIDBytes(&test.DecodeKey(-1).PublicKey)))
csumTZ := new(checksum.Checksum)
csumTZ.SetTillichZemor(tz.Sum(csum.Sum()))

View file

@ -780,12 +780,7 @@ func isOwnerFromKey(id *owner.ID, key *keys.PublicKey) bool {
return false
}
wallet, err := owner.NEO3WalletFromPublicKey((*ecdsa.PublicKey)(key))
if err != nil {
return false
}
return id.Equal(owner.NewIDFromNeo3Wallet(wallet))
return id.Equal(owner.NewIDFromPublicKey((*ecdsa.PublicKey)(key)))
}
// originalBearerToken goes down to original request meta header and fetches

View file

@ -113,16 +113,8 @@ func requestOwner(req metaWithToken) (*owner.ID, *keys.PublicKey, error) {
}
key := unmarshalPublicKey(bodySignature.Key())
neo3wallet, err := owner.NEO3WalletFromPublicKey((*ecdsa.PublicKey)(key))
if err != nil {
return nil, nil, fmt.Errorf("can't create neo3 wallet: %w", err)
}
// form user from public key
user := new(owner.ID)
user.SetNeo3Wallet(neo3wallet)
return user, key, nil
return owner.NewIDFromPublicKey((*ecdsa.PublicKey)(key)), key, nil
}
func originalBodySignature(v *session.RequestVerificationHeader) *signature.Signature {