feat(enclave): add test MPC function and refactor generate function to use DID initialization without MPC

This commit is contained in:
2026-01-10 14:52:13 -05:00
parent 30e372d07f
commit 634e62dc81

View File

@@ -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
}