mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-08-07 08:02:55 +03:00
patches 0001-Save-the-last-error-and-provide-a-function-to-get-it.patch,
0002-Use-const-whereever-it-makes-sense.patch, 0003-Implement-function-to-retrieve-userauth-possabilitie.patch from Andreas Schneider git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@191 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
@@ -91,6 +91,11 @@ typedef int socket_t;
|
||||
#define SSH_AUTH_INFO 3
|
||||
#define SSH_AUTH_ERROR -1
|
||||
|
||||
#define SSH_AUTH_METHOD_PASSWORD 0x0001
|
||||
#define SSH_AUTH_METHOD_PUBLICKEY 0x0002
|
||||
#define SSH_AUTH_METHOD_HOSTBASED 0x0004
|
||||
#define SSH_AUTH_METHOD_INTERACTIVE 0x0008
|
||||
|
||||
/* status flags */
|
||||
|
||||
#define SSH_CLOSED (1<<0)
|
||||
@@ -120,7 +125,7 @@ typedef int socket_t;
|
||||
|
||||
char *ssh_get_error(void *error);
|
||||
int ssh_get_error_code(void *error);
|
||||
void ssh_say(int priority,char *format,...);
|
||||
void ssh_say(int priority, const char *format, ...);
|
||||
void ssh_set_verbosity(int num);
|
||||
/** \addtogroup ssh_log
|
||||
* @{
|
||||
@@ -178,12 +183,12 @@ const char *ssh_copyright();
|
||||
|
||||
/* You can use these functions, they won't change */
|
||||
/* makestring returns a newly allocated string from a char * ptr */
|
||||
STRING *string_from_char(char *what);
|
||||
STRING *string_from_char(const char *what);
|
||||
/* it returns the string len in host byte orders. str->size is big endian warning ! */
|
||||
int string_len(STRING *str);
|
||||
STRING *string_new(unsigned int size);
|
||||
/* string_fill copies the data in the string. it does NOT check for boundary so allocate enough place with string_new */
|
||||
void string_fill(STRING *str,void *data,int len);
|
||||
void string_fill(STRING *str, const void *data,int len);
|
||||
/* returns a newly allocated char array with the str string and a final nul caracter */
|
||||
char *string_to_char(STRING *str);
|
||||
STRING *string_copy(STRING *str);
|
||||
@@ -196,7 +201,7 @@ void string_free(STRING *str);
|
||||
void ssh_crypto_init();
|
||||
|
||||
/* useful for debug */
|
||||
void ssh_print_hexa(char *descr,unsigned char *what, int len);
|
||||
void ssh_print_hexa(char *descr, const unsigned char *what, int len);
|
||||
int ssh_get_random(void *where,int len,int strong);
|
||||
|
||||
/* this one can be called by the client to see the hash of the public key before accepting it */
|
||||
@@ -250,25 +255,25 @@ int channel_select(CHANNEL **readchans, CHANNEL **writechans, CHANNEL **exceptch
|
||||
|
||||
SSH_OPTIONS *ssh_options_new();
|
||||
SSH_OPTIONS *ssh_options_copy(SSH_OPTIONS *opt);
|
||||
int ssh_options_set_wanted_algos(SSH_OPTIONS *opt,int algo, char *list);
|
||||
void ssh_options_set_username(SSH_OPTIONS *opt,char *username);
|
||||
int ssh_options_set_wanted_algos(SSH_OPTIONS *opt, int algo, const char *list);
|
||||
void ssh_options_set_username(SSH_OPTIONS *opt, const char *username);
|
||||
void ssh_options_set_port(SSH_OPTIONS *opt, unsigned int port);
|
||||
int ssh_options_getopt(SSH_OPTIONS *options, int *argcptr, char **argv);
|
||||
void ssh_options_set_host(SSH_OPTIONS *opt, const char *host);
|
||||
void ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd);
|
||||
void ssh_options_set_bind(SSH_OPTIONS *opt, char *bindaddr,int port);
|
||||
void ssh_options_set_identity(SSH_OPTIONS *opt, char *identity);
|
||||
void ssh_options_set_bind(SSH_OPTIONS *opt, const char *bindaddr, int port);
|
||||
void ssh_options_set_identity(SSH_OPTIONS *opt, const char *identity);
|
||||
void ssh_options_set_status_callback(SSH_OPTIONS *opt, void (*callback)
|
||||
(void *arg, float status), void *arg);
|
||||
void ssh_options_set_timeout(SSH_OPTIONS *opt, long seconds, long usec);
|
||||
void ssh_options_set_ssh_dir(SSH_OPTIONS *opt, char *dir);
|
||||
void ssh_options_set_known_hosts_file(SSH_OPTIONS *opt, char *dir);
|
||||
void ssh_options_set_ssh_dir(SSH_OPTIONS *opt, const char *dir);
|
||||
void ssh_options_set_known_hosts_file(SSH_OPTIONS *opt, const char *dir);
|
||||
void ssh_options_allow_ssh1(SSH_OPTIONS *opt, int allow);
|
||||
void ssh_options_allow_ssh2(SSH_OPTIONS *opt, int allow);
|
||||
void ssh_options_set_dsa_server_key(SSH_OPTIONS *opt, char *dsakey);
|
||||
void ssh_options_set_rsa_server_key(SSH_OPTIONS *opt, char *rsakey);
|
||||
void ssh_options_set_log_function(SSH_OPTIONS *opt,
|
||||
void (*callback)(const char *message, SSH_SESSION *session, int verbosity ));
|
||||
void ssh_options_set_dsa_server_key(SSH_OPTIONS *opt, const char *dsakey);
|
||||
void ssh_options_set_rsa_server_key(SSH_OPTIONS *opt, const char *rsakey);
|
||||
void ssh_options_set_log_function(SSH_OPTIONS *opt,
|
||||
void (*callback)(const char *message, SSH_SESSION *session, int verbosity ));
|
||||
void ssh_options_set_log_verbosity(SSH_OPTIONS *opt, int verbosity);
|
||||
|
||||
|
||||
@@ -289,17 +294,18 @@ int buffer_get_len(BUFFER *buffer);
|
||||
AUTH_SUCCESS if success,
|
||||
AUTH_PARTIAL if partial success,
|
||||
AUTH_DENIED if refused */
|
||||
int ssh_userauth_none(SSH_SESSION *session,char *username);
|
||||
int ssh_userauth_password(SSH_SESSION *session,char *username,char *password);
|
||||
int ssh_userauth_offer_pubkey(SSH_SESSION *session, char *username,int type, STRING *publickey);
|
||||
int ssh_userauth_pubkey(SSH_SESSION *session, char *username, STRING *publickey, PRIVATE_KEY *privatekey);
|
||||
int ssh_userauth_list(SSH_SESSION *session, const char *username);
|
||||
int ssh_userauth_none(SSH_SESSION *session, const char *username);
|
||||
int ssh_userauth_password(SSH_SESSION *session, const char *username, const char *password);
|
||||
int ssh_userauth_offer_pubkey(SSH_SESSION *session, const char *username, int type, STRING *publickey);
|
||||
int ssh_userauth_pubkey(SSH_SESSION *session, const char *username, STRING *publickey, PRIVATE_KEY *privatekey);
|
||||
int ssh_userauth_autopubkey(SSH_SESSION *session);
|
||||
int ssh_userauth_kbdint(SSH_SESSION *session, char *user, char *submethods);
|
||||
int ssh_userauth_kbdint(SSH_SESSION *session, const char *user, const char *submethods);
|
||||
int ssh_userauth_kbdint_getnprompts(SSH_SESSION *session);
|
||||
char *ssh_userauth_kbdint_getname(SSH_SESSION *session);
|
||||
char *ssh_userauth_kbdint_getinstruction(SSH_SESSION *session);
|
||||
char *ssh_userauth_kbdint_getprompt(SSH_SESSION *session, int i, char *echo);
|
||||
void ssh_userauth_kbdint_setanswer(SSH_SESSION *session, unsigned int i, char *answer);
|
||||
void ssh_userauth_kbdint_setanswer(SSH_SESSION *session, unsigned int i, const char *answer);
|
||||
|
||||
|
||||
/* init.c */
|
||||
|
@@ -504,10 +504,10 @@ void ssh_send_kex(SSH_SESSION *session,int server_kex);
|
||||
void ssh_list_kex(KEX *kex);
|
||||
int set_kex(SSH_SESSION *session);
|
||||
int ssh_get_kex(SSH_SESSION *session, int server_kex);
|
||||
int verify_existing_algo(int algo,char *name);
|
||||
char **space_tokenize(char *chain);
|
||||
int verify_existing_algo(int algo, const char *name);
|
||||
char **space_tokenize(const char *chain);
|
||||
int ssh_get_kex1(SSH_SESSION *session);
|
||||
char *ssh_find_matching(char *in_d, char *what_d);
|
||||
char *ssh_find_matching(const char *in_d, const char *what_d);
|
||||
|
||||
/* in keyfiles.c */
|
||||
|
||||
|
@@ -34,6 +34,7 @@ typedef struct sftp_session_struct {
|
||||
int version;
|
||||
struct request_queue *queue;
|
||||
u32 id_counter;
|
||||
int errnum;
|
||||
void **handles;
|
||||
} SFTP_SESSION ;
|
||||
|
||||
@@ -131,33 +132,34 @@ typedef struct sftp_attributes{
|
||||
SFTP_SESSION *sftp_new(SSH_SESSION *session);
|
||||
void sftp_free(SFTP_SESSION *sftp);
|
||||
int sftp_init(SFTP_SESSION *sftp);
|
||||
SFTP_DIR *sftp_opendir(SFTP_SESSION *session, char *path);
|
||||
int sftp_get_error(SFTP_SESSION *sftp);
|
||||
SFTP_DIR *sftp_opendir(SFTP_SESSION *session, const char *path);
|
||||
/* reads one file and attribute from opened directory. fails at end */
|
||||
SFTP_ATTRIBUTES *sftp_readdir(SFTP_SESSION *session, SFTP_DIR *dir);
|
||||
/* returns 1 if the directory was EOF */
|
||||
int sftp_dir_eof(SFTP_DIR *dir);
|
||||
SFTP_ATTRIBUTES *sftp_stat(SFTP_SESSION *session, char *path);
|
||||
SFTP_ATTRIBUTES *sftp_lstat(SFTP_SESSION *session, char *path);
|
||||
SFTP_ATTRIBUTES *sftp_stat(SFTP_SESSION *session, const char *path);
|
||||
SFTP_ATTRIBUTES *sftp_lstat(SFTP_SESSION *session, const char *path);
|
||||
/* sftp_lstat stats a file but doesn't follow symlinks */
|
||||
SFTP_ATTRIBUTES *sftp_fstat(SFTP_FILE *file);
|
||||
void sftp_attributes_free(SFTP_ATTRIBUTES *file);
|
||||
int sftp_dir_close(SFTP_DIR *dir);
|
||||
int sftp_file_close(SFTP_FILE *file);
|
||||
/* access are the sames than the ones from ansi fopen() */
|
||||
SFTP_FILE *sftp_open(SFTP_SESSION *session, char *file, int access, SFTP_ATTRIBUTES *attr);
|
||||
SFTP_FILE *sftp_open(SFTP_SESSION *session, const char *file, int access, SFTP_ATTRIBUTES *attr);
|
||||
int sftp_read(SFTP_FILE *file, void *dest, int len);
|
||||
u32 sftp_async_read_begin(SFTP_FILE *file, int len);
|
||||
int sftp_async_read(SFTP_FILE *file, void *data, int len, u32 id);
|
||||
int sftp_write(SFTP_FILE *file, void *source, int len);
|
||||
int sftp_write(SFTP_FILE *file, const void *source, int len);
|
||||
void sftp_seek(SFTP_FILE *file, int new_offset);
|
||||
unsigned long sftp_tell(SFTP_FILE *file);
|
||||
void sftp_rewind(SFTP_FILE *file);
|
||||
int sftp_rm(SFTP_SESSION *sftp, char *file);
|
||||
int sftp_rmdir(SFTP_SESSION *sftp, char *directory);
|
||||
int sftp_mkdir(SFTP_SESSION *sftp, char *directory, SFTP_ATTRIBUTES *attr);
|
||||
int sftp_rename(SFTP_SESSION *sftp, char *original, char *newname);
|
||||
int sftp_setstat(SFTP_SESSION *sftp, char *file, SFTP_ATTRIBUTES *attr);
|
||||
char *sftp_canonicalize_path(SFTP_SESSION *sftp, char *path);
|
||||
int sftp_rmdir(SFTP_SESSION *sftp, const char *directory);
|
||||
int sftp_mkdir(SFTP_SESSION *sftp, const char *directory, SFTP_ATTRIBUTES *attr);
|
||||
int sftp_rename(SFTP_SESSION *sftp, const char *original, const char *newname);
|
||||
int sftp_setstat(SFTP_SESSION *sftp, const char *file, SFTP_ATTRIBUTES *attr);
|
||||
char *sftp_canonicalize_path(SFTP_SESSION *sftp, const char *path);
|
||||
|
||||
#ifndef NO_SERVER
|
||||
SFTP_SESSION *sftp_server_new(SSH_SESSION *session, CHANNEL *chan);
|
||||
|
Reference in New Issue
Block a user