[RFC] kdb: store mkey list in context and permit NULL mkey for kdb_dbe_decrypt_key_data
Will Fiveash
will.fiveash at oracle.com
Mon Feb 27 20:22:30 EST 2012
On Wed, Feb 22, 2012 at 11:09:52PM -0500, Greg Hudson wrote:
> On 02/22/2012 07:03 PM, Will Fiveash wrote:
> > krb5_db_fetch_mkey_list() would
> > be modified to just update that field and not return that master_keylist
> > in an output parameter as it does now. It would free the existing mkey
> > list if v->fetch_master_key_list() succeeded and set
> > kcontext->dal_handle->master_keylist to the new mkey list. It would not
> > set the context->dal_handle->free_keylist as I don't think this is
> > needed. kdb_free_lib_handle() would free dal_handle->master_keylist if
> > it was not NULL. Is this a reasonable modification?
>
> I'm all for simplifying the interface if possible, but I think there are
> some uses of the master key list in kdb5_util which aren't as easily
> removed, including:
I added:
+krb5_keylist_node *
+krb5_dbe_mkey_list(krb5_context kcontext)
+{
+ return kcontext->dal_handle->master_keylist;
+}
to usr/src/lib/krb5/kdb/kdb5.c as an accessor function for things that
need to go through the master_keylist but find the dal_handle struct to
be opaque. Here is that list (this is Solaris code):
Functions calling this function: krb5_dbe_mkey_list
File Function Line
1 krb5/kadmin/dbutil/kdb5_mkey.c add_new_mkey 86 krb5_keylist_node *master_keylist =
krb5_dbe_mkey_list(context);
2 krb5/kadmin/dbutil/kdb5_mkey.c kdb5_use_mkey 465 krb5_keylist_node *master_keylist =
krb5_dbe_mkey_list(util_context);
3 krb5/kadmin/dbutil/kdb5_mkey.c kdb5_list_mkeys 736 krb5_keylist_node *master_keylist =
krb5_dbe_mkey_list(util_context);
4 krb5/kadmin/dbutil/kdb5_mkey.c kdb5_update_princ_encryption 1144 krb5_keylist_node *master_keylist =
krb5_dbe_mkey_list(util_context);
5 krb5/kadmin/dbutil/kdb5_mkey.c kdb5_purge_mkeys 1368 krb5_keylist_node *master_keylist =
krb5_dbe_mkey_list(util_context);
> * kdb5_util ark (why do we even have this?) needs to encrypt the new key
> in the same master key as the old one. Probably krb5_dbe_ark() could be
> changed to use the dal_handle master key list.
That's a good question. Checking the ark command out it just adds a set
of random keys to a princ. When I run:
svn blame src/kadmin/dbutil/kdb5_util.c
I see:
13028 epeisach static void
11001 marc add_random_key(argc, argv)
11001 marc int argc;
11001 marc char **argv;
11001 marc {
11001 marc krb5_error_code ret;
11001 marc krb5_principal princ;
This is:
r11001 | marc | 1998-10-29 20:56:35 -0600 (Thu, 29 Oct 1998) | 2 lines
pull up 3des implementation from the marc-3des branch
I'm wondering if anyone actually uses this? Googling didn't bring up
anything interesting.
> * kdb5_util add_mkey needs to iterate over the master key list to create
> krb5_mkey_aux_nodes.
>
> * kdb5_util use_mkey needs to iterate over the master key list to verify
> that the kvno is valid.
>
> * kdb5_util list_mkeys needs to iterate over the master key list to
> display entries.
I'm still testing my changes but in general things look good and there
are no mem leaks.
--
Will Fiveash
Oracle Solaris Software Engineer
http://opensolaris.org/os/project/kerberos/
Sent using mutt, a sweet, text based e-mail app <http://www.mutt.org/>
More information about the krbdev
mailing list