xref: /dflybsd-src/crypto/openssh/sshconnect.h (revision ba1276acd1c8c22d225b1bcf370a14c878644f44)
1*ba1276acSMatthew Dillon /* $OpenBSD: sshconnect.h,v 1.48 2024/04/30 02:10:49 djm Exp $ */
218de8d7fSPeter Avalos 
318de8d7fSPeter Avalos /*
418de8d7fSPeter Avalos  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
518de8d7fSPeter Avalos  *
618de8d7fSPeter Avalos  * Redistribution and use in source and binary forms, with or without
718de8d7fSPeter Avalos  * modification, are permitted provided that the following conditions
818de8d7fSPeter Avalos  * are met:
918de8d7fSPeter Avalos  * 1. Redistributions of source code must retain the above copyright
1018de8d7fSPeter Avalos  *    notice, this list of conditions and the following disclaimer.
1118de8d7fSPeter Avalos  * 2. Redistributions in binary form must reproduce the above copyright
1218de8d7fSPeter Avalos  *    notice, this list of conditions and the following disclaimer in the
1318de8d7fSPeter Avalos  *    documentation and/or other materials provided with the distribution.
1418de8d7fSPeter Avalos  *
1518de8d7fSPeter Avalos  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1618de8d7fSPeter Avalos  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1718de8d7fSPeter Avalos  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1818de8d7fSPeter Avalos  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1918de8d7fSPeter Avalos  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2018de8d7fSPeter Avalos  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2118de8d7fSPeter Avalos  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2218de8d7fSPeter Avalos  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2318de8d7fSPeter Avalos  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2418de8d7fSPeter Avalos  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2518de8d7fSPeter Avalos  */
2618de8d7fSPeter Avalos 
27*ba1276acSMatthew Dillon struct sshkey;
28*ba1276acSMatthew Dillon 
2918de8d7fSPeter Avalos typedef struct Sensitive Sensitive;
3018de8d7fSPeter Avalos struct Sensitive {
31ce74bacaSMatthew Dillon 	struct sshkey	**keys;
3218de8d7fSPeter Avalos 	int		nkeys;
3318de8d7fSPeter Avalos };
3418de8d7fSPeter Avalos 
3550a69bb5SSascha Wildner struct ssh_conn_info {
3650a69bb5SSascha Wildner 	char *conn_hash_hex;
3750a69bb5SSascha Wildner 	char *shorthost;
3850a69bb5SSascha Wildner 	char *uidstr;
3950a69bb5SSascha Wildner 	char *keyalias;
4050a69bb5SSascha Wildner 	char *thishost;
4150a69bb5SSascha Wildner 	char *host_arg;
4250a69bb5SSascha Wildner 	char *portstr;
4350a69bb5SSascha Wildner 	char *remhost;
4450a69bb5SSascha Wildner 	char *remuser;
4550a69bb5SSascha Wildner 	char *homedir;
4650a69bb5SSascha Wildner 	char *locuser;
47*ba1276acSMatthew Dillon 	char *jmphost;
4850a69bb5SSascha Wildner };
4950a69bb5SSascha Wildner 
5036e94dc5SPeter Avalos struct addrinfo;
51ce74bacaSMatthew Dillon struct ssh;
5250a69bb5SSascha Wildner struct hostkeys;
5350a69bb5SSascha Wildner struct ssh_conn_info;
5450a69bb5SSascha Wildner 
5550a69bb5SSascha Wildner /* default argument for client percent expansions */
5650a69bb5SSascha Wildner #define DEFAULT_CLIENT_PERCENT_EXPAND_ARGS(conn_info) \
5750a69bb5SSascha Wildner 	"C", conn_info->conn_hash_hex, \
5850a69bb5SSascha Wildner 	"L", conn_info->shorthost, \
5950a69bb5SSascha Wildner 	"i", conn_info->uidstr, \
6050a69bb5SSascha Wildner 	"k", conn_info->keyalias, \
6150a69bb5SSascha Wildner 	"l", conn_info->thishost, \
6250a69bb5SSascha Wildner 	"n", conn_info->host_arg, \
6350a69bb5SSascha Wildner 	"p", conn_info->portstr, \
6450a69bb5SSascha Wildner 	"d", conn_info->homedir, \
6550a69bb5SSascha Wildner 	"h", conn_info->remhost, \
6650a69bb5SSascha Wildner 	"r", conn_info->remuser, \
67*ba1276acSMatthew Dillon 	"u", conn_info->locuser, \
68*ba1276acSMatthew Dillon 	"j", conn_info->jmphost
69ce74bacaSMatthew Dillon 
700cbfa66cSDaniel Fojt int	 ssh_connect(struct ssh *, const char *, const char *,
710cbfa66cSDaniel Fojt 	    struct addrinfo *, struct sockaddr_storage *, u_short,
7250a69bb5SSascha Wildner 	    int, int *, int);
739f304aafSPeter Avalos void	 ssh_kill_proxy_command(void);
7418de8d7fSPeter Avalos 
75664f4763Szrj void	 ssh_login(struct ssh *, Sensitive *, const char *,
7650a69bb5SSascha Wildner     struct sockaddr *, u_short, struct passwd *, int,
7750a69bb5SSascha Wildner     const struct ssh_conn_info *);
7840c002afSPeter Avalos 
7950a69bb5SSascha Wildner int	 verify_host_key(char *, struct sockaddr *, struct sshkey *,
8050a69bb5SSascha Wildner     const struct ssh_conn_info *);
8118de8d7fSPeter Avalos 
829f304aafSPeter Avalos void	 get_hostfile_hostname_ipaddr(char *, struct sockaddr *, u_short,
839f304aafSPeter Avalos     char **, char **);
849f304aafSPeter Avalos 
8550a69bb5SSascha Wildner void	 ssh_kex2(struct ssh *ssh, char *, struct sockaddr *, u_short,
8650a69bb5SSascha Wildner     const struct ssh_conn_info *);
8718de8d7fSPeter Avalos 
88664f4763Szrj void	 ssh_userauth2(struct ssh *ssh, const char *, const char *,
89664f4763Szrj     char *, Sensitive *);
9018de8d7fSPeter Avalos 
9118de8d7fSPeter Avalos int	 ssh_local_cmd(const char *);
9218de8d7fSPeter Avalos 
930cbfa66cSDaniel Fojt void	 maybe_add_key_to_agent(const char *, struct sshkey *,
940cbfa66cSDaniel Fojt     const char *, const char *);
9550a69bb5SSascha Wildner 
9650a69bb5SSascha Wildner void	 load_hostkeys_command(struct hostkeys *, const char *,
9750a69bb5SSascha Wildner     const char *, const struct ssh_conn_info *,
9850a69bb5SSascha Wildner     const struct sshkey *, const char *);
99*ba1276acSMatthew Dillon 
100*ba1276acSMatthew Dillon int hostkey_accepted_by_hostkeyalgs(const struct sshkey *);
101