monitor_wrap.h revision 126277
11556Srgrimes/*	$OpenBSD: monitor_wrap.h,v 1.13 2003/11/17 11:06:07 markus Exp $	*/
21556Srgrimes/*	$FreeBSD: head/crypto/openssh/monitor_wrap.h 126277 2004-02-26 10:52:33Z des $	*/
31556Srgrimes
41556Srgrimes/*
51556Srgrimes * Copyright 2002 Niels Provos <provos@citi.umich.edu>
61556Srgrimes * All rights reserved.
71556Srgrimes *
81556Srgrimes * Redistribution and use in source and binary forms, with or without
91556Srgrimes * modification, are permitted provided that the following conditions
101556Srgrimes * are met:
111556Srgrimes * 1. Redistributions of source code must retain the above copyright
121556Srgrimes *    notice, this list of conditions and the following disclaimer.
131556Srgrimes * 2. Redistributions in binary form must reproduce the above copyright
141556Srgrimes *    notice, this list of conditions and the following disclaimer in the
151556Srgrimes *    documentation and/or other materials provided with the distribution.
161556Srgrimes *
171556Srgrimes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
181556Srgrimes * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
191556Srgrimes * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
201556Srgrimes * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
211556Srgrimes * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
221556Srgrimes * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
231556Srgrimes * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
241556Srgrimes * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
251556Srgrimes * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
261556Srgrimes * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
271556Srgrimes */
281556Srgrimes
291556Srgrimes#ifndef _MM_WRAP_H_
301556Srgrimes#define _MM_WRAP_H_
311556Srgrimes#include "key.h"
321556Srgrimes#include "buffer.h"
331556Srgrimes
341556Srgrimesextern int use_privsep;
351556Srgrimes#define PRIVSEP(x)	(use_privsep ? mm_##x : x)
361556Srgrimes
371556Srgrimesenum mm_keytype {MM_NOKEY, MM_HOSTKEY, MM_USERKEY, MM_RSAHOSTKEY, MM_RSAUSERKEY};
3820420Ssteve
391556Srgrimesstruct monitor;
401556Srgrimesstruct mm_master;
411556Srgrimesstruct passwd;
421556Srgrimesstruct Authctxt;
431556Srgrimes
4436049Scharnierint mm_is_monitor(void);
4536049ScharnierDH *mm_choose_dh(int, int, int);
4636049Scharnierint mm_key_sign(Key *, u_char **, u_int *, u_char *, u_int);
4736049Scharniervoid mm_inform_authserv(char *, char *);
4836383Sstevestruct passwd *mm_getpwnamallow(const char *);
491556Srgrimeschar *mm_auth2_read_banner(void);
501556Srgrimesint mm_auth_password(struct Authctxt *, char *);
511556Srgrimesint mm_key_allowed(enum mm_keytype, char *, char *, Key *);
521556Srgrimesint mm_user_key_allowed(struct passwd *, Key *);
531556Srgrimesint mm_hostbased_key_allowed(struct passwd *, char *, char *, Key *);
541556Srgrimesint mm_auth_rhosts_rsa_key_allowed(struct passwd *, char *, char *, Key *);
5531664Seivindint mm_key_verify(Key *, u_char *, u_int, u_char *, u_int);
561556Srgrimesint mm_auth_rsa_key_allowed(struct passwd *, BIGNUM *, Key **);
571556Srgrimesint mm_auth_rsa_verify_response(Key *, BIGNUM *, u_char *);
581556SrgrimesBIGNUM *mm_auth_rsa_generate_challenge(Key *);
591556Srgrimes
601556Srgrimes#ifdef GSSAPI
611556Srgrimes#include "ssh-gss.h"
621556SrgrimesOM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **ctxt, gss_OID oid);
631556SrgrimesOM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *ctxt,
641556Srgrimes   gss_buffer_desc *recv, gss_buffer_desc *send, OM_uint32 *flags);
651556Srgrimesint mm_ssh_gssapi_userok(char *user);
661556SrgrimesOM_uint32 mm_ssh_gssapi_checkmic(Gssctxt *, gss_buffer_t, gss_buffer_t);
671556Srgrimes#endif
681556Srgrimes
691556Srgrimes#ifdef USE_PAM
701556Srgrimesvoid mm_start_pam(char *);
711556Srgrimesu_int mm_do_pam_account(void);
721556Srgrimesvoid *mm_sshpam_init_ctx(struct Authctxt *);
731556Srgrimesint mm_sshpam_query(void *, char **, char **, u_int *, char ***, u_int **);
741556Srgrimesint mm_sshpam_respond(void *, u_int, char **);
751556Srgrimesvoid mm_sshpam_free_ctx(void *);
761556Srgrimes#endif
771556Srgrimes
781556Srgrimesstruct Session;
791556Srgrimesvoid mm_terminate(void);
801556Srgrimesint mm_pty_allocate(int *, int *, char *, int);
811556Srgrimesvoid mm_session_pty_cleanup2(struct Session *);
821556Srgrimes
831556Srgrimes/* SSHv1 interfaces */
841556Srgrimesvoid mm_ssh1_session_id(u_char *);
8524348Simpint mm_ssh1_session_key(BIGNUM *);
861556Srgrimes
871556Srgrimes/* Key export functions */
8814154Swoschstruct Newkeys *mm_newkeys_from_blob(u_char *, int);
8914166Swoschint mm_newkeys_to_blob(int, u_char **, u_int *);
901556Srgrimes
911556Srgrimesvoid monitor_apply_keystate(struct monitor *);
921556Srgrimesvoid mm_get_keystate(struct monitor *);
9314166Swoschvoid mm_send_keystate(struct monitor*);
941556Srgrimes
951556Srgrimes/* bsdauth */
961556Srgrimesint mm_bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **);
971556Srgrimesint mm_bsdauth_respond(void *, u_int, char **);
9814305Swosch
991556Srgrimes/* skey */
1001556Srgrimesint mm_skey_query(void *, char **, char **, u_int *, char ***, u_int **);
1011556Srgrimesint mm_skey_respond(void *, u_int, char **);
1021556Srgrimes
1031556Srgrimes/* zlib allocation hooks */
1041556Srgrimes
1051556Srgrimesvoid *mm_zalloc(struct mm_master *, u_int, u_int);
1061556Srgrimesvoid mm_zfree(struct mm_master *, void *);
1071556Srgrimesvoid mm_init_compression(struct mm_master *);
1081556Srgrimes
1091556Srgrimes#endif /* _MM_H_ */
1101556Srgrimes