ultrix man page for kerberos

Query: kerberos

OS: ultrix

Section: 3krb

Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar

kerberos(3krb)															    kerberos(3krb)

Name
       kerberos - Kerberos authentication library routines

Syntax
	#include <des.h>
	#include <krb.h>

	int krb_mk_req(tkt_authen_out, f_service, f_instance,
				f_realm, checksum)
	KTEXT	 tkt_authen_out;
	char	      *f_service;
	char	      *f_instance;
	char	      *f_realm;
	u_long	      checksum;

	int krb_rd_req(tkt_authen_in, l_service, l_instance,
				f_hostaddr, ad, srvtab_file)
	KTEXT	 tkt_authen_in;
	char	      *l_service;
	char	      *l_instance;
	u_long	      f_hostaddr;
	AUTH_DAT *ad;
	char	      *srvtab_file;

	int krb_get_cred(f_service, f_instance,
				 f_realm, cred)
	char	      *f_service;
	char	      *f_instance;
	char	      *f_realm;
	CREDENTIALS   *cred;

	long	 krb_mk_safe(in, out, in_length, key,
				      l_addr, f_addr)
	u_char	      *in;
	u_char	      *out;
	u_long		   in_length;
	C_Block       *key;
	struct	 sockaddr_in	*l_addr;
	struct	 sockaddr_in	*f_addr;

	long	 krb_rd_safe(in, in_length, key, f_addr,
				      l_addr, msg_data)
	u_char	      *in;
	u_long		   in_length;
	C_Block       *key;
	struct	 sockaddr_in	*f_addr;
	struct	 sockaddr_in	*l_addr;
	MSG_DAT       *msg_data;

Arguments
       f_service Character  pointer  to  the  primary name of the foreign principal.  The local principal is the principal that calls the routines
		 listed above.	The local principal tries to communicate with the foreign principal.

       f_instance
		 Character pointer to the instance name of the foreign principal.

       f_realm	 Character pointer to the realm name of the foreign principal.

       l_service Character pointer to the primary name of the local principal.

       l_instance
		 Character pointer to the instance name of the local principal.

       tkt_authen_out
		 Pointer to the text structure in which the Kerberos library routines build the  ticket-authenticator  pair.   This  structure	is
		 designed  to  be  sent to the foreign principal to authenticate the local principal's identity to the foreign principal.  Storage
		 must be allocated for tkt_authen_out.

       tkt_authen_in
		 Pointer to the ticket-authenticator pair that the Kerberos library uses to authenticate the foreign principal to the local  prin-
		 cipal.   The data in this structure must have been generated by a call to by the foreign principal and transmitted by the foreign
		 principal to the local principal.

       checksum  The checksum parameter is input to It is packaged with the ticket-authenticator pair that is sent to the foreign principal.   The
		 checksum  serves  as a secret piece of data that can be known only to the foreign principal if the foreign principal is authenti-
		 cated as the foreign principal.  It is used to facilitate mutual authentication with and See for information about these two rou-
		 tines.

       f_hostaddr
		 Address of the machine from which the foreign principal sent the tkt_authen_in data.

       f_addr	 Address of the socket that the foreign principal is using to communicate with the local principal.

       l_addr	 Address of the socket that the local principal is using to communicate with the foreign principal.

       ad	 Pointer to the AUTH_DAT structure that describes the authentication association between the local and foreign principals.  The ad
		 structure is output from You must allocate space for the ad structure.

       srvtab_file
		 The path name of the file that contains the key of the principal obtaining a ticket.  If this value is set equal to a	string	of
		 zero  length,	the  default service table (srvtab) file is used.  If this value is set equal to the NULL pointer, then the key of
		 the service is not read from the srvtab file, but is read from storage space internal to the libraries.  The srvtab_file  parame-
		 ter  cannot  be set equal to the NULL string on the first call to The default srvtab file value is set to although this value can
		 be changed by a call to the function.	(See the reference page).

       key	 Pointer to the C_Block input to and It contains a Data Encryption Standard (DES) key.	The key that is usually used is  the  ses-
		 sion key between the local and foreign principal.

       cred	 A  pointer  to  a  credentials  structure  that  is  allocated by the caller of and filled with data by The credentials structure
		 includes the ticket that the local principal uses to authenticate the foreign principal.  It also includes  other  authentication
		 information associated with the foreign principal.

       in	 Character pointer to the user data that must be included in a safe message.

       out	 Character pointer to the safe message output by The in parameter may not overlap with out.

       in_length Length of the user data, in.

       msg_data  The  msg_data	parameter is a pointer to a MSG_DAT structure which must be allocated by the caller of and which is filled by with
		 information about the safe message.  A pointer to the user data sent within the safe message is also included in msg_data.

Description
       The calls are designed to be used by two principals that are attempting to authenticate themselves for the first time as  well  as  by  two
       principals that have authenticated once, but wish to authenticate all data passed between them.

       The and routines are designed to be used by applications that communicate over a network, require the authentication of both parties across
       the communication path, and support "on-the-wire" protocols in which authentication data can be placed.	These routines	perform  only  the
       authentication  of  the first message sent between such applications.  creates a ticket-authenticator pair that can be included in the "on-
       the-wire" protocol of an application, and reads the ticket-authenticator pair.

       The and routines are used by applications that require that every message passed between them be authenticated and free	from  unauthorized
       modifications,  and  whose  "on-the-wire" protocol has no room for authentication data.	These routines only provide for the authentication
       and integrity protection of a message if the first authenticated message has already been sent by the pair  or  the  pair.   See  for  more
       information about the latter pair.

       The routine encapsulates user data inside the "on-the-wire" message authentication protocol.  can interpret the message authentication pro-
       tocol and the message, and return the data encapsulated by Since any application which is modified to use or must encapsulate its  "on-the-
       wire"  protocol	within	the "on-the-wire" protocol of the application must develop a method of distinguishing between the old and new "on-
       the-wire" protocols.

       The routine (see can be used to provide some of the guarantees of the and routines without encapsulating the protocol of the application.

       The routines of this library make extensive use of the following locally defined data types: KTEXT,  AUTH_DAT,  CREDENTIALS,  C_Block,  and
       MSG_DAT.  For specific information on the definitions of these data types, see the and files.

Routines and Structures
       krb_mk_req

       Used  to produce the data necessary to authenticate a principal "A" to a principal "B".	It takes as input a checksum and the primary name,
       instance name, and realm name of the service to which the principal "A" is attempting to authenticate itself.  outputs a text structure	in
       which the ticket to communicate with principal "B" and an authenticator have been combined to form a ticket-authenticator pair.

       The application "A" must pass the ticket-authenticator pair to the principal "B" where it can be read by Once the ticket-authenticator pair
       has been read and verified, "A" has been authenticated to "B".  Unless an attacker possesses the session key contained in the  ticket,  the
       attacker will be unable to modify or replay the ticket-authenticator pair.

       The  checksum  can  be used with and to provide for the authentication of "B" to "A" after authenticates "A" to "B".  Although the checksum
       value can be any value known only to "A", it is recommended that the checksum value used differ every time is called.  The following  is  a
       list of the return values from and, if they are error codes, their possible cause:

       KFAILURE       file (see cannot be opened, or it is not properly formed.

       NO_TKT_FIL     The ticket file does not exist.

       TKT_FIL_ACC    The ticket file cannot be opened or the ticket file cannot be accessed.

       TKT_FIL_LCK    The ticket file could not be locked for access.

       TKT_FIL_FMT    The ticket file format is incorrect.

       AD_NOTGT       There  is  no ticket-granting ticket in the ticket file that can be used to ask for a ticket to communicate with the foreign
		      principal.

       SKDC_CANT      A Kerberos server must be contacted so that can perform its function, but the attempt cannot be made because a socket cannot
		      be opened or bound, or because there is no Kerberos server listed in

       SKDC_RETRY     A Kerberos server needs to be contacted, but none responded even after several attempts.

       INTK_PROT      Kerberos protocol error.

       KSUCCESS       All went well.

       krb_rd_req

       This  routine  is  used to read the authentication data produced by principal "A" with and sent by "A" to principal "B".  It takes as input
       the primary name and instance name of the local principal "B", as well as the authentication data sent to "B", the address of  the  machine
       from  which  "A"  sent  the  ticket-authenticator  pair,  and the name of the file in which to find the key of the local principal.  If the
       authentication attempt is successful, will fill the ad structure with data about the authenticated association between "A" and "B".

       The krb_rd_req routine returns zero (RD_AP_OK) upon successful authentication.  If a packet was forged, modified, or replayed, then authen-
       tication fails.

       The following is a list of the error values returned from and their possible causes:

       RD_AP_VERSION   The versions of Kerberos used by the caller of is incompatible with the version.

       RD_AP_MSG_TYPE  The ticket-authenticator pair given to was not actually a ticket-authenticator pair.

       RD_AP_UNDEC     The ticket was indecipherable.  This error can be caused by a forged or a modified message.

       RD_AP_INCON     The  message  given to contains an internal inconsistency.  This could occur if the ticket in the ticket-authenticator pair
		       does not match the authenticator.

       RD_AP_BADD      The ticket-authenticator pair cannot be used from the address, f_hostaddr.

       RD_AP_TIME      The authenticator in the ticket-authenticator pair is too old to be used to authenticate the foreign principal.

       RD_AP_NYV       The time at which the ticket of the ticket-authenticator pair was created, is too far ahead of the time of the  local  host
		       of the local principal.

       RD_AP_EXP       The ticket is too old to be used.

       krb_get_cred

       Searches  the caller's ticket file for the authentication information associated with the principal specified by the f_service, f_instance,
       and f_realm.  If finds information in the ticket file, it fills a credentials structure with the information and returns the status, GC_OK.

       The following is a list of the error values returned from and their possible causes:

       NO_TKT_FIL     The ticket file does not exist.

       TKT_FIL_ACC    The ticket file cannot be opened or the ticket file cannot be accessed.

       TKT_FIL_LCK    The ticket file could not be locked for access.

       TKT_FIL_FMT    The ticket file format is incorrect.

       GC_NOTKT       Information concerning the principal does not exist in the ticket file.

       krb_mk_safe

       Creates an authenticated but unencrypted message from text pointed to by in, of a length indicated by in_length. The routine uses the  pri-
       vate  session  key  (*key)  to  seed  the checksum algorithm, des_quad_cksum, that it uses as part of the authentication process. (For more
       information about see the reference page.)  The routine also uses the arguments l_addr and f_addr for authentication purposes.

       A safe message does not provide privacy, but does provide protection against modifications in addition to  providing  authentication.   The
       encapsulated  message  and  header  produced by krb_mk_safe are placed in the area pointed to by out. The routine returns the length of the
       output or a negative one (-1), indicating an error.

       krb_rd_safe

       Authenticates a received message and writes the appropriate fields in the message data structure MSG_DAT. The argument  in  points  to  the
       beginning  of  the  received  message. The argument in_length specifies the length of the message. The krb_rd_safe routine uses the private
       session key (*key) to seed the routine (see the reference page) as part of its authentication process. The routine fills in  the  following
       MSG_DAT fields:

       MSG_DAT Field			  Description
       app_data        Pointer to the application data
       app_length      Length of the app_data
       time_sec        Timestamp of the message in seconds
       time_5ms        Timestamp of the message in 5-millisecond units
       swap	       A  1 if the byte order of the receiver is differ-
		       ent from that of the sender

       Note that the application must still determine if it is appropriate to byte-swap application data; the Kerberos protocol fields are already
       taken care of.

       The  routine  returns  RD_AP_OK if the message, in, is authenticated and has not been modified when it was sent between the foreign and the
       local principal.  It is up to the caller to check the time sequence of messages and to check against recently replayed messages.  The  fol-
       lowing is a list of the error values returned by and their possible causes:

       -1	       A system call used by returned an error.

       RD_AP_VERSION   The Kerberos version of the code that generated message, in, is not supported by the version used.

       RD_AP_MSG_TYPE  The message, in, is not really a message produced by

       RD_AP_MODIFIED  The  address  of the machine from which in was sent does not match the address of the machine on which the message, in, was
		       generated, or
		       The message was modified when it was sent from the foreign to the local principal, or
		       The message, in, is too small to be the message produced by

       RD_AP_TIME      The difference between the time at which the message, in, was produced by and the time at which	it  was  read  by  is  too
		       large.  The time difference must be within five minutes.

Restrictions
       The caller of the functions, and must check the time order of messages and protect against replay attempts.

Files
       See Also
	      des_crypt(3krb), krb_sendmutual(3krb), krb_sendauth(3krb), krb_svc_init(3krb), krb_set_tkt_string(3krb), krb.conf(5krb)

																    kerberos(3krb)
Similar Topics in the Unix Linux Community
Compiling Samba from Source on AIX, Active Directory, LDAP, Kerberos
SSH and kerberos authentication problem AIX 5.3
How to automatically store/cache password for kerberos authentication
Solaris 11.2 - smb with AD
Kerberos Utility Error Message