sshconnect.h revision 98684
1/*	$OpenBSD: sshconnect.h,v 1.17 2002/06/19 00:27:55 deraadt Exp $	*/
2/*	$FreeBSD: head/crypto/openssh/sshconnect.h 98684 2002-06-23 16:09:08Z des $	*/
3
4/*
5 * Copyright (c) 2000 Markus Friedl.  All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27#ifndef SSHCONNECT_H
28#define SSHCONNECT_H
29
30typedef struct Sensitive Sensitive;
31struct Sensitive {
32	Key	**keys;
33	int	nkeys;
34	int	external_keysign;
35};
36
37int
38ssh_connect(const char *, struct sockaddr_storage *, u_short, int, int,
39    int, const char *);
40
41void
42ssh_login(Sensitive *, const char *, struct sockaddr *, struct passwd *);
43
44int	 verify_host_key(char *, struct sockaddr *, Key *);
45
46void	 ssh_kex(char *, struct sockaddr *);
47void	 ssh_kex2(char *, struct sockaddr *);
48
49void	 ssh_userauth1(const char *, const char *, char *, Sensitive *);
50void	 ssh_userauth2(const char *, const char *, char *, Sensitive *);
51
52void	 ssh_put_password(char *);
53
54
55/*
56 * Macros to raise/lower permissions.
57 */
58#define PRIV_START do {				\
59	int save_errno = errno;			\
60	(void)seteuid(original_effective_uid);	\
61	errno = save_errno;			\
62} while (0)
63
64#define PRIV_END do {				\
65	int save_errno = errno;			\
66	(void)seteuid(original_real_uid);	\
67	errno = save_errno;			\
68} while (0)
69
70#endif
71