diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-02-06 09:46:10 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-02-06 09:46:10 +0000 |
commit | 73cde232be40f850467cc8bcc3e85429a82e0e08 (patch) | |
tree | dd87ca9a0b92cbafd4cbf0e05634ddb374657f17 /include/libssh | |
parent | 53226f98f245da9b0260709bc4866f67b479b825 (diff) | |
download | libssh-73cde232be40f850467cc8bcc3e85429a82e0e08.tar.gz libssh-73cde232be40f850467cc8bcc3e85429a82e0e08.tar.xz libssh-73cde232be40f850467cc8bcc3e85429a82e0e08.zip |
Complete ssh client agent support.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@231 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'include/libssh')
-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); |