aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormilo <milo@r0ot.me>2011-03-09 13:49:04 +0100
committermilo <milo@r0ot.me>2011-03-17 11:41:50 +0100
commitf0439e3494d12898ed3854b0509968f5718a3dc5 (patch)
tree1dae3c02bab93197cbdb0265a3d6d6e82328c11b
parentb05a76870cf95585ca8e29a44644a69af2caf592 (diff)
downloadlibssh-f0439e3494d12898ed3854b0509968f5718a3dc5.tar.gz
libssh-f0439e3494d12898ed3854b0509968f5718a3dc5.tar.xz
libssh-f0439e3494d12898ed3854b0509968f5718a3dc5.zip
[pki] Added conversion functions to migrate seemlessly to ssh_key
-rw-r--r--include/libssh/pki.h6
-rw-r--r--src/pki.c81
2 files changed, 87 insertions, 0 deletions
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;