mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-03 01:41:44 +00:00
54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
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
|
||
|
|
}
|