kadm5_ret_t principal_exists(krb5_principal principal);
krb5_error_code kdb_init_master(kadm5_server_handle_t handle,
char *r, int from_keyboard);
+krb5_error_code kdb_get_active_mkey(kadm5_server_handle_t handle,
+ krb5_kvno *act_kvno_out,
+ krb5_keyblock **act_mkey_out);
krb5_error_code kdb_init_hist(kadm5_server_handle_t handle,
char *r);
krb5_error_code kdb_get_hist_key(kadm5_server_handle_t handle,
krb5_principal master_princ;
krb5_keyblock master_keyblock; /* local mkey */
-krb5_actkvno_node *active_mkey_list = NULL;
krb5_db_entry master_db;
krb5_principal hist_princ;
return (ret);
}
- if ((ret = krb5_dbe_fetch_act_key_list(handle->context, master_princ,
- &active_mkey_list))) {
- krb5_db_fini(handle->context);
- return (ret);
- }
-
done:
if (r == NULL)
free(realm);
return(ret);
}
+/* Fetch the currently active master key version number and keyblock. */
+krb5_error_code
+kdb_get_active_mkey(kadm5_server_handle_t handle, krb5_kvno *act_kvno_out,
+ krb5_keyblock **act_mkey_out)
+{
+ krb5_error_code ret;
+ krb5_actkvno_node *active_mkey_list;
+
+ ret = krb5_dbe_fetch_act_key_list(handle->context, master_princ,
+ &active_mkey_list);
+ if (ret)
+ return ret;
+ ret = krb5_dbe_find_act_mkey(handle->context, active_mkey_list,
+ act_kvno_out, act_mkey_out);
+ krb5_dbe_free_actkvno_list(handle->context, active_mkey_list);
+ return ret;
+}
+
/*
* Function: kdb_init_hist
*
extern krb5_principal master_princ;
extern krb5_principal hist_princ;
extern krb5_keyblock master_keyblock;
-extern krb5_actkvno_node *active_mkey_list;
extern krb5_db_entry master_db;
static int decrypt_key_data(krb5_context context,
/* initialize the keys */
- ret = krb5_dbe_find_act_mkey(handle->context, active_mkey_list, &act_kvno,
- &act_mkey);
+ ret = kdb_get_active_mkey(handle, &act_kvno, &act_mkey);
if (ret)
goto cleanup;
principal)))
goto done;
- ret = krb5_dbe_find_act_mkey(handle->context, active_mkey_list, &act_kvno,
- &act_mkey);
+ ret = kdb_get_active_mkey(handle, &act_kvno, &act_mkey);
if (ret)
goto done;
new_n_ks_tuple = 1;
}
- ret = krb5_dbe_find_act_mkey(handle->context, active_mkey_list, NULL,
- &act_mkey);
+ ret = kdb_get_active_mkey(handle, NULL, &act_mkey);
if (ret)
goto done;
keysalt.data.length = 0;
keysalt.data.data = NULL;
- ret = krb5_dbe_find_act_mkey(handle->context, active_mkey_list, NULL,
- &act_mkey);
+ ret = kdb_get_active_mkey(handle, NULL, &act_mkey);
if (ret)
goto done;
}
memset (&tmp_key_data, 0, sizeof(tmp_key_data));
- ret = krb5_dbe_find_act_mkey(handle->context, active_mkey_list, NULL,
- &act_mkey);
+ ret = kdb_get_active_mkey(handle, NULL, &act_mkey);
if (ret)
goto done;