aboutsummaryrefslogtreecommitdiff
path: root/src/legacy.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2011-08-30 11:31:45 +0200
committerAndreas Schneider <asn@cryptomilk.org>2011-08-30 12:15:20 +0200
commitfe246db27d69e6e27ebde35f6e72e41802ce4a26 (patch)
tree8ff21f94095cf9938b4b86cd58c719b284570e68 /src/legacy.c
parent0cbbe39e4f5a3965ae975c1eb3cc491ab4219f7c (diff)
downloadlibssh-fe246db27d69e6e27ebde35f6e72e41802ce4a26.tar.gz
libssh-fe246db27d69e6e27ebde35f6e72e41802ce4a26.tar.xz
libssh-fe246db27d69e6e27ebde35f6e72e41802ce4a26.zip
keys: Move publickey_free() to legacy.c.
Diffstat (limited to 'src/legacy.c')
-rw-r--r--src/legacy.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/legacy.c b/src/legacy.c
index 66528596..d15508c7 100644
--- a/src/legacy.c
+++ b/src/legacy.c
@@ -300,7 +300,6 @@ int channel_write(ssh_channel channel, const void *data, uint32_t len){
void privatekey_free(ssh_private_key prv);
ssh_private_key privatekey_from_file(ssh_session session, const char *filename,
int type, const char *passphrase);
-void publickey_free(ssh_public_key key);
int ssh_publickey_to_file(ssh_session session, const char *file,
ssh_string pubkey, int type);
ssh_public_key publickey_from_privatekey(ssh_private_key prv);
@@ -344,6 +343,35 @@ char *string_to_char(ssh_string str){
return ssh_string_to_char(str);
}
+/* OLD PKI FUNCTIONS */
+
+void publickey_free(ssh_public_key key) {
+ if (key == NULL) {
+ return;
+ }
+
+ switch(key->type) {
+ case SSH_KEYTYPE_DSS:
+#ifdef HAVE_LIBGCRYPT
+ gcry_sexp_release(key->dsa_pub);
+#elif HAVE_LIBCRYPTO
+ DSA_free(key->dsa_pub);
+#endif
+ break;
+ case SSH_KEYTYPE_RSA:
+ case SSH_KEYTYPE_RSA1:
+#ifdef HAVE_LIBGCRYPT
+ gcry_sexp_release(key->rsa_pub);
+#elif defined HAVE_LIBCRYPTO
+ RSA_free(key->rsa_pub);
+#endif
+ break;
+ default:
+ break;
+ }
+ SAFE_FREE(key);
+}
+
ssh_private_key privatekey_from_file(ssh_session session,
const char *filename,
int type,