pkd: Run tests with ecdsa and ed25519 keys with dropbear

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
Jakub Jelen
2025-11-05 17:28:21 +01:00
parent b64e7f67d3
commit cefc4f8c97
3 changed files with 62 additions and 16 deletions

View File

@@ -592,9 +592,21 @@ PKDTESTS_MAC_OPENSSHONLY(emit_keytest, openssh_ed, OPENSSH_MAC_CMD)
#undef CLIENT_ID_FILE #undef CLIENT_ID_FILE
#define CLIENT_ID_FILE DROPBEAR_RSA_TESTKEY #define CLIENT_ID_FILE DROPBEAR_RSA_TESTKEY
PKDTESTS_DEFAULT(emit_keytest, dropbear, DROPBEAR_CMD) PKDTESTS_DEFAULT(emit_keytest, dropbear_rsa, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_keytest, dropbear, DROPBEAR_CIPHER_CMD) PKDTESTS_CIPHER(emit_keytest, dropbear_rsa, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_keytest, dropbear, DROPBEAR_MAC_CMD) PKDTESTS_MAC(emit_keytest, dropbear_rsa, DROPBEAR_MAC_CMD)
#undef CLIENT_ID_FILE
#define CLIENT_ID_FILE DROPBEAR_ECDSA256_TESTKEY
PKDTESTS_DEFAULT(emit_keytest, dropbear_e256, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_keytest, dropbear_e256, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_keytest, dropbear_e256, DROPBEAR_MAC_CMD)
#undef CLIENT_ID_FILE
#define CLIENT_ID_FILE DROPBEAR_ED25519_TESTKEY
PKDTESTS_DEFAULT(emit_keytest, dropbear_ed, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_keytest, dropbear_ed, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_keytest, dropbear_ed, DROPBEAR_MAC_CMD)
#undef CLIENT_ID_FILE #undef CLIENT_ID_FILE
/* /*
@@ -648,9 +660,17 @@ struct {
PKDTESTS_MAC_OPENSSHONLY(emit_testmap, openssh_ed, OPENSSH_MAC_CMD) PKDTESTS_MAC_OPENSSHONLY(emit_testmap, openssh_ed, OPENSSH_MAC_CMD)
/* Dropbear */ /* Dropbear */
PKDTESTS_DEFAULT(emit_testmap, dropbear, DROPBEAR_CMD) PKDTESTS_DEFAULT(emit_testmap, dropbear_rsa, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_testmap, dropbear, DROPBEAR_CIPHER_CMD) PKDTESTS_CIPHER(emit_testmap, dropbear_rsa, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_testmap, dropbear, DROPBEAR_MAC_CMD) PKDTESTS_MAC(emit_testmap, dropbear_rsa, DROPBEAR_MAC_CMD)
PKDTESTS_DEFAULT(emit_testmap, dropbear_e256, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_testmap, dropbear_e256, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_testmap, dropbear_e256, DROPBEAR_MAC_CMD)
PKDTESTS_DEFAULT(emit_testmap, dropbear_ed, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_testmap, dropbear_ed, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_testmap, dropbear_ed, DROPBEAR_MAC_CMD)
/* Noop */ /* Noop */
emit_testmap(client, noop, "", setup_noop, teardown) emit_testmap(client, noop, "", setup_noop, teardown)
@@ -701,9 +721,17 @@ static int pkd_run_tests(void) {
* through cli (see 'man dbclient') * through cli (see 'man dbclient')
*/ */
const struct CMUnitTest dropbear_tests[] = { const struct CMUnitTest dropbear_tests[] = {
PKDTESTS_DEFAULT(emit_unit_test_comma, dropbear, DROPBEAR_CMD) PKDTESTS_DEFAULT(emit_unit_test_comma, dropbear_rsa, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_unit_test_comma, dropbear, DROPBEAR_CIPHER_CMD) PKDTESTS_CIPHER(emit_unit_test_comma, dropbear_rsa, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_unit_test_comma, dropbear, DROPBEAR_MAC_CMD) PKDTESTS_MAC(emit_unit_test_comma, dropbear_rsa, DROPBEAR_MAC_CMD)
PKDTESTS_DEFAULT(emit_unit_test_comma, dropbear_e256, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_unit_test_comma, dropbear_e256, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_unit_test_comma, dropbear_e256, DROPBEAR_MAC_CMD)
PKDTESTS_DEFAULT(emit_unit_test_comma, dropbear_ed, DROPBEAR_CMD)
PKDTESTS_CIPHER(emit_unit_test_comma, dropbear_ed, DROPBEAR_CIPHER_CMD)
PKDTESTS_MAC(emit_unit_test_comma, dropbear_ed, DROPBEAR_MAC_CMD)
}; };
const struct CMUnitTest openssh_fips_tests[] = { const struct CMUnitTest openssh_fips_tests[] = {
@@ -748,7 +776,7 @@ static int pkd_run_tests(void) {
} }
if (is_dropbear_client_enabled()) { if (is_dropbear_client_enabled()) {
setup_dropbear_client_rsa_key(); setup_dropbear_client_keys();
if (!ssh_fips_mode()) { if (!ssh_fips_mode()) {
memcpy(&all_tests[tindex], &dropbear_tests[0], sizeof(dropbear_tests)); memcpy(&all_tests[tindex], &dropbear_tests[0], sizeof(dropbear_tests));
tindex += (sizeof(dropbear_tests) / sizeof(dropbear_tests[0])); tindex += (sizeof(dropbear_tests) / sizeof(dropbear_tests[0]));
@@ -800,7 +828,7 @@ static int pkd_run_tests(void) {
/* Clean up client keys for each enabled client. */ /* Clean up client keys for each enabled client. */
if (is_dropbear_client_enabled()) { if (is_dropbear_client_enabled()) {
cleanup_dropbear_client_rsa_key(); cleanup_dropbear_client_keys();
} }
if (is_openssh_client_enabled()) { if (is_openssh_client_enabled()) {

View File

@@ -167,15 +167,31 @@ void cleanup_openssh_client_keys(void) {
} }
} }
void setup_dropbear_client_rsa_key(void) { void setup_dropbear_client_keys(void)
{
int rc = 0; int rc = 0;
if (access(DROPBEAR_RSA_TESTKEY, F_OK) != 0) { if (access(DROPBEAR_RSA_TESTKEY, F_OK) != 0) {
rc = system_checked(DROPBEAR_KEYGEN " -t rsa -f " rc = system_checked(DROPBEAR_KEYGEN " -t rsa -f "
DROPBEAR_RSA_TESTKEY " 1>/dev/null 2>/dev/null"); DROPBEAR_RSA_TESTKEY " 1>/dev/null 2>/dev/null");
} }
assert_int_equal(rc, 0); assert_int_equal(rc, 0);
if (access(DROPBEAR_ECDSA256_TESTKEY, F_OK) != 0) {
rc = system_checked(DROPBEAR_KEYGEN " -t ecdsa -f "
DROPBEAR_ECDSA256_TESTKEY
" 1>/dev/null 2>/dev/null");
}
assert_int_equal(rc, 0);
if (access(DROPBEAR_ED25519_TESTKEY, F_OK) != 0) {
rc = system_checked(DROPBEAR_KEYGEN " -t ed25519 -f "
DROPBEAR_ED25519_TESTKEY
" 1>/dev/null 2>/dev/null");
}
assert_int_equal(rc, 0);
} }
void cleanup_dropbear_client_rsa_key(void) { void cleanup_dropbear_client_keys(void)
unlink(DROPBEAR_RSA_TESTKEY); {
cleanup_key(DROPBEAR_RSA_TESTKEY);
cleanup_key(DROPBEAR_ECDSA256_TESTKEY);
cleanup_key(DROPBEAR_ED25519_TESTKEY);
} }

View File

@@ -32,12 +32,14 @@ void cleanup_ecdsa_keys(void);
#define OPENSSH_CA_TESTKEY "libssh_testkey.ca" #define OPENSSH_CA_TESTKEY "libssh_testkey.ca"
#define DROPBEAR_RSA_TESTKEY "dropbear_testkey.id_rsa" #define DROPBEAR_RSA_TESTKEY "dropbear_testkey.id_rsa"
#define DROPBEAR_ECDSA256_TESTKEY "dropbear_testkey.id_ecdsa256"
#define DROPBEAR_ED25519_TESTKEY "dropbear_testkey.id_ed25519"
void setup_openssh_client_keys(void); void setup_openssh_client_keys(void);
void cleanup_openssh_client_keys(void); void cleanup_openssh_client_keys(void);
void setup_dropbear_client_rsa_key(void); void setup_dropbear_client_keys(void);
void cleanup_dropbear_client_rsa_key(void); void cleanup_dropbear_client_keys(void);
#define cleanup_file(name) do {\ #define cleanup_file(name) do {\
if (access((name), F_OK) != -1) {\ if (access((name), F_OK) != -1) {\