feat(enclave): add test MPC function and refactor generate function to use DID initialization without MPC
This commit is contained in:
@@ -22,6 +22,38 @@ import (
|
||||
|
||||
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")
|
||||
@@ -53,7 +85,7 @@ func ping() int32 {
|
||||
|
||||
//go:wasmexport generate
|
||||
func generate() int32 {
|
||||
pdk.Log(pdk.LogInfo, "generate: starting database initialization with MPC")
|
||||
pdk.Log(pdk.LogInfo, "generate: starting database initialization")
|
||||
|
||||
var input types.GenerateInput
|
||||
if err := pdk.InputJSON(&input); err != nil {
|
||||
@@ -72,15 +104,27 @@ func generate() int32 {
|
||||
return 1
|
||||
}
|
||||
|
||||
result, err := initializeWithMPC(credentialBytes)
|
||||
pdk.Log(pdk.LogInfo, "generate: opening keybase")
|
||||
kb, err := keybase.Open()
|
||||
if err != nil {
|
||||
pdk.SetError(fmt.Errorf("generate: failed to initialize: %w", err))
|
||||
pdk.SetError(fmt.Errorf("generate: open database: %w", err))
|
||||
return 1
|
||||
}
|
||||
|
||||
state.SetInitialized(true)
|
||||
state.SetDID(result.DID)
|
||||
pdk.Log(pdk.LogInfo, "generate: initializing DID")
|
||||
ctx := context.Background()
|
||||
did, err := kb.Initialize(ctx, credentialBytes)
|
||||
if err != nil {
|
||||
pdk.SetError(fmt.Errorf("generate: initialize DID: %w", err))
|
||||
return 1
|
||||
}
|
||||
|
||||
pdk.Log(pdk.LogInfo, fmt.Sprintf("generate: DID created: %s", did))
|
||||
|
||||
state.SetInitialized(true)
|
||||
state.SetDID(did)
|
||||
|
||||
pdk.Log(pdk.LogInfo, "generate: serializing database")
|
||||
dbBytes, err := serializeDatabase()
|
||||
if err != nil {
|
||||
pdk.SetError(fmt.Errorf("generate: failed to serialize database: %w", err))
|
||||
@@ -88,11 +132,8 @@ func generate() int32 {
|
||||
}
|
||||
|
||||
output := types.GenerateOutput{
|
||||
DID: result.DID,
|
||||
Database: dbBytes,
|
||||
EnclaveID: result.EnclaveID,
|
||||
PublicKey: result.PublicKey,
|
||||
Accounts: result.Accounts,
|
||||
DID: did,
|
||||
Database: dbBytes,
|
||||
}
|
||||
|
||||
if err := pdk.OutputJSON(output); err != nil {
|
||||
@@ -100,7 +141,7 @@ func generate() int32 {
|
||||
return 1
|
||||
}
|
||||
|
||||
pdk.Log(pdk.LogInfo, fmt.Sprintf("generate: created DID %s with enclave %s", result.DID, result.EnclaveID))
|
||||
pdk.Log(pdk.LogInfo, fmt.Sprintf("generate: created DID %s (no MPC)", did))
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user