1 /* SILC SSH2 library tests */
3 #include "silccrypto.h"
5 int main(int argc, char **argv)
7 SilcBool success = FALSE;
9 SilcPublicKey public_key;
10 SilcPrivateKey private_key;
11 SilcSshPublicKey ssh_pubkey;
13 if (argc > 1 && !strcmp(argv[1], "-d")) {
16 silc_log_debug_hexdump(TRUE);
17 silc_log_set_debug_string("*ssh*,*pkcs1*,*asn1*,*rsa*,*dsa*");
20 silc_crypto_init(NULL);
21 rng = silc_rng_alloc();
24 SILC_LOG_DEBUG(("Generate key pair"));
25 silc_ssh_generate_key("dsa", 1024, rng, "foo@example.com",
26 &public_key, &private_key);
28 SILC_LOG_DEBUG(("Set SSH2 public key headers"));
29 ssh_pubkey = silc_pkcs_public_key_get_pkcs(SILC_PKCS_SSH2, public_key);
30 silc_ssh_public_key_set_type(ssh_pubkey, SILC_SSH_KEY_SSH2);
31 silc_ssh_public_key_add_field(ssh_pubkey, "Comment", "My own key");
33 SILC_LOG_DEBUG(("Save public and private key"));
34 if (!silc_pkcs_save_public_key("pubkey.pub", public_key,
35 SILC_PKCS_FILE_BASE64))
37 if (!silc_pkcs_save_private_key("privkey.prv", private_key, "testi", 5,
38 SILC_PKCS_FILE_BASE64, rng))
40 silc_pkcs_public_key_free(public_key);
41 silc_pkcs_private_key_free(private_key);
43 SILC_LOG_DEBUG(("Load public key"));
44 if (!silc_pkcs_load_public_key("pubkey.pub", SILC_PKCS_ANY, &public_key))
46 ssh_pubkey = silc_pkcs_public_key_get_pkcs(SILC_PKCS_SSH2, public_key);
47 SILC_LOG_DEBUG(("Subject: '%s'",
48 silc_ssh_public_key_get_field(ssh_pubkey, "Subject")));
49 SILC_LOG_DEBUG(("Comment: '%s'",
50 silc_ssh_public_key_get_field(ssh_pubkey, "Comment")));
52 SILC_LOG_DEBUG(("Load private key"));
53 if (!silc_pkcs_load_private_key("privkey.prv", "testi", 5,
54 SILC_PKCS_ANY, &private_key))
56 silc_pkcs_private_key_free(private_key);
58 SILC_LOG_DEBUG(("Save as OpenSSH public key"));
59 ssh_pubkey = silc_pkcs_public_key_get_pkcs(SILC_PKCS_SSH2, public_key);
60 silc_ssh_public_key_set_type(ssh_pubkey, SILC_SSH_KEY_OPENSSH);
61 if (!silc_pkcs_save_public_key("pubkey_openssh.pub", public_key,
62 SILC_PKCS_FILE_BASE64))
64 silc_pkcs_public_key_free(public_key);
66 SILC_LOG_DEBUG(("Load public key"));
67 if (!silc_pkcs_load_public_key("pubkey_openssh.pub", SILC_PKCS_SSH2,
70 silc_pkcs_public_key_free(public_key);
78 SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
79 fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");