From 263829d55ba966a57e071a73bbe6723ee43abfd9 Mon Sep 17 00:00:00 2001 From: Aaron Kaiser Date: Mon, 6 May 2024 15:43:49 +0200 Subject: [PATCH] add calculate pk call --- src/agent.jazz | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/agent.jazz b/src/agent.jazz index 5e29e9e..3ec7012 100644 --- a/src/agent.jazz +++ b/src/agent.jazz @@ -17,7 +17,7 @@ inline fn extract_ipc_id(reg u64 sync_mem) -> reg u64 { return id; } -inline fn generate_key(reg u64 shared_mem sync_mem private_mem, stack u64 key_id) -> stack u64 { +inline fn generate_keypair(reg u64 shared_mem sync_mem private_mem, stack u64 key_id) -> stack u64 { inline int i; stack u8[32] key; reg u64 addr idptr pkptr; @@ -49,6 +49,19 @@ inline fn generate_key(reg u64 shared_mem sync_mem private_mem, stack u64 key_id return key_id; } +inline fn calculate_pubkey(reg u64 shared_mem sync_mem private_mem) { + reg u64 skptr outptr; + + skptr = extract_nth_ptr(sync_mem, shared_mem, 0); + outptr = extract_nth_ptr(sync_mem, shared_mem, 1); + + skptr = (u64)[skptr]; + skptr *= 32; + skptr += private_mem; + + jade_scalarmult_curve25519_amd64_mulx_base(outptr, skptr); +} + inline fn x25519(reg u64 shared_mem sync_mem private_mem) { reg u64 outptr idptr pkptr keyptr; reg u64 keyid; @@ -83,10 +96,14 @@ export fn agent_start(reg u64 shared_mem sync_mem private_mem) { id = extract_ipc_id(sync_mem); if (id == 0) { - key_id = generate_key(shared_mem, sync_mem, private_mem, key_id); + key_id = generate_keypair(shared_mem, sync_mem, private_mem, key_id); } else { if (id == 1) { - x25519(shared_mem, sync_mem, private_mem); + calculate_pubkey(shared_mem, sync_mem, private_mem); + } else { + if (id == 2) { + x25519(shared_mem, sync_mem, private_mem); + } } }