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:
Johan Danielsson
1999-02-11 21:03:59 +00:00
parent 0a6c3f7fde
commit aaae186ab9
83 changed files with 4175 additions and 1509 deletions

View File

@@ -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;
}

View File

@@ -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? */
}

View File

@@ -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);

View File

@@ -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);