home | help
HDB(3)			       Heimdal hdb library			  HDB(3)

NAME
     HDB

SYNOPSIS
     #include <hdb.h>

   Data Fields
     char * hdb_name
     krb5_error_code(* hdb_open )(krb5_context, struct HDB *, int, mode_t)
     krb5_error_code(* hdb_close )(krb5_context, struct HDB *)
     void(* hdb_free )(krb5_context, struct HDB *, hdb_entry_ex *)
     krb5_error_code(*	  hdb_fetch_kvno    )(krb5_context,    struct	HDB   *,
	 krb5_const_principal, unsigned, krb5_kvno, hdb_entry_ex *)
     krb5_error_code(* hdb_store )(krb5_context, struct HDB *, unsigned, hdb_en-
	 try_ex *)
     krb5_error_code(*	hdb_remove  )(krb5_context,  struct  HDB  *,   unsigned,
	 krb5_const_principal)
     krb5_error_code(*	hdb_firstkey  )(krb5_context,  struct  HDB  *, unsigned,
	 hdb_entry_ex *)
     krb5_error_code(*	hdb_nextkey  )(krb5_context,  struct  HDB  *,  unsigned,
	 hdb_entry_ex *)
     krb5_error_code(* hdb_lock )(krb5_context, struct HDB *, int)
     krb5_error_code(* hdb_unlock )(krb5_context, struct HDB *)
     krb5_error_code(* hdb_rename )(krb5_context, struct HDB *, const char *)
     krb5_error_code(*	 hdb__get   )(krb5_context,  struct  HDB  *,  krb5_data,
	 krb5_data *)
     krb5_error_code(* hdb__put )(krb5_context, struct HDB  *,	int,  krb5_data,
	 krb5_data)
     krb5_error_code(* hdb__del )(krb5_context, struct HDB *, krb5_data)
     krb5_error_code(* hdb_destroy )(krb5_context, struct HDB *)
     krb5_error_code(*	hdb_get_realms	)(krb5_context, struct HDB *, krb5_realm
	 **)
     krb5_error_code(* hdb_password )(krb5_context, struct HDB	*,  hdb_entry_ex
	 *, const char *, int)
     krb5_error_code(*	hdb_auth_status  )(krb5_context,  struct  HDB *, hdb_en-
	 try_ex *, int)
     krb5_error_code(* hdb_check_constrained_delegation  )(krb5_context,  struct
	 HDB *, hdb_entry_ex *, krb5_const_principal)
     krb5_error_code(*	hdb_check_pkinit_ms_upn_match )(krb5_context, struct HDB
	 *, hdb_entry_ex *, krb5_const_principal)
     krb5_error_code(* hdb_check_s4u2self )(krb5_context, struct HDB *,  hdb_en-
	 try_ex *, krb5_const_principal)
     krb5_error_code(* hdb_set_sync )(krb5_context, struct HDB *, int)

Detailed Description
     HDB backend function pointer structure

     The  HDB  structure is what the KDC and kadmind framework uses to query the
     backend database when talking about principals.

Field Documentation
   krb5_error_code(* HDB::hdb__del) (krb5_context, struct HDB *, krb5_data)
     Delete and hdb_entry from a classical DB backend

     This function takes a  principal  key  (krb5_data)  naming  the  record  to
     delete.

     Same discussion as in HDB::hdb__put

   krb5_error_code(*  HDB::hdb__get)  (krb5_context,  struct  HDB  *, krb5_data,
     krb5_data *)
     Get an hdb_entry from a classical DB backend

     This function takes a principal key (krb5_data) and returns  all  data  re-
     lated  to	principal in the return krb5_data. The returned encoded entry is
     of type hdb_entry or hdb_entry_alias.

   krb5_error_code(* HDB::hdb__put) (krb5_context, struct HDB *, int, krb5_data,
     krb5_data)
     Store an hdb_entry from a classical DB backend

     This function takes a principal key (krb5_data) and  encoded  hdb_entry  or
     hdb_entry_alias as the data to store.

     For  a file-based DB, this must synchronize to disk when done. This is sub-
     optimal for kadm5_s_rename_principal(), and for  kadm5_s_modify_principal()
     when using principal aliases; to improve this so that only one fsync() need
     be done per-transaction will require HDB API extensions.

   krb5_error_code(*  HDB::hdb_auth_status) (krb5_context, struct HDB *, hdb_en-
     try_ex *, int)
     Auth feedback

     This is a feedback call that allows backends that	provides  lockout  func-
     tionality to register failure and/or successes.

     In  case  the  entry  is  locked  out,  the  backend should set the hdb_en-
     try.flags.locked-out flag.

   krb5_error_code(*	HDB::hdb_check_constrained_delegation)	  (krb5_context,
     struct HDB *, hdb_entry_ex *, krb5_const_principal)
     Check if delegation is allowed.

   krb5_error_code(*  HDB::hdb_check_pkinit_ms_upn_match)  (krb5_context, struct
     HDB *, hdb_entry_ex *, krb5_const_principal)
     Check if this name is an alias for the supplied  client  for  PKINIT  user-
     PrinicpalName logins

   krb5_error_code(*   HDB::hdb_check_s4u2self)  (krb5_context,  struct  HDB  *,
     hdb_entry_ex *, krb5_const_principal)
     Check if s4u2self is allowed from this client to this server

   krb5_error_code(* HDB::hdb_close) (krb5_context, struct HDB *)
     Close the database for transaction

     Closes the database for further transactions, wont  release  any  permanant
     resources. the database can be ->hdb_open-ed again.

   krb5_error_code(* HDB::hdb_destroy) (krb5_context, struct HDB *)
     Destroy the handle to the database.

     Destroy  the  handle to the database, deallocate all memory and related re-
     sources. Does not remove any permanent data. Its  the  logical  reverse  of
     hdb_create() function that is the entry point for the module.

   krb5_error_code(*   HDB::hdb_fetch_kvno)   (krb5_context,   struct	HDB   *,
     krb5_const_principal, unsigned, krb5_kvno, hdb_entry_ex *)
     Fetch an entry from the backend

     Fetch an entry from the backend, flags are what type  of  entry  should  be
     fetch:   client,	server,   krbtgt.   knvo   (if	 specified   and   flags
     HDB_F_KVNO_SPECIFIED set) is the kvno to get

   krb5_error_code(* HDB::hdb_firstkey) (krb5_context, struct HDB  *,  unsigned,
     hdb_entry_ex *)
     As part of iteration, fetch one entry

   void(* HDB::hdb_free) (krb5_context, struct HDB *, hdb_entry_ex *)
     Free an entry after use.

   krb5_error_code(*   HDB::hdb_get_realms)   (krb5_context,   struct	HDB   *,
     krb5_realm **)
     Get the list of realms this backend handles. This call is optional to  sup-
     port.  The returned realms are used for announcing the realms over bonjour.
     Free returned array with krb5_free_host_realm().

   krb5_error_code(* HDB::hdb_lock) (krb5_context, struct HDB *, int)
     Lock database

     A lock can only be held by one consumers. Transaction can still  happen  on
     the  database  while the lock is held, so the entry is only useful for syn-
     croning creation of the database and renaming of the database.

   char* HDB::hdb_name
     don't use, only for DB3

   krb5_error_code(* HDB::hdb_nextkey) (krb5_context, struct  HDB  *,  unsigned,
     hdb_entry_ex *)
     As part of iteration, fetch next entry

   krb5_error_code(* HDB::hdb_open) (krb5_context, struct HDB *, int, mode_t)
     Open (or create) the a Kerberos database.

     Open  (or	create)  the a Kerberos database that was resolved with hdb_cre-
     ate(). The third and fourth flag to the function are the  same  as  open(),
     thus passing O_CREAT will create the data base if it doesn't exists.

     Then  done the caller should call hdb_close(), and to release all resources
     hdb_destroy().

   krb5_error_code(* HDB::hdb_password) (krb5_context,	struct	HDB  *,  hdb_en-
     try_ex *, const char *, int)
     Change password.

     Will  update  keys  for the entry when given password. The new keys must be
     written into the entry and will then later be ->hdb_store() into the  data-
     base.  The  backend will still perform all other operations, increasing the
     kvno, and update modification timestamp.

     The backend needs to call _kadm5_set_keys() and  perform  password  quality
     checks.

   krb5_error_code(*  HDB::hdb_remove)	(krb5_context,	struct	HDB *, unsigned,
     krb5_const_principal)
     Remove an entry from the database.

   krb5_error_code(* HDB::hdb_rename) (krb5_context, struct HDB *, const char *)

     Rename the data base.

     Assume that the database is not hdb_open'ed and not locked.

   krb5_error_code(* HDB::hdb_set_sync) (krb5_context, struct HDB *, int)
     Enable/disable synchronous updates

     Calling this with 0 disables sync. Calling it with  non-zero  enables  sync
     and does an fsync().

   krb5_error_code(*  HDB::hdb_store)  (krb5_context,  struct  HDB  *, unsigned,
     hdb_entry_ex *)
     Store an entry to database

   krb5_error_code(* HDB::hdb_unlock) (krb5_context, struct HDB *)
     Unlock database

Author
     Generated automatically by Doxygen for Heimdal hdb library from the  source
     code.

Version 7.8.0			 Tue Nov 15 2022			  HDB(3)

home | help