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() } 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 //go:wasmexport ping
func ping() int32 { func ping() int32 {
pdk.Log(pdk.LogInfo, "ping: received request") pdk.Log(pdk.LogInfo, "ping: received request")
@@ -53,7 +85,7 @@ func ping() int32 {
//go:wasmexport generate //go:wasmexport generate
func generate() int32 { 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 var input types.GenerateInput
if err := pdk.InputJSON(&input); err != nil { if err := pdk.InputJSON(&input); err != nil {
@@ -72,15 +104,27 @@ func generate() int32 {
return 1 return 1
} }
result, err := initializeWithMPC(credentialBytes) pdk.Log(pdk.LogInfo, "generate: opening keybase")
kb, err := keybase.Open()
if err != nil { if err != nil {
pdk.SetError(fmt.Errorf("generate: failed to initialize: %w", err)) pdk.SetError(fmt.Errorf("generate: open database: %w", err))
return 1 return 1
} }
state.SetInitialized(true) pdk.Log(pdk.LogInfo, "generate: initializing DID")
state.SetDID(result.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() dbBytes, err := serializeDatabase()
if err != nil { if err != nil {
pdk.SetError(fmt.Errorf("generate: failed to serialize database: %w", err)) pdk.SetError(fmt.Errorf("generate: failed to serialize database: %w", err))
@@ -88,11 +132,8 @@ func generate() int32 {
} }
output := types.GenerateOutput{ output := types.GenerateOutput{
DID: result.DID, DID: did,
Database: dbBytes, Database: dbBytes,
EnclaveID: result.EnclaveID,
PublicKey: result.PublicKey,
Accounts: result.Accounts,
} }
if err := pdk.OutputJSON(output); err != nil { if err := pdk.OutputJSON(output); err != nil {
@@ -100,7 +141,7 @@ func generate() int32 {
return 1 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 return 0
} }