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. */
12 struct ssh *active_state, *backup_state;
14 /* Map old to new API */
17 ssh_packet_start(struct ssh *ssh, u_char type)
21 if ((r = sshpkt_start(ssh, type)) != 0)
22 fatal("%s: %s", __func__, ssh_err(r));
26 ssh_packet_put_char(struct ssh *ssh, int value)
31 if ((r = sshpkt_put_u8(ssh, ch)) != 0)
32 fatal("%s: %s", __func__, ssh_err(r));
36 ssh_packet_put_int(struct ssh *ssh, u_int value)
40 if ((r = sshpkt_put_u32(ssh, value)) != 0)
41 fatal("%s: %s", __func__, ssh_err(r));
45 ssh_packet_put_int64(struct ssh *ssh, u_int64_t value)
49 if ((r = sshpkt_put_u64(ssh, value)) != 0)
50 fatal("%s: %s", __func__, ssh_err(r));
54 ssh_packet_put_string(struct ssh *ssh, const void *buf, u_int len)
58 if ((r = sshpkt_put_string(ssh, buf, len)) != 0)
59 fatal("%s: %s", __func__, ssh_err(r));
63 ssh_packet_put_cstring(struct ssh *ssh, const char *str)
67 if ((r = sshpkt_put_cstring(ssh, str)) != 0)
68 fatal("%s: %s", __func__, ssh_err(r));
72 ssh_packet_put_raw(struct ssh *ssh, const void *buf, u_int len)
76 if ((r = sshpkt_put(ssh, buf, len)) != 0)
77 fatal("%s: %s", __func__, ssh_err(r));
83 ssh_packet_put_bignum2(struct ssh *ssh, BIGNUM * value)
87 if ((r = sshpkt_put_bignum2(ssh, value)) != 0)
88 fatal("%s: %s", __func__, ssh_err(r));
91 # ifdef OPENSSL_HAS_ECC
93 ssh_packet_put_ecpoint(struct ssh *ssh, const EC_GROUP *curve,
94 const EC_POINT *point)
98 if ((r = sshpkt_put_ec(ssh, point, curve)) != 0)
99 fatal("%s: %s", __func__, ssh_err(r));
102 #endif /* WITH_OPENSSL */
105 ssh_packet_send(struct ssh *ssh)
109 if ((r = sshpkt_send(ssh)) != 0)
110 fatal("%s: %s", __func__, ssh_err(r));
114 ssh_packet_get_char(struct ssh *ssh)
119 if ((r = sshpkt_get_u8(ssh, &ch)) != 0)
120 fatal("%s: %s", __func__, ssh_err(r));
125 ssh_packet_get_int(struct ssh *ssh)
130 if ((r = sshpkt_get_u32(ssh, &val)) != 0)
131 fatal("%s: %s", __func__, ssh_err(r));
136 ssh_packet_get_int64(struct ssh *ssh)
141 if ((r = sshpkt_get_u64(ssh, &val)) != 0)
142 fatal("%s: %s", __func__, ssh_err(r));
149 ssh_packet_get_bignum2(struct ssh *ssh, BIGNUM * value)
153 if ((r = sshpkt_get_bignum2(ssh, value)) != 0)
154 fatal("%s: %s", __func__, ssh_err(r));
157 # ifdef OPENSSL_HAS_ECC
159 ssh_packet_get_ecpoint(struct ssh *ssh, const EC_GROUP *curve, EC_POINT *point)
163 if ((r = sshpkt_get_ec(ssh, point, curve)) != 0)
164 fatal("%s: %s", __func__, ssh_err(r));
167 #endif /* WITH_OPENSSL */
170 ssh_packet_get_string(struct ssh *ssh, u_int *length_ptr)
176 if ((r = sshpkt_get_string(ssh, &val, &len)) != 0)
177 fatal("%s: %s", __func__, ssh_err(r));
178 if (length_ptr != NULL)
179 *length_ptr = (u_int)len;
184 ssh_packet_get_string_ptr(struct ssh *ssh, u_int *length_ptr)
190 if ((r = sshpkt_get_string_direct(ssh, &val, &len)) != 0)
191 fatal("%s: %s", __func__, ssh_err(r));
192 if (length_ptr != NULL)
193 *length_ptr = (u_int)len;
198 ssh_packet_get_cstring(struct ssh *ssh, u_int *length_ptr)
204 if ((r = sshpkt_get_cstring(ssh, &val, &len)) != 0)
205 fatal("%s: %s", __func__, ssh_err(r));
206 if (length_ptr != NULL)
207 *length_ptr = (u_int)len;
211 /* Old API, that had to be reimplemented */
214 packet_set_connection(int fd_in, int fd_out)
216 active_state = ssh_packet_set_connection(active_state, fd_in, fd_out);
217 if (active_state == NULL)
218 fatal("%s: ssh_packet_set_connection failed", __func__);
222 packet_get_char(void)
224 return (ssh_packet_get_char(active_state));
230 return (ssh_packet_get_int(active_state));
234 packet_read_seqnr(u_int32_t *seqnr)
239 if ((r = ssh_packet_read_seqnr(active_state, &type, seqnr)) != 0)
240 sshpkt_fatal(active_state, __func__, r);
245 packet_read_poll_seqnr(u_int32_t *seqnr)
250 if ((r = ssh_packet_read_poll_seqnr(active_state, &type, seqnr)))
251 sshpkt_fatal(active_state, __func__, r);
258 ssh_packet_close(active_state);
263 packet_process_incoming(const char *buf, u_int len)
267 if ((r = ssh_packet_process_incoming(active_state, buf, len)) != 0)
268 sshpkt_fatal(active_state, __func__, r);
272 packet_write_wait(void)
276 if ((r = ssh_packet_write_wait(active_state)) != 0)
277 sshpkt_fatal(active_state, __func__, r);
281 packet_write_poll(void)
285 if ((r = ssh_packet_write_poll(active_state)) != 0)
286 sshpkt_fatal(active_state, __func__, r);
290 packet_read_expect(int expected_type)
294 if ((r = ssh_packet_read_expect(active_state, expected_type)) != 0)
295 sshpkt_fatal(active_state, __func__, r);
299 packet_disconnect(const char *fmt, ...)
305 vsnprintf(buf, sizeof(buf), fmt, args);
307 ssh_packet_disconnect(active_state, "%s", buf);
311 packet_send_debug(const char *fmt, ...)
317 vsnprintf(buf, sizeof(buf), fmt, args);
319 ssh_packet_send_debug(active_state, "%s", buf);