From f0439e3494d12898ed3854b0509968f5718a3dc5 Mon Sep 17 00:00:00 2001 From: milo Date: Wed, 9 Mar 2011 13:49:04 +0100 Subject: [pki] Added conversion functions to migrate seemlessly to ssh_key --- include/libssh/pki.h | 6 ++++ src/pki.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/include/libssh/pki.h b/include/libssh/pki.h index 9d023c8..fe83fc5 100644 --- a/include/libssh/pki.h +++ b/include/libssh/pki.h @@ -49,5 +49,11 @@ int ssh_key_import_private(ssh_key key, ssh_session session, ssh_key ssh_pki_publickey_from_privatekey(ssh_key privkey); +/* temporary functions, to be removed after migration to ssh_key */ +ssh_key ssh_pki_convert_privatekey_to_key(ssh_private_key priv); +ssh_key ssh_pki_convert_publickey_to_key(ssh_public_key pub); +ssh_private_key ssh_pki_convert_key_to_privatekey(ssh_key key); +ssh_public_key ssh_pki_convert_key_to_publickey(ssh_key key); + #endif /* PKI_H_ */ diff --git a/src/pki.c b/src/pki.c index 423a06d..1742073 100644 --- a/src/pki.c +++ b/src/pki.c @@ -115,6 +115,87 @@ int ssh_key_import_private(ssh_key key, ssh_session session, const char *filenam return SSH_OK; } +/* temporary function to migrate seemlessly to ssh_key */ +ssh_key ssh_pki_convert_privatekey_to_key(ssh_private_key priv) { + ssh_key key; + + if(priv == NULL) { + return NULL; + } + + key = ssh_key_new(); + + key->dsa = priv->dsa_priv; + key->rsa = priv->rsa_priv; + key->type = priv->type; + key->flags = SSH_KEY_FLAG_PRIVATE; + key->type_c = ssh_type_to_char(key->type); + + return SSH_OK; +} + +/* temporary function to migrate seemlessly to ssh_key */ +ssh_key ssh_pki_convert_publickey_to_key(ssh_public_key pub) { + ssh_key key; + + if(pub == NULL) { + return NULL; + } + + key = ssh_key_new(); + + key->dsa = pub->dsa_pub; + key->rsa = pub->rsa_pub; + key->type = pub->type; + key->flags = SSH_KEY_FLAG_PUBLIC; + key->type_c = ssh_type_to_char(key->type); + + return SSH_OK; +} + +/* temporary function to migrate seemlessly to ssh_key */ +ssh_private_key ssh_pki_convert_key_to_privatekey(ssh_key key) { + ssh_private_key priv; + + if(key == NULL) { + return NULL; + } + + priv = malloc(sizeof(struct ssh_private_key_struct)); + if (priv == NULL) { + return NULL; + } + ZERO_STRUCTP(priv); + + priv->dsa_priv = key->dsa; + priv->rsa_priv = key->rsa; + priv->type = key->type; + + return priv; +} + +/* temporary function to migrate seemlessly to ssh_key */ +ssh_public_key ssh_pki_convert_key_to_publickey(ssh_key key) { + ssh_public_key pub; + + if(key == NULL) { + return NULL; + } + + pub = malloc(sizeof(struct ssh_public_key_struct)); + if (pub == NULL) { + return NULL; + } + ZERO_STRUCTP(pub); + + pub->dsa_pub = key->dsa; + pub->rsa_pub = key->rsa; + pub->type = key->type; + pub->type_c = key->type_c; + + return pub; +} + int ssh_pki_import_privkey_base64(ssh_key key, ssh_session session, const char *b64_key, const char *passphrase) { ssh_private_key priv; -- cgit v1.2.3