Home | History | Annotate | Line # | Download | only in kadmin
      1 /*	$NetBSD: kadmin_locl.h,v 1.2 2017/01/28 21:31:44 christos Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 1997-2004 Kungliga Tekniska Hgskolan
      5  * (Royal Institute of Technology, Stockholm, Sweden).
      6  * All rights reserved.
      7  *
      8  * Redistribution and use in source and binary forms, with or without
      9  * modification, are permitted provided that the following conditions
     10  * are met:
     11  *
     12  * 1. Redistributions of source code must retain the above copyright
     13  *    notice, this list of conditions and the following disclaimer.
     14  *
     15  * 2. Redistributions in binary form must reproduce the above copyright
     16  *    notice, this list of conditions and the following disclaimer in the
     17  *    documentation and/or other materials provided with the distribution.
     18  *
     19  * 3. Neither the name of the Institute nor the names of its contributors
     20  *    may be used to endorse or promote products derived from this software
     21  *    without specific prior written permission.
     22  *
     23  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
     24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
     27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     30  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     33  * SUCH DAMAGE.
     34  */
     35 
     36 /*
     37  * Id
     38  */
     39 
     40 #ifndef __ADMIN_LOCL_H__
     41 #define __ADMIN_LOCL_H__
     42 
     43 #include <config.h>
     44 
     45 #include <stdio.h>
     46 #include <stdlib.h>
     47 #include <string.h>
     48 #include <ctype.h>
     49 #include <errno.h>
     50 #include <limits.h>
     51 #ifdef HAVE_SYS_TYPES_H
     52 #include <sys/types.h>
     53 #endif
     54 #ifdef HAVE_SYS_SELECT_H
     55 #include <sys/select.h>
     56 #endif
     57 #ifdef HAVE_FCNTL_H
     58 #include <fcntl.h>
     59 #endif
     60 #ifdef HAVE_SYS_SOCKET_H
     61 #include <sys/socket.h>
     62 #endif
     63 #ifdef HAVE_SYS_SELECT_H
     64 #include <sys/select.h>
     65 #endif
     66 #ifdef HAVE_NETINET_IN_H
     67 #include <netinet/in.h>
     68 #endif
     69 #ifdef HAVE_NETINET_IN6_H
     70 #include <netinet/in6.h>
     71 #endif
     72 #ifdef HAVE_NETINET6_IN6_H
     73 #include <netinet6/in6.h>
     74 #endif
     75 
     76 #ifdef HAVE_UTIL_H
     77 #include <util.h>
     78 #endif
     79 #ifdef HAVE_LIBUTIL_H
     80 #include <libutil.h>
     81 #endif
     82 #ifdef HAVE_NETDB_H
     83 #include <netdb.h>
     84 #endif
     85 #ifdef HAVE_SYS_UN_H
     86 #include <sys/un.h>
     87 #endif
     88 #include <err.h>
     89 #include <krb5/roken.h>
     90 #include <krb5/krb5.h>
     91 #include <krb5_locl.h>
     92 #include <krb5/hdb.h>
     93 #include <krb5/hdb_err.h>
     94 #include <krb5/hex.h>
     95 #include <kadm5/admin.h>
     96 #include <kadm5/private.h>
     97 #include <kadm5/kadm5_err.h>
     98 #include <krb5/parse_time.h>
     99 #include <krb5/getarg.h>
    100 
    101 extern krb5_context context;
    102 extern void * kadm_handle;
    103 
    104 #undef ALLOC
    105 #define ALLOC(X) ((X) = malloc(sizeof(*(X))))
    106 
    107 /* util.c */
    108 
    109 void attributes2str(krb5_flags, char *, size_t);
    110 int  str2attributes(const char *, krb5_flags *);
    111 int  parse_attributes (const char *, krb5_flags *, int *, int);
    112 int  edit_attributes (const char *, krb5_flags *, int *, int);
    113 
    114 int  parse_policy (const char *, char **, int *, int);
    115 int  edit_policy (const char *, char **, int *, int);
    116 
    117 void time_t2str(time_t, char *, size_t, int);
    118 int  str2time_t (const char *, time_t *);
    119 int  parse_timet (const char *, krb5_timestamp *, int *, int);
    120 int  edit_timet (const char *, krb5_timestamp *, int *,
    121 		 int);
    122 
    123 void deltat2str(unsigned, char *, size_t);
    124 int  str2deltat(const char *, krb5_deltat *);
    125 int  parse_deltat (const char *, krb5_deltat *, int *, int);
    126 int  edit_deltat (const char *, krb5_deltat *, int *, int);
    127 
    128 int edit_entry(kadm5_principal_ent_t, int *, kadm5_principal_ent_t, int);
    129 void set_defaults(kadm5_principal_ent_t, int *, kadm5_principal_ent_t, int);
    130 int set_entry(krb5_context, kadm5_principal_ent_t, int *,
    131 	      const char *, const char *, const char *,
    132 	      const char *, const char *, const char *);
    133 int
    134 foreach_principal(const char *, int (*)(krb5_principal, void*),
    135 		  const char *, void *);
    136 
    137 int parse_des_key (const char *, krb5_key_data *, const char **);
    138 
    139 /* random_password.c */
    140 
    141 void
    142 random_password(char *, size_t);
    143 
    144 /* kadm_conn.c */
    145 
    146 extern sig_atomic_t term_flag, doing_useful_work;
    147 
    148 void parse_ports(krb5_context, const char*);
    149 void start_server(krb5_context, const char*);
    150 
    151 /* server.c */
    152 
    153 krb5_error_code
    154 kadmind_loop (krb5_context, krb5_keytab, int);
    155 
    156 /* rpc.c */
    157 
    158 int
    159 handle_mit(krb5_context, void *, size_t, int);
    160 
    161 
    162 #endif /* __ADMIN_LOCL_H__ */
    163