summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/libssh/libssh.h2
-rw-r--r--include/libssh/priv.h23
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);