planetmint-go/x/asset/keeper/msg_server_notarize_asset.go
Jürgen Eckel ea1e316852
adjusted signing to work with ext pub keys being commited within the cid notarization message
Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
2023-09-12 14:49:25 +02:00

44 lines
950 B
Go

package keeper
import (
"context"
"errors"
"planetmint-go/util"
"planetmint-go/x/asset/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
func (k msgServer) NotarizeAsset(goCtx context.Context, msg *types.MsgNotarizeAsset) (*types.MsgNotarizeAssetResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
_, found := k.machineKeeper.GetMachineIndex(ctx, msg.PubKey)
if !found {
return nil, errors.New("machine not found")
}
hex_pub_key, err := util.GetHexPubKey(msg.PubKey)
if err != nil {
return nil, errors.New("could not convert xpub key to hex pub key")
}
valid := util.ValidateSignature(msg.Hash, msg.Signature, hex_pub_key)
if !valid {
return nil, errors.New("invalid signature")
}
var asset = types.Asset{
Hash: msg.Hash,
Signature: msg.Signature,
Pubkey: msg.PubKey,
}
k.StoreAsset(ctx, asset)
return &types.MsgNotarizeAssetResponse{}, nil
}
func getHexPubKey(s string) {
panic("unimplemented")
}