refactor(mpc): migrate to simple enclaves
This commit is contained in:
@@ -17,43 +17,10 @@ import (
|
||||
"enclave/internal/types"
|
||||
|
||||
"github.com/extism/go-pdk"
|
||||
"github.com/sonr-io/crypto/core/protocol"
|
||||
)
|
||||
|
||||
func main() { state.Default() }
|
||||
|
||||
//go:wasmexport test_mpc
|
||||
func testMPC() int32 {
|
||||
pdk.Log(pdk.LogInfo, "test_mpc: starting MPC test")
|
||||
|
||||
var result string
|
||||
func() {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
result = fmt.Sprintf("PANIC: %v", r)
|
||||
pdk.Log(pdk.LogError, result)
|
||||
}
|
||||
}()
|
||||
|
||||
pdk.Log(pdk.LogInfo, "test_mpc: calling mpc.NewEnclave()")
|
||||
enc, err := mpc.NewEnclave()
|
||||
if err != nil {
|
||||
result = fmt.Sprintf("ERROR: %v", err)
|
||||
pdk.Log(pdk.LogError, result)
|
||||
return
|
||||
}
|
||||
result = fmt.Sprintf("SUCCESS: pubkey=%s", enc.PubKeyHex()[:16])
|
||||
pdk.Log(pdk.LogInfo, result)
|
||||
}()
|
||||
|
||||
output := map[string]string{"result": result}
|
||||
if err := pdk.OutputJSON(output); err != nil {
|
||||
pdk.SetError(err)
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
//go:wasmexport ping
|
||||
func ping() int32 {
|
||||
pdk.Log(pdk.LogInfo, "ping: received request")
|
||||
@@ -310,26 +277,16 @@ func initializeWithMPC(credentialBytes []byte) (*initResult, error) {
|
||||
}
|
||||
pdk.Log(pdk.LogInfo, fmt.Sprintf("initializeWithMPC: step 4 - DID initialized: %s", did))
|
||||
|
||||
pdk.Log(pdk.LogInfo, "initializeWithMPC: step 5 - generating MPC enclave")
|
||||
enclave, err := mpc.NewEnclave()
|
||||
pdk.Log(pdk.LogInfo, "initializeWithMPC: step 5 - generating simple enclave")
|
||||
simpleEnc, err := mpc.NewSimpleEnclave()
|
||||
if err != nil {
|
||||
pdk.Log(pdk.LogError, fmt.Sprintf("initializeWithMPC: MPC enclave generation failed: %v", err))
|
||||
return nil, fmt.Errorf("generate MPC enclave: %w", err)
|
||||
pdk.Log(pdk.LogError, fmt.Sprintf("initializeWithMPC: enclave generation failed: %v", err))
|
||||
return nil, fmt.Errorf("generate enclave: %w", err)
|
||||
}
|
||||
pdk.Log(pdk.LogInfo, "initializeWithMPC: step 6 - MPC enclave generated")
|
||||
pdk.Log(pdk.LogInfo, "initializeWithMPC: step 6 - enclave generated")
|
||||
|
||||
enclaveData := enclave.GetData()
|
||||
enclaveID := fmt.Sprintf("enc_%x", credentialBytes[:8])
|
||||
|
||||
valShareStr, err := protocol.EncodeMessage(enclaveData.ValShare)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("encode val share: %w", err)
|
||||
}
|
||||
userShareStr, err := protocol.EncodeMessage(enclaveData.UserShare)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("encode user share: %w", err)
|
||||
}
|
||||
|
||||
am, err := keybase.NewActionManager()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("action manager: %w", err)
|
||||
@@ -337,12 +294,12 @@ func initializeWithMPC(credentialBytes []byte) (*initResult, error) {
|
||||
|
||||
enc, err := am.CreateEnclave(ctx, keybase.NewEnclaveInput{
|
||||
EnclaveID: enclaveID,
|
||||
PublicKeyHex: enclaveData.PubHex,
|
||||
PublicKey: enclaveData.PubBytes,
|
||||
ValShare: []byte(valShareStr),
|
||||
UserShare: []byte(userShareStr),
|
||||
Nonce: enclaveData.Nonce,
|
||||
Curve: string(enclaveData.Curve),
|
||||
PublicKeyHex: simpleEnc.PubKeyHex(),
|
||||
PublicKey: simpleEnc.PubKeyBytes(),
|
||||
ValShare: simpleEnc.GetShare1(),
|
||||
UserShare: simpleEnc.GetShare2(),
|
||||
Nonce: simpleEnc.GetNonce(),
|
||||
Curve: string(simpleEnc.GetCurve()),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("store enclave: %w", err)
|
||||
@@ -350,7 +307,7 @@ func initializeWithMPC(credentialBytes []byte) (*initResult, error) {
|
||||
|
||||
pdk.Log(pdk.LogInfo, fmt.Sprintf("initializeWithMPC: stored enclave %s", enclaveID))
|
||||
|
||||
accounts, err := createDefaultAccounts(ctx, am, enc.ID, enclaveData.PubBytes)
|
||||
accounts, err := createDefaultAccounts(ctx, am, enc.ID, simpleEnc.PubKeyBytes())
|
||||
if err != nil {
|
||||
pdk.Log(pdk.LogWarn, fmt.Sprintf("initializeWithMPC: failed to create accounts: %s", err))
|
||||
accounts = []types.AccountInfo{}
|
||||
@@ -359,7 +316,7 @@ func initializeWithMPC(credentialBytes []byte) (*initResult, error) {
|
||||
return &initResult{
|
||||
DID: did,
|
||||
EnclaveID: enclaveID,
|
||||
PublicKey: enclaveData.PubHex,
|
||||
PublicKey: simpleEnc.PubKeyHex(),
|
||||
Accounts: accounts,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user