From 651e4cae8afd8ed33944b21284e32f67f04b901b Mon Sep 17 00:00:00 2001 From: Yosuke Shimizu Date: Thu, 16 Apr 2026 13:38:32 +0900 Subject: [PATCH] Add kex integration test for ed25519 server key --- examples/echoserver/echoserver.c | 32 +++++++++++++ keys/include.am | 3 +- keys/server-key-ed25519.der | Bin 0 -> 82 bytes keys/server-key-ed25519.pem | 4 ++ tests/kex.c | 78 +++++++++++++++++++++++++++++++ wolfssh/certs_test.h | 15 ++++++ 6 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 keys/server-key-ed25519.der create mode 100644 keys/server-key-ed25519.pem diff --git a/examples/echoserver/echoserver.c b/examples/echoserver/echoserver.c index a6a83140f..67c897c74 100644 --- a/examples/echoserver/echoserver.c +++ b/examples/echoserver/echoserver.c @@ -1737,6 +1737,26 @@ static int load_key(byte isEcc, byte* buf, word32 bufSz) } +#ifndef WOLFSSH_NO_ED25519 +/* returns buffer size on success */ +static int load_key_ed25519(byte* buf, word32 bufSz) +{ + word32 sz = 0; + +#ifndef NO_FILESYSTEM + sz = load_file("./keys/server-key-ed25519.der", buf, &bufSz); +#else + if ((word32)sizeof_ed25519_key_der_ssh > bufSz) + return 0; + WMEMCPY(buf, ed25519_key_der_ssh, sizeof_ed25519_key_der_ssh); + sz = (word32)sizeof_ed25519_key_der_ssh; +#endif + + return sz; +} +#endif /* WOLFSSH_NO_ED25519 */ + + typedef struct StrList { const char* str; struct StrList* next; @@ -2954,6 +2974,18 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args) } #endif + #ifndef WOLFSSH_NO_ED25519 + bufSz = EXAMPLE_KEYLOAD_BUFFER_SZ; + bufSz = load_key_ed25519(keyLoadBuf, bufSz); + if (bufSz == 0) { + ES_ERROR("Couldn't load Ed25519 key file.\n"); + } + if (wolfSSH_CTX_UsePrivateKey_buffer(ctx, keyLoadBuf, bufSz, + WOLFSSH_FORMAT_ASN1) < 0) { + ES_ERROR("Couldn't use Ed25519 key buffer.\n"); + } + #endif /* WOLFSSH_NO_ED25519 */ + #ifndef NO_FILESYSTEM if (userPubKey) { byte* userBuf = NULL; diff --git a/keys/include.am b/keys/include.am index cc2aa720f..fd82f10c5 100644 --- a/keys/include.am +++ b/keys/include.am @@ -23,5 +23,6 @@ EXTRA_DIST+= \ keys/fred-cert.der keys/fred-cert.pem \ keys/server-key.pem keys/fred-key.der keys/fred-key.pem \ keys/id_ecdsa keys/id_ecdsa.pub keys/id_rsa keys/id_rsa.pub \ - keys/renewcerts.sh keys/renewcerts.cnf + keys/renewcerts.sh keys/renewcerts.cnf \ + keys/server-key-ed25519.der keys/server-key-ed25519.pem diff --git a/keys/server-key-ed25519.der b/keys/server-key-ed25519.der new file mode 100644 index 0000000000000000000000000000000000000000..7719de44df20d584e745bcb50fa3fbac4d8881a5 GIT binary patch literal 82 zcmV-Y0ImNpPyzt}Fa-t!D`jv5A_O36XY&qZ>Qesntz}I`U|~2|5eJ0u1C)~#dwVk) oy7n1?AP-gypM82_hwvsA88PIt9qGO9N`F