tests/unittests: test ECDSA/ED25519 support
These tests are copied from the existing RSA/DSA certificate tests. They cover importing certificates. Signed-off-by: Ben Toews <mastahyeti@gmail.com> Reviewed-by: Jakub Jelen <jjelen@redhat.com>
Этот коммит содержится в:
родитель
19cd909c8d
Коммит
04b284dae0
@ -363,6 +363,21 @@ static const char torture_ecdsa256_public_testkey[] =
|
|||||||
"YAAABBBMfvbnfPEORlrS3fsjLWGmqQvOYPtmS6e1bRRwNBGzR6gVEMaIfiJPPTJa+w"
|
"YAAABBBMfvbnfPEORlrS3fsjLWGmqQvOYPtmS6e1bRRwNBGzR6gVEMaIfiJPPTJa+w"
|
||||||
"FMXBT3fpAqPjROsqv5jUHC+xOok= aris@kalix86\n";
|
"FMXBT3fpAqPjROsqv5jUHC+xOok= aris@kalix86\n";
|
||||||
|
|
||||||
|
static const char torture_ecdsa256_testkey_cert[] =
|
||||||
|
"ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzd"
|
||||||
|
"HAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgHvXWcdSrQeZL2/Z68V8ntbL7rDo"
|
||||||
|
"Qwrsc+ps6HbMGZrkAAAAIbmlzdHAyNTYAAABBBMfvbnfPEORlrS3fsjLWGmqQvOYPt"
|
||||||
|
"mS6e1bRRwNBGzR6gVEMaIfiJPPTJa+wFMXBT3fpAqPjROsqv5jUHC+xOokAAAAAAAA"
|
||||||
|
"AAAAAAAEAAAAHbXlpZGVudAAAAAAAAAAAAAAAAP//////////AAAAAAAAAIIAAAAVc"
|
||||||
|
"GVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGl"
|
||||||
|
"uZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0e"
|
||||||
|
"QAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAAGgAAAATZWNkc2Etc2hhMi1"
|
||||||
|
"uaXN0cDI1NgAAAAhuaXN0cDI1NgAAAEEEx+9ud88Q5GWtLd+yMtYaapC85g+2ZLp7V"
|
||||||
|
"tFHA0EbNHqBUQxoh+Ik89Mlr7AUxcFPd+kCo+NE6yq/mNQcL7E6iQAAAGQAAAATZWN"
|
||||||
|
"kc2Etc2hhMi1uaXN0cDI1NgAAAEkAAAAhALDSBnmFF59tgTKDQ4meTJEI7/BP2Zgf1"
|
||||||
|
"AKg1H3kIijQAAAAIFYrqSg6GI03ohXqUVsZ3lCB/XIism2aV5Vz2bg1d9zo "
|
||||||
|
"./ec256.pub";
|
||||||
|
|
||||||
static const char torture_ecdsa384_private_testkey[] =
|
static const char torture_ecdsa384_private_testkey[] =
|
||||||
"-----BEGIN EC PRIVATE KEY-----\n"
|
"-----BEGIN EC PRIVATE KEY-----\n"
|
||||||
"MIGkAgEBBDBY8jEa5DtRy4AVeTWhPJ/TK257behiC3uafEi6YA2oHORibqX55EDN\n"
|
"MIGkAgEBBDBY8jEa5DtRy4AVeTWhPJ/TK257behiC3uafEi6YA2oHORibqX55EDN\n"
|
||||||
@ -412,6 +427,23 @@ static const char torture_ecdsa384_public_testkey[] =
|
|||||||
"0sB3/DunsMkt3O0nRtijJPhXcHdmpH1HIarqZgKOReVzlhtgeO54FunSh41eqxcc0B"
|
"0sB3/DunsMkt3O0nRtijJPhXcHdmpH1HIarqZgKOReVzlhtgeO54FunSh41eqxcc0B"
|
||||||
"ZBmg== aris@kalix86";
|
"ZBmg== aris@kalix86";
|
||||||
|
|
||||||
|
static const char torture_ecdsa384_testkey_cert[] =
|
||||||
|
"ecdsa-sha2-nistp384-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzd"
|
||||||
|
"HAzODQtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgvggfi3v98HjOiqVi1O5aPy7JvMd"
|
||||||
|
"rTZe68GZ0qCaAN5MAAAAIbmlzdHAzODQAAABhBFdzgE3oGtWjVAyLf6L8Hzku7tIy7"
|
||||||
|
"MGL7U9sm2LzHP5LOCrriBoEY4r2j5Y50sB3/DunsMkt3O0nRtijJPhXcHdmpH1HIar"
|
||||||
|
"qZgKOReVzlhtgeO54FunSh41eqxcc0BZBmgAAAAAAAAAAAAAAAQAAAAdteWlkZW50A"
|
||||||
|
"AAAAAAAAAAAAAAA//////////8AAAAAAAAAggAAABVwZXJtaXQtWDExLWZvcndhcmR"
|
||||||
|
"pbmcAAAAAAAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtc"
|
||||||
|
"G9ydC1mb3J3YXJkaW5nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXN"
|
||||||
|
"lci1yYwAAAAAAAAAAAAAAiAAAABNlY2RzYS1zaGEyLW5pc3RwMzg0AAAACG5pc3RwM"
|
||||||
|
"zg0AAAAYQRXc4BN6BrVo1QMi3+i/B85Lu7SMuzBi+1PbJti8xz+Szgq64gaBGOK9o+"
|
||||||
|
"WOdLAd/w7p7DJLdztJ0bYoyT4V3B3ZqR9RyGq6mYCjkXlc5YbYHjueBbp0oeNXqsXH"
|
||||||
|
"NAWQZoAAACEAAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAABpAAAAMQD5f0pF6U6eeBO"
|
||||||
|
"PrOV7Y3w5NuTzvuyDAq0kTv6VYNMp83TYpIJw16+tMAplOSzPTvwAAAAwWD9StvMEP"
|
||||||
|
"b+SDH2G5qqkMk+F5IaHI9fev8zcFzzdOlilLc/+CFM0NKMAFtOrrhv0 "
|
||||||
|
"./ec384.pub";
|
||||||
|
|
||||||
static const char torture_ecdsa521_private_testkey[] =
|
static const char torture_ecdsa521_private_testkey[] =
|
||||||
"-----BEGIN EC PRIVATE KEY-----\n"
|
"-----BEGIN EC PRIVATE KEY-----\n"
|
||||||
"MIHbAgEBBEG83nSJ2SLoiBvEku1JteQKWx/Xt6THksgC7rrIaTUmNzk+60f0sCCm\n"
|
"MIHbAgEBBEG83nSJ2SLoiBvEku1JteQKWx/Xt6THksgC7rrIaTUmNzk+60f0sCCm\n"
|
||||||
@ -469,6 +501,25 @@ static const char torture_ecdsa521_public_testkey[] =
|
|||||||
"V262vIC+AE3fXUJ7sJ/CkFIdk/8/gQEY1jyoXB3Bsee16VwhJGsMzGGh1FJ0XXhRJj"
|
"V262vIC+AE3fXUJ7sJ/CkFIdk/8/gQEY1jyoXB3Bsee16VwhJGsMzGGh1FJ0XXhRJj"
|
||||||
"UbG18qbH9JiSgE1N4fIM0zJG68fAyUxRxCI1wUobOOB7EmFZd18g== aris@kalix86";
|
"UbG18qbH9JiSgE1N4fIM0zJG68fAyUxRxCI1wUobOOB7EmFZd18g== aris@kalix86";
|
||||||
|
|
||||||
|
static const char torture_ecdsa521_testkey_cert[] =
|
||||||
|
"ecdsa-sha2-nistp521-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzd"
|
||||||
|
"HA1MjEtY2VydC12MDFAb3BlbnNzaC5jb20AAAAggFIwlsx63C++kmCBDF4O14fvu5j"
|
||||||
|
"Icsm8uMbMp0smOVwAAAAIbmlzdHA1MjEAAACFBAHOg+9vHW2kJB50j7c7WkcCcOtwg"
|
||||||
|
"ZdeXMpAeEl17sFnTTrT8wYo1FCzE07wV262vIC+AE3fXUJ7sJ/CkFIdk/8/gQEY1jy"
|
||||||
|
"oXB3Bsee16VwhJGsMzGGh1FJ0XXhRJjUbG18qbH9JiSgE1N4fIM0zJG68fAyUxRxCI"
|
||||||
|
"1wUobOOB7EmFZd18gAAAAAAAAAAAAAAAQAAAAdteWlkZW50AAAAAAAAAAAAAAAA///"
|
||||||
|
"///////8AAAAAAAAAggAAABVwZXJtaXQtWDExLWZvcndhcmRpbmcAAAAAAAAAF3Blc"
|
||||||
|
"m1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtcG9ydC1mb3J3YXJkaW5"
|
||||||
|
"nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXNlci1yYwAAAAAAAAAAA"
|
||||||
|
"AAArAAAABNlY2RzYS1zaGEyLW5pc3RwNTIxAAAACG5pc3RwNTIxAAAAhQQBzoPvbx1"
|
||||||
|
"tpCQedI+3O1pHAnDrcIGXXlzKQHhJde7BZ0060/MGKNRQsxNO8FdutryAvgBN311Ce"
|
||||||
|
"7CfwpBSHZP/P4EBGNY8qFwdwbHntelcISRrDMxhodRSdF14USY1GxtfKmx/SYkoBNT"
|
||||||
|
"eHyDNMyRuvHwMlMUcQiNcFKGzjgexJhWXdfIAAACnAAAAE2VjZHNhLXNoYTItbmlzd"
|
||||||
|
"HA1MjEAAACMAAAAQgCJzTxw/hz2qE8Qkd4XW9Qn7fPxML6Ebtttg9C18AguyGyE6Nk"
|
||||||
|
"YH1NcToYxwQxrgzDXowXYm9eCbq9JEvaXDEtIfAAAAEIBk06LmKAYR2HDwwt4f5wVI"
|
||||||
|
"PKJ0pHVLZEx3FMZI3SfwS9mVm+oojLkZ2hr8X0xn28zbN045d8daB7BB1mHMGNT+YA"
|
||||||
|
"= ./ec521.pub";
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* ED25519 KEYS
|
* ED25519 KEYS
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -496,6 +547,18 @@ static const char torture_ed25519_public_testkey[] =
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWWnxuCYiOyvMYLtkgoEyEKlLV+klM+"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWWnxuCYiOyvMYLtkgoEyEKlLV+klM+"
|
||||||
"BU6Nh3PmAiqX aris@kalix86";
|
"BU6Nh3PmAiqX aris@kalix86";
|
||||||
|
|
||||||
|
static const char torture_ed25519_testkey_cert[] =
|
||||||
|
"ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQ"
|
||||||
|
"G9wZW5zc2guY29tAAAAILrR4sPB+b6BRId/OkQha9nWwoACXqUTILz1TrmG4R9CAAA"
|
||||||
|
"AIBWWnxuCYiOyvMYLtkgoEyEKlLV+klM+BU6Nh3PmAiqXAAAAAAAAAAAAAAABAAAAB"
|
||||||
|
"215aWRlbnQAAAAAAAAAAAAAAAD//////////wAAAAAAAACCAAAAFXBlcm1pdC1YMTE"
|
||||||
|
"tZm9yd2FyZGluZwAAAAAAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAAF"
|
||||||
|
"nBlcm1pdC1wb3J0LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wdHkAAAAAAAAADnB"
|
||||||
|
"lcm1pdC11c2VyLXJjAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIBWWnxuCY"
|
||||||
|
"iOyvMYLtkgoEyEKlLV+klM+BU6Nh3PmAiqXAAAAUwAAAAtzc2gtZWQyNTUxOQAAAEB"
|
||||||
|
"d8AogGWM6njfejbazFVyfnjNiWqatx6IV3Nnqc3LjCiPY19fqIPe2YJSzytHwLTD5X"
|
||||||
|
"IjD2bJpq2ZfjQwXpO0J ./ed.pub";
|
||||||
|
|
||||||
static const char *torture_get_testkey_internal(enum ssh_keytypes_e type,
|
static const char *torture_get_testkey_internal(enum ssh_keytypes_e type,
|
||||||
bool with_passphrase,
|
bool with_passphrase,
|
||||||
int pubkey,
|
int pubkey,
|
||||||
@ -586,6 +649,14 @@ static const char *torture_get_testkey_internal(enum ssh_keytypes_e type,
|
|||||||
return torture_dsa_testkey_cert;
|
return torture_dsa_testkey_cert;
|
||||||
case SSH_KEYTYPE_RSA_CERT01:
|
case SSH_KEYTYPE_RSA_CERT01:
|
||||||
return torture_rsa_testkey_cert;
|
return torture_rsa_testkey_cert;
|
||||||
|
case SSH_KEYTYPE_ECDSA_P256_CERT01:
|
||||||
|
return torture_ecdsa256_testkey_cert;
|
||||||
|
case SSH_KEYTYPE_ECDSA_P384_CERT01:
|
||||||
|
return torture_ecdsa384_testkey_cert;
|
||||||
|
case SSH_KEYTYPE_ECDSA_P521_CERT01:
|
||||||
|
return torture_ecdsa521_testkey_cert;
|
||||||
|
case SSH_KEYTYPE_ED25519_CERT01:
|
||||||
|
return torture_ed25519_testkey_cert;
|
||||||
case SSH_KEYTYPE_RSA1:
|
case SSH_KEYTYPE_RSA1:
|
||||||
case SSH_KEYTYPE_ECDSA:
|
case SSH_KEYTYPE_ECDSA:
|
||||||
case SSH_KEYTYPE_UNKNOWN:
|
case SSH_KEYTYPE_UNKNOWN:
|
||||||
|
@ -66,7 +66,8 @@ static int setup_ecdsa_key(void **state, int ecdsa_bits)
|
|||||||
torture_get_testkey(test_state->type, 1));
|
torture_get_testkey(test_state->type, 1));
|
||||||
torture_write_file(LIBSSH_ECDSA_TESTKEY ".pub",
|
torture_write_file(LIBSSH_ECDSA_TESTKEY ".pub",
|
||||||
torture_get_testkey_pub(test_state->type));
|
torture_get_testkey_pub(test_state->type));
|
||||||
|
torture_write_file(LIBSSH_ECDSA_TESTKEY "-cert.pub",
|
||||||
|
torture_get_testkey_pub(test_state->type+3));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +117,8 @@ static int setup_openssh_ecdsa_key(void **state, int ecdsa_bits)
|
|||||||
torture_write_file(LIBSSH_ECDSA_TESTKEY_PASSPHRASE, keystring);
|
torture_write_file(LIBSSH_ECDSA_TESTKEY_PASSPHRASE, keystring);
|
||||||
torture_write_file(LIBSSH_ECDSA_TESTKEY ".pub",
|
torture_write_file(LIBSSH_ECDSA_TESTKEY ".pub",
|
||||||
torture_get_testkey_pub(test_state->type));
|
torture_get_testkey_pub(test_state->type));
|
||||||
|
torture_write_file(LIBSSH_ECDSA_TESTKEY "-cert.pub",
|
||||||
|
torture_get_testkey_pub(test_state->type+3));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,6 +267,26 @@ static void torture_pki_ecdsa_publickey_from_privatekey(void **state)
|
|||||||
SSH_KEY_FREE(pubkey);
|
SSH_KEY_FREE(pubkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void torture_pki_ecdsa_import_cert_file(void **state)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
ssh_key cert = NULL;
|
||||||
|
enum ssh_keytypes_e type;
|
||||||
|
struct pki_st *test_state = *((struct pki_st **)state);
|
||||||
|
|
||||||
|
rc = ssh_pki_import_cert_file(LIBSSH_ECDSA_TESTKEY "-cert.pub", &cert);
|
||||||
|
assert_true(rc == 0);
|
||||||
|
assert_non_null(cert);
|
||||||
|
|
||||||
|
type = ssh_key_type(cert);
|
||||||
|
assert_true(type == test_state->type+3);
|
||||||
|
|
||||||
|
rc = ssh_key_is_public(cert);
|
||||||
|
assert_true(rc == 1);
|
||||||
|
|
||||||
|
SSH_KEY_FREE(cert);
|
||||||
|
}
|
||||||
|
|
||||||
static void torture_pki_ecdsa_publickey_base64(void **state)
|
static void torture_pki_ecdsa_publickey_base64(void **state)
|
||||||
{
|
{
|
||||||
enum ssh_keytypes_e type;
|
enum ssh_keytypes_e type;
|
||||||
@ -720,6 +742,15 @@ int torture_run_tests(void) {
|
|||||||
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_publickey_from_privatekey,
|
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_publickey_from_privatekey,
|
||||||
setup_ecdsa_key_521,
|
setup_ecdsa_key_521,
|
||||||
teardown),
|
teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_cert_file,
|
||||||
|
setup_ecdsa_key_256,
|
||||||
|
teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_cert_file,
|
||||||
|
setup_ecdsa_key_384,
|
||||||
|
teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_cert_file,
|
||||||
|
setup_ecdsa_key_521,
|
||||||
|
teardown),
|
||||||
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_duplicate_then_demote,
|
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_duplicate_then_demote,
|
||||||
setup_ecdsa_key_256,
|
setup_ecdsa_key_256,
|
||||||
teardown),
|
teardown),
|
||||||
|
@ -59,6 +59,8 @@ static int setup_ed25519_key(void **state)
|
|||||||
|
|
||||||
torture_write_file(LIBSSH_ED25519_TESTKEY ".pub",
|
torture_write_file(LIBSSH_ED25519_TESTKEY ".pub",
|
||||||
torture_get_testkey_pub(SSH_KEYTYPE_ED25519));
|
torture_get_testkey_pub(SSH_KEYTYPE_ED25519));
|
||||||
|
torture_write_file(LIBSSH_ED25519_TESTKEY "-cert.pub",
|
||||||
|
torture_get_testkey_pub(SSH_KEYTYPE_ED25519_CERT01));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -229,6 +231,27 @@ static void torture_pki_ed25519_publickey_from_privatekey(void **state)
|
|||||||
SSH_KEY_FREE(pubkey);
|
SSH_KEY_FREE(pubkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void torture_pki_ed25519_import_cert_file(void **state)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
ssh_key cert = NULL;
|
||||||
|
enum ssh_keytypes_e type;
|
||||||
|
|
||||||
|
(void) state; /* unused */
|
||||||
|
|
||||||
|
rc = ssh_pki_import_cert_file(LIBSSH_ED25519_TESTKEY "-cert.pub", &cert);
|
||||||
|
assert_true(rc == 0);
|
||||||
|
assert_non_null(cert);
|
||||||
|
|
||||||
|
type = ssh_key_type(cert);
|
||||||
|
assert_true(type == SSH_KEYTYPE_ED25519_CERT01);
|
||||||
|
|
||||||
|
rc = ssh_key_is_public(cert);
|
||||||
|
assert_true(rc == 1);
|
||||||
|
|
||||||
|
SSH_KEY_FREE(cert);
|
||||||
|
}
|
||||||
|
|
||||||
static void torture_pki_ed25519_publickey_base64(void **state)
|
static void torture_pki_ed25519_publickey_base64(void **state)
|
||||||
{
|
{
|
||||||
enum ssh_keytypes_e type;
|
enum ssh_keytypes_e type;
|
||||||
@ -682,6 +705,9 @@ int torture_run_tests(void) {
|
|||||||
cmocka_unit_test_setup_teardown(torture_pki_ed25519_publickey_from_privatekey,
|
cmocka_unit_test_setup_teardown(torture_pki_ed25519_publickey_from_privatekey,
|
||||||
setup_ed25519_key,
|
setup_ed25519_key,
|
||||||
teardown),
|
teardown),
|
||||||
|
cmocka_unit_test_setup_teardown(torture_pki_ed25519_import_cert_file,
|
||||||
|
setup_ed25519_key,
|
||||||
|
teardown),
|
||||||
cmocka_unit_test_setup_teardown(torture_pki_ed25519_publickey_base64,
|
cmocka_unit_test_setup_teardown(torture_pki_ed25519_publickey_base64,
|
||||||
setup_ed25519_key,
|
setup_ed25519_key,
|
||||||
teardown),
|
teardown),
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user