openpam_impl.h revision 91094
198184Sgordon/*- 298184Sgordon * Copyright (c) 2001 Networks Associates Technologies, Inc. 398184Sgordon * All rights reserved. 498184Sgordon * 598184Sgordon * This software was developed for the FreeBSD Project by ThinkSec AS and 698184Sgordon * NAI Labs, the Security Research Division of Network Associates, Inc. 798184Sgordon * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the 8136224Smtm * DARPA CHATS research program. 998184Sgordon * 1098184Sgordon * Redistribution and use in source and binary forms, with or without 1198184Sgordon * modification, are permitted provided that the following conditions 1298184Sgordon * are met: 1398184Sgordon * 1. Redistributions of source code must retain the above copyright 1498184Sgordon * notice, this list of conditions and the following disclaimer. 1598184Sgordon * 2. Redistributions in binary form must reproduce the above copyright 16222993Srmacklem * notice, this list of conditions and the following disclaimer in the 1798184Sgordon * documentation and/or other materials provided with the distribution. 1898184Sgordon * 3. The name of the author may not be used to endorse or promote 1998184Sgordon * products derived from this software without specific prior written 2098184Sgordon * permission. 2198184Sgordon * 2298184Sgordon * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2398184Sgordon * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2498184Sgordon * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25197947Sdougb * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 26197947Sdougb * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27180294Smtm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28180294Smtm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29180294Smtm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3098184Sgordon * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3198184Sgordon * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32180294Smtm * SUCH DAMAGE. 33180294Smtm * 34180294Smtm * $Id$ 3598184Sgordon */ 3698184Sgordon 3798184Sgordon#ifndef _OPENPAM_IMPL_H_INCLUDED 3898184Sgordon#define _OPENPAM_IMPL_H_INCLUDED 3998184Sgordon 4098184Sgordon#include <security/openpam.h> 4198184Sgordon 4298184Sgordonextern const char *_pam_sm_func_name[PAM_NUM_PRIMITIVES]; 4398184Sgordon 4498184Sgordon/* 4598184Sgordon * Control flags 4698184Sgordon */ 4798184Sgordon#define PAM_REQUIRED 1 4898184Sgordon#define PAM_REQUISITE 2 4998184Sgordon#define PAM_SUFFICIENT 3 5098184Sgordon#define PAM_OPTIONAL 4 51#define PAM_NUM_CONTROLFLAGS 5 52 53/* 54 * Chains 55 */ 56#define PAM_AUTH 0 57#define PAM_ACCOUNT 1 58#define PAM_SESSION 2 59#define PAM_PASSWORD 3 60#define PAM_NUM_CHAINS 4 61 62typedef struct pam_chain pam_chain_t; 63struct pam_chain { 64 pam_module_t *module; 65 int flag; 66 int optc; 67 char **optv; 68 pam_chain_t *next; 69}; 70 71#define PAM_NUM_ITEMS 10 72 73typedef struct pam_data pam_data_t; 74struct pam_data { 75 char *name; 76 void *data; 77 void (*cleanup)(pam_handle_t *, void *, int); 78 pam_data_t *next; 79}; 80 81struct pam_handle { 82 char *service; 83 84 /* chains */ 85 pam_chain_t *chains[PAM_NUM_CHAINS]; 86 pam_chain_t *current; 87 88 /* items and data */ 89 void *item[PAM_NUM_ITEMS]; 90 pam_data_t *module_data; 91 92 /* environment list */ 93 char **env; 94 int env_count; 95 int env_size; 96}; 97 98#define PAM_OTHER "other" 99 100int openpam_dispatch(pam_handle_t *, int, int); 101int openpam_findenv(pam_handle_t *, const char *, size_t); 102int openpam_add_module(pam_handle_t *, int, int, 103 const char *, int, const char **); 104void openpam_clear_chains(pam_handle_t *); 105 106#endif 107