Files
sonr/x/did/controller/base.go
T

74 lines
1.3 KiB
Go
Raw Normal View History

package controller
2024-09-25 19:45:28 -04:00
import (
"github.com/onsonr/crypto/mpc"
2024-09-29 14:40:36 -04:00
commonv1 "github.com/onsonr/sonr/pkg/common/types"
"github.com/onsonr/sonr/x/did/types"
2024-09-25 19:45:28 -04:00
)
type ControllerI interface {
ChainID() string
GetPubKey() *commonv1.PubKey
2024-09-25 19:45:28 -04:00
SonrAddress() string
RawPublicKey() []byte
2024-09-25 19:45:28 -04:00
}
func New(shares []mpc.Share) (ControllerI, error) {
2024-09-25 19:45:28 -04:00
var (
valKs = shares[0]
userKs = shares[1]
)
pb, err := valKs.PublicKey()
2024-09-25 19:45:28 -04:00
if err != nil {
return nil, err
}
sonrAddr, err := types.ComputeSonrAddr(pb)
2024-09-25 19:45:28 -04:00
if err != nil {
return nil, err
}
return &controller{
valKs: valKs,
userKs: userKs,
address: sonrAddr,
publicKey: pb,
2024-09-25 19:45:28 -04:00
}, nil
}
type controller struct {
userKs mpc.Share
valKs mpc.Share
address string
chainID string
publicKey []byte
did string
}
func (c *controller) ChainID() string {
return c.chainID
}
func (c *controller) GetPubKey() *commonv1.PubKey {
return &commonv1.PubKey{
KeyType: "ecdsa",
RawKey: &commonv1.RawKey{
Algorithm: "secp256k1",
Key: c.publicKey,
},
Role: "authentication",
}
}
2024-10-18 13:45:57 -04:00
func (c *controller) RawPublicKey() []byte {
return c.publicKey
}
2024-10-18 13:45:57 -04:00
// func (c *controller) StdPublicKey() cryptotypes.PubKey {
// return c.stdPubKey
// }
func (c *controller) SonrAddress() string {
return c.address
}