Rename ed25519 keys/signature.

This commit is contained in:
Christoffer Lerno
2025-07-19 10:06:51 +02:00
parent b1a22b5002
commit 448176b0b7
2 changed files with 17 additions and 16 deletions

View File

@@ -5,17 +5,17 @@
module std::crypto::ed25519;
import std::hash::sha512;
alias PrivateKey = char[32];
alias PublicKey = char[PrivateKey.len];
alias Signature = char[2 * PublicKey.len];
alias Ed25519PrivateKey = char[32];
alias Ed25519PublicKey = char[Ed25519PrivateKey.len];
alias Ed25519Signature = char[2 * Ed25519PublicKey.len];
<*
Generate a public key from a private key.
@param [in] private_key : "32 bytes of cryptographically secure random data"
@require private_key.len == PrivateKey.len
@require private_key.len == Ed25519PrivateKey.len
*>
fn PublicKey public_keygen(char[] private_key)
fn Ed25519PublicKey public_keygen(char[] private_key)
{
return pack(&&unproject(&&(BASE * expand_private_key(private_key)[:FBaseInt.len])));
}
@@ -26,12 +26,12 @@ fn PublicKey public_keygen(char[] private_key)
@param [in] message
@param [in] private_key
@param [in] public_key
@require private_key.len == PrivateKey.len
@require public_key.len == PublicKey.len
@require private_key.len == Ed25519PrivateKey.len
@require public_key.len == Ed25519PublicKey.len
*>
fn Signature sign(char[] message, char[] private_key, char[] public_key)
fn Ed25519Signature sign(char[] message, char[] private_key, char[] public_key)
{
Signature r @noinit;
Ed25519Signature r @noinit;
char[*] exp = expand_private_key(private_key);
@@ -65,8 +65,8 @@ fn Signature sign(char[] message, char[] private_key, char[] public_key)
@param [in] message
@param [in] signature
@param [in] public_key
@require signature.len == Signature.len
@require public_key.len == PublicKey.len
@require signature.len == Ed25519Signature.len
@require public_key.len == Ed25519PublicKey.len
*>
fn bool verify(char[] message, char[] signature, char[] public_key)
{
@@ -113,7 +113,7 @@ const Projection BASE @private =
Compute the pruned SHA-512 hash of a private key.
@param [in] private_key
@require private_key.len == PrivateKey.len
@require private_key.len == Ed25519PrivateKey.len
*>
fn char[sha512::HASH_SIZE] expand_private_key(char[] private_key) @local
{

View File

@@ -1,15 +1,16 @@
module std::crypto::ed25519_test @test;
import std::crypto::ed25519;
fn void ed25519_keygen_sign_verify() @test {
PrivateKey private_key = x"97b0d0435be3a583df0b77aff277e5fc8f857cae1a827723241bb9bbf7e96018";
fn void ed25519_keygen_sign_verify() @test
{
Ed25519PrivateKey private_key = x"97b0d0435be3a583df0b77aff277e5fc8f857cae1a827723241bb9bbf7e96018";
PublicKey public_key = ed25519::public_keygen(&private_key);
Ed25519PublicKey public_key = ed25519::public_keygen(&private_key);
assert(public_key == x"fd462c5c7044b224f4a6cc0f0e5e16511be881be639b3fbc600f7b5d6da54e2f");
String message = "abcdefghijklmnopqrstuvwxyz0123456789";
Signature signature = ed25519::sign(message, &private_key, &public_key);
Ed25519Signature signature = ed25519::sign(message, &private_key, &public_key);
assert(signature == x"c03cf7b181583f6353a9434be910a484e1720247a0dc384d601e495294d0202728dda5f31bc62b00158b1588bc2a65f48ccfaa1b1431aff3d8da9271b7de9403");
assert(ed25519::verify(message, &signature, &public_key));
}