xref: /openbsd/usr.bin/ssh/authfd.h (revision 8705e2e1)
1*8705e2e1Sdjm /* $OpenBSD: authfd.h,v 1.41 2017/06/28 01:09:22 djm 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);
30d4984305Snaddy int	ssh_fetch_identitylist(int sock, struct ssh_identitylist **idlp);
31b7e9f6c7Sdjm void	ssh_free_identitylist(struct ssh_identitylist *idl);
32b7e9f6c7Sdjm int	ssh_add_identity_constrained(int sock, struct sshkey *key,
33b7e9f6c7Sdjm 	    const char *comment, u_int life, u_int confirm);
34b7e9f6c7Sdjm int	ssh_remove_identity(int sock, struct sshkey *key);
35b7e9f6c7Sdjm int	ssh_update_card(int sock, int add, const char *reader_id,
36b7e9f6c7Sdjm 	    const char *pin, u_int life, u_int confirm);
37b7e9f6c7Sdjm int	ssh_remove_all_identities(int sock, int version);
38b7e9f6c7Sdjm 
39b7e9f6c7Sdjm int	ssh_decrypt_challenge(int sock, struct sshkey* key, BIGNUM *challenge,
40b7e9f6c7Sdjm 	    u_char session_id[16], u_char response[16]);
41*8705e2e1Sdjm int	ssh_agent_sign(int sock, const struct sshkey *key,
42b7e9f6c7Sdjm 	    u_char **sigp, size_t *lenp,
43321f30e3Smarkus 	    const u_char *data, size_t datalen, const char *alg, u_int compat);
44b7e9f6c7Sdjm 
4584959968Sderaadt /* Messages for the authentication agent connection. */
4684959968Sderaadt #define SSH_AGENTC_REQUEST_RSA_IDENTITIES	1
4784959968Sderaadt #define SSH_AGENT_RSA_IDENTITIES_ANSWER		2
4884959968Sderaadt #define SSH_AGENTC_RSA_CHALLENGE		3
4984959968Sderaadt #define SSH_AGENT_RSA_RESPONSE			4
5084959968Sderaadt #define SSH_AGENT_FAILURE			5
5184959968Sderaadt #define SSH_AGENT_SUCCESS			6
5284959968Sderaadt #define SSH_AGENTC_ADD_RSA_IDENTITY		7
5384959968Sderaadt #define SSH_AGENTC_REMOVE_RSA_IDENTITY		8
5484959968Sderaadt #define SSH_AGENTC_REMOVE_ALL_RSA_IDENTITIES	9
5584959968Sderaadt 
5610da3483Smarkus /* private OpenSSH extensions for SSH2 */
573ad03657Smarkus #define SSH2_AGENTC_REQUEST_IDENTITIES		11
583ad03657Smarkus #define SSH2_AGENT_IDENTITIES_ANSWER		12
593ad03657Smarkus #define SSH2_AGENTC_SIGN_REQUEST		13
603ad03657Smarkus #define SSH2_AGENT_SIGN_RESPONSE		14
613ad03657Smarkus #define SSH2_AGENTC_ADD_IDENTITY		17
623ad03657Smarkus #define SSH2_AGENTC_REMOVE_IDENTITY		18
633ad03657Smarkus #define SSH2_AGENTC_REMOVE_ALL_IDENTITIES	19
643ad03657Smarkus 
6544986879Smarkus /* smartcard */
6644986879Smarkus #define SSH_AGENTC_ADD_SMARTCARD_KEY		20
6744986879Smarkus #define SSH_AGENTC_REMOVE_SMARTCARD_KEY		21
6844986879Smarkus 
69712b8fdeSmarkus /* lock/unlock the agent */
70712b8fdeSmarkus #define SSH_AGENTC_LOCK				22
71712b8fdeSmarkus #define SSH_AGENTC_UNLOCK			23
72712b8fdeSmarkus 
73e01d29b9Smarkus /* add key with constraints */
74e01d29b9Smarkus #define SSH_AGENTC_ADD_RSA_ID_CONSTRAINED	24
75e01d29b9Smarkus #define SSH2_AGENTC_ADD_ID_CONSTRAINED		25
76006fce9fSdjm #define SSH_AGENTC_ADD_SMARTCARD_KEY_CONSTRAINED 26
77d77f6525Smarkus 
78f5a3f9f6Smarkus #define	SSH_AGENT_CONSTRAIN_LIFETIME		1
7912af6642Smarkus #define	SSH_AGENT_CONSTRAIN_CONFIRM		2
80f9ca96dcSmarkus 
819b40274eSmarkus /* extended failure messages */
829b40274eSmarkus #define SSH2_AGENT_FAILURE			30
839b40274eSmarkus 
8410da3483Smarkus /* additional error code for ssh.com's ssh-agent2 */
8510da3483Smarkus #define SSH_COM_AGENT2_FAILURE			102
8610da3483Smarkus 
871604b9adSmarkus #define	SSH_AGENT_OLD_SIGNATURE			0x01
88321f30e3Smarkus #define	SSH_AGENT_RSA_SHA2_256			0x02
89321f30e3Smarkus #define	SSH_AGENT_RSA_SHA2_512			0x04
901604b9adSmarkus 
9184959968Sderaadt #endif				/* AUTHFD_H */
92