diff options
Diffstat (limited to 'libssh/pki.c')
-rw-r--r-- | libssh/pki.c | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/libssh/pki.c b/libssh/pki.c deleted file mode 100644 index ef925dd..0000000 --- a/libssh/pki.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * This file is part of the SSH Library - * - * Copyright (c) 2010 by Aris Adamantiadis - * - * The SSH Library is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or (at your - * option) any later version. - * - * The SSH Library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with the SSH Library; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. - */ - -/** @defgroup ssh_pki SSH Public Key Infrastructure - * @ingroup libssh - * - * Functions for the creation, importation and manipulation of public and - * private keys in the context of the SSH protocol - * - * @{ - */ - -#include "libssh/priv.h" -#include "libssh/pki.h" -#include "libssh/keys.h" - -/** - * @brief creates a new empty SSH key - * @returns an empty ssh_key handle - */ -ssh_key ssh_key_new (void){ - ssh_key ptr=malloc (sizeof (struct ssh_key_struct)); - ZERO_STRUCTP(ptr); - return ptr; -} - -/** - * @brief clean up the key and deallocate all existing keys - * @param[in] key ssh_key to clean - */ -void ssh_key_clean (ssh_key key){ - if(key==NULL) - return; -#ifdef HAVE_LIBGCRYPT - gcry_sexp_release(key->dsa); - gcry_sexp_release(key->rsa); -#elif defined HAVE_LIBCRYPTO - DSA_free(key->dsa); - RSA_free(key->rsa); -#endif - key->flags=SSH_KEY_FLAG_EMPTY; - key->type=SSH_KEYTYPE_UNKNOWN; - key->type_c=NULL; -} - -/** - * @brief deallocate a SSH key - * @param[in] key ssh_key handle to free - */ -void ssh_key_free (ssh_key key){ - if(key){ - ssh_key_clean(key); - SAFE_FREE(key); - } -} - -/** - * @brief returns the type of a ssh key - * @param[in] key the ssh_key handle - * @returns one of SSH_KEYTYPE_RSA,SSH_KEYTYPE_DSS,SSH_KEYTYPE_RSA1 - * @returns SSH_KEYTYPE_UNKNOWN if the type is unknown - */ -enum ssh_keytypes_e ssh_key_type(ssh_key key){ - if (key==NULL) - return SSH_KEYTYPE_UNKNOWN; - return key->type; -} - -/** - * @brief import a key from a file - * @param[out] key the ssh_key to update - * @param[in] session The SSH Session to use. If a key decryption callback is set, it will - * be used to ask for the passphrase. - * @param[in] filename The filename of the the private key. - * @param[in] passphrase The passphrase to decrypt the private key. Set to null - * if none is needed or it is unknown. - * @returns SSH_OK on success, SSH_ERROR otherwise. - **/ -int ssh_key_import_private(ssh_key key, ssh_session session, const char *filename, const char *passphrase){ - ssh_private_key priv=privatekey_from_file(session,filename,0,passphrase); - if(priv==NULL) - return SSH_ERROR; - ssh_key_clean(key); - key->dsa=priv->dsa_priv; - key->rsa=priv->rsa_priv; - key->type=priv->type; - key->flags=SSH_KEY_FLAG_PRIVATE | SSH_KEY_FLAG_PUBLIC; - key->type_c=ssh_type_to_char(key->type); - SAFE_FREE(priv); - return SSH_OK; -} - -/** - * @} - */ |