[openssh-commits] [openssh] 13/14: upstream: adapt to libsodium ed25519 implementation
git+noreply at mindrot.org
git+noreply at mindrot.org
Wed Sep 16 11:16:07 AEST 2026
This is an automated email from the git hooks/post-receive script.
djm pushed a commit to branch master
in repository openssh.
commit fc5bed4b1c71441db27b8040bfcae237f1786656
Author: djm at openbsd.org <djm at openbsd.org>
AuthorDate: Wed Sep 16 00:45:03 2026 +0000
upstream: adapt to libsodium ed25519 implementation
OpenBSD-Regress-ID: d084e761416cea1f00d4f295aa92b737b28cebae
---
regress/misc/sk-dummy/sk-dummy.c | 18 ++++++++----------
regress/unittests/crypto/test_ed25519.c | 24 ++++++++++++------------
2 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/regress/misc/sk-dummy/sk-dummy.c b/regress/misc/sk-dummy/sk-dummy.c
index cbbba7459..f96747288 100644
--- a/regress/misc/sk-dummy/sk-dummy.c
+++ b/regress/misc/sk-dummy/sk-dummy.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sk-dummy.c,v 1.16 2025/06/17 01:24:32 djm Exp $ */
+/* $OpenBSD: sk-dummy.c,v 1.17 2026/09/16 00:45:03 djm Exp $ */
/*
* Copyright (c) 2019 Markus Friedl
*
@@ -411,8 +411,8 @@ sig_ed25519(const uint8_t *message, size_t message_len,
uint8_t apphash[SHA256_DIGEST_LENGTH];
uint8_t signbuf[sizeof(apphash) + sizeof(flags) +
sizeof(counter) + SHA256_DIGEST_LENGTH];
- uint8_t sig[crypto_sign_ed25519_BYTES + sizeof(signbuf)];
- unsigned long long smlen;
+ uint8_t sig[crypto_sign_ed25519_BYTES];
+ unsigned long long siglen = 0;
if (key_handle_len != crypto_sign_ed25519_SECRETKEYBYTES) {
skdebug(__func__, "bad key handle length %zu", key_handle_len);
@@ -446,18 +446,16 @@ sig_ed25519(const uint8_t *message, size_t message_len,
}
dump("signbuf", signbuf, sizeof(signbuf));
/* create and encode signature */
- smlen = sizeof(signbuf);
- if (crypto_sign_ed25519(sig, &smlen, signbuf, sizeof(signbuf),
+ if (crypto_sign_ed25519_detached(sig, &siglen, signbuf, sizeof(signbuf),
key_handle) != 0) {
- skdebug(__func__, "crypto_sign_ed25519 failed");
+ skdebug(__func__, "crypto_sign_ed25519_detached failed");
goto out;
}
- if (smlen <= sizeof(signbuf)) {
- skdebug(__func__, "bad sign smlen %llu, expected min %zu",
- smlen, sizeof(signbuf) + 1);
+ if (siglen != sizeof(sig)) {
+ skdebug(__func__, "bad signature length %llu", siglen);
goto out;
}
- response->sig_r_len = (size_t)(smlen - sizeof(signbuf));
+ response->sig_r_len = sizeof(sig);
if ((response->sig_r = calloc(1, response->sig_r_len)) == NULL) {
skdebug(__func__, "calloc signature failed");
goto out;
diff --git a/regress/unittests/crypto/test_ed25519.c b/regress/unittests/crypto/test_ed25519.c
index 94a482ff2..2a2e57522 100644
--- a/regress/unittests/crypto/test_ed25519.c
+++ b/regress/unittests/crypto/test_ed25519.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: test_ed25519.c,v 1.4 2026/06/22 12:28:48 dtucker Exp $ */
+/* $OpenBSD: test_ed25519.c,v 1.5 2026/09/16 00:45:04 djm Exp $ */
/*
* Regress test for Ed25519 keypair from seed
*
@@ -66,9 +66,9 @@ void ed25519_tests(void);
void
ed25519_tests(void)
{
- uint8_t pk[32], sk[64], seed[32];
+ uint8_t pk[32], sk[64], seed[32], sig[64];
uint8_t expected_pk[32], expected_sig[64];
- uint8_t *msg, *tmp;
+ uint8_t *msg;
size_t i, msglen;
unsigned long long smlen;
@@ -76,24 +76,24 @@ ed25519_tests(void)
TEST_START("Ed25519 keypair from seed");
hex2bin(seed, ed25519_kats[i].sk, 32);
hex2bin(expected_pk, ed25519_kats[i].pk, 32);
- ASSERT_INT_EQ(crypto_sign_ed25519_keypair_from_seed(pk, sk, seed), 0);
+ ASSERT_INT_EQ(crypto_sign_ed25519_seed_keypair(pk, sk, seed), 0);
ASSERT_MEM_EQ(pk, expected_pk, 32);
TEST_DONE();
TEST_START("Ed25519 sign/verify KAT");
msglen = strlen(ed25519_kats[i].msg) / 2;
- ASSERT_PTR_NE(msg = malloc(msglen + 64), NULL);
- ASSERT_PTR_NE(tmp = malloc(msglen + 64), NULL);
- hex2bin(msg + 64, ed25519_kats[i].msg, msglen);
+ ASSERT_PTR_NE(msg = malloc(msglen == 0 ? 1 : msglen), NULL);
+ hex2bin(msg, ed25519_kats[i].msg, msglen);
hex2bin(expected_sig, ed25519_kats[i].sig, 64);
- ASSERT_INT_EQ(crypto_sign_ed25519(msg, &smlen, msg + 64, msglen, sk), 0);
- ASSERT_MEM_EQ(msg, expected_sig, 64);
+ ASSERT_INT_EQ(crypto_sign_ed25519_detached(sig, &smlen,
+ msg, msglen, sk), 0);
+ ASSERT_INT_EQ(smlen, 64);
+ ASSERT_MEM_EQ(sig, expected_sig, 64);
- ASSERT_INT_EQ(crypto_sign_ed25519_open(tmp, &smlen, msg, msglen + 64, pk), 0);
- ASSERT_INT_EQ(smlen, msglen);
+ ASSERT_INT_EQ(crypto_sign_ed25519_verify_detached(sig,
+ msg, msglen, pk), 0);
free(msg);
- free(tmp);
TEST_DONE();
}
}
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list