From 634e62dc811e4c889b6eb127aaf03fa9fdd41f65 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Sat, 10 Jan 2026 14:52:13 -0500 Subject: [PATCH] feat(enclave): add test MPC function and refactor generate function to use DID initialization without MPC --- cmd/enclave/main.go | 63 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/cmd/enclave/main.go b/cmd/enclave/main.go index e9a208d..3d49f82 100644 --- a/cmd/enclave/main.go +++ b/cmd/enclave/main.go @@ -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 }