Mercurial > dropbear
annotate cli-authinteract.c @ 1659:d32bcb5c557d
Add Ed25519 support (#91)
* Add support for Ed25519 as a public key type
Ed25519 is a elliptic curve signature scheme that offers
better security than ECDSA and DSA and good performance. It may be
used for both user and host keys.
OpenSSH key import and fuzzer are not supported yet.
Initially inspired by Peter Szabo.
* Add curve25519 and ed25519 fuzzers
* Add import and export of Ed25519 keys
author | Vladislav Grishenko <themiron@users.noreply.github.com> |
---|---|
date | Wed, 11 Mar 2020 21:09:45 +0500 |
parents | 750ec4ec4cbe |
children | df8d8ec1801c |
rev | line source |
---|---|
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
1 /* |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
2 * Dropbear SSH |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
3 * |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
4 * Copyright (c) 2005 Matt Johnston |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
5 * All rights reserved. |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
6 * |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
7 * Permission is hereby granted, free of charge, to any person obtaining a copy |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
8 * of this software and associated documentation files (the "Software"), to deal |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
9 * in the Software without restriction, including without limitation the rights |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
11 * copies of the Software, and to permit persons to whom the Software is |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
12 * furnished to do so, subject to the following conditions: |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
13 * |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
14 * The above copyright notice and this permission notice shall be included in |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
15 * all copies or substantial portions of the Software. |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
16 * |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
23 * SOFTWARE. */ |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
24 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
25 #include "includes.h" |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
26 #include "buffer.h" |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
27 #include "dbutil.h" |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
28 #include "session.h" |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
29 #include "ssh.h" |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
30 #include "runopts.h" |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
31 |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
1122
diff
changeset
|
32 #if DROPBEAR_CLI_INTERACT_AUTH |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
33 |
1104
5806c644469a
Turn get_response()'s return type and prompt argument into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1094
diff
changeset
|
34 static char* get_response(char* prompt) |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
35 { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
36 FILE* tty = NULL; |
1104
5806c644469a
Turn get_response()'s return type and prompt argument into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1094
diff
changeset
|
37 char* response = NULL; |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
38 /* not a password, but a reasonable limit */ |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
39 char buf[DROPBEAR_MAX_CLI_PASS]; |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
40 char* ret = NULL; |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
41 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
42 fprintf(stderr, "%s", prompt); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
43 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
44 tty = fopen(_PATH_TTY, "r"); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
45 if (tty) { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
46 ret = fgets(buf, sizeof(buf), tty); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
47 fclose(tty); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
48 } else { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
49 ret = fgets(buf, sizeof(buf), stdin); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
50 } |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
51 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
52 if (ret == NULL) { |
1104
5806c644469a
Turn get_response()'s return type and prompt argument into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1094
diff
changeset
|
53 response = m_strdup(""); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
54 } else { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
55 unsigned int buflen = strlen(buf); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
56 /* fgets includes newlines */ |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
57 if (buflen > 0 && buf[buflen-1] == '\n') |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
58 buf[buflen-1] = '\0'; |
1104
5806c644469a
Turn get_response()'s return type and prompt argument into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1094
diff
changeset
|
59 response = m_strdup(buf); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
60 } |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
61 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
62 m_burn(buf, sizeof(buf)); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
63 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
64 return response; |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
65 } |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
66 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
67 void recv_msg_userauth_info_request() { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
68 |
1118
506e769ed6d1
Turn name and instruction local variables into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1104
diff
changeset
|
69 char *name = NULL; |
506e769ed6d1
Turn name and instruction local variables into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1104
diff
changeset
|
70 char *instruction = NULL; |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
71 unsigned int num_prompts = 0; |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
72 unsigned int i; |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
73 |
1104
5806c644469a
Turn get_response()'s return type and prompt argument into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1094
diff
changeset
|
74 char *prompt = NULL; |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
75 unsigned int echo = 0; |
1104
5806c644469a
Turn get_response()'s return type and prompt argument into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1094
diff
changeset
|
76 char *response = NULL; |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
77 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
78 TRACE(("enter recv_msg_recv_userauth_info_request")) |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
79 |
488
a24139ba08c8
Print "Login for user@host" for keyboard interactive, since it probably
Matt Johnston <matt@ucc.asn.au>
parents:
339
diff
changeset
|
80 /* Let the user know what password/host they are authing for */ |
a24139ba08c8
Print "Login for user@host" for keyboard interactive, since it probably
Matt Johnston <matt@ucc.asn.au>
parents:
339
diff
changeset
|
81 if (!cli_ses.interact_request_received) { |
a24139ba08c8
Print "Login for user@host" for keyboard interactive, since it probably
Matt Johnston <matt@ucc.asn.au>
parents:
339
diff
changeset
|
82 fprintf(stderr, "Login for %s@%s\n", cli_opts.username, |
a24139ba08c8
Print "Login for user@host" for keyboard interactive, since it probably
Matt Johnston <matt@ucc.asn.au>
parents:
339
diff
changeset
|
83 cli_opts.remotehost); |
a24139ba08c8
Print "Login for user@host" for keyboard interactive, since it probably
Matt Johnston <matt@ucc.asn.au>
parents:
339
diff
changeset
|
84 } |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
85 cli_ses.interact_request_received = 1; |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
86 |
1122
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
87 name = buf_getstring(ses.payload, NULL); |
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
88 instruction = buf_getstring(ses.payload, NULL); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
89 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
90 /* language tag */ |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
91 buf_eatstring(ses.payload); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
92 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
93 num_prompts = buf_getint(ses.payload); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
94 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
95 if (num_prompts >= DROPBEAR_MAX_CLI_INTERACT_PROMPTS) { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
96 dropbear_exit("Too many prompts received for keyboard-interactive"); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
97 } |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
98 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
99 /* we'll build the response as we go */ |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
100 CHECKCLEARTOWRITE(); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
101 buf_putbyte(ses.writepayload, SSH_MSG_USERAUTH_INFO_RESPONSE); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
102 buf_putint(ses.writepayload, num_prompts); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
103 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
104 if (strlen(name) > 0) { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
105 cleantext(name); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
106 fprintf(stderr, "%s", name); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
107 } |
339
31743c9bdf78
BUG: The strings 'name' and 'instruction' are always allocated
Matt Johnston <matt@ucc.asn.au>
parents:
268
diff
changeset
|
108 m_free(name); |
31743c9bdf78
BUG: The strings 'name' and 'instruction' are always allocated
Matt Johnston <matt@ucc.asn.au>
parents:
268
diff
changeset
|
109 |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
110 if (strlen(instruction) > 0) { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
111 cleantext(instruction); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
112 fprintf(stderr, "%s", instruction); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
113 } |
339
31743c9bdf78
BUG: The strings 'name' and 'instruction' are always allocated
Matt Johnston <matt@ucc.asn.au>
parents:
268
diff
changeset
|
114 m_free(instruction); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
115 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
116 for (i = 0; i < num_prompts; i++) { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
117 unsigned int response_len = 0; |
1122
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
118 prompt = buf_getstring(ses.payload, NULL); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
119 cleantext(prompt); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
120 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
121 echo = buf_getbool(ses.payload); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
122 |
250 | 123 if (!echo) { |
1104
5806c644469a
Turn get_response()'s return type and prompt argument into char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1094
diff
changeset
|
124 char* p = getpass_or_cancel(prompt); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
125 response = m_strdup(p); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
126 m_burn(p, strlen(p)); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
127 } else { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
128 response = get_response(prompt); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
129 } |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
130 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
131 response_len = strlen(response); |
1122
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
132 buf_putstring(ses.writepayload, response, response_len); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
133 m_burn(response, response_len); |
613
8cd04e707171
Fix memory leak found by Klocwork
Matt Johnston <matt@ucc.asn.au>
parents:
488
diff
changeset
|
134 m_free(prompt); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
135 m_free(response); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
136 } |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
137 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
138 encrypt_packet(); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
139 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
140 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
141 TRACE(("leave recv_msg_recv_userauth_info_request")) |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
142 } |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
143 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
144 void cli_auth_interactive() { |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
145 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
146 TRACE(("enter cli_auth_interactive")) |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
147 CHECKCLEARTOWRITE(); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
148 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
149 buf_putbyte(ses.writepayload, SSH_MSG_USERAUTH_REQUEST); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
150 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
151 /* username */ |
1122
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
152 buf_putstring(ses.writepayload, cli_opts.username, |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
153 strlen(cli_opts.username)); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
154 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
155 /* service name */ |
1122
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
156 buf_putstring(ses.writepayload, SSH_SERVICE_CONNECTION, |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
157 SSH_SERVICE_CONNECTION_LEN); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
158 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
159 /* method */ |
1122
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
160 buf_putstring(ses.writepayload, AUTH_METHOD_INTERACT, |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
161 AUTH_METHOD_INTERACT_LEN); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
162 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
163 /* empty language tag */ |
1122
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
164 buf_putstring(ses.writepayload, "", 0); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
165 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
166 /* empty submethods */ |
1122
aaf576b27a10
Merge pull request #13 from gazoo74/fix-warnings
Matt Johnston <matt@ucc.asn.au>
parents:
1118
diff
changeset
|
167 buf_putstring(ses.writepayload, "", 0); |
249
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
168 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
169 encrypt_packet(); |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
170 cli_ses.interact_request_received = 0; |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
171 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
172 TRACE(("leave cli_auth_interactive")) |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
173 |
efbaf6b03837
added keyboard-interactive client support
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
174 } |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
1122
diff
changeset
|
175 #endif /* DROPBEAR_CLI_INTERACT_AUTH */ |