25#ifndef _SSH_CALLBACK_H
26#define _SSH_CALLBACK_H
28#include <libssh/libssh.h>
50typedef void (*ssh_callback_int) (
int code,
void *user);
60typedef size_t (*ssh_callback_data) (
const void *data,
size_t len,
void *user);
62typedef void (*ssh_callback_int_int) (
int code,
int errno_code,
void *user);
64typedef int (*ssh_message_callback) (ssh_session, ssh_message message,
void *user);
65typedef int (*ssh_channel_callback_int) (ssh_channel channel,
int code,
void *user);
66typedef int (*ssh_channel_callback_data) (ssh_channel channel,
int code,
void *data,
size_t len,
void *user);
76 const char *message,
void *userdata);
114 ssh_message message,
void *userdata);
139 const char * originator_address,
int originator_port,
void *userdata);
169 const char *destination_address,
int destination_port,
170 const char *originator_address,
int originator_port,
277 char signature_state,
void *userdata);
323typedef ssh_string (*ssh_gssapi_select_oid_callback) (ssh_session session,
const char *user,
324 int n_oid, ssh_string *oids,
void *userdata);
338typedef int (*ssh_gssapi_accept_sec_ctx_callback) (ssh_session session,
339 ssh_string input_token, ssh_string *output_token,
void *userdata);
352typedef int (*ssh_gssapi_verify_mic_callback) (ssh_session session,
353 ssh_string mic,
void *mic_buffer,
size_t mic_buffer_size,
void *userdata);
372 const char *destination_address,
373 int destination_port,
374 const char *originator_address,
497#define SSH_SOCKET_FLOW_WRITEWILLBLOCK 1
498#define SSH_SOCKET_FLOW_WRITEWONTBLOCK 2
500#define SSH_SOCKET_EXCEPTION_EOF 1
501#define SSH_SOCKET_EXCEPTION_ERROR 2
503#define SSH_SOCKET_CONNECTED_OK 1
504#define SSH_SOCKET_CONNECTED_ERROR 2
505#define SSH_SOCKET_CONNECTED_TIMEOUT 3
514#define ssh_callbacks_init(p) do {\
515 (p)->size=sizeof(*(p)); \
527#define ssh_callbacks_exists(p,c) (\
528 (p != NULL) && ( (char *)&((p)-> c) < (char *)(p) + (p)->size ) && \
548#define ssh_callbacks_execute_list(list, cbtype, c, ...) \
550 struct ssh_iterator *i = ssh_list_get_iterator(list); \
553 cb = ssh_iterator_value(cbtype, i); \
554 if (ssh_callbacks_exists(cb, c)) \
555 cb-> c (__VA_ARGS__, cb->userdata); \
580#define ssh_callbacks_iterate(_cb_list, _cb_type, _cb_name) \
582 struct ssh_iterator *_cb_i = ssh_list_get_iterator(_cb_list); \
584 for (; _cb_i != NULL; _cb_i = _cb_i->next) { \
585 _cb = ssh_iterator_value(_cb_type, _cb_i); \
586 if (ssh_callbacks_exists(_cb, _cb_name))
588#define ssh_callbacks_iterate_exec(_cb_name, ...) \
589 _cb->_cb_name(__VA_ARGS__, _cb->userdata)
591#define ssh_callbacks_iterate_end() \
611#define SSH_PACKET_USED 1
614#define SSH_PACKET_NOT_USED 2
624#define SSH_PACKET_CALLBACK(name) \
625 int name (ssh_session session, uint8_t type, ssh_buffer packet, void *user)
627struct ssh_packet_callbacks_struct {
640typedef struct ssh_packet_callbacks_struct *ssh_packet_callbacks;
764 int width,
int height,
765 int pxwidth,
int pwheight,
805 int single_connection,
806 const char *auth_protocol,
807 const char *auth_cookie,
808 uint32_t screen_number,
824 int width,
int height,
825 int pxwidth,
int pwheight,
856 const char *env_name,
857 const char *env_value,
870 const char *subsystem,
914struct ssh_channel_callbacks_struct {
991typedef struct ssh_channel_callbacks_struct *ssh_channel_callbacks;
1021 ssh_channel_callbacks cb);
1040 ssh_channel_callbacks cb);
1055 ssh_channel_callbacks cb);
1063typedef int (*ssh_thread_callback) (
void **lock);
1065typedef unsigned long (*ssh_thread_id_callback) (void);
1066struct ssh_threads_callbacks_struct {
1068 ssh_thread_callback mutex_init;
1069 ssh_thread_callback mutex_destroy;
1070 ssh_thread_callback mutex_lock;
1071 ssh_thread_callback mutex_unlock;
1072 ssh_thread_id_callback thread_id;
1151typedef int (*ssh_jump_before_connection_callback)(ssh_session session,
1162typedef int (*ssh_jump_verify_knownhost_callback)(ssh_session session,
1172typedef int (*ssh_jump_authenticate_callback)(ssh_session session,
1177 ssh_jump_before_connection_callback before_connection;
1178 ssh_jump_verify_knownhost_callback verify_knownhost;
1179 ssh_jump_authenticate_callback authenticate;
1194#define LIBSSH_SK_API_VERSION_MAJOR 0x000a0000
1217typedef uint32_t (*sk_api_version_callback)(void);
1238typedef int (*sk_enroll_callback)(uint32_t alg,
1239 const uint8_t *challenge,
1240 size_t challenge_len,
1241 const char *application,
1268typedef int (*sk_sign_callback)(uint32_t alg,
1269 const uint8_t *data,
1271 const char *application,
1295typedef int (*sk_load_resident_keys_callback)(
1299 size_t *num_keys_found);
int(* ssh_auth_callback)(const char *prompt, char *buf, size_t len, int echo, int verify, void *userdata)
SSH authentication callback for password and publickey auth.
Definition libssh.h:713
void(* ssh_channel_request_resp_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH channel request response callback. Called when a response to the pending request is received.
Definition callbacks.h:910
int(* ssh_channel_pty_request_callback)(ssh_session session, ssh_channel channel, const char *term, int width, int height, int pxwidth, int pwheight, void *userdata)
SSH channel PTY request from a client.
Definition callbacks.h:761
LIBSSH_API int ssh_set_callbacks(ssh_session session, ssh_callbacks cb)
Set the session callback functions.
Definition callbacks.c:56
LIBSSH_API int ssh_add_channel_callbacks(ssh_channel channel, ssh_channel_callbacks cb)
Add channel callback functions.
Definition callbacks.c:118
int(* ssh_channel_pty_window_change_callback)(ssh_session session, ssh_channel channel, int width, int height, int pxwidth, int pwheight, void *userdata)
SSH channel PTY windows change (terminal size) from a client.
Definition callbacks.h:822
int(* ssh_channel_exec_request_callback)(ssh_session session, ssh_channel channel, const char *command, void *userdata)
SSH channel Exec request from a client.
Definition callbacks.h:837
void(* ssh_channel_x11_req_callback)(ssh_session session, ssh_channel channel, int single_connection, const char *auth_protocol, const char *auth_cookie, uint32_t screen_number, void *userdata)
SSH X11 request from the client. This request is sent by a client when X11 forwarding is requested(an...
Definition callbacks.h:803
int(* ssh_channel_shell_request_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH channel Shell request from a client.
Definition callbacks.h:776
int(* ssh_channel_data_callback)(ssh_session session, ssh_channel channel, void *data, uint32_t len, int is_stderr, void *userdata)
SSH channel data callback. Called when data is available on a channel.
Definition callbacks.h:679
void(* ssh_channel_eof_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH channel eof callback. Called when a channel receives EOF.
Definition callbacks.h:692
void(* ssh_channel_close_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH channel close callback. Called when a channel is closed by remote peer.
Definition callbacks.h:702
void(* ssh_channel_signal_callback)(ssh_session session, ssh_channel channel, const char *signal, void *userdata)
SSH channel signal callback. Called when a channel has received a signal.
Definition callbacks.h:713
int(* ssh_auth_pubkey_callback)(ssh_session session, const char *user, struct ssh_key_struct *pubkey, char signature_state, void *userdata)
SSH authentication callback.
Definition callbacks.h:276
int(* ssh_packet_callback)(ssh_session session, uint8_t type, ssh_buffer packet, void *user)
Prototype for a packet callback, to be called when a new packet arrives.
Definition callbacks.h:607
int(* ssh_auth_kbdint_callback)(ssh_message message, ssh_session session, void *userdata)
SSH authentication callback. Tries to authenticates user with the "keyboard-interactive" method.
Definition callbacks.h:289
void(* ssh_channel_exit_status_callback)(ssh_session session, ssh_channel channel, int exit_status, void *userdata)
SSH channel exit status callback. Called when a channel has received an exit status.
Definition callbacks.h:725
ssh_channel(* ssh_channel_open_request_x11_callback)(ssh_session session, const char *originator_address, int originator_port, void *userdata)
Handles an SSH new channel open X11 request. This happens when the server sends back an X11 connectio...
Definition callbacks.h:138
ssh_channel(* ssh_channel_open_request_direct_tcpip_callback)(ssh_session session, const char *destination_address, int destination_port, const char *originator_address, int originator_port, void *userdata)
Handles an SSH new channel open "direct-tcpip" request. This happens when the client forwards an inco...
Definition callbacks.h:370
int(* ssh_auth_none_callback)(ssh_session session, const char *user, void *userdata)
SSH authentication callback. Tries to authenticates user with the "none" method which is anonymous or...
Definition callbacks.h:242
void(* ssh_channel_open_resp_callback)(ssh_session session, ssh_channel channel, bool is_success, void *userdata)
SSH channel open callback. Called when a channel open succeeds or fails.
Definition callbacks.h:899
void(* ssh_log_callback)(ssh_session session, int priority, const char *message, void *userdata)
SSH log callback. All logging messages will go through this callback.
Definition callbacks.h:75
int(* ssh_service_request_callback)(ssh_session session, const char *service, void *userdata)
Handles an SSH service request.
Definition callbacks.h:299
ssh_channel(* ssh_channel_open_request_forwarded_tcpip_callback)(ssh_session session, const char *destination_address, int destination_port, const char *originator_address, int originator_port, void *userdata)
Handles an SSH new channel open "forwarded-tcpip" request. This happens when the server forwards an i...
Definition callbacks.h:168
LIBSSH_API int ssh_set_server_callbacks(ssh_session session, ssh_server_callbacks cb)
Set the session server callback functions.
Definition callbacks.c:141
ssh_channel(* ssh_channel_open_request_auth_agent_callback)(ssh_session session, void *userdata)
Handles an SSH new channel open "auth-agent" request. This happens when the server sends back an "aut...
Definition callbacks.h:150
int(* ssh_channel_write_wontblock_callback)(ssh_session session, ssh_channel channel, uint32_t bytes, void *userdata)
SSH channel write will not block (flow control).
Definition callbacks.h:887
int(* ssh_auth_gssapi_mic_callback)(ssh_session session, const char *user, const char *principal, void *userdata)
SSH authentication callback. Tries to authenticates user with the "gssapi-with-mic" method.
Definition callbacks.h:259
void(* ssh_logging_callback)(int priority, const char *function, const char *buffer, void *userdata)
SSH log callback.
Definition callbacks.h:91
void(* ssh_status_callback)(ssh_session session, float status, void *userdata)
SSH Connection status callback.
Definition callbacks.h:103
ssh_channel(* ssh_channel_open_request_session_callback)(ssh_session session, void *userdata)
Handles an SSH new channel open session request.
Definition callbacks.h:309
void(* ssh_channel_exit_signal_callback)(ssh_session session, ssh_channel channel, const char *signal, int core, const char *errmsg, const char *lang, void *userdata)
SSH channel exit signal callback. Called when a channel has received an exit signal.
Definition callbacks.h:740
LIBSSH_API int ssh_set_channel_callbacks(ssh_channel channel, ssh_channel_callbacks cb)
Set the channel callback functions.
Definition callbacks.c:113
int(* ssh_auth_password_callback)(ssh_session session, const char *user, const char *password, void *userdata)
SSH authentication callback.
Definition callbacks.h:228
void(* ssh_connect_status_callback)(void *userdata, float status)
SSH connect status callback. These are functions that report the status of the connection i,...
Definition callbacks.h:125
LIBSSH_API int ssh_remove_channel_callbacks(ssh_channel channel, ssh_channel_callbacks cb)
Remove a channel callback.
Definition callbacks.c:123
int(* ssh_channel_env_request_callback)(ssh_session session, ssh_channel channel, const char *env_name, const char *env_value, void *userdata)
SSH channel environment request from a client.
Definition callbacks.h:854
void(* ssh_global_request_callback)(ssh_session session, ssh_message message, void *userdata)
SSH global request callback. All global request will go through this callback.
Definition callbacks.h:113
void(* ssh_channel_auth_agent_req_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH auth-agent-request from the client. This request is sent by a client when agent forwarding is ava...
Definition callbacks.h:787
int(* ssh_channel_subsystem_request_callback)(ssh_session session, ssh_channel channel, const char *subsystem, void *userdata)
SSH channel subsystem request from a client.
Definition callbacks.h:868
LIBSSH_API ssh_logging_callback ssh_get_log_callback(void)
Get the pointer to the logging callback function.
Definition log.c:230
LIBSSH_API int ssh_set_log_callback(ssh_logging_callback cb)
Set the logging callback function.
Definition log.c:214
LIBSSH_API struct ssh_threads_callbacks_struct * ssh_threads_get_pthread(void)
Returns a pointer on the pthread threads callbacks, to be used with ssh_threads_set_callbacks.
Definition pthread.c:137
LIBSSH_API struct ssh_threads_callbacks_struct * ssh_threads_get_default(void)
Returns a pointer to the appropriate callbacks structure for the environment, to be used with ssh_thr...
Definition noop.c:65
LIBSSH_API struct ssh_threads_callbacks_struct * ssh_threads_get_noop(void)
Get the noop threads callbacks structure.
Definition noop.c:71
LIBSSH_API int ssh_threads_set_callbacks(struct ssh_threads_callbacks_struct *cb)
Set the thread callbacks structure.
Definition threads.c:71
Response structure for FIDO2/U2F key enrollment operations.
Definition sk_api.h:84
uint8_t * key_handle
Opaque credential handle/ID used to identify this key.
Definition sk_api.h:113
uint8_t flags
FIDO2/U2F authenticator flags from the enrollment operation.
Definition sk_api.h:91
size_t key_handle_len
Length of key_handle buffer in bytes.
Definition sk_api.h:119
Configuration option structure for FIDO2/U2F operations.
Definition sk_api.h:263
Structure representing a resident/discoverable credential.
Definition sk_api.h:204
Response structure for FIDO2/U2F key signing operations.
Definition sk_api.h:167
Definition callbacks.h:176
ssh_channel_open_request_auth_agent_callback channel_open_request_auth_agent_function
Definition callbacks.h:205
ssh_connect_status_callback connect_status_function
Definition callbacks.h:195
ssh_log_callback log_function
Definition callbacks.h:190
ssh_auth_callback auth_function
Definition callbacks.h:186
ssh_channel_open_request_x11_callback channel_open_request_x11_function
Definition callbacks.h:202
void * userdata
Definition callbacks.h:182
ssh_channel_open_request_forwarded_tcpip_callback channel_open_request_forwarded_tcpip_function
Definition callbacks.h:210
size_t size
Definition callbacks.h:178
ssh_global_request_callback global_request_function
Definition callbacks.h:199
Definition callbacks.h:1175
Definition callbacks.h:382
ssh_gssapi_accept_sec_ctx_callback gssapi_accept_sec_ctx_function
Definition callbacks.h:423
ssh_service_request_callback service_request_function
Definition callbacks.h:412
ssh_gssapi_verify_mic_callback gssapi_verify_mic_function
Definition callbacks.h:426
size_t size
Definition callbacks.h:384
ssh_auth_kbdint_callback auth_kbdint_function
Definition callbacks.h:437
ssh_auth_none_callback auth_none_function
Definition callbacks.h:397
ssh_auth_gssapi_mic_callback auth_gssapi_mic_function
Definition callbacks.h:402
ssh_channel_open_request_session_callback channel_open_request_session_function
Definition callbacks.h:416
ssh_auth_password_callback auth_password_function
Definition callbacks.h:392
ssh_auth_pubkey_callback auth_pubkey_function
Definition callbacks.h:407
ssh_channel_open_request_direct_tcpip_callback channel_open_request_direct_tcpip_function
Definition callbacks.h:432
void * userdata
Definition callbacks.h:388
ssh_gssapi_select_oid_callback gssapi_select_oid_function
Definition callbacks.h:420
FIDO2/U2F security key callbacks structure.
Definition callbacks.h:1311
sk_sign_callback sign
Definition callbacks.h:1338
sk_enroll_callback enroll
Definition callbacks.h:1330
sk_api_version_callback api_version
Definition callbacks.h:1321
size_t size
Definition callbacks.h:1313
sk_load_resident_keys_callback load_resident_keys
Definition callbacks.h:1346
Definition callbacks.h:472
void * userdata
Definition callbacks.h:476
ssh_callback_data data
Definition callbacks.h:481
ssh_callback_int_int connected
Definition callbacks.h:493
ssh_callback_int controlflow
Definition callbacks.h:485
ssh_callback_int_int exception
Definition callbacks.h:489