28 #include <gnutls/gnutls.h> 29 #include <gnutls/x509.h> 30 #include <libssh/libssh.h> 45 gnutls_x509_privkey_t key;
46 char buffer[16 * 2048];
48 size_t size =
sizeof (buffer);
50 rc = gnutls_x509_privkey_init (&key);
53 data.size = strlen (pkcs8_key);
54 data.data = (
void *) g_strdup (pkcs8_key);
55 rc = gnutls_x509_privkey_import_pkcs8 (key, &data, GNUTLS_X509_FMT_PEM,
56 passphrase ? passphrase :
"", 0);
59 gnutls_x509_privkey_deinit (key);
63 rc = gnutls_x509_privkey_export (key, GNUTLS_X509_FMT_PEM, buffer, &size);
64 gnutls_x509_privkey_deinit (key);
67 return g_strdup (buffer);
83 char *pub_key, *decrypted_priv, *pub_str = NULL;
88 ret = ssh_pki_import_privkey_base64 (decrypted_priv ? decrypted_priv
90 passphrase, NULL, NULL, &priv);
91 g_free (decrypted_priv);
94 ret = ssh_pki_export_pubkey_base64 (priv, &pub_key);
95 type = ssh_key_type_to_char (ssh_key_type (priv));
96 #if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 6, 4) 97 if (!strcmp (type,
"ssh-ecdsa"))
98 type = ssh_pki_key_ecdsa_name (priv);
103 pub_str = g_strdup_printf (
"%s %s", type, pub_key);
char * gvm_ssh_pkcs8_decrypt(const char *pkcs8_key, const char *passphrase)
Decrypts a base64 encrypted ssh private key.
char * gvm_ssh_public_from_private(const char *private_key, const char *passphrase)
Exports a base64 encoded public key from a private key and its passphrase.