hdb: Derive pw_end for virtual services
commitcd2e423d103ba06516bd817f354679236e9954f3
authorNicolas Williams <nico@twosigma.com>
Mon, 25 Apr 2022 22:21:34 +0000 (25 17:21 -0500)
committerNicolas Williams <nico@twosigma.com>
Tue, 26 Apr 2022 03:24:51 +0000 (25 22:24 -0500)
tree30e8b2d6a1ddc059f4f4daa8c0219222bdd9364c
parenta51708c3569289b1a09a4c803ab25a154a840463
hdb: Derive pw_end for virtual services

We derive keysets for virtual host-based service principals, and that
includes the `set_time` field of keys.  But applications using the kadm5
API lose that information.  Our httpkadmind wants to set a Cache-Control
header with an appropriate max-age so that clients know when to re-fetch
keytabs.

We could extract some of the lib/hdb/common.c functions so that
httpkadmind could re-create an HDB_entry from a kadm5 entry then compute
the desired time, but ultimately we already have an appropriate field in
the HDB_entry and kadm5_principal_ent_rec types: "password expiration".

So let's set the `pw_end` of a virtual host-based service's HDB entry to
the time when a client should next fetch the principal's keys, and we'll
use that in httpkadmind as the `pw_expiration` field of the kadm5 entry
type.
lib/hdb/common.c