Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
krb5_keytab_intro(3)	   Heimdal Kerberos 5 library	    krb5_keytab_intro(3)

NAME
     krb5_keytab_intro - The keytab handing functions

Kerberos Keytabs
     See  the  library	functions here: Heimdal Kerberos 5 keytab handling func-
     tions

     Keytabs are long term key storage for servers, their equvalment of password
     files.

     Normally the only function that useful  for  server  are  to  specify  what
     keytab to use to other core functions like krb5_rd_req() krb5_kt_resolve(),
     and krb5_kt_close().

   Keytab names
     A	keytab	name is on the form type:residual. The residual part is specific
     to each keytab-type.

     When a keytab-name is resolved, the type is matched with an  internal  list
     of keytab types. If there is no matching keytab type, the default keytab is
     used. The current default type is FILE.

     The  default  value can be changed in the configuration file /etc/krb5.conf
     by setting the variable [defaults]default_keytab_name.

     The keytab types that are implemented in Heimdal are:

     * file store the keytab in a file, the type's name is FILE .  The	residual
       part  is  a  filename. For compatibility with other Kerberos implemtation
       WRFILE and JAVA14 is also accepted. WRFILE has the same format  as  FILE.
       JAVA14  have  a format that is compatible with older versions of MIT ker-
       beros and SUN's Java based installation. They store a truncted  kvno,  so
       when the knvo excess 255, they are truncted in this format.

     * keytab store the keytab in a AFS keyfile (usually /usr/afs/etc/KeyFile ),
       the type's name is AFSKEYFILE. The residual part is a filename.

     * memory  The  keytab  is stored in a memory segment. This allows sensitive
       and/or temporary data not to be stored on disk. The type's name	is  MEM-
       ORY. Each MEMORY keytab is referenced counted by and opened by the resid-
       ual name, so two handles can point to the same memory area. When the last
       user  closes using krb5_kt_close() the keytab, the keys in they keytab is
       memset() to zero and freed and can no longer be looked up by name.

   Keytab example
     This is a minimalistic version of ktutil.

     int
     main (int argc, char **argv)
     {
	 krb5_context context;
	 krb5_keytab keytab;
	 krb5_kt_cursor cursor;
	 krb5_keytab_entry entry;
	 krb5_error_code ret;
	 char *principal;

	 if (krb5_init_context (&context) != 0)
	     errx(1, "krb5_context");

	 ret = krb5_kt_default (context, &keytab);
	 if (ret)
	     krb5_err(context, 1, ret, "krb5_kt_default");

	 ret = krb5_kt_start_seq_get(context, keytab, &cursor);
	 if (ret)
	     krb5_err(context, 1, ret, "krb5_kt_start_seq_get");
	 while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){
	     krb5_unparse_name(context, entry.principal, &principal);
	     printf("principal: %s0, principal);
	     free(principal);
	     krb5_kt_free_entry(context, &entry);
	 }
	 ret = krb5_kt_end_seq_get(context, keytab, &cursor);
	 if (ret)
	     krb5_err(context, 1, ret, "krb5_kt_end_seq_get");
	 ret = krb5_kt_close(context, keytab);
	 if (ret)
	     krb5_err(context, 1, ret, "krb5_kt_close");
	 krb5_free_context(context);
	 return 0;
     }

Version 7.8.0			 Tue Nov 15 2022	    krb5_keytab_intro(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=krb5_keytab_intro&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help