xref: /openbsd/usr.bin/ssh/authfd.h (revision 321f30e3)
1*321f30e3Smarkus /* $OpenBSD: authfd.h,v 1.39 2015/12/04 16:41:28 markus Exp $ */
2617bdbdbSstevesk 
384959968Sderaadt /*
432f90fecSderaadt  * Author: Tatu Ylonen <ylo@cs.hut.fi>
532f90fecSderaadt  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
632f90fecSderaadt  *                    All rights reserved
732f90fecSderaadt  * Functions to interface with the SSH_AUTHENTICATION_FD socket.
832f90fecSderaadt  *
9607fba6cSderaadt  * As far as I am concerned, the code I have written for this software
10607fba6cSderaadt  * can be used freely for any purpose.  Any derived versions of this
11607fba6cSderaadt  * software must be clearly marked as such, and if the derived work is
12607fba6cSderaadt  * incompatible with the protocol description in the RFC file, it must be
13607fba6cSderaadt  * called by a name other than "ssh" or "Secure Shell".
1484959968Sderaadt  */
1584959968Sderaadt 
1684959968Sderaadt #ifndef AUTHFD_H
1784959968Sderaadt #define AUTHFD_H
1884959968Sderaadt 
19b7e9f6c7Sdjm /* List of identities returned by ssh_fetch_identitylist() */
20b7e9f6c7Sdjm struct ssh_identitylist {
21b7e9f6c7Sdjm 	size_t nkeys;
22b7e9f6c7Sdjm 	struct sshkey **keys;
23b7e9f6c7Sdjm 	char **comments;
24b7e9f6c7Sdjm };
25b7e9f6c7Sdjm 
26b7e9f6c7Sdjm int	ssh_get_authentication_socket(int *fdp);
27b7e9f6c7Sdjm void	ssh_close_authentication_socket(int sock);
28b7e9f6c7Sdjm 
29b7e9f6c7Sdjm int	ssh_lock_agent(int sock, int lock, const char *password);
30b7e9f6c7Sdjm int	ssh_fetch_identitylist(int sock, int version,
31b7e9f6c7Sdjm 	    struct ssh_identitylist **idlp);
32b7e9f6c7Sdjm void	ssh_free_identitylist(struct ssh_identitylist *idl);
33b7e9f6c7Sdjm int	ssh_add_identity_constrained(int sock, struct sshkey *key,
34b7e9f6c7Sdjm 	    const char *comment, u_int life, u_int confirm);
35b7e9f6c7Sdjm int	ssh_remove_identity(int sock, struct sshkey *key);
36b7e9f6c7Sdjm int	ssh_update_card(int sock, int add, const char *reader_id,
37b7e9f6c7Sdjm 	    const char *pin, u_int life, u_int confirm);
38b7e9f6c7Sdjm int	ssh_remove_all_identities(int sock, int version);
39b7e9f6c7Sdjm 
40b7e9f6c7Sdjm int	ssh_decrypt_challenge(int sock, struct sshkey* key, BIGNUM *challenge,
41b7e9f6c7Sdjm 	    u_char session_id[16], u_char response[16]);
42b7e9f6c7Sdjm int	ssh_agent_sign(int sock, struct sshkey *key,
43b7e9f6c7Sdjm 	    u_char **sigp, size_t *lenp,
44*321f30e3Smarkus 	    const u_char *data, size_t datalen, const char *alg, u_int compat);
45b7e9f6c7Sdjm 
4684959968Sderaadt /* Messages for the authentication agent connection. */
4784959968Sderaadt #define SSH_AGENTC_REQUEST_RSA_IDENTITIES	1
4884959968Sderaadt #define SSH_AGENT_RSA_IDENTITIES_ANSWER		2
4984959968Sderaadt #define SSH_AGENTC_RSA_CHALLENGE		3
5084959968Sderaadt #define SSH_AGENT_RSA_RESPONSE			4
5184959968Sderaadt #define SSH_AGENT_FAILURE			5
5284959968Sderaadt #define SSH_AGENT_SUCCESS			6
5384959968Sderaadt #define SSH_AGENTC_ADD_RSA_IDENTITY		7
5484959968Sderaadt #define SSH_AGENTC_REMOVE_RSA_IDENTITY		8
5584959968Sderaadt #define SSH_AGENTC_REMOVE_ALL_RSA_IDENTITIES	9
5684959968Sderaadt 
5710da3483Smarkus /* private OpenSSH extensions for SSH2 */
583ad03657Smarkus #define SSH2_AGENTC_REQUEST_IDENTITIES		11
593ad03657Smarkus #define SSH2_AGENT_IDENTITIES_ANSWER		12
603ad03657Smarkus #define SSH2_AGENTC_SIGN_REQUEST		13
613ad03657Smarkus #define SSH2_AGENT_SIGN_RESPONSE		14
623ad03657Smarkus #define SSH2_AGENTC_ADD_IDENTITY		17
633ad03657Smarkus #define SSH2_AGENTC_REMOVE_IDENTITY		18
643ad03657Smarkus #define SSH2_AGENTC_REMOVE_ALL_IDENTITIES	19
653ad03657Smarkus 
6644986879Smarkus /* smartcard */
6744986879Smarkus #define SSH_AGENTC_ADD_SMARTCARD_KEY		20
6844986879Smarkus #define SSH_AGENTC_REMOVE_SMARTCARD_KEY		21
6944986879Smarkus 
70712b8fdeSmarkus /* lock/unlock the agent */
71712b8fdeSmarkus #define SSH_AGENTC_LOCK				22
72712b8fdeSmarkus #define SSH_AGENTC_UNLOCK			23
73712b8fdeSmarkus 
74e01d29b9Smarkus /* add key with constraints */
75e01d29b9Smarkus #define SSH_AGENTC_ADD_RSA_ID_CONSTRAINED	24
76e01d29b9Smarkus #define SSH2_AGENTC_ADD_ID_CONSTRAINED		25
77006fce9fSdjm #define SSH_AGENTC_ADD_SMARTCARD_KEY_CONSTRAINED 26
78d77f6525Smarkus 
79f5a3f9f6Smarkus #define	SSH_AGENT_CONSTRAIN_LIFETIME		1
8012af6642Smarkus #define	SSH_AGENT_CONSTRAIN_CONFIRM		2
81f9ca96dcSmarkus 
829b40274eSmarkus /* extended failure messages */
839b40274eSmarkus #define SSH2_AGENT_FAILURE			30
849b40274eSmarkus 
8510da3483Smarkus /* additional error code for ssh.com's ssh-agent2 */
8610da3483Smarkus #define SSH_COM_AGENT2_FAILURE			102
8710da3483Smarkus 
881604b9adSmarkus #define	SSH_AGENT_OLD_SIGNATURE			0x01
89*321f30e3Smarkus #define	SSH_AGENT_RSA_SHA2_256			0x02
90*321f30e3Smarkus #define	SSH_AGENT_RSA_SHA2_512			0x04
911604b9adSmarkus 
9284959968Sderaadt #endif				/* AUTHFD_H */
93