1323124Sdes/* $OpenBSD: monitor_wrap.h,v 1.30 2016/03/07 19:02:43 djm Exp $ */
298675Sdes
398675Sdes/*
498675Sdes * Copyright 2002 Niels Provos <provos@citi.umich.edu>
598675Sdes * All rights reserved.
698675Sdes *
798675Sdes * Redistribution and use in source and binary forms, with or without
898675Sdes * modification, are permitted provided that the following conditions
998675Sdes * are met:
1098675Sdes * 1. Redistributions of source code must retain the above copyright
1198675Sdes *    notice, this list of conditions and the following disclaimer.
1298675Sdes * 2. Redistributions in binary form must reproduce the above copyright
1398675Sdes *    notice, this list of conditions and the following disclaimer in the
1498675Sdes *    documentation and/or other materials provided with the distribution.
1598675Sdes *
1698675Sdes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1798675Sdes * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1898675Sdes * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1998675Sdes * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
2098675Sdes * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2198675Sdes * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2298675Sdes * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2398675Sdes * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2498675Sdes * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2598675Sdes * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2698675Sdes */
2798675Sdes
2898675Sdes#ifndef _MM_WRAP_H_
2998675Sdes#define _MM_WRAP_H_
3098675Sdes
3198675Sdesextern int use_privsep;
3298675Sdes#define PRIVSEP(x)	(use_privsep ? mm_##x : x)
3398675Sdes
3498675Sdesenum mm_keytype {MM_NOKEY, MM_HOSTKEY, MM_USERKEY, MM_RSAHOSTKEY, MM_RSAUSERKEY};
3598675Sdes
3698675Sdesstruct monitor;
3798675Sdesstruct mm_master;
3898675Sdesstruct Authctxt;
3998675Sdes
40226046Sdesvoid mm_log_handler(LogLevel, const char *, void *);
41126277Sdesint mm_is_monitor(void);
4298675SdesDH *mm_choose_dh(int, int, int);
43296781Sdesint mm_key_sign(Key *, u_char **, u_int *, const u_char *, u_int, const char *);
4498675Sdesvoid mm_inform_authserv(char *, char *);
4598675Sdesstruct passwd *mm_getpwnamallow(const char *);
46106130Sdeschar *mm_auth2_read_banner(void);
4798675Sdesint mm_auth_password(struct Authctxt *, char *);
48323124Sdesint mm_key_allowed(enum mm_keytype, const char *, const char *, Key *, int);
49295367Sdesint mm_user_key_allowed(struct passwd *, Key *, int);
50323124Sdesint mm_hostbased_key_allowed(struct passwd *, const char *,
51323124Sdes    const char *, Key *);
52323124Sdesint mm_auth_rhosts_rsa_key_allowed(struct passwd *, const char *,
53323124Sdes    const char *, Key *);
5498675Sdesint mm_key_verify(Key *, u_char *, u_int, u_char *, u_int);
5598675Sdesint mm_auth_rsa_key_allowed(struct passwd *, BIGNUM *, Key **);
5698675Sdesint mm_auth_rsa_verify_response(Key *, BIGNUM *, u_char *);
5798675SdesBIGNUM *mm_auth_rsa_generate_challenge(Key *);
5898675Sdes
59124211Sdes#ifdef GSSAPI
60137019SdesOM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID);
61137019SdesOM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *,
62137019Sdes   gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *);
63124211Sdesint mm_ssh_gssapi_userok(char *user);
64126277SdesOM_uint32 mm_ssh_gssapi_checkmic(Gssctxt *, gss_buffer_t, gss_buffer_t);
65124211Sdes#endif
66124211Sdes
6798937Sdes#ifdef USE_PAM
68128460Sdesvoid mm_start_pam(struct Authctxt *);
69124211Sdesu_int mm_do_pam_account(void);
70124211Sdesvoid *mm_sshpam_init_ctx(struct Authctxt *);
71124211Sdesint mm_sshpam_query(void *, char **, char **, u_int *, char ***, u_int **);
72124211Sdesint mm_sshpam_respond(void *, u_int, char **);
73124211Sdesvoid mm_sshpam_free_ctx(void *);
7498937Sdes#endif
7598937Sdes
76147005Sdes#ifdef SSH_AUDIT_EVENTS
77147005Sdes#include "audit.h"
78147005Sdesvoid mm_audit_event(ssh_audit_event_t);
79147005Sdesvoid mm_audit_run_command(const char *);
80147005Sdes#endif
81147005Sdes
82126277Sdesstruct Session;
8398675Sdesvoid mm_terminate(void);
84162856Sdesint mm_pty_allocate(int *, int *, char *, size_t);
85126277Sdesvoid mm_session_pty_cleanup2(struct Session *);
8698675Sdes
8798675Sdes/* SSHv1 interfaces */
8898675Sdesvoid mm_ssh1_session_id(u_char *);
8998675Sdesint mm_ssh1_session_key(BIGNUM *);
9098675Sdes
9198675Sdes/* Key export functions */
92295367Sdesstruct newkeys *mm_newkeys_from_blob(u_char *, int);
9398675Sdesint mm_newkeys_to_blob(int, u_char **, u_int *);
9498675Sdes
9598675Sdesvoid monitor_apply_keystate(struct monitor *);
9698675Sdesvoid mm_get_keystate(struct monitor *);
9798675Sdesvoid mm_send_keystate(struct monitor*);
9898675Sdes
9998675Sdes/* bsdauth */
10098675Sdesint mm_bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **);
10198675Sdesint mm_bsdauth_respond(void *, u_int, char **);
10298675Sdes
10398675Sdes/* skey */
10498675Sdesint mm_skey_query(void *, char **, char **, u_int *, char ***, u_int **);
10598675Sdesint mm_skey_respond(void *, u_int, char **);
10698675Sdes
10798675Sdes/* zlib allocation hooks */
10898675Sdesvoid mm_init_compression(struct mm_master *);
10998675Sdes
110162856Sdes#endif /* _MM_WRAP_H_ */
111