From d4a8b7e34dd619a4debf9a206c81db26d1402ea6 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Wed, 27 Oct 1999 13:42:43 +1000 Subject: Initial revision --- authfd.h | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 authfd.h (limited to 'authfd.h') diff --git a/authfd.h b/authfd.h new file mode 100644 index 000000000..1def920e3 --- /dev/null +++ b/authfd.h @@ -0,0 +1,102 @@ +/* + +authfd.h + +Author: Tatu Ylonen + +Copyright (c) 1995 Tatu Ylonen , Espoo, Finland + All rights reserved + +Created: Wed Mar 29 01:17:41 1995 ylo + +Functions to interface with the SSH_AUTHENTICATION_FD socket. + +*/ + +/* RCSID("$Id: authfd.h,v 1.1 1999/10/27 03:42:43 damien Exp $"); */ + +#ifndef AUTHFD_H +#define AUTHFD_H + +#include "buffer.h" + +/* Messages for the authentication agent connection. */ +#define SSH_AGENTC_REQUEST_RSA_IDENTITIES 1 +#define SSH_AGENT_RSA_IDENTITIES_ANSWER 2 +#define SSH_AGENTC_RSA_CHALLENGE 3 +#define SSH_AGENT_RSA_RESPONSE 4 +#define SSH_AGENT_FAILURE 5 +#define SSH_AGENT_SUCCESS 6 +#define SSH_AGENTC_ADD_RSA_IDENTITY 7 +#define SSH_AGENTC_REMOVE_RSA_IDENTITY 8 +#define SSH_AGENTC_REMOVE_ALL_RSA_IDENTITIES 9 + +typedef struct +{ + int fd; + Buffer packet; + Buffer identities; + int howmany; +} AuthenticationConnection; + +/* Returns the number of the authentication fd, or -1 if there is none. */ +int ssh_get_authentication_socket(); + +/* This should be called for any descriptor returned by + ssh_get_authentication_socket(). Depending on the way the descriptor was + obtained, this may close the descriptor. */ +void ssh_close_authentication_socket(int authfd); + +/* Opens and connects a private socket for communication with the + authentication agent. Returns NULL if an error occurred and the + connection could not be opened. The connection should be closed by + the caller by calling ssh_close_authentication_connection(). */ +AuthenticationConnection *ssh_get_authentication_connection(); + +/* Closes the connection to the authentication agent and frees any associated + memory. */ +void ssh_close_authentication_connection(AuthenticationConnection *ac); + +/* Returns the first authentication identity held by the agent. + Returns true if an identity is available, 0 otherwise. + The caller must initialize the integers before the call, and free the + comment after a successful call (before calling ssh_get_next_identity). */ +int ssh_get_first_identity(AuthenticationConnection *connection, + int *bitsp, BIGNUM *e, BIGNUM *n, char **comment); + +/* Returns the next authentication identity for the agent. Other functions + can be called between this and ssh_get_first_identity or two calls of this + function. This returns 0 if there are no more identities. The caller + must free comment after a successful return. */ +int ssh_get_next_identity(AuthenticationConnection *connection, + int *bitsp, BIGNUM *e, BIGNUM *n, char **comment); + +/* Requests the agent to decrypt the given challenge. Returns true if + the agent claims it was able to decrypt it. */ +int ssh_decrypt_challenge(AuthenticationConnection *auth, + int bits, BIGNUM *e, BIGNUM *n, BIGNUM *challenge, + unsigned char session_id[16], + unsigned int response_type, + unsigned char response[16]); + +/* Adds an identity to the authentication server. This call is not meant to + be used by normal applications. This returns true if the identity + was successfully added. */ +int ssh_add_identity(AuthenticationConnection *connection, + RSA *key, const char *comment); + +/* Removes the identity from the authentication server. This call is + not meant to be used by normal applications. This returns true if the + identity was successfully added. */ +int ssh_remove_identity(AuthenticationConnection *connection, + RSA *key); + +/* Removes all identities from the authentication agent. This call is not + meant to be used by normal applications. This returns true if the + operation was successful. */ +int ssh_remove_all_identities(AuthenticationConnection *connection); + +/* Closes the connection to the authentication agent. */ +void ssh_close_authentication(AuthenticationConnection *connection); + +#endif /* AUTHFD_H */ -- cgit v1.2.3