1 /* $OpenBSD: opacket.c,v 1.7 2017/10/20 01:56:39 djm Exp $ */
2 /* Written by Markus Friedl. Placed in the public domain. */
10 struct ssh *active_state, *backup_state;
12 /* Map old to new API */
15 ssh_packet_start(struct ssh *ssh, u_char type)
19 if ((r = sshpkt_start(ssh, type)) != 0)
20 fatal("%s: %s", __func__, ssh_err(r));
24 ssh_packet_put_char(struct ssh *ssh, int value)
29 if ((r = sshpkt_put_u8(ssh, ch)) != 0)
30 fatal("%s: %s", __func__, ssh_err(r));
34 ssh_packet_put_int(struct ssh *ssh, u_int value)
38 if ((r = sshpkt_put_u32(ssh, value)) != 0)
39 fatal("%s: %s", __func__, ssh_err(r));
43 ssh_packet_put_int64(struct ssh *ssh, u_int64_t value)
47 if ((r = sshpkt_put_u64(ssh, value)) != 0)
48 fatal("%s: %s", __func__, ssh_err(r));
52 ssh_packet_put_string(struct ssh *ssh, const void *buf, u_int len)
56 if ((r = sshpkt_put_string(ssh, buf, len)) != 0)
57 fatal("%s: %s", __func__, ssh_err(r));
61 ssh_packet_put_cstring(struct ssh *ssh, const char *str)
65 if ((r = sshpkt_put_cstring(ssh, str)) != 0)
66 fatal("%s: %s", __func__, ssh_err(r));
70 ssh_packet_put_raw(struct ssh *ssh, const void *buf, u_int len)
74 if ((r = sshpkt_put(ssh, buf, len)) != 0)
75 fatal("%s: %s", __func__, ssh_err(r));
81 ssh_packet_put_bignum2(struct ssh *ssh, BIGNUM * value)
85 if ((r = sshpkt_put_bignum2(ssh, value)) != 0)
86 fatal("%s: %s", __func__, ssh_err(r));
89 # ifdef OPENSSL_HAS_ECC
91 ssh_packet_put_ecpoint(struct ssh *ssh, const EC_GROUP *curve,
92 const EC_POINT *point)
96 if ((r = sshpkt_put_ec(ssh, point, curve)) != 0)
97 fatal("%s: %s", __func__, ssh_err(r));
100 #endif /* WITH_OPENSSL */
103 ssh_packet_send(struct ssh *ssh)
107 if ((r = sshpkt_send(ssh)) != 0)
108 fatal("%s: %s", __func__, ssh_err(r));
112 ssh_packet_get_char(struct ssh *ssh)
117 if ((r = sshpkt_get_u8(ssh, &ch)) != 0)
118 fatal("%s: %s", __func__, ssh_err(r));
123 ssh_packet_get_int(struct ssh *ssh)
128 if ((r = sshpkt_get_u32(ssh, &val)) != 0)
129 fatal("%s: %s", __func__, ssh_err(r));
134 ssh_packet_get_int64(struct ssh *ssh)
139 if ((r = sshpkt_get_u64(ssh, &val)) != 0)
140 fatal("%s: %s", __func__, ssh_err(r));
147 ssh_packet_get_bignum2(struct ssh *ssh, BIGNUM * value)
151 if ((r = sshpkt_get_bignum2(ssh, value)) != 0)
152 fatal("%s: %s", __func__, ssh_err(r));
155 # ifdef OPENSSL_HAS_ECC
157 ssh_packet_get_ecpoint(struct ssh *ssh, const EC_GROUP *curve, EC_POINT *point)
161 if ((r = sshpkt_get_ec(ssh, point, curve)) != 0)
162 fatal("%s: %s", __func__, ssh_err(r));
165 #endif /* WITH_OPENSSL */
168 ssh_packet_get_string(struct ssh *ssh, u_int *length_ptr)
174 if ((r = sshpkt_get_string(ssh, &val, &len)) != 0)
175 fatal("%s: %s", __func__, ssh_err(r));
176 if (length_ptr != NULL)
177 *length_ptr = (u_int)len;
182 ssh_packet_get_string_ptr(struct ssh *ssh, u_int *length_ptr)
188 if ((r = sshpkt_get_string_direct(ssh, &val, &len)) != 0)
189 fatal("%s: %s", __func__, ssh_err(r));
190 if (length_ptr != NULL)
191 *length_ptr = (u_int)len;
196 ssh_packet_get_cstring(struct ssh *ssh, u_int *length_ptr)
202 if ((r = sshpkt_get_cstring(ssh, &val, &len)) != 0)
203 fatal("%s: %s", __func__, ssh_err(r));
204 if (length_ptr != NULL)
205 *length_ptr = (u_int)len;
209 /* Old API, that had to be reimplemented */
212 packet_set_connection(int fd_in, int fd_out)
214 active_state = ssh_packet_set_connection(active_state, fd_in, fd_out);
215 if (active_state == NULL)
216 fatal("%s: ssh_packet_set_connection failed", __func__);
220 packet_get_char(void)
222 return (ssh_packet_get_char(active_state));
228 return (ssh_packet_get_int(active_state));
232 packet_read_seqnr(u_int32_t *seqnr)
237 if ((r = ssh_packet_read_seqnr(active_state, &type, seqnr)) != 0)
238 sshpkt_fatal(active_state, __func__, r);
243 packet_read_poll_seqnr(u_int32_t *seqnr)
248 if ((r = ssh_packet_read_poll_seqnr(active_state, &type, seqnr)))
249 sshpkt_fatal(active_state, __func__, r);
256 ssh_packet_close(active_state);
261 packet_process_incoming(const char *buf, u_int len)
265 if ((r = ssh_packet_process_incoming(active_state, buf, len)) != 0)
266 sshpkt_fatal(active_state, __func__, r);
270 packet_write_wait(void)
274 if ((r = ssh_packet_write_wait(active_state)) != 0)
275 sshpkt_fatal(active_state, __func__, r);
279 packet_write_poll(void)
283 if ((r = ssh_packet_write_poll(active_state)) != 0)
284 sshpkt_fatal(active_state, __func__, r);
288 packet_read_expect(int expected_type)
292 if ((r = ssh_packet_read_expect(active_state, expected_type)) != 0)
293 sshpkt_fatal(active_state, __func__, r);
297 packet_disconnect(const char *fmt, ...)
303 vsnprintf(buf, sizeof(buf), fmt, args);
305 ssh_packet_disconnect(active_state, "%s", buf);
309 packet_send_debug(const char *fmt, ...)
315 vsnprintf(buf, sizeof(buf), fmt, args);
317 ssh_packet_send_debug(active_state, "%s", buf);