1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* 23*7c478bd9Sstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 24*7c478bd9Sstevel@tonic-gate * Use is subject to license terms. 25*7c478bd9Sstevel@tonic-gate */ 26*7c478bd9Sstevel@tonic-gate 27*7c478bd9Sstevel@tonic-gate #ifndef _SECDB_H 28*7c478bd9Sstevel@tonic-gate #define _SECDB_H 29*7c478bd9Sstevel@tonic-gate 30*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 31*7c478bd9Sstevel@tonic-gate 32*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 33*7c478bd9Sstevel@tonic-gate extern "C" { 34*7c478bd9Sstevel@tonic-gate #endif 35*7c478bd9Sstevel@tonic-gate 36*7c478bd9Sstevel@tonic-gate 37*7c478bd9Sstevel@tonic-gate #define DEFAULT_POLICY "solaris" 38*7c478bd9Sstevel@tonic-gate #define SUSER_POLICY "suser" /* fallback: old policy */ 39*7c478bd9Sstevel@tonic-gate 40*7c478bd9Sstevel@tonic-gate #define KV_ACTION "act" 41*7c478bd9Sstevel@tonic-gate #define KV_COMMAND "cmd" 42*7c478bd9Sstevel@tonic-gate #define KV_JAVA_CLASS "java_class" 43*7c478bd9Sstevel@tonic-gate #define KV_JAVA_METHOD "java_method" 44*7c478bd9Sstevel@tonic-gate 45*7c478bd9Sstevel@tonic-gate #define KV_ASSIGN "=" 46*7c478bd9Sstevel@tonic-gate #define KV_DELIMITER ";" 47*7c478bd9Sstevel@tonic-gate #define KV_EMPTY "" 48*7c478bd9Sstevel@tonic-gate #define KV_ESCAPE '\\' 49*7c478bd9Sstevel@tonic-gate #define KV_ADD_KEYS 16 /* number of key value pairs to realloc */ 50*7c478bd9Sstevel@tonic-gate #define KV_SPECIAL "=;:\\"; 51*7c478bd9Sstevel@tonic-gate #define KV_TOKEN_DELIMIT ":" 52*7c478bd9Sstevel@tonic-gate #define KV_WILDCARD "*" 53*7c478bd9Sstevel@tonic-gate #define KV_WILDCHAR '*' 54*7c478bd9Sstevel@tonic-gate #define KV_ACTION_WILDCARD "*;*;*;*;*" 55*7c478bd9Sstevel@tonic-gate 56*7c478bd9Sstevel@tonic-gate #define KV_FLAG_NONE 0x0000 57*7c478bd9Sstevel@tonic-gate #define KV_FLAG_REQUIRED 0x0001 58*7c478bd9Sstevel@tonic-gate 59*7c478bd9Sstevel@tonic-gate /* 60*7c478bd9Sstevel@tonic-gate * return status macros for all attribute databases 61*7c478bd9Sstevel@tonic-gate */ 62*7c478bd9Sstevel@tonic-gate #define ATTR_FOUND 0 /* Authoritative found */ 63*7c478bd9Sstevel@tonic-gate #define ATTR_NOT_FOUND -1 /* Authoritative not found */ 64*7c478bd9Sstevel@tonic-gate #define ATTR_NO_RECOVERY -2 /* Non-recoverable errors */ 65*7c478bd9Sstevel@tonic-gate 66*7c478bd9Sstevel@tonic-gate 67*7c478bd9Sstevel@tonic-gate typedef struct kv_s { 68*7c478bd9Sstevel@tonic-gate char *key; 69*7c478bd9Sstevel@tonic-gate char *value; 70*7c478bd9Sstevel@tonic-gate } kv_t; /* A key-value pair */ 71*7c478bd9Sstevel@tonic-gate 72*7c478bd9Sstevel@tonic-gate typedef struct kva_s { 73*7c478bd9Sstevel@tonic-gate int length; /* array length */ 74*7c478bd9Sstevel@tonic-gate kv_t *data; /* array of key value pairs */ 75*7c478bd9Sstevel@tonic-gate } kva_t; /* Key-value array */ 76*7c478bd9Sstevel@tonic-gate 77*7c478bd9Sstevel@tonic-gate 78*7c478bd9Sstevel@tonic-gate #ifdef __STDC__ 79*7c478bd9Sstevel@tonic-gate extern char *kva_match(kva_t *, char *); 80*7c478bd9Sstevel@tonic-gate 81*7c478bd9Sstevel@tonic-gate extern int _auth_match(const char *, const char *); 82*7c478bd9Sstevel@tonic-gate extern char *_argv_to_csl(char **strings); 83*7c478bd9Sstevel@tonic-gate extern char **_csl_to_argv(char *csl); 84*7c478bd9Sstevel@tonic-gate extern char *_do_unescape(char *src); 85*7c478bd9Sstevel@tonic-gate extern void _free_argv(char **p_argv); 86*7c478bd9Sstevel@tonic-gate extern int _get_auth_policy(char **, char **); 87*7c478bd9Sstevel@tonic-gate extern int _insert2kva(kva_t *, char *, char *); 88*7c478bd9Sstevel@tonic-gate extern int _kva2str(kva_t *, char *, int, char *, char *); 89*7c478bd9Sstevel@tonic-gate extern kva_t *_kva_dup(kva_t *); 90*7c478bd9Sstevel@tonic-gate extern void _kva_free(kva_t *); 91*7c478bd9Sstevel@tonic-gate extern kva_t *_new_kva(int size); 92*7c478bd9Sstevel@tonic-gate extern kva_t *_str2kva(char *, char *, char *); 93*7c478bd9Sstevel@tonic-gate 94*7c478bd9Sstevel@tonic-gate #else /* not __STDC__ */ 95*7c478bd9Sstevel@tonic-gate 96*7c478bd9Sstevel@tonic-gate extern char *kva_match(); 97*7c478bd9Sstevel@tonic-gate 98*7c478bd9Sstevel@tonic-gate extern int _auth_match(); 99*7c478bd9Sstevel@tonic-gate extern char *_argv_to_csl(); 100*7c478bd9Sstevel@tonic-gate extern char **_csl_to_argv(); 101*7c478bd9Sstevel@tonic-gate extern char *_do_unescape(); 102*7c478bd9Sstevel@tonic-gate extern void _free_argv(); 103*7c478bd9Sstevel@tonic-gate extern int _get_auth_policy(); 104*7c478bd9Sstevel@tonic-gate extern int _insert2kva(); 105*7c478bd9Sstevel@tonic-gate extern int _kva2str(); 106*7c478bd9Sstevel@tonic-gate extern kva_t *_kva_dup(); 107*7c478bd9Sstevel@tonic-gate extern void _kva_free(kva_t *); 108*7c478bd9Sstevel@tonic-gate extern kva_t *_new_kva(); 109*7c478bd9Sstevel@tonic-gate extern int _str2kva(); 110*7c478bd9Sstevel@tonic-gate #endif /* __STDC__ */ 111*7c478bd9Sstevel@tonic-gate 112*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 113*7c478bd9Sstevel@tonic-gate } 114*7c478bd9Sstevel@tonic-gate #endif 115*7c478bd9Sstevel@tonic-gate 116*7c478bd9Sstevel@tonic-gate #endif /* _SECDB_H */ 117