1226046Sdes/* $OpenBSD: monitor_wrap.h,v 1.23 2011/06/17 21:44:31 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);
4398675Sdesint mm_key_sign(Key *, u_char **, u_int *, u_char *, u_int);
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 *);
4898675Sdesint mm_key_allowed(enum mm_keytype, char *, char *, Key *);
4998675Sdesint mm_user_key_allowed(struct passwd *, Key *);
5098675Sdesint mm_hostbased_key_allowed(struct passwd *, char *, char *, Key *);
5198675Sdesint mm_auth_rhosts_rsa_key_allowed(struct passwd *, char *, char *, Key *);
5298675Sdesint mm_key_verify(Key *, u_char *, u_int, u_char *, u_int);
5398675Sdesint mm_auth_rsa_key_allowed(struct passwd *, BIGNUM *, Key **);
5498675Sdesint mm_auth_rsa_verify_response(Key *, BIGNUM *, u_char *);
5598675SdesBIGNUM *mm_auth_rsa_generate_challenge(Key *);
5698675Sdes
57124211Sdes#ifdef GSSAPI
58137019SdesOM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID);
59137019SdesOM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *,
60137019Sdes   gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *);
61124211Sdesint mm_ssh_gssapi_userok(char *user);
62126277SdesOM_uint32 mm_ssh_gssapi_checkmic(Gssctxt *, gss_buffer_t, gss_buffer_t);
63124211Sdes#endif
64124211Sdes
6598937Sdes#ifdef USE_PAM
66128460Sdesvoid mm_start_pam(struct Authctxt *);
67124211Sdesu_int mm_do_pam_account(void);
68124211Sdesvoid *mm_sshpam_init_ctx(struct Authctxt *);
69124211Sdesint mm_sshpam_query(void *, char **, char **, u_int *, char ***, u_int **);
70124211Sdesint mm_sshpam_respond(void *, u_int, char **);
71124211Sdesvoid mm_sshpam_free_ctx(void *);
7298937Sdes#endif
7398937Sdes
74147005Sdes#ifdef SSH_AUDIT_EVENTS
75147005Sdes#include "audit.h"
76147005Sdesvoid mm_audit_event(ssh_audit_event_t);
77147005Sdesvoid mm_audit_run_command(const char *);
78147005Sdes#endif
79147005Sdes
80126277Sdesstruct Session;
8198675Sdesvoid mm_terminate(void);
82162856Sdesint mm_pty_allocate(int *, int *, char *, size_t);
83126277Sdesvoid mm_session_pty_cleanup2(struct Session *);
8498675Sdes
8598675Sdes/* SSHv1 interfaces */
8698675Sdesvoid mm_ssh1_session_id(u_char *);
8798675Sdesint mm_ssh1_session_key(BIGNUM *);
8898675Sdes
8998675Sdes/* Key export functions */
9098675Sdesstruct Newkeys *mm_newkeys_from_blob(u_char *, int);
9198675Sdesint mm_newkeys_to_blob(int, u_char **, u_int *);
9298675Sdes
9398675Sdesvoid monitor_apply_keystate(struct monitor *);
9498675Sdesvoid mm_get_keystate(struct monitor *);
9598675Sdesvoid mm_send_keystate(struct monitor*);
9698675Sdes
9798675Sdes/* bsdauth */
9898675Sdesint mm_bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **);
9998675Sdesint mm_bsdauth_respond(void *, u_int, char **);
10098675Sdes
10198675Sdes/* skey */
10298675Sdesint mm_skey_query(void *, char **, char **, u_int *, char ***, u_int **);
10398675Sdesint mm_skey_respond(void *, u_int, char **);
10498675Sdes
105192595Sdes/* jpake */
106197679Sdesstruct modp_group;
107192595Sdesvoid mm_auth2_jpake_get_pwdata(struct Authctxt *, BIGNUM **, char **, char **);
108197679Sdesvoid mm_jpake_step1(struct modp_group *, u_char **, u_int *,
109192595Sdes    BIGNUM **, BIGNUM **, BIGNUM **, BIGNUM **,
110192595Sdes    u_char **, u_int *, u_char **, u_int *);
111197679Sdesvoid mm_jpake_step2(struct modp_group *, BIGNUM *,
112192595Sdes    BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *,
113192595Sdes    const u_char *, u_int, const u_char *, u_int,
114192595Sdes    const u_char *, u_int, const u_char *, u_int,
115192595Sdes    BIGNUM **, u_char **, u_int *);
116197679Sdesvoid mm_jpake_key_confirm(struct modp_group *, BIGNUM *, BIGNUM *,
117192595Sdes    BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *, BIGNUM *,
118192595Sdes    const u_char *, u_int, const u_char *, u_int,
119192595Sdes    const u_char *, u_int, const u_char *, u_int,
120192595Sdes    BIGNUM **, u_char **, u_int *);
121192595Sdesint mm_jpake_check_confirm(const BIGNUM *,
122192595Sdes    const u_char *, u_int, const u_char *, u_int, const u_char *, u_int);
123192595Sdes
124192595Sdes
12598675Sdes/* zlib allocation hooks */
12698675Sdes
12798675Sdesvoid *mm_zalloc(struct mm_master *, u_int, u_int);
12898675Sdesvoid mm_zfree(struct mm_master *, void *);
12998675Sdesvoid mm_init_compression(struct mm_master *);
13098675Sdes
131162856Sdes#endif /* _MM_WRAP_H_ */
132