mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-09 09:54:25 +09:00
torture_pki: store test case attributes in struct instead of multiple arrays
Signed-off-by: Ben Toews <mastahyeti@gmail.com> Reviewed-by: Jakub Jelen <jjelen@redhat.com>
This commit is contained in:
committed by
Andreas Schneider
parent
e036c426f8
commit
78f764b7c9
@@ -47,44 +47,26 @@ static void torture_pki_signature(void **state)
|
|||||||
ssh_signature_free(sig);
|
ssh_signature_free(sig);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Maps to enum ssh_keytypes_e */
|
struct key_attrs {
|
||||||
const char *key_types[] = {
|
int sign;
|
||||||
"", /* UNKNOWN */
|
int verify;
|
||||||
"ssh-dss",
|
const char *type_c;
|
||||||
"ssh-rsa",
|
int size_arg;
|
||||||
"",/* RSA1 */
|
int sig_length;
|
||||||
"ecdsa-sha2-nistp521",
|
const char *sig_type_c;
|
||||||
"ssh-ed25519",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Maps to enum ssh_keytypes_e */
|
struct key_attrs key_attrs_list[] = {
|
||||||
const int key_sizes[] = {
|
{0, 0, "", 0, 0, ""}, /* UNKNOWN */
|
||||||
0, /* UNKNOWN */
|
#ifdef HAVE_DSA
|
||||||
1024,
|
{1, 1, "ssh-dss", 1024, 20, "ssh-dss" }, /* DSS */
|
||||||
2048,
|
#else
|
||||||
0, /* RSA1 */
|
{0, 0, "", 0, 0, ""}, /* DSS */
|
||||||
521,
|
#endif
|
||||||
0,
|
{1, 1, "ssh-rsa", 2048, 20, "ssh-rsa"}, /* RSA */
|
||||||
};
|
{0, 0, "", 0, 0, ""}, /* RSA1 */
|
||||||
|
{1, 1, "ecdsa-sha2-nistp521", 521, 64, "ecdsa-sha2-nistp521"}, /* ECDSA */
|
||||||
/* Maps to enum ssh_keytypes_e */
|
{1, 1, "ssh-ed25519", 0, 33, "ssh-ed25519"}, /* ED25519 */
|
||||||
const int sig_lengths[] = {
|
|
||||||
0, /* UNKNOWN */
|
|
||||||
20,
|
|
||||||
20,
|
|
||||||
0, /* RSA1 */
|
|
||||||
64,
|
|
||||||
33,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Maps to enum ssh_keytypes_e */
|
|
||||||
const char *signature_types[] = {
|
|
||||||
"", /* UNKNOWN */
|
|
||||||
"ssh-dss",
|
|
||||||
"ssh-rsa",
|
|
||||||
"",/* RSA1 */
|
|
||||||
"ecdsa-sha2-nistp521",
|
|
||||||
"ssh-ed25519",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Maps to enum ssh_digest_e */
|
/* Maps to enum ssh_digest_e */
|
||||||
@@ -112,37 +94,33 @@ static void torture_pki_verify_mismatch(void **state)
|
|||||||
ssh_signature sign = NULL, import_sig = NULL, new_sig = NULL;
|
ssh_signature sign = NULL, import_sig = NULL, new_sig = NULL;
|
||||||
ssh_string blob;
|
ssh_string blob;
|
||||||
ssh_session session = ssh_new();
|
ssh_session session = ssh_new();
|
||||||
enum ssh_keytypes_e key_type, sig_type, first_key;
|
enum ssh_keytypes_e key_type, sig_type;
|
||||||
enum ssh_digest_e hash;
|
enum ssh_digest_e hash;
|
||||||
int hash_length;
|
int hash_length;
|
||||||
|
struct key_attrs skey_attrs, vkey_attrs;
|
||||||
|
|
||||||
(void) state;
|
(void) state;
|
||||||
|
|
||||||
ssh_options_set(session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
|
ssh_options_set(session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
|
||||||
|
|
||||||
#ifdef HAVE_DSA
|
for (sig_type = SSH_KEYTYPE_DSS;
|
||||||
first_key = SSH_KEYTYPE_DSS;
|
|
||||||
#else
|
|
||||||
first_key = SSH_KEYTYPE_RSA;
|
|
||||||
#endif /* HAVE_DSA */
|
|
||||||
|
|
||||||
for (sig_type = first_key;
|
|
||||||
sig_type <= SSH_KEYTYPE_ED25519;
|
sig_type <= SSH_KEYTYPE_ED25519;
|
||||||
sig_type++) {
|
sig_type++) {
|
||||||
if (sig_type == SSH_KEYTYPE_RSA1) {
|
skey_attrs = key_attrs_list[sig_type];
|
||||||
|
if (!skey_attrs.sign) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
rc = ssh_pki_generate(sig_type, key_sizes[sig_type], &key);
|
rc = ssh_pki_generate(sig_type, skey_attrs.size_arg, &key);
|
||||||
assert_true(rc == SSH_OK);
|
assert_true(rc == SSH_OK);
|
||||||
assert_non_null(key);
|
assert_non_null(key);
|
||||||
assert_int_equal(key->type, sig_type);
|
assert_int_equal(key->type, sig_type);
|
||||||
assert_string_equal(key->type_c, key_types[sig_type]);
|
assert_string_equal(key->type_c, skey_attrs.type_c);
|
||||||
|
|
||||||
for (hash = SSH_DIGEST_AUTO;
|
for (hash = SSH_DIGEST_AUTO;
|
||||||
hash <= SSH_DIGEST_SHA512;
|
hash <= SSH_DIGEST_SHA512;
|
||||||
hash++) {
|
hash++) {
|
||||||
hash_length = ((hash == SSH_DIGEST_AUTO) ?
|
hash_length = ((hash == SSH_DIGEST_AUTO) ?
|
||||||
sig_lengths[sig_type] : hash_lengths[hash]);
|
skey_attrs.sig_length : hash_lengths[hash]);
|
||||||
|
|
||||||
SSH_LOG(SSH_LOG_TRACE, "Creating signature %d with hash %d",
|
SSH_LOG(SSH_LOG_TRACE, "Creating signature %d with hash %d",
|
||||||
sig_type, hash);
|
sig_type, hash);
|
||||||
@@ -153,7 +131,7 @@ static void torture_pki_verify_mismatch(void **state)
|
|||||||
assert_int_equal(sign->type, key->type);
|
assert_int_equal(sign->type, key->type);
|
||||||
if (hash == SSH_DIGEST_AUTO) {
|
if (hash == SSH_DIGEST_AUTO) {
|
||||||
assert_string_equal(sign->type_c, key->type_c);
|
assert_string_equal(sign->type_c, key->type_c);
|
||||||
assert_string_equal(sign->type_c, signature_types[sig_type]);
|
assert_string_equal(sign->type_c, skey_attrs.sig_type_c);
|
||||||
} else {
|
} else {
|
||||||
assert_string_equal(sign->type_c, hash_signatures[hash]);
|
assert_string_equal(sign->type_c, hash_signatures[hash]);
|
||||||
}
|
}
|
||||||
@@ -172,7 +150,7 @@ static void torture_pki_verify_mismatch(void **state)
|
|||||||
assert_int_equal(import_sig->type, key->type);
|
assert_int_equal(import_sig->type, key->type);
|
||||||
if (hash == SSH_DIGEST_AUTO) {
|
if (hash == SSH_DIGEST_AUTO) {
|
||||||
assert_string_equal(import_sig->type_c, key->type_c);
|
assert_string_equal(import_sig->type_c, key->type_c);
|
||||||
assert_string_equal(import_sig->type_c, signature_types[sig_type]);
|
assert_string_equal(import_sig->type_c, skey_attrs.sig_type_c);
|
||||||
} else {
|
} else {
|
||||||
assert_string_equal(import_sig->type_c, hash_signatures[hash]);
|
assert_string_equal(import_sig->type_c, hash_signatures[hash]);
|
||||||
}
|
}
|
||||||
@@ -185,16 +163,17 @@ static void torture_pki_verify_mismatch(void **state)
|
|||||||
hash_length);
|
hash_length);
|
||||||
assert_true(rc == SSH_OK);
|
assert_true(rc == SSH_OK);
|
||||||
|
|
||||||
for (key_type = first_key;
|
for (key_type = SSH_KEYTYPE_DSS;
|
||||||
key_type <= SSH_KEYTYPE_ED25519;
|
key_type <= SSH_KEYTYPE_ED25519;
|
||||||
key_type++) {
|
key_type++) {
|
||||||
if (key_type == SSH_KEYTYPE_RSA1) {
|
vkey_attrs = key_attrs_list[key_type];
|
||||||
|
if (!vkey_attrs.verify) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
SSH_LOG(SSH_LOG_TRACE, "Trying key %d with signature %d",
|
SSH_LOG(SSH_LOG_TRACE, "Trying key %d with signature %d",
|
||||||
key_type, sig_type);
|
key_type, sig_type);
|
||||||
|
|
||||||
rc = ssh_pki_generate(key_type, key_sizes[key_type], &verify_key);
|
rc = ssh_pki_generate(key_type, vkey_attrs.size_arg, &verify_key);
|
||||||
assert_true(rc == SSH_OK);
|
assert_true(rc == SSH_OK);
|
||||||
assert_non_null(verify_key);
|
assert_non_null(verify_key);
|
||||||
|
|
||||||
@@ -229,7 +208,7 @@ static void torture_pki_verify_mismatch(void **state)
|
|||||||
assert_string_equal(new_sig->type_c, hash_signatures[new_sig->hash_type]);
|
assert_string_equal(new_sig->type_c, hash_signatures[new_sig->hash_type]);
|
||||||
} else {
|
} else {
|
||||||
assert_string_equal(new_sig->type_c, key->type_c);
|
assert_string_equal(new_sig->type_c, key->type_c);
|
||||||
assert_string_equal(new_sig->type_c, signature_types[sig_type]);
|
assert_string_equal(new_sig->type_c, skey_attrs.sig_type_c);
|
||||||
}
|
}
|
||||||
/* The verification should not work */
|
/* The verification should not work */
|
||||||
rc = pki_signature_verify(session,
|
rc = pki_signature_verify(session,
|
||||||
|
|||||||
Reference in New Issue
Block a user