add calculate pk call

This commit is contained in:
2024-05-06 15:43:49 +02:00
parent 58a94b3a6c
commit 263829d55b

View File

@@ -17,7 +17,7 @@ inline fn extract_ipc_id(reg u64 sync_mem) -> reg u64 {
return id; 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; inline int i;
stack u8[32] key; stack u8[32] key;
reg u64 addr idptr pkptr; 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; 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) { inline fn x25519(reg u64 shared_mem sync_mem private_mem) {
reg u64 outptr idptr pkptr keyptr; reg u64 outptr idptr pkptr keyptr;
reg u64 keyid; reg u64 keyid;
@@ -83,12 +96,16 @@ export fn agent_start(reg u64 shared_mem sync_mem private_mem) {
id = extract_ipc_id(sync_mem); id = extract_ipc_id(sync_mem);
if (id == 0) { 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 { } else {
if (id == 1) { if (id == 1) {
calculate_pubkey(shared_mem, sync_mem, private_mem);
} else {
if (id == 2) {
x25519(shared_mem, sync_mem, private_mem); x25519(shared_mem, sync_mem, private_mem);
} }
} }
}
() = #unspill(sync_mem); () = #unspill(sync_mem);