include shadow definition of kdb Principal, so we don't have to depend
on any v4 libraries git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9506 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
16
kdc/hprop.h
16
kdc/hprop.h
@@ -55,7 +55,21 @@ struct prop_data{
|
|||||||
|
|
||||||
krb5_error_code v5_prop(krb5_context, HDB*, hdb_entry*, void*);
|
krb5_error_code v5_prop(krb5_context, HDB*, hdb_entry*, void*);
|
||||||
int mit_prop_dump(void*, const char*);
|
int mit_prop_dump(void*, const char*);
|
||||||
int v4_prop(void*, Principal*);
|
|
||||||
|
struct v4_principal {
|
||||||
|
char name[64];
|
||||||
|
char instance[64];
|
||||||
|
des_cblock key;
|
||||||
|
int kvno;
|
||||||
|
int mkvno;
|
||||||
|
time_t exp_date;
|
||||||
|
time_t mod_date;
|
||||||
|
char mod_name[64];
|
||||||
|
char mod_instance[64];
|
||||||
|
int max_life;
|
||||||
|
};
|
||||||
|
|
||||||
|
int v4_prop(void*, struct v4_principal*);
|
||||||
int v4_prop_dump(void *arg, const char*);
|
int v4_prop_dump(void *arg, const char*);
|
||||||
|
|
||||||
#endif /* __HPROP_H__ */
|
#endif /* __HPROP_H__ */
|
||||||
|
@@ -35,7 +35,6 @@
|
|||||||
|
|
||||||
RCSID("$Id$");
|
RCSID("$Id$");
|
||||||
|
|
||||||
#ifdef KRB4
|
|
||||||
static time_t
|
static time_t
|
||||||
time_parse(const char *cp)
|
time_parse(const char *cp)
|
||||||
{
|
{
|
||||||
@@ -82,6 +81,7 @@ time_parse(const char *cp)
|
|||||||
return(tm2time(tp, local));
|
return(tm2time(tp, local));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* convert a version 4 dump file */
|
||||||
int
|
int
|
||||||
v4_prop_dump(void *arg, const char *file)
|
v4_prop_dump(void *arg, const char *file)
|
||||||
{
|
{
|
||||||
@@ -96,17 +96,17 @@ v4_prop_dump(void *arg, const char *file)
|
|||||||
while(fgets(buf, sizeof(buf), f)) {
|
while(fgets(buf, sizeof(buf), f)) {
|
||||||
int ret;
|
int ret;
|
||||||
unsigned long key[2]; /* yes, long */
|
unsigned long key[2]; /* yes, long */
|
||||||
int life, kkvno, kvno;
|
|
||||||
char exp_date[64], mod_date[64];
|
char exp_date[64], mod_date[64];
|
||||||
Principal pr;
|
struct v4_principal pr;
|
||||||
|
int attributes;
|
||||||
|
|
||||||
memset(&pr, 0, sizeof(pr));
|
memset(&pr, 0, sizeof(pr));
|
||||||
errno = 0;
|
errno = 0;
|
||||||
lineno++;
|
lineno++;
|
||||||
ret = sscanf(buf, "%s %s %d %d %d %hd %lx %lx %s %s %s %s",
|
ret = sscanf(buf, "%s %s %d %d %d %d %lx %lx %s %s %s %s",
|
||||||
pr.name, pr.instance,
|
pr.name, pr.instance,
|
||||||
&life, &kkvno, &kvno,
|
&pr.max_life, &pr.mkvno, &pr.kvno,
|
||||||
&pr.attributes,
|
&attributes,
|
||||||
&key[0], &key[1],
|
&key[0], &key[1],
|
||||||
exp_date, mod_date,
|
exp_date, mod_date,
|
||||||
pr.mod_name, pr.mod_instance);
|
pr.mod_name, pr.mod_instance);
|
||||||
@@ -114,11 +114,19 @@ v4_prop_dump(void *arg, const char *file)
|
|||||||
warnx("Line %d malformed (ignored)", lineno);
|
warnx("Line %d malformed (ignored)", lineno);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
pr.key_low = ntohl (key[0]);
|
if(attributes != 0) {
|
||||||
pr.key_high = ntohl (key[1]);
|
warnx("Line %d (%s.%s) has non-zero attributes - skipping",
|
||||||
pr.max_life = life;
|
lineno, pr.name, pr.instance);
|
||||||
pr.kdc_key_ver = kkvno;
|
continue;
|
||||||
pr.key_version = kvno;
|
}
|
||||||
|
pr.key[0] = (key[0] >> 24) & 0xff;
|
||||||
|
pr.key[1] = (key[0] >> 16) & 0xff;
|
||||||
|
pr.key[2] = (key[0] >> 8) & 0xff;
|
||||||
|
pr.key[3] = (key[0] >> 0) & 0xff;
|
||||||
|
pr.key[4] = (key[1] >> 24) & 0xff;
|
||||||
|
pr.key[5] = (key[1] >> 16) & 0xff;
|
||||||
|
pr.key[6] = (key[1] >> 8) & 0xff;
|
||||||
|
pr.key[7] = (key[1] >> 0) & 0xff;
|
||||||
pr.exp_date = time_parse(exp_date);
|
pr.exp_date = time_parse(exp_date);
|
||||||
pr.mod_date = time_parse(mod_date);
|
pr.mod_date = time_parse(mod_date);
|
||||||
if (pr.instance[0] == '*')
|
if (pr.instance[0] == '*')
|
||||||
@@ -132,4 +140,3 @@ v4_prop_dump(void *arg, const char *file)
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
Reference in New Issue
Block a user