aboutsummaryrefslogtreecommitdiff
path: root/include/libssh/agent.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libssh/agent.h')
-rw-r--r--include/libssh/agent.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/include/libssh/agent.h b/include/libssh/agent.h
index 42cb2309..fca577d1 100644
--- a/include/libssh/agent.h
+++ b/include/libssh/agent.h
@@ -1,6 +1,8 @@
#ifndef __AGENT_H
#define __AGENT_H
+#include "libssh/libssh.h"
+
/* Messages for the authentication agent connection. */
#define SSH_AGENTC_REQUEST_RSA_IDENTITIES 1
#define SSH_AGENT_RSA_IDENTITIES_ANSWER 2
@@ -45,5 +47,51 @@
#define SSH_AGENT_OLD_SIGNATURE 0x01
+struct ssh_agent_struct {
+ struct socket *sock;
+ ssh_buffer ident;
+ unsigned int count;
+};
+
+#ifndef _WIN32
+/* agent.c */
+/**
+ * @brief Create a new ssh agent structure.
+ *
+ * @return An allocated ssh agent structure or NULL on error.
+ */
+struct ssh_agent_struct *agent_new(struct ssh_session_struct *session);
+
+void agent_close(struct ssh_agent_struct *agent);
+
+/**
+ * @brief Free an allocated ssh agent structure.
+ *
+ * @param agent The ssh agent structure to free.
+ */
+void agent_free(struct ssh_agent_struct *agent);
+
+/**
+ * @brief Check if the ssh agent is running.
+ *
+ * @param session The ssh session to check for the agent.
+ *
+ * @return 1 if it is running, 0 if not.
+ */
+int agent_is_running(struct ssh_session_struct *session);
+
+int agent_get_ident_count(struct ssh_session_struct *session);
+
+struct ssh_public_key_struct *agent_get_next_ident(struct ssh_session_struct *session,
+ char **comment);
+
+struct ssh_public_key_struct *agent_get_first_ident(struct ssh_session_struct *session,
+ char **comment);
+
+ssh_string agent_sign_data(struct ssh_session_struct *session,
+ struct ssh_buffer_struct *data,
+ struct ssh_public_key_struct *pubkey);
+#endif
+
#endif /* __AGENT_H */
/* vim: set ts=2 sw=2 et cindent: */