[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 1/3] Separate out key import functionality from ssh_bind_listen
[Thread Prev] | [Thread Next]
- Subject: [PATCH v2 1/3] Separate out key import functionality from ssh_bind_listen
- From: Alan Dunn <amdunn@xxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Tue, 21 Jan 2014 08:19:30 -0600
- To: libssh@xxxxxxxxxx
- Cc: Alan Dunn <amdunn@xxxxxxxxx>
Signed-off-by: Alan Dunn <amdunn@xxxxxxxxx> --- src/bind.c | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/bind.c b/src/bind.c index 698b953..e06cb7e 100644 --- a/src/bind.c +++ b/src/bind.c @@ -144,26 +144,19 @@ ssh_bind ssh_bind_new(void) { return ptr; } -int ssh_bind_listen(ssh_bind sshbind) { - const char *host; - socket_t fd; +static int ssh_bind_import_keys(ssh_bind sshbind) { int rc; - if (ssh_init() < 0) { - ssh_set_error(sshbind, SSH_FATAL, "ssh_init() failed"); - return -1; - } - if (sshbind->ecdsakey == NULL && sshbind->dsakey == NULL && sshbind->rsakey == NULL) { ssh_set_error(sshbind, SSH_FATAL, - "DSA or RSA host key file must be set before listen()"); + "ECDSA, DSA, or RSA host key file must be set"); return SSH_ERROR; } #ifdef HAVE_ECC - if (sshbind->ecdsakey) { + if (sshbind->ecdsa == NULL && sshbind->ecdsakey != NULL) { rc = ssh_pki_import_privkey_file(sshbind->ecdsakey, NULL, NULL, @@ -185,7 +178,7 @@ int ssh_bind_listen(ssh_bind sshbind) { } #endif - if (sshbind->dsakey) { + if (sshbind->dsa == NULL && sshbind->dsakey != NULL) { rc = ssh_pki_import_privkey_file(sshbind->dsakey, NULL, NULL, @@ -207,7 +200,7 @@ int ssh_bind_listen(ssh_bind sshbind) { } } - if (sshbind->rsakey) { + if (sshbind->rsa == NULL && sshbind->rsakey != NULL) { rc = ssh_pki_import_privkey_file(sshbind->rsakey, NULL, NULL, @@ -229,6 +222,24 @@ int ssh_bind_listen(ssh_bind sshbind) { } } + return SSH_OK; +} + +int ssh_bind_listen(ssh_bind sshbind) { + const char *host; + socket_t fd; + int rc; + + if (ssh_init() < 0) { + ssh_set_error(sshbind, SSH_FATAL, "ssh_init() failed"); + return -1; + } + + rc = ssh_bind_import_keys(sshbind); + if (rc != SSH_OK) { + return SSH_ERROR; + } + if (sshbind->bindfd == SSH_INVALID_SOCKET) { host = sshbind->bindaddr; if (host == NULL) { -- 1.7.9.5
[PATCH v2 0/3] Allow use of ssh_bind_accept_fd without ssh_bind_listen | Alan Dunn <amdunn@xxxxxxxxx> |