forked from TrueCloudLab/frostfs-node
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
|
package neofscontract
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
// BindKeysArgs groups the arguments
|
||
|
// of key binding call.
|
||
|
type BindKeysArgs struct {
|
||
|
commonBindArgs
|
||
|
}
|
||
|
|
||
|
// UnbindKeysArgs groups the arguments
|
||
|
// of key unbinding call.
|
||
|
type UnbindKeysArgs struct {
|
||
|
commonBindArgs
|
||
|
}
|
||
|
|
||
|
type commonBindArgs struct {
|
||
|
scriptHash []byte // script hash of account identifier
|
||
|
|
||
|
keys [][]byte // list of serialized public keys
|
||
|
}
|
||
|
|
||
|
// SetScriptHash sets script hash of the NeoFS account identifier.
|
||
|
func (x *commonBindArgs) SetScriptHash(v []byte) {
|
||
|
x.scriptHash = v
|
||
|
}
|
||
|
|
||
|
// SetKeys sets list of public keys in a binary format.
|
||
|
func (x *commonBindArgs) SetKeys(v [][]byte) {
|
||
|
x.keys = v
|
||
|
}
|
||
|
|
||
|
// BindKeys invokes the call of key binding method
|
||
|
// of NeoFS contract.
|
||
|
func (x *Client) BindKeys(args BindKeysArgs) error {
|
||
|
err := x.client.Invoke(
|
||
|
x.bindKeysMethod,
|
||
|
args.scriptHash,
|
||
|
args.keys,
|
||
|
)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("could not invoke method (%s): %w", x.bindKeysMethod, err)
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// UnbindKeys invokes the call of key unbinding method
|
||
|
// of NeoFS contract.
|
||
|
func (x *Client) UnbindKeys(args UnbindKeysArgs) error {
|
||
|
err := x.client.Invoke(
|
||
|
x.unbindKeysMethod,
|
||
|
args.scriptHash,
|
||
|
args.keys,
|
||
|
)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("could not invoke method (%s): %w", x.unbindKeysMethod, err)
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|