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