merge new-crypto branch
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@5332 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
10
kadmin/ank.c
10
kadmin/ank.c
@@ -88,7 +88,15 @@ add_new_key(int argc, char **argv)
|
||||
password = "hemlig";
|
||||
}
|
||||
if(password == NULL){
|
||||
if(des_read_pw_string(pwbuf, sizeof(pwbuf), "Password: ", 1))
|
||||
char *princ_name;
|
||||
char *prompt;
|
||||
|
||||
krb5_unparse_name(context, princ_ent, &princ_name);
|
||||
asprintf (&prompt, "%s's Password: ", princ_name);
|
||||
free (princ_name);
|
||||
ret = des_read_pw_string (pwbuf, sizeof(pwbuf), prompt, 1);
|
||||
free (prompt);
|
||||
if (ret)
|
||||
goto out;
|
||||
password = pwbuf;
|
||||
}
|
||||
|
12
kadmin/cpw.c
12
kadmin/cpw.c
@@ -61,17 +61,21 @@ usage(void)
|
||||
static int
|
||||
do_cpw_entry(krb5_principal principal, void *data)
|
||||
{
|
||||
char *pw, pwbuf[128], prompt[128], *pr;
|
||||
char *pw, pwbuf[128];
|
||||
struct cpw_entry_data *e = data;
|
||||
krb5_error_code ret = 0;
|
||||
|
||||
pw = e->password;
|
||||
if(e->random == 0){
|
||||
if(pw == NULL){
|
||||
krb5_unparse_name(context, principal, &pr);
|
||||
snprintf(prompt, sizeof(prompt), "%s's Password: ", pr);
|
||||
free(pr);
|
||||
char *princ_name;
|
||||
char *prompt;
|
||||
|
||||
krb5_unparse_name(context, principal, &princ_name);
|
||||
asprintf(&prompt, "%s's Password: ", princ_name);
|
||||
free (princ_name);
|
||||
ret = des_read_pw_string(pwbuf, sizeof(pwbuf), prompt, 1);
|
||||
free (prompt);
|
||||
if(ret){
|
||||
return 0; /* XXX error code? */
|
||||
}
|
||||
|
@@ -50,7 +50,7 @@ RCSID("$Id$");
|
||||
kvno
|
||||
keys...
|
||||
mkvno (unused)
|
||||
keytype
|
||||
enctype
|
||||
keyvalue
|
||||
salt (- means use normal salt)
|
||||
creation date and principal
|
||||
@@ -67,10 +67,24 @@ RCSID("$Id$");
|
||||
static void
|
||||
append_hex(char *str, krb5_data *data)
|
||||
{
|
||||
int i;
|
||||
char *p = calloc(1, data->length * 2 + 1);
|
||||
int i, s = 1;
|
||||
char *p;
|
||||
p = data->data;
|
||||
for(i = 0; i < data->length; i++)
|
||||
sprintf(p + 2 * i, "%02x", ((u_char*)data->data)[i]);
|
||||
if(!isalnum(p[i]) && p[i] != '.'){
|
||||
s = 0;
|
||||
break;
|
||||
}
|
||||
if(s){
|
||||
p = calloc(1, data->length + 2 + 1);
|
||||
p[0] = '\"';
|
||||
p[data->length + 1] = '\"';
|
||||
memcpy(p + 1, data->data, data->length);
|
||||
}else{
|
||||
p = calloc(1, data->length * 2 + 1);
|
||||
for(i = 0; i < data->length; i++)
|
||||
sprintf(p + 2 * i, "%02x", ((u_char*)data->data)[i]);
|
||||
}
|
||||
strcat(str, p);
|
||||
free(p);
|
||||
}
|
||||
@@ -117,6 +131,20 @@ hdb_entry2string(hdb_entry *ent, char **str)
|
||||
ent->keys.val[i].key.keytype);
|
||||
strcat(buf, p);
|
||||
free(p);
|
||||
#if 0
|
||||
if(ent->keys.val[i].enctypes != NULL) {
|
||||
int j;
|
||||
for(j = 0; j < ent->keys.val[i].enctypes->len; j++) {
|
||||
char tmp[16];
|
||||
snprintf(tmp, sizeof(tmp), "%u",
|
||||
ent->keys.val[i].enctypes->val[j]);
|
||||
if(j > 0)
|
||||
strcat(buf, ",");
|
||||
strcat(buf, tmp);
|
||||
}
|
||||
}
|
||||
strcat(buf, ":");
|
||||
#endif
|
||||
append_hex(buf, &ent->keys.val[i].key.keyvalue);
|
||||
strcat(buf, ":");
|
||||
if(ent->keys.val[i].salt){
|
||||
@@ -174,6 +202,7 @@ hdb_entry2string(hdb_entry *ent, char **str)
|
||||
asprintf(&p, "%d", HDBFlags2int(ent->flags));
|
||||
strcat(buf, p);
|
||||
free(p);
|
||||
#if 0
|
||||
|
||||
strcat(buf, " ");
|
||||
if(ent->etypes == NULL || ent->etypes->len == 0)
|
||||
@@ -187,6 +216,7 @@ hdb_entry2string(hdb_entry *ent, char **str)
|
||||
strcat(buf, ":");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
*str = strdup(buf);
|
||||
|
||||
|
@@ -147,10 +147,14 @@ parse_keys(hdb_entry *ent, char *str)
|
||||
key->salt->type = type;
|
||||
|
||||
if (p_len) {
|
||||
krb5_data_alloc(&key->salt->salt, (p_len - 1) / 2 + 1);
|
||||
for(i = 0; i < p_len; i += 2){
|
||||
sscanf(p + i, "%02x", &tmp);
|
||||
((u_char*)key->salt->salt.data)[i / 2] = tmp;
|
||||
if(*p == '\"'){
|
||||
krb5_data_copy(&key->salt->salt, p + 1, p_len - 2);
|
||||
}else{
|
||||
krb5_data_alloc(&key->salt->salt, (p_len - 1) / 2 + 1);
|
||||
for(i = 0; i < p_len; i += 2){
|
||||
sscanf(p + i, "%02x", &tmp);
|
||||
((u_char*)key->salt->salt.data)[i / 2] = tmp;
|
||||
}
|
||||
}
|
||||
} else
|
||||
krb5_data_zero (&key->salt->salt);
|
||||
@@ -184,11 +188,12 @@ parse_hdbflags2int(char *str)
|
||||
return int2HDBFlags(i);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void
|
||||
parse_etypes(char *str, unsigned **val, unsigned *len)
|
||||
{
|
||||
unsigned v;
|
||||
|
||||
|
||||
*val = NULL;
|
||||
*len = 0;
|
||||
while(sscanf(str, "%u", &v) == 1) {
|
||||
@@ -200,6 +205,7 @@ parse_etypes(char *str, unsigned **val, unsigned *len)
|
||||
str++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
doit(char *filename, int merge)
|
||||
@@ -292,12 +298,14 @@ doit(char *filename, int merge)
|
||||
ent.max_life = parse_integer(NULL, e.max_life);
|
||||
ent.max_renew = parse_integer(NULL, e.max_renew);
|
||||
ent.flags = parse_hdbflags2int(e.flags);
|
||||
#if 0
|
||||
ALLOC(ent.etypes);
|
||||
parse_etypes(e.etypes, &ent.etypes->val, &ent.etypes->len);
|
||||
if(ent.etypes->len == 0) {
|
||||
free(ent.etypes);
|
||||
ent.etypes = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
db->store(context, db, 1, &ent);
|
||||
hdb_free_entry (context, &ent);
|
||||
|
Reference in New Issue
Block a user