1 #ifndef _OPACKET_H
2 /* Written by Markus Friedl. Placed in the public domain.  */
3 
4 /* Map old to new API */
5 void     ssh_packet_start(ncrack_ssh_state *, u_char);
6 void     ssh_packet_put_char(ncrack_ssh_state *, int ch);
7 void     ssh_packet_put_int(ncrack_ssh_state *, u_int value);
8 void     ssh_packet_put_int64(ncrack_ssh_state *, u_int64_t value);
9 void     ssh_packet_put_bignum(ncrack_ssh_state *, BIGNUM * value);
10 void     ssh_packet_put_bignum2(ncrack_ssh_state *, BIGNUM * value);
11 void     ssh_packet_put_ecpoint(ncrack_ssh_state *, const EC_GROUP *, const EC_POINT *);
12 void     ssh_packet_put_string(ncrack_ssh_state *, const void *buf, u_int len);
13 void     ssh_packet_put_cstring(ncrack_ssh_state *, const char *str);
14 void     ssh_packet_put_raw(ncrack_ssh_state *, const void *buf, u_int len);
15 void     ssh_packet_send(ncrack_ssh_state *);
16 
17 u_int	 ssh_packet_get_char(ncrack_ssh_state *);
18 u_int	 ssh_packet_get_int(ncrack_ssh_state *);
19 u_int64_t ssh_packet_get_int64(ncrack_ssh_state *);
20 void     ssh_packet_get_bignum(ncrack_ssh_state *, BIGNUM * value);
21 void     ssh_packet_get_bignum2(ncrack_ssh_state *, BIGNUM * value);
22 void	 ssh_packet_get_ecpoint(ncrack_ssh_state *, const EC_GROUP *, EC_POINT *);
23 void	*ssh_packet_get_string(ncrack_ssh_state *, u_int *length_ptr);
24 char	*ssh_packet_get_cstring(ncrack_ssh_state *, u_int *length_ptr);
25 
26 /* don't allow remaining bytes after the end of the message */
27 #define ssh_packet_check_eom(ssh) \
28 do { \
29 	int _len = ssh_packet_remaining(ssh); \
30 	if (_len > 0) { \
31 		logit("Packet integrity error (%d bytes remaining) at %s:%d", \
32 		    _len ,__FILE__, __LINE__); \
33 		ssh_packet_disconnect(ssh, \
34 		    "Packet integrity error."); \
35 	} \
36 } while (0)
37 
38 /* old API */
39 void	 packet_close(void);
40 u_int	 packet_get_char(void);
41 u_int	 packet_get_int(void);
42 void	 packet_backup_state(void);
43 void	 packet_restore_state(void);
44 void     packet_set_connection(int, int);
45 int	 packet_read_seqnr(u_int32_t *);
46 int	 packet_read_poll_seqnr(u_int32_t *);
47 void	 packet_process_incoming(const char *buf, u_int len);
48 void	 packet_write_wait(void);
49 void	 packet_write_poll(void);
50 void	 packet_read_expect(int expected_type);
51 #define packet_set_timeout(timeout, count) \
52 	ssh_packet_set_timeout(active_state, (timeout), (count))
53 #define packet_connection_is_on_socket() \
54 	ssh_packet_connection_is_on_socket(active_state)
55 #define packet_set_nonblocking() \
56 	ssh_packet_set_nonblocking(active_state)
57 #define packet_get_connection_in() \
58 	ssh_packet_get_connection_in(active_state)
59 #define packet_get_connection_out() \
60 	ssh_packet_get_connection_out(active_state)
61 #define packet_set_protocol_flags(protocol_flags) \
62 	ssh_packet_set_protocol_flags(active_state, (protocol_flags))
63 #define packet_get_protocol_flags() \
64 	ssh_packet_get_protocol_flags(active_state)
65 #define packet_start_compression(level) \
66 	ssh_packet_start_compression(active_state, (level))
67 #define packet_set_encryption_key(key, keylen, number) \
68 	ssh_packet_set_encryption_key(active_state, (key), (keylen), (number))
69 #define packet_start(type) \
70 	ssh_packet_start(active_state, (type))
71 #define packet_put_char(value) \
72 	ssh_packet_put_char(active_state, (value))
73 #define packet_put_int(value) \
74 	ssh_packet_put_int(active_state, (value))
75 #define packet_put_int64(value) \
76 	ssh_packet_put_int64(active_state, (value))
77 #define packet_put_string( buf, len) \
78 	ssh_packet_put_string(active_state, (buf), (len))
79 #define packet_put_cstring(str) \
80 	ssh_packet_put_cstring(active_state, (str))
81 #define packet_put_raw(buf, len) \
82 	ssh_packet_put_raw(active_state, (buf), (len))
83 #define packet_put_bignum(value) \
84 	ssh_packet_put_bignum(active_state, (value))
85 #define packet_put_bignum2(value) \
86 	ssh_packet_put_bignum2(active_state, (value))
87 #define packet_send() \
88 	ssh_packet_send(active_state)
89 #define packet_read() \
90 	ssh_packet_read(active_state)
91 #define packet_get_int64() \
92 	ssh_packet_get_int64(active_state)
93 #define packet_get_bignum(value) \
94 	ssh_packet_get_bignum(active_state, (value))
95 #define packet_get_bignum2(value) \
96 	ssh_packet_get_bignum2(active_state, (value))
97 #define packet_remaining() \
98 	ssh_packet_remaining(active_state)
99 #define packet_get_string(length_ptr) \
100 	ssh_packet_get_string(active_state, (length_ptr))
101 #define packet_get_string_ptr(length_ptr) \
102 	ssh_packet_get_string_ptr(active_state, (length_ptr))
103 #define packet_get_cstring(length_ptr) \
104 	ssh_packet_get_cstring(active_state, (length_ptr))
105 void	packet_send_debug(const char *, ...)
106 	    __attribute__((format(printf, 1, 2)));
107 void	packet_disconnect(const char *, ...)
108 	    __attribute__((format(printf, 1, 2)))
109 	    __attribute__((noreturn));
110 #define packet_have_data_to_write() \
111 	ssh_packet_have_data_to_write(active_state)
112 #define packet_not_very_much_data_to_write() \
113 	ssh_packet_not_very_much_data_to_write(active_state)
114 #define packet_set_interactive(interactive, qos_interactive, qos_bulk) \
115 	ssh_packet_set_interactive(active_state, (interactive), (qos_interactive), (qos_bulk))
116 #define packet_is_interactive() \
117 	ssh_packet_is_interactive(active_state)
118 #define packet_set_maxsize(s) \
119 	ssh_packet_set_maxsize(active_state, (s))
120 #define packet_inc_alive_timeouts() \
121 	ssh_packet_inc_alive_timeouts(active_state)
122 #define packet_set_alive_timeouts(ka) \
123 	ssh_packet_set_alive_timeouts(active_state, (ka))
124 #define packet_get_maxsize() \
125 	ssh_packet_get_maxsize(active_state)
126 #define packet_add_padding(pad) \
127 	sshpkt_add_padding(active_state, (pad))
128 #define packet_send_ignore(nbytes) \
129 	ssh_packet_send_ignore(active_state, (nbytes))
130 #define packet_need_rekeying() \
131 	ssh_packet_need_rekeying(active_state)
132 #define packet_set_server() \
133 	ssh_packet_set_server(active_state)
134 #define packet_set_authenticated() \
135 	ssh_packet_set_authenticated(active_state)
136 #define packet_get_input() \
137 	ssh_packet_get_input(active_state)
138 #define packet_get_output() \
139 	ssh_packet_get_output(active_state)
140 #define packet_set_compress_hooks(ctx, allocfunc, freefunc) \
141 	ssh_packet_set_compress_hooks(active_state, ctx, \
142 	    allocfunc, freefunc);
143 #define packet_check_eom() \
144 	ssh_packet_check_eom(active_state)
145 #define set_newkeys(mode) \
146 	ssh_set_newkeys(active_state, (mode))
147 #define packet_get_state(m) \
148 	ssh_packet_get_state(active_state, m)
149 #define packet_set_state(m) \
150 	ssh_packet_set_state(active_state, m)
151 #if 0
152 #define get_remote_ipaddr() \
153 	ssh_remote_ipaddr(active_state)
154 #endif
155 #define packet_get_raw(lenp) \
156         sshpkt_ptr(active_state, lenp)
157 #define packet_get_ecpoint(c,p) \
158 	ssh_packet_get_ecpoint(active_state, c, p)
159 #define packet_put_ecpoint(c,p) \
160 	ssh_packet_put_ecpoint(active_state, c, p)
161 #define packet_get_rekey_timeout() \
162 	ssh_packet_get_rekey_timeout(active_state)
163 #define packet_set_rekey_limits(x,y) \
164 	ssh_packet_set_rekey_limits(active_state, x, y)
165 #define packet_get_bytes(x,y) \
166 	ssh_packet_get_bytes(active_state, x, y)
167 
168 #endif /* _OPACKET_H */
169