2 * $Id: kadm.h,v 1.17 1998/10/23 14:25:55 joda Exp $
4 * Copyright 1988 by the Massachusetts Institute of Technology.
6 * For copying and distribution information, please see the file
9 * Definitions for Kerberos administration server & client
17 * Header file for the fourth attempt at an admin server
18 * Doug Church, December 28, 1989, MIT Project Athena
23 /* The global structures for the client and server */
25 struct sockaddr_in admin_addr;
26 struct sockaddr_in my_addr;
28 int admin_fd; /* file descriptor for link to admin server */
29 char sname[ANAME_SZ]; /* the service name */
30 char sinst[INST_SZ]; /* the services instance */
31 char krbrlm[REALM_SZ];
34 typedef struct { /* status of the server, i.e the parameters */
35 int inter; /* Space for command line flags */
36 char *sysfile; /* filename of server */
37 } admin_params; /* Well... it's the admin's parameters */
39 /* Largest password length to be supported */
40 #define MAX_KPW_LEN 128
41 /* Minimum allowed password length */
44 /* Largest packet the admin server will ever allow itself to return */
45 #define KADM_RET_MAX 2048
47 /* That's right, versions are 8 byte strings */
48 #define KADM_VERSTR "KADM0.0A"
49 #define KADM_ULOSE "KYOULOSE" /* sent back when server can't
50 decrypt client's msg */
51 #define KADM_VERSIZE strlen(KADM_VERSTR)
53 /* the lookups for the server instances */
54 #define PWSERV_NAME "changepw"
55 #define KADM_SNAME "kerberos_master"
57 #define KADM_SINST "kerberos"
59 /* Attributes fields constants and macros */
66 /* Kadm_vals structure for passing db fields into the server routines */
69 /* XXX enable new extended kadm fields */
70 #define EXTENDED_KADM 1
73 u_int8_t fields[FLDSZ]; /* The active fields in this struct */
75 char instance[INST_SZ];
83 char mod_name[ANAME_SZ];
84 char mod_instance[INST_SZ];
87 } Kadm_vals; /* The basic values structure in Kadm */
89 /* Need to define fields types here */
92 #define KADM_EXPDATE 29
94 #define KADM_MAXLIFE 27
95 #define KADM_DESKEY 26
98 #define KADM_MODDATE 25
99 #define KADM_MODNAME 24
100 #define KADM_MODINST 23
104 /* To set a field entry f in a fields structure d */
105 #define SET_FIELD(f,d) (d[3-(f/8)]|=(1<<(f%8)))
107 /* To set a field entry f in a fields structure d */
108 #define CLEAR_FIELD(f,d) (d[3-(f/8)]&=(~(1<<(f%8))))
110 /* Is field f in fields structure d */
111 #define IS_FIELD(f,d) (d[3-(f/8)]&(1<<(f%8)))
113 /* Various return codes */
114 #define KADM_SUCCESS 0
116 #define WILDCARD_STR "*"
122 STABACL, /* not used */
126 /* Various opcodes for the admin server's functions */
131 #define CHECK_PW 6 /* not used */
132 #define CHG_STAB 7 /* not used */
135 void prin_vals __P((Kadm_vals *));
136 int stv_long __P((u_char *, u_int32_t *, int, int));
137 int vts_long __P((u_int32_t, u_char **, int));
138 int vts_string __P((char *, u_char **, int));
139 int stv_string __P((u_char *, char *, int, int, int));
141 int stream_to_vals __P((u_char *, Kadm_vals *, int));
142 int vals_to_stream __P((Kadm_vals *, u_char **));
144 int kadm_init_link __P((char *, char *, char *));
145 int kadm_change_pw __P((unsigned char *));
146 int kadm_change_pw_plain __P((unsigned char *, char *, char**));
147 int kadm_change_pw2 __P((unsigned char *, char *, char**));
148 int kadm_mod __P((Kadm_vals *, Kadm_vals *));
149 int kadm_get __P((Kadm_vals *, u_char *));
150 int kadm_add __P((Kadm_vals *));
151 int kadm_del __P((Kadm_vals *));
152 void kadm_vals_to_prin __P((u_char *, Principal *, Kadm_vals *));
153 void kadm_prin_to_vals __P((u_char *, Kadm_vals *, Principal *));
154 int kadm_check_pw __P((const char*));
156 #endif /* KADM_DEFS */