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() }
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user