1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-05 20:55:46 +03:00

examples: Add ECDSA key option to ssh_server_fork

Signed-off-by: Alan Dunn <amdunn@gmail.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
Alan Dunn
2014-03-07 08:13:24 -06:00
committed by Andreas Schneider
parent c82dd2eb81
commit 5c0c95bd34

View File

@@ -55,7 +55,8 @@ The goal is to show the API in action.
static void set_default_keys(ssh_bind sshbind, static void set_default_keys(ssh_bind sshbind,
int rsa_already_set, int rsa_already_set,
int dsa_already_set) { int dsa_already_set,
int ecdsa_already_set) {
if (!rsa_already_set) { if (!rsa_already_set) {
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_RSAKEY, ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_RSAKEY,
KEYS_FOLDER "ssh_host_rsa_key"); KEYS_FOLDER "ssh_host_rsa_key");
@@ -64,6 +65,10 @@ static void set_default_keys(ssh_bind sshbind,
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_DSAKEY, ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_DSAKEY,
KEYS_FOLDER "ssh_host_dsa_key"); KEYS_FOLDER "ssh_host_dsa_key");
} }
if (!ecdsa_already_set) {
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_ECDSAKEY,
KEYS_FOLDER "ssh_host_ecdsa_key");
}
} }
#ifdef HAVE_ARGP_H #ifdef HAVE_ARGP_H
@@ -111,6 +116,14 @@ static struct argp_option options[] = {
.doc = "Set the rsa key.", .doc = "Set the rsa key.",
.group = 0 .group = 0
}, },
{
.name = "ecdsakey",
.key = 'e',
.arg = "FILE",
.flags = 0,
.doc = "Set the ecdsa key.",
.group = 0
},
{ {
.name = "no-default-keys", .name = "no-default-keys",
.key = 'n', .key = 'n',
@@ -136,7 +149,7 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state) {
* know is a pointer to our arguments structure. */ * know is a pointer to our arguments structure. */
ssh_bind sshbind = state->input; ssh_bind sshbind = state->input;
static int no_default_keys = 0; static int no_default_keys = 0;
static int rsa_already_set = 0, dsa_already_set = 0; static int rsa_already_set = 0, dsa_already_set = 0, ecdsa_already_set = 0;
switch (key) { switch (key) {
case 'n': case 'n':
@@ -159,6 +172,10 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state) {
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_RSAKEY, arg); ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_RSAKEY, arg);
rsa_already_set = 1; rsa_already_set = 1;
break; break;
case 'e':
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_ECDSAKEY, arg);
ecdsa_already_set = 1;
break;
case 'v': case 'v':
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY_STR, ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY_STR,
"3"); "3");
@@ -179,7 +196,8 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state) {
if (!no_default_keys) { if (!no_default_keys) {
set_default_keys(sshbind, set_default_keys(sshbind,
rsa_already_set, rsa_already_set,
dsa_already_set); dsa_already_set,
ecdsa_already_set);
} }
break; break;
@@ -620,7 +638,7 @@ int main(int argc, char **argv) {
(void) argc; (void) argc;
(void) argv; (void) argv;
set_default_keys(sshbind, 0, 0); set_default_keys(sshbind, 0, 0, 0);
#endif /* HAVE_ARGP_H */ #endif /* HAVE_ARGP_H */
if(ssh_bind_listen(sshbind) < 0) { if(ssh_bind_listen(sshbind) < 0) {