00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef PACKET_H_
00022 #define PACKET_H_
00023
00024 struct ssh_socket_struct;
00025
00026
00027 typedef struct packet_struct {
00028 int valid;
00029 uint32_t len;
00030 uint8_t type;
00031 } PACKET;
00032
00034 enum ssh_packet_state_e {
00036 PACKET_STATE_INIT,
00038 PACKET_STATE_SIZEREAD,
00041 PACKET_STATE_PROCESSING
00042 };
00043
00044 int packet_send(ssh_session session);
00045
00046 #ifdef WITH_SSH1
00047 int packet_send1(ssh_session session) ;
00048 void ssh_packet_set_default_callbacks1(ssh_session session);
00049
00050 SSH_PACKET_CALLBACK(ssh_packet_disconnect1);
00051 SSH_PACKET_CALLBACK(ssh_packet_smsg_success1);
00052 SSH_PACKET_CALLBACK(ssh_packet_smsg_failure1);
00053 int ssh_packet_socket_callback1(const void *data, size_t receivedlen, void *user);
00054
00055 #endif
00056
00057 SSH_PACKET_CALLBACK(ssh_packet_unimplemented);
00058 SSH_PACKET_CALLBACK(ssh_packet_disconnect_callback);
00059 SSH_PACKET_CALLBACK(ssh_packet_ignore_callback);
00060 SSH_PACKET_CALLBACK(ssh_packet_dh_reply);
00061 SSH_PACKET_CALLBACK(ssh_packet_newkeys);
00062 SSH_PACKET_CALLBACK(ssh_packet_service_accept);
00063
00064 #ifdef WITH_SERVER
00065 SSH_PACKET_CALLBACK(ssh_packet_kexdh_init);
00066 #endif
00067
00068 int ssh_packet_send_unimplemented(ssh_session session, uint32_t seqnum);
00069 int ssh_packet_parse_type(ssh_session session);
00070
00071
00072 int ssh_packet_socket_callback(const void *data, size_t len, void *user);
00073 void ssh_packet_register_socket_callback(ssh_session session, struct ssh_socket_struct *s);
00074 void ssh_packet_set_callbacks(ssh_session session, ssh_packet_callbacks callbacks);
00075 void ssh_packet_set_default_callbacks(ssh_session session);
00076 void ssh_packet_process(ssh_session session, uint8_t type);
00077
00078
00079 uint32_t packet_decrypt_len(ssh_session session, char *crypted);
00080 int packet_decrypt(ssh_session session, void *packet, unsigned int len);
00081 unsigned char *packet_encrypt(ssh_session session,
00082 void *packet,
00083 unsigned int len);
00084 int packet_hmac_verify(ssh_session session,ssh_buffer buffer,
00085 unsigned char *mac);
00086
00087 #endif