forked from TrueCloudLab/frostfs-node
40 lines
879 B
Go
40 lines
879 B
Go
package morph
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
util2 "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-adm/internal/modules/morph/util"
|
|
"github.com/nspcc-dev/neo-go/pkg/smartcontract/manifest"
|
|
"github.com/nspcc-dev/neo-go/pkg/util"
|
|
"github.com/nspcc-dev/neo-go/pkg/wallet"
|
|
)
|
|
|
|
func addManifestGroup(cw *wallet.Wallet, h util.Uint160, cs *util2.ContractState) error {
|
|
priv := cw.Accounts[0].PrivateKey()
|
|
pub := priv.PublicKey()
|
|
|
|
sig := priv.Sign(h.BytesBE())
|
|
found := false
|
|
|
|
for i := range cs.Manifest.Groups {
|
|
if cs.Manifest.Groups[i].PublicKey.Equal(pub) {
|
|
cs.Manifest.Groups[i].Signature = sig
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
cs.Manifest.Groups = append(cs.Manifest.Groups, manifest.Group{
|
|
PublicKey: pub,
|
|
Signature: sig,
|
|
})
|
|
}
|
|
|
|
data, err := json.Marshal(cs.Manifest)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
cs.RawManifest = data
|
|
return nil
|
|
}
|