aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2011-09-24 01:36:39 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2011-09-24 01:36:39 +0200
commit21d68112b869697a54536086956545543cbe9ec6 (patch)
tree8db7ca7afb54656a7f3bebeebc79c644a397f3d4 /tests
parent3fa5293aec01ac54a6b9d2b804ddffbd1c4f3615 (diff)
downloadlibssh-21d68112b869697a54536086956545543cbe9ec6.tar.gz
libssh-21d68112b869697a54536086956545543cbe9ec6.tar.xz
libssh-21d68112b869697a54536086956545543cbe9ec6.zip
Torture: test new ssh_pki_generate function
Diffstat (limited to 'tests')
-rw-r--r--tests/unittests/torture_pki.c137
1 files changed, 136 insertions, 1 deletions
diff --git a/tests/unittests/torture_pki.c b/tests/unittests/torture_pki.c
index bf924f2..9812f60 100644
--- a/tests/unittests/torture_pki.c
+++ b/tests/unittests/torture_pki.c
@@ -8,6 +8,7 @@
#define LIBSSH_RSA_TESTKEY "libssh_testkey.id_rsa"
#define LIBSSH_DSA_TESTKEY "libssh_testkey.id_dsa"
#define LIBSSH_PASSPHRASE "libssh-rocks"
+const unsigned char HASH[] = "12345678901234567890";
static void setup_rsa_key(void **state) {
int rc;
@@ -566,6 +567,138 @@ static void torture_pki_duplicate_key_dsa(void **state)
ssh_string_free_char(b64_key_gen);
}
+static void torture_pki_generate_key_rsa(void **state)
+{
+ int rc;
+ ssh_key key;
+ ssh_signature sign;
+ ssh_session session=ssh_new();
+ (void) state;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_RSA, 1024, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_RSA, 2048, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_RSA, 4096, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ ssh_free(session);
+}
+
+static void torture_pki_generate_key_rsa1(void **state)
+{
+ int rc;
+ ssh_key key;
+ ssh_signature sign;
+ ssh_session session=ssh_new();
+ (void) state;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_RSA1, 1024, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_RSA1, 2048, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_RSA1, 4096, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ ssh_free(session);
+}
+
+static void torture_pki_generate_key_dsa(void **state)
+{
+ int rc;
+ ssh_key key;
+ ssh_signature sign;
+ ssh_session session=ssh_new();
+ (void) state;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_DSS, 1024, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_DSS, 2048, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ rc = ssh_pki_generate(SSH_KEYTYPE_DSS, 3072, &key);
+ assert_true(rc == SSH_OK);
+ assert_true(key != NULL);
+ sign = pki_do_sign(key, HASH, 20);
+ assert_true(sign != NULL);
+ rc = pki_signature_verify(session,sign,key,HASH,20);
+ assert_true(rc == SSH_OK);
+ ssh_signature_free(sign);
+ ssh_key_free(key);
+ key=NULL;
+
+ ssh_free(session);
+}
+
int torture_run_tests(void) {
int rc;
const UnitTest tests[] = {
@@ -617,7 +750,9 @@ int torture_run_tests(void) {
unit_test_setup_teardown(torture_pki_duplicate_key_dsa,
setup_dsa_key,
teardown),
-
+ unit_test(torture_pki_generate_key_rsa),
+ unit_test(torture_pki_generate_key_rsa1),
+ unit_test(torture_pki_generate_key_dsa),
};
(void)setup_both_keys;