6 * Copyright 1988 by the Massachusetts Institute of Technology.
8 * For copying and distribution information, please see the file
11 * Definitions for Kerberos administration server & client
17 #include <mit-copyright.h>
20 * Header file for the fourth attempt at an admin server
21 * Doug Church, December 28, 1989, MIT Project Athena
24 /* for those broken Unixes without this defined... should be in sys/param.h */
25 #ifndef MAXHOSTNAMELEN
26 #define MAXHOSTNAMELEN 64
29 #include <sys/types.h>
30 #include <netinet/in.h>
34 /* The global structures for the client and server */
36 struct sockaddr_in admin_addr;
37 struct sockaddr_in my_addr;
39 int admin_fd; /* file descriptor for link to admin server */
40 char sname[ANAME_SZ]; /* the service name */
41 char sinst[INST_SZ]; /* the services instance */
42 char krbrlm[REALM_SZ];
45 typedef struct { /* status of the server, i.e the parameters */
46 int inter; /* Space for command line flags */
47 char *sysfile; /* filename of server */
48 } admin_params; /* Well... it's the admin's parameters */
50 /* Largest password length to be supported */
51 #define MAX_KPW_LEN 128
53 /* Largest packet the admin server will ever allow itself to return */
54 #define KADM_RET_MAX 2048
56 /* That's right, versions are 8 byte strings */
57 #define KADM_VERSTR "KADM0.0A"
58 #define KADM_ULOSE "KYOULOSE" /* sent back when server can't
59 decrypt client's msg */
60 #define KADM_VERSIZE strlen(KADM_VERSTR)
62 /* the lookups for the server instances */
63 #define PWSERV_NAME "changepw"
64 #define KADM_SNAME "kerberos_master"
65 #define KADM_SINST "kerberos"
67 /* Attributes fields constants and macros */
74 /* Kadm_vals structure for passing db fields into the server routines */
78 u_char fields[FLDSZ]; /* The active fields in this struct */
80 char instance[INST_SZ];
81 unsigned long key_low;
82 unsigned long key_high;
83 unsigned long exp_date;
84 unsigned short attributes;
85 unsigned char max_life;
86 } Kadm_vals; /* The basic values structure in Kadm */
88 /* Kadm_vals structure for passing db fields into the server routines */
91 /* Need to define fields types here */
94 #define KADM_EXPDATE 29
96 #define KADM_MAXLIFE 27
97 #define KADM_DESKEY 26
99 /* To set a field entry f in a fields structure d */
100 #define SET_FIELD(f,d) (d[3-(f/8)]|=(1<<(f%8)))
102 /* To set a field entry f in a fields structure d */
103 #define CLEAR_FIELD(f,d) (d[3-(f/8)]&=(~(1<<(f%8))))
105 /* Is field f in fields structure d */
106 #define IS_FIELD(f,d) (d[3-(f/8)]&(1<<(f%8)))
108 /* Various return codes */
109 #define KADM_SUCCESS 0
111 #define WILDCARD_STR "*"
119 /* Various opcodes for the admin server's functions */
125 extern long kdb_get_master_key(); /* XXX should be in krb_db.h */
126 extern long kdb_verify_master_key(); /* XXX ditto */
128 extern long krb_mk_priv(), krb_rd_priv(); /* XXX should be in krb.h */
129 extern void krb_set_tkt_string(); /* XXX ditto */
131 extern unsigned long quad_cksum(); /* XXX should be in des.h */
133 /* XXX This doesn't belong here!!! */
134 char *malloc(), *realloc();
136 typedef void sigtype;