Files
sonr/pkg/builder/vault.go
T

54 lines
1.1 KiB
Go
Raw Normal View History

2024-09-21 21:42:51 -04:00
package builder
import (
"github.com/cosmos/cosmos-sdk/types/bech32"
"github.com/ipfs/boxo/files"
"github.com/onsonr/crypto/mpc"
"github.com/onsonr/sonr/pkg/vault"
)
type Vault struct {
FS files.Node
ValKs mpc.Share
}
func NewVault(subject string, origin string, chainID string) (*Vault, error) {
shares, err := mpc.GenerateKeyshares()
var (
valKs = shares[0]
usrKs = shares[1]
)
usrKsJSON, err := usrKs.Marshal()
if err != nil {
return nil, err
}
sonrAddr, err := bech32.ConvertAndEncode("idx", valKs.GetPublicKey())
if err != nil {
return nil, err
}
cnfg := vault.NewConfig(usrKsJSON, sonrAddr, chainID, DefaultSchema())
cnfgFile, err := vault.MarshalConfigFile(cnfg)
if err != nil {
return nil, err
}
idxFile, err := vault.IndexHTMLFile(cnfg)
if err != nil {
return nil, err
}
fileMap := map[string]files.Node{
"config.json": cnfgFile,
"motr.mjs": vault.MotrMJSFile(),
"sw.js": vault.SWJSFile(),
"app.wasm": vault.DWNWasmFile(),
"index.html": idxFile,
}
return &Vault{
FS: files.NewMapDirectory(fileMap),
ValKs: valKs,
}, nil
}