From c292832280855cc47503545ac6b63a6cf5f96e84 Mon Sep 17 00:00:00 2001 From: "Gu://em_" Date: Wed, 8 Jul 2026 17:37:55 +0200 Subject: [PATCH] Implemented the Ed25519 verify function and changed the sign and verify function signatures --- src/crypto/ed25519.zig | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/crypto/ed25519.zig b/src/crypto/ed25519.zig index ff6d552..2ffe762 100644 --- a/src/crypto/ed25519.zig +++ b/src/crypto/ed25519.zig @@ -5,8 +5,8 @@ pub const Implementation = struct { signature_size: comptime_int, generateKeys: *const fn (pubkey_buffer: *[Implementation.public_key_size]u8, privkey_buffer: *[Implementation.secret_key_size]u8) void, - sign: *const fn (key: *const [Implementation.private_key_size]u8, data: *const []const u8, signature_out: *const [Implementation.signature_size]u8) void, - verify: *const fn (key: *const [Implementation.public_key_size]u8, data: *const []const u8, signature: *const [Implementation.signature_size]u8) void, + sign: *const fn (key: *const [Implementation.private_key_size]u8, data: []const u8, signature_out: *const [Implementation.signature_size]u8) void, + verify: *const fn (key: *const [Implementation.public_key_size]u8, signature: *const [Implementation.signature_size]u8, data: []const u8) void, }; // Random number generation @@ -33,17 +33,18 @@ pub fn defaultImplementation(comptime random: rngProvider) type { @memcpy(privkey_buffer[0..secret_key_size], keypair.secret_key.bytes); } - pub fn sign(key: *const [secret_key_size]u8, data: *const []const u8, signature_out: *const [signature_size]u8) !void { + pub fn sign(key: *const [secret_key_size]u8, data: []const u8, signature_out: *const [signature_size]u8) !void { _ = key; _ = data; _ = signature_out; return error.NotImplemented; } - pub fn verify(signature: *const [signature_size]u8, data: *const []const u8) !void { - _ = signature; - _ = data; - return error.NotImplemented; + pub fn verify(key: *const [public_key_size]u8, signature: *const [signature_size]u8, data: []const u8) !void { + const sig = Ed25519.Signature.fromBytes(signature); + const pubkey = Ed25519.PublicKey.fromBytes(key); + + return sig.verify(sig, data, pubkey); } };