1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-07-31 00:03:07 +03:00

tests: Add reproducer for T76

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
This commit is contained in:
Jakub Jelen
2019-06-19 15:09:00 +02:00
parent d627cba476
commit d5095a55b9
3 changed files with 115 additions and 0 deletions

View File

@ -168,6 +168,37 @@ static void torture_pki_dsa_import_privkey_base64(void **state)
SSH_KEY_FREE(key); SSH_KEY_FREE(key);
} }
static void torture_pki_dsa_import_privkey_base64_comment(void **state)
{
int rc, file_str_len;
ssh_key key = NULL;
const char *passphrase = torture_get_testkey_passphrase();
const char *comment_str = "#this is line-comment\n#this is another\n";
const char *key_str = NULL;
char *file_str = NULL;
(void) state; /* unused */
key_str = torture_get_testkey(SSH_KEYTYPE_DSS, 0);
assert_non_null(key_str);
file_str_len = strlen(comment_str) + strlen(key_str) + 1;
file_str = malloc(file_str_len);
assert_non_null(file_str);
rc = snprintf(file_str, file_str_len, "%s%s", comment_str, key_str);
assert_int_equal(rc, file_str_len - 1);
rc = ssh_pki_import_privkey_base64(file_str,
passphrase,
NULL,
NULL,
&key);
assert_true(rc == 0);
free(file_str);
SSH_KEY_FREE(key);
}
static int test_sign_verify_data(ssh_key key, static int test_sign_verify_data(ssh_key key,
enum ssh_digest_e hash_type, enum ssh_digest_e hash_type,
const unsigned char *input, const unsigned char *input,
@ -833,6 +864,9 @@ int torture_run_tests(void)
cmocka_unit_test_setup_teardown(torture_pki_dsa_import_privkey_base64, cmocka_unit_test_setup_teardown(torture_pki_dsa_import_privkey_base64,
setup_dsa_key, setup_dsa_key,
teardown), teardown),
cmocka_unit_test_setup_teardown(torture_pki_dsa_import_privkey_base64_comment,
setup_dsa_key,
teardown),
cmocka_unit_test_setup_teardown(torture_pki_dsa_import_privkey_base64, cmocka_unit_test_setup_teardown(torture_pki_dsa_import_privkey_base64,
setup_openssh_dsa_key, setup_openssh_dsa_key,
teardown), teardown),

View File

@ -241,6 +241,37 @@ static void torture_pki_ecdsa_import_privkey_base64(void **state)
SSH_KEY_FREE(key); SSH_KEY_FREE(key);
} }
static void torture_pki_ecdsa_import_privkey_base64_comment(void **state)
{
int rc, file_str_len;
const char *comment_str = "#this is line-comment\n#this is another\n";
char *key_str = NULL, *file_str = NULL;
ssh_key key = NULL;
const char *passphrase = torture_get_testkey_passphrase();
(void) state; /* unused */
key_str = torture_pki_read_file(LIBSSH_ECDSA_TESTKEY);
assert_non_null(key_str);
file_str_len = strlen(comment_str) + strlen(key_str) + 1;
file_str = malloc(file_str_len);
assert_non_null(file_str);
rc = snprintf(file_str, file_str_len, "%s%s", comment_str, key_str);
assert_int_equal(rc, file_str_len - 1);
rc = ssh_pki_import_privkey_base64(file_str, passphrase, NULL, NULL, &key);
assert_true(rc == 0);
assert_non_null(key);
rc = ssh_key_is_private(key);
assert_true(rc == 1);
free(key_str);
free(file_str);
SSH_KEY_FREE(key);
}
static void torture_pki_ecdsa_publickey_from_privatekey(void **state) static void torture_pki_ecdsa_publickey_from_privatekey(void **state)
{ {
int rc; int rc;
@ -904,6 +935,15 @@ int torture_run_tests(void) {
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_privkey_base64, cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_privkey_base64,
setup_ecdsa_key_521, setup_ecdsa_key_521,
teardown), teardown),
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_privkey_base64_comment,
setup_ecdsa_key_256,
teardown),
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_privkey_base64_comment,
setup_ecdsa_key_384,
teardown),
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_privkey_base64_comment,
setup_ecdsa_key_521,
teardown),
cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_privkey_base64, cmocka_unit_test_setup_teardown(torture_pki_ecdsa_import_privkey_base64,
setup_openssh_ecdsa_key_256, setup_openssh_ecdsa_key_256,
teardown), teardown),

View File

@ -213,6 +213,44 @@ static void torture_pki_rsa_import_privkey_base64(void **state)
SSH_KEY_FREE(key); SSH_KEY_FREE(key);
} }
static void torture_pki_rsa_import_privkey_base64_comment(void **state)
{
int rc, file_str_len;
const char *comment_str = "#this is line-comment\n#this is another\n";
char *key_str = NULL, *file_str = NULL;
ssh_key key = NULL;
const char *passphrase = torture_get_testkey_passphrase();
enum ssh_keytypes_e type;
(void) state; /* unused */
key_str = torture_pki_read_file(LIBSSH_RSA_TESTKEY);
assert_non_null(key_str);
file_str_len = strlen(comment_str) + strlen(key_str) + 1;
file_str = malloc(file_str_len);
assert_non_null(file_str);
rc = snprintf(file_str, file_str_len, "%s%s", comment_str, key_str);
assert_int_equal(rc, file_str_len - 1);
rc = ssh_pki_import_privkey_base64(file_str, passphrase, NULL, NULL, &key);
assert_true(rc == 0);
assert_non_null(key);
type = ssh_key_type(key);
assert_true(type == SSH_KEYTYPE_RSA);
rc = ssh_key_is_private(key);
assert_true(rc == 1);
rc = ssh_key_is_public(key);
assert_true(rc == 1);
free(key_str);
free(file_str);
SSH_KEY_FREE(key);
}
static void torture_pki_rsa_publickey_from_privatekey(void **state) static void torture_pki_rsa_publickey_from_privatekey(void **state)
{ {
int rc; int rc;
@ -877,6 +915,9 @@ int torture_run_tests(void) {
cmocka_unit_test_setup_teardown(torture_pki_rsa_import_privkey_base64, cmocka_unit_test_setup_teardown(torture_pki_rsa_import_privkey_base64,
setup_rsa_key, setup_rsa_key,
teardown), teardown),
cmocka_unit_test_setup_teardown(torture_pki_rsa_import_privkey_base64_comment,
setup_rsa_key,
teardown),
cmocka_unit_test_setup_teardown(torture_pki_rsa_import_privkey_base64, cmocka_unit_test_setup_teardown(torture_pki_rsa_import_privkey_base64,
setup_openssh_rsa_key, setup_openssh_rsa_key,
teardown), teardown),