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
64 struct ssh_session_struct {
65 struct error_struct error;
66 struct ssh_socket_struct *socket;
94 ssh_buffer out_buffer;
98 enum ssh_pending_call_e pending_call_state;
99 enum ssh_session_state_e session_state;
101 enum ssh_dh_state_e dh_handshake_state;
102 enum ssh_auth_service_state_e auth_service_state;
103 enum ssh_auth_state_e auth_state;
104 enum ssh_channel_request_state_e global_req_state;
105 ssh_string dh_server_signature;
108 ssh_buffer in_hashbuf;
109 ssh_buffer out_hashbuf;
110 struct ssh_crypto_struct *current_crypto;
111 struct ssh_crypto_struct *next_crypto;
113 struct ssh_list *channels;
115 int exec_channel_opened;
120 struct ssh_kbdint_struct *kbdint;
123 ssh_private_key rsa_key;
124 ssh_private_key dsa_key;
128 struct ssh_list *ssh_message_list;
129 int (*ssh_message_callback)(
struct ssh_session_struct *session, ssh_message msg,
void *userdata);
130 void *ssh_message_callback_data;
134 void (*ssh_connection_callback)(
struct ssh_session_struct *session);
135 ssh_callbacks callbacks;
136 struct ssh_packet_callbacks_struct default_packet_callbacks;
137 struct ssh_list *packet_callbacks;
139 ssh_poll_ctx default_poll_ctx;
142 ssh_pcap_context pcap_ctx;
148 struct ssh_list *identity;
151 char *wanted_methods[10];
152 char compressionlevel;
153 unsigned long timeout;
154 unsigned long timeout_usec;
159 int StrictHostKeyChecking;
168 typedef int (*ssh_termination_function)(
void *user);
169 int ssh_handle_packets(ssh_session session,
int timeout);
170 int ssh_handle_packets_termination(ssh_session session,
int timeout,
171 ssh_termination_function fct,
void *user);
172 void ssh_socket_exception_callback(
int code,
int errno_code,
void *user);