24 #include "libssh/priv.h"
25 #include "libssh/packet.h"
26 #include "libssh/pcap.h"
27 #include "libssh/auth.h"
28 #include "libssh/channels.h"
29 #include "libssh/poll.h"
30 typedef struct ssh_kbdint_struct* ssh_kbdint;
33 enum ssh_session_state_e {
34 SSH_SESSION_STATE_NONE=0,
35 SSH_SESSION_STATE_CONNECTING,
36 SSH_SESSION_STATE_SOCKET_CONNECTED,
37 SSH_SESSION_STATE_BANNER_RECEIVED,
38 SSH_SESSION_STATE_INITIAL_KEX,
39 SSH_SESSION_STATE_KEXINIT_RECEIVED,
41 SSH_SESSION_STATE_AUTHENTICATING,
42 SSH_SESSION_STATE_AUTHENTICATED,
43 SSH_SESSION_STATE_ERROR,
44 SSH_SESSION_STATE_DISCONNECTED
50 DH_STATE_NEWKEYS_SENT,
54 enum ssh_pending_call_e {
55 SSH_PENDING_CALL_NONE = 0,
56 SSH_PENDING_CALL_CONNECT,
57 SSH_PENDING_CALL_AUTH_NONE,
58 SSH_PENDING_CALL_AUTH_PASSWORD
62 #define SSH_SESSION_FLAG_BLOCKING 1
65 struct ssh_common_struct {
66 struct error_struct error;
67 ssh_callbacks callbacks;
72 struct ssh_session_struct {
73 struct ssh_common_struct common;
74 struct ssh_socket_struct *socket;
100 ssh_buffer in_buffer;
102 ssh_buffer out_buffer;
106 enum ssh_pending_call_e pending_call_state;
107 enum ssh_session_state_e session_state;
109 enum ssh_dh_state_e dh_handshake_state;
110 enum ssh_auth_service_state_e auth_service_state;
111 enum ssh_auth_state_e auth_state;
112 enum ssh_channel_request_state_e global_req_state;
113 ssh_string dh_server_signature;
116 ssh_buffer in_hashbuf;
117 ssh_buffer out_hashbuf;
118 struct ssh_crypto_struct *current_crypto;
119 struct ssh_crypto_struct *next_crypto;
121 struct ssh_list *channels;
123 int exec_channel_opened;
128 struct ssh_kbdint_struct *kbdint;
131 ssh_private_key rsa_key;
132 ssh_private_key dsa_key;
136 struct ssh_list *ssh_message_list;
137 int (*ssh_message_callback)(
struct ssh_session_struct *session, ssh_message msg,
void *userdata);
138 void *ssh_message_callback_data;
140 void (*ssh_connection_callback)(
struct ssh_session_struct *session);
141 struct ssh_packet_callbacks_struct default_packet_callbacks;
142 struct ssh_list *packet_callbacks;
144 ssh_poll_ctx default_poll_ctx;
147 ssh_pcap_context pcap_ctx;
153 struct ssh_list *identity;
156 char *wanted_methods[10];
157 char compressionlevel;
158 unsigned long timeout;
159 unsigned long timeout_usec;
164 int StrictHostKeyChecking;
173 typedef int (*ssh_termination_function)(
void *user);
174 int ssh_handle_packets(ssh_session session,
int timeout);
175 int ssh_handle_packets_termination(ssh_session session,
int timeout,
176 ssh_termination_function fct,
void *user);
177 void ssh_socket_exception_callback(
int code,
int errno_code,
void *user);