diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/libssh/libssh.h | 2 | ||||
-rw-r--r-- | include/libssh/priv.h | 23 |
2 files changed, 23 insertions, 2 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 03265cb3..8b918e6f 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -331,6 +331,8 @@ 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_agent_pubkey(SSH_SESSION *session, const char *username, + PUBLIC_KEY *publickey); int ssh_userauth_autopubkey(SSH_SESSION *session, const char *passphrase); int ssh_userauth_kbdint(SSH_SESSION *session, const char *user, const char *submethods); int ssh_userauth_kbdint_getnprompts(SSH_SESSION *session); diff --git a/include/libssh/priv.h b/include/libssh/priv.h index 67cd6bf1..1713e327 100644 --- a/include/libssh/priv.h +++ b/include/libssh/priv.h @@ -289,7 +289,7 @@ struct channel_struct { struct agent_struct { struct socket *sock; - STRING *ident; + BUFFER *ident; unsigned int count; }; @@ -450,7 +450,17 @@ void agent_free(struct agent_struct *agent); */ int agent_running(struct ssh_session *session); -int agent_ident_count(struct ssh_session *session); +int agent_get_ident_count(struct ssh_session *session); + +struct public_key_struct *agent_get_next_ident(struct ssh_session *session, + char **comment); + +struct public_key_struct *agent_get_first_ident(struct ssh_session *session, + char **comment); + +STRING *agent_sign_data(struct ssh_session *session, + struct buffer_struct *data, + struct public_key_struct *pubkey); #endif /* socket.c */ @@ -560,11 +570,20 @@ PRIVATE_KEY *_privatekey_from_file(void *session,char *filename,int type); /* in keys.c */ char *ssh_type_to_char(int type); +int ssh_type_from_name(char *name); + +PRIVATE_KEY *privatekey_make_dss(SSH_SESSION *session, BUFFER *buffer); +PRIVATE_KEY *privatekey_make_rsa(SSH_SESSION *session, BUFFER *buffer, + char *type); +PRIVATE_KEY *privatekey_from_string(SSH_SESSION *session, STRING *privkey_s); + PUBLIC_KEY *publickey_make_dss(SSH_SESSION *session, BUFFER *buffer); PUBLIC_KEY *publickey_make_rsa(SSH_SESSION *session, BUFFER *buffer,char *type); PUBLIC_KEY *publickey_from_string(SSH_SESSION *session, STRING *pubkey_s); SIGNATURE *signature_from_string(SSH_SESSION *session, STRING *signature,PUBLIC_KEY *pubkey,int needed_type); void signature_free(SIGNATURE *sign); +STRING *ssh_do_sign_with_agent(struct ssh_session *session, + struct buffer_struct *buf, struct public_key_struct *publickey); STRING *ssh_do_sign(SSH_SESSION *session,BUFFER *sigbuf, PRIVATE_KEY *privatekey); STRING *ssh_sign_session_id(SSH_SESSION *session, PRIVATE_KEY *privatekey); |