static void parse_file(krb5_context context, krb5_principal principal, int no_salt) { krb5_error_code ret; size_t nkeys; Key *keys; ret = hdb_generate_key_set(context, principal, &keys, &nkeys, no_salt); if (ret) krb5_err(context, 1, ret, "hdb_generate_key_set"); print_keys(context, keys, nkeys); hdb_free_keys(context, nkeys, keys); }
krb5_error_code hdb_generate_key_set_password(krb5_context context, krb5_principal principal, const char *password, krb5_key_salt_tuple *ks_tuple, int n_ks_tuple, Key **keys, size_t *num_keys) { krb5_error_code ret; size_t i; ret = hdb_generate_key_set(context, principal, ks_tuple, n_ks_tuple, keys, num_keys, 0); if (ret) return ret; for (i = 0; i < (*num_keys); i++) { krb5_salt salt; Key *key = &(*keys)[i]; salt.salttype = key->salt->type; salt.saltvalue.length = key->salt->salt.length; salt.saltvalue.data = key->salt->salt.data; ret = krb5_string_to_key_salt (context, key->key.keytype, password, salt, &key->key); if(ret) break; } if(ret) { hdb_free_keys (context, *num_keys, *keys); return ret; } return ret; }
void _kadm5_free_keys (krb5_context context, int len, Key *keys) { hdb_free_keys(context, len, keys); }