Annotation of src/usr.bin/ssh/opacket.c, Revision 1.7
1.7 ! djm 1: /* $OpenBSD$ */
1.1 markus 2: /* Written by Markus Friedl. Placed in the public domain. */
3:
4: #include "ssherr.h"
5: #include "packet.h"
6: #include "log.h"
7:
8: struct ssh *active_state, *backup_state;
9:
10: /* Map old to new API */
11:
12: void
13: ssh_packet_start(struct ssh *ssh, u_char type)
14: {
15: int r;
16:
17: if ((r = sshpkt_start(ssh, type)) != 0)
18: fatal("%s: %s", __func__, ssh_err(r));
19: }
20:
21: void
22: ssh_packet_put_char(struct ssh *ssh, int value)
23: {
24: u_char ch = value;
25: int r;
26:
27: if ((r = sshpkt_put_u8(ssh, ch)) != 0)
28: fatal("%s: %s", __func__, ssh_err(r));
29: }
30:
31: void
32: ssh_packet_put_int(struct ssh *ssh, u_int value)
33: {
34: int r;
35:
36: if ((r = sshpkt_put_u32(ssh, value)) != 0)
37: fatal("%s: %s", __func__, ssh_err(r));
38: }
39:
40: void
41: ssh_packet_put_int64(struct ssh *ssh, u_int64_t value)
42: {
43: int r;
44:
45: if ((r = sshpkt_put_u64(ssh, value)) != 0)
46: fatal("%s: %s", __func__, ssh_err(r));
47: }
48:
49: void
50: ssh_packet_put_string(struct ssh *ssh, const void *buf, u_int len)
51: {
52: int r;
53:
54: if ((r = sshpkt_put_string(ssh, buf, len)) != 0)
55: fatal("%s: %s", __func__, ssh_err(r));
56: }
57:
58: void
59: ssh_packet_put_cstring(struct ssh *ssh, const char *str)
60: {
61: int r;
62:
63: if ((r = sshpkt_put_cstring(ssh, str)) != 0)
64: fatal("%s: %s", __func__, ssh_err(r));
65: }
66:
67: void
68: ssh_packet_put_raw(struct ssh *ssh, const void *buf, u_int len)
69: {
70: int r;
71:
72: if ((r = sshpkt_put(ssh, buf, len)) != 0)
73: fatal("%s: %s", __func__, ssh_err(r));
74: }
75:
76:
1.4 djm 77: #ifdef WITH_OPENSSL
1.1 markus 78: void
79: ssh_packet_put_bignum2(struct ssh *ssh, BIGNUM * value)
80: {
81: int r;
82:
83: if ((r = sshpkt_put_bignum2(ssh, value)) != 0)
84: fatal("%s: %s", __func__, ssh_err(r));
85: }
86:
87: void
88: ssh_packet_put_ecpoint(struct ssh *ssh, const EC_GROUP *curve,
89: const EC_POINT *point)
90: {
91: int r;
92:
93: if ((r = sshpkt_put_ec(ssh, point, curve)) != 0)
94: fatal("%s: %s", __func__, ssh_err(r));
95: }
96: #endif /* WITH_OPENSSL */
97:
98: void
99: ssh_packet_send(struct ssh *ssh)
100: {
101: int r;
102:
103: if ((r = sshpkt_send(ssh)) != 0)
104: fatal("%s: %s", __func__, ssh_err(r));
105: }
106:
107: u_int
108: ssh_packet_get_char(struct ssh *ssh)
109: {
110: u_char ch;
111: int r;
112:
113: if ((r = sshpkt_get_u8(ssh, &ch)) != 0)
114: fatal("%s: %s", __func__, ssh_err(r));
115: return ch;
116: }
117:
118: u_int
119: ssh_packet_get_int(struct ssh *ssh)
120: {
121: u_int val;
122: int r;
123:
124: if ((r = sshpkt_get_u32(ssh, &val)) != 0)
125: fatal("%s: %s", __func__, ssh_err(r));
126: return val;
127: }
128:
129: u_int64_t
130: ssh_packet_get_int64(struct ssh *ssh)
131: {
132: u_int64_t val;
133: int r;
134:
135: if ((r = sshpkt_get_u64(ssh, &val)) != 0)
136: fatal("%s: %s", __func__, ssh_err(r));
137: return val;
138: }
139:
140:
1.4 djm 141: #ifdef WITH_OPENSSL
1.1 markus 142: void
143: ssh_packet_get_bignum2(struct ssh *ssh, BIGNUM * value)
144: {
145: int r;
146:
147: if ((r = sshpkt_get_bignum2(ssh, value)) != 0)
148: fatal("%s: %s", __func__, ssh_err(r));
149: }
150:
151: void
152: ssh_packet_get_ecpoint(struct ssh *ssh, const EC_GROUP *curve, EC_POINT *point)
153: {
154: int r;
155:
156: if ((r = sshpkt_get_ec(ssh, point, curve)) != 0)
157: fatal("%s: %s", __func__, ssh_err(r));
158: }
159: #endif /* WITH_OPENSSL */
160:
161: void *
162: ssh_packet_get_string(struct ssh *ssh, u_int *length_ptr)
163: {
164: int r;
165: size_t len;
166: u_char *val;
167:
168: if ((r = sshpkt_get_string(ssh, &val, &len)) != 0)
169: fatal("%s: %s", __func__, ssh_err(r));
170: if (length_ptr != NULL)
171: *length_ptr = (u_int)len;
172: return val;
173: }
174:
175: const void *
176: ssh_packet_get_string_ptr(struct ssh *ssh, u_int *length_ptr)
177: {
178: int r;
179: size_t len;
180: const u_char *val;
181:
182: if ((r = sshpkt_get_string_direct(ssh, &val, &len)) != 0)
183: fatal("%s: %s", __func__, ssh_err(r));
184: if (length_ptr != NULL)
185: *length_ptr = (u_int)len;
186: return val;
187: }
188:
189: char *
190: ssh_packet_get_cstring(struct ssh *ssh, u_int *length_ptr)
191: {
192: int r;
193: size_t len;
194: char *val;
195:
196: if ((r = sshpkt_get_cstring(ssh, &val, &len)) != 0)
197: fatal("%s: %s", __func__, ssh_err(r));
198: if (length_ptr != NULL)
199: *length_ptr = (u_int)len;
200: return val;
201: }
202:
203: /* Old API, that had to be reimplemented */
204:
205: void
206: packet_set_connection(int fd_in, int fd_out)
207: {
208: active_state = ssh_packet_set_connection(active_state, fd_in, fd_out);
1.3 djm 209: if (active_state == NULL)
210: fatal("%s: ssh_packet_set_connection failed", __func__);
1.1 markus 211: }
212:
213: u_int
214: packet_get_char(void)
215: {
216: return (ssh_packet_get_char(active_state));
217: }
218:
219: u_int
220: packet_get_int(void)
221: {
222: return (ssh_packet_get_int(active_state));
223: }
224:
225: int
226: packet_read_seqnr(u_int32_t *seqnr)
227: {
228: u_char type;
229: int r;
230:
1.3 djm 231: if ((r = ssh_packet_read_seqnr(active_state, &type, seqnr)) != 0)
232: sshpkt_fatal(active_state, __func__, r);
1.1 markus 233: return type;
234: }
235:
236: int
237: packet_read_poll_seqnr(u_int32_t *seqnr)
238: {
239: u_char type;
240: int r;
241:
242: if ((r = ssh_packet_read_poll_seqnr(active_state, &type, seqnr)))
1.3 djm 243: sshpkt_fatal(active_state, __func__, r);
1.1 markus 244: return type;
245: }
246:
247: void
248: packet_close(void)
249: {
250: ssh_packet_close(active_state);
251: active_state = NULL;
1.2 djm 252: }
253:
254: void
255: packet_process_incoming(const char *buf, u_int len)
256: {
257: int r;
258:
259: if ((r = ssh_packet_process_incoming(active_state, buf, len)) != 0)
1.3 djm 260: sshpkt_fatal(active_state, __func__, r);
261: }
262:
263: void
264: packet_write_wait(void)
265: {
266: int r;
267:
268: if ((r = ssh_packet_write_wait(active_state)) != 0)
269: sshpkt_fatal(active_state, __func__, r);
270: }
271:
272: void
273: packet_write_poll(void)
274: {
275: int r;
276:
277: if ((r = ssh_packet_write_poll(active_state)) != 0)
278: sshpkt_fatal(active_state, __func__, r);
279: }
280:
281: void
282: packet_read_expect(int expected_type)
283: {
284: int r;
285:
286: if ((r = ssh_packet_read_expect(active_state, expected_type)) != 0)
287: sshpkt_fatal(active_state, __func__, r);
1.1 markus 288: }