Annotation of 43BSDReno/kerberosIV/man/krb_sendauth.3, revision 1.1

1.1     ! root        1: .\" $Source: /usr/src/kerberosIV/man/RCS/krb_sendauth.3,v $
        !             2: .\" $Author: kfall $
        !             3: .\" $Header: /usr/src/kerberosIV/man/RCS/krb_sendauth.3,v 4.2 90/06/25 21:12:26 kfall Exp $
        !             4: .\" Copyright 1988 by the Massachusetts Institute of Technology.
        !             5: .\"
        !             6: .\" For copying and distribution information,
        !             7: .\" please see the file <mit-copyright.h>.
        !             8: .\"
        !             9: .TH KRB_SENDAUTH 3 "Kerberos Version 4.0" "MIT Project Athena"
        !            10: .SH NAME
        !            11: krb_sendauth, krb_recvauth, krb_net_write, krb_net_read \-
        !            12: Kerberos routines for sending authentication via network stream sockets
        !            13: .SH SYNOPSIS
        !            14: .nf
        !            15: .nj
        !            16: .ft B
        !            17: #include <kerberosIV/krb.h>
        !            18: #include <kerberosIV/des.h>
        !            19: #include <netinet/in.h>
        !            20: .PP
        !            21: .fi
        !            22: .HP 1i
        !            23: .ft B
        !            24: int krb_sendauth(options, fd, ktext, service, inst, realm, checksum,
        !            25: msg_data, cred, schedule, laddr, faddr, version)
        !            26: .nf
        !            27: .RS 0
        !            28: .ft B
        !            29: long options;
        !            30: int fd;
        !            31: KTEXT ktext;
        !            32: char *service, *inst, *realm;
        !            33: u_long checksum;
        !            34: MSG_DAT *msg_data;
        !            35: CREDENTIALS *cred;
        !            36: Key_schedule schedule;
        !            37: struct sockaddr_in *laddr, *faddr;
        !            38: char *version;
        !            39: .PP
        !            40: .fi
        !            41: .HP 1i
        !            42: .ft B
        !            43: int krb_recvauth(options, fd, ktext, service, inst, faddr, laddr,
        !            44: auth_data, filename, schedule, version)
        !            45: .nf
        !            46: .RS 0
        !            47: .ft B
        !            48: long options;
        !            49: int fd;
        !            50: KTEXT ktext;
        !            51: char *service, *inst;
        !            52: struct sockaddr_in *faddr, *laddr;
        !            53: AUTH_DAT *auth_data;
        !            54: char *filename;
        !            55: Key_schedule schedule;
        !            56: char *version;                 
        !            57: .PP
        !            58: .ft B
        !            59: int krb_net_write(fd, buf, len)
        !            60: int fd;
        !            61: char *buf;
        !            62: int len;
        !            63: .PP
        !            64: .ft B
        !            65: int krb_net_read(fd, buf, len)
        !            66: int fd;
        !            67: char *buf;
        !            68: int len;
        !            69: .fi
        !            70: .SH DESCRIPTION
        !            71: .PP
        !            72: These functions,
        !            73: which are built on top of the core Kerberos library,
        !            74: provide a convenient means for client and server
        !            75: programs to send authentication messages
        !            76: to one another through network connections.
        !            77: The
        !            78: .I krb_sendauth
        !            79: function sends an authenticated ticket from the client program to
        !            80: the server program by writing the ticket to a network socket.
        !            81: The
        !            82: .I krb_recvauth
        !            83: function receives the ticket from the client by
        !            84: reading from a network socket.
        !            85: 
        !            86: .SH KRB_SENDAUTH
        !            87: .PP
        !            88: This function writes the ticket to
        !            89: the network socket specified by the
        !            90: file descriptor
        !            91: .IR fd,
        !            92: returning KSUCCESS if the write proceeds successfully,
        !            93: and an error code if it does not.
        !            94: 
        !            95: The
        !            96: .I ktext
        !            97: argument should point to an allocated KTEXT_ST structure.
        !            98: The
        !            99: .IR service,
        !           100: .IR inst,
        !           101: and
        !           102: .IR realm
        !           103: arguments specify the server program's Kerberos principal name,
        !           104: instance, and realm.
        !           105: If you are writing a client that uses the local realm exclusively,
        !           106: you can set the
        !           107: .I realm
        !           108: argument to NULL.
        !           109: 
        !           110: The
        !           111: .I version
        !           112: argument allows the client program to pass an application-specific
        !           113: version string that the server program can then match against
        !           114: its own version string.
        !           115: The
        !           116: .I version
        !           117: string can be up to KSEND_VNO_LEN (see 
        !           118: .IR <krb.h> )
        !           119: characters in length.
        !           120: 
        !           121: The
        !           122: .I checksum
        !           123: argument can be used to pass checksum information to the
        !           124: server program.
        !           125: The client program is responsible for specifying this information.
        !           126: This checksum information is difficult to corrupt because
        !           127: .I krb_sendauth
        !           128: passes it over the network in encrypted form.
        !           129: The
        !           130: .I checksum
        !           131: argument is passed as the checksum argument to
        !           132: .IR krb_mk_req .
        !           133: 
        !           134: You can set
        !           135: .IR krb_sendauth's
        !           136: other arguments to NULL unless you want the
        !           137: client and server programs to mutually authenticate
        !           138: themselves.
        !           139: In the case of mutual authentication,
        !           140: the client authenticates itself to the server program,
        !           141: and demands that the server in turn authenticate itself to
        !           142: the client.
        !           143: 
        !           144: .SH KRB_SENDAUTH AND MUTUAL AUTHENTICATION
        !           145: .PP
        !           146: If you want mutual authentication,
        !           147: make sure that you read all pending data from the local socket
        !           148: before calling
        !           149: .IR krb_sendauth.
        !           150: Set
        !           151: .IR krb_sendauth's
        !           152: .I options
        !           153: argument to
        !           154: .BR KOPT_DO_MUTUAL
        !           155: (this macro is defined in the
        !           156: .IR krb.h
        !           157: file);
        !           158: make sure that the
        !           159: .I laddr
        !           160: argument points to
        !           161: the address of the local socket,
        !           162: and that
        !           163: .I faddr
        !           164: points to the foreign socket's network address.
        !           165: 
        !           166: .I Krb_sendauth
        !           167: fills in the other arguments--
        !           168: .IR msg_data ,
        !           169: .IR cred ,
        !           170: and
        !           171: .IR schedule --before
        !           172: sending the ticket to the server program.
        !           173: You must, however, allocate space for these arguments
        !           174: before calling the function.
        !           175: 
        !           176: .I Krb_sendauth
        !           177: supports two other options:
        !           178: .BR KOPT_DONT_MK_REQ,
        !           179: and
        !           180: .BR KOPT_DONT_CANON.
        !           181: If called with
        !           182: .I options
        !           183: set as KOPT_DONT_MK_REQ,
        !           184: .I krb_sendauth
        !           185: will not use the
        !           186: .I krb_mk_req
        !           187: function to retrieve the ticket from the Kerberos server.
        !           188: The
        !           189: .I ktext
        !           190: argument must point to an existing ticket and authenticator (such as
        !           191: would be created by 
        !           192: .IR krb_mk_req ),
        !           193: and the
        !           194: .IR service,
        !           195: .IR inst,
        !           196: and
        !           197: .IR realm
        !           198: arguments can be set to NULL.
        !           199: 
        !           200: If called with
        !           201: .I options
        !           202: set as KOPT_DONT_CANON,
        !           203: .I krb_sendauth
        !           204: will not convert the service's instance to canonical form using 
        !           205: .IR krb_get_phost (3).
        !           206: 
        !           207: If you want to call
        !           208: .I krb_sendauth
        !           209: with a multiple
        !           210: .I options
        !           211: specification,
        !           212: construct
        !           213: .I options
        !           214: as a bitwise-OR of the options you want to specify.
        !           215: 
        !           216: .SH KRB_RECVAUTH
        !           217: .PP
        !           218: The
        !           219: .I krb_recvauth
        !           220: function
        !           221: reads a ticket/authenticator pair from the socket pointed to by the
        !           222: .I fd
        !           223: argument.
        !           224: Set the
        !           225: .I options
        !           226: argument
        !           227: as a bitwise-OR of the options desired.
        !           228: Currently only KOPT_DO_MUTUAL is useful to the receiver.
        !           229: 
        !           230: The
        !           231: .I ktext
        !           232: argument
        !           233: should point to an allocated KTEXT_ST structure.
        !           234: .I Krb_recvauth
        !           235: fills
        !           236: .I ktext
        !           237: with the
        !           238: ticket/authenticator pair read from
        !           239: .IR fd ,
        !           240: then passes it to
        !           241: .IR krb_rd_req .
        !           242: 
        !           243: The
        !           244: .I service
        !           245: and
        !           246: .I inst
        !           247: arguments
        !           248: specify the expected service and instance for which the ticket was
        !           249: generated.  They are also passed to
        !           250: .IR krb_rd_req.
        !           251: The
        !           252: .I inst
        !           253: argument may be set to "*" if the caller wishes
        !           254: .I krb_mk_req
        !           255: to fill in the instance used (note that there must be space in the
        !           256: .I inst
        !           257: argument to hold a full instance name, see 
        !           258: .IR krb_mk_req (3)).
        !           259: 
        !           260: The
        !           261: .I faddr
        !           262: argument
        !           263: should point to the address of the peer which is presenting the ticket.
        !           264: It is also passed to
        !           265: .IR krb_rd_req .
        !           266: 
        !           267: If the client and server plan to mutually authenticate
        !           268: one another,
        !           269: the
        !           270: .I laddr
        !           271: argument
        !           272: should point to the local address of the file descriptor.
        !           273: Otherwise you can set this argument to NULL.
        !           274: 
        !           275: The
        !           276: .I auth_data
        !           277: argument
        !           278: should point to an allocated AUTH_DAT area.
        !           279: It is passed to and filled in by
        !           280: .IR krb_rd_req .
        !           281: The checksum passed to the corresponding
        !           282: .I krb_sendauth
        !           283: is available as part of the filled-in AUTH_DAT area.
        !           284: 
        !           285: The
        !           286: .I filename
        !           287: argument
        !           288: specifies the filename
        !           289: which the service program should use to obtain its service key.
        !           290: .I Krb_recvauth
        !           291: passes
        !           292: .I filename
        !           293: to the
        !           294: .I krb_rd_req
        !           295: function.
        !           296: If you set this argument to "",
        !           297: .I krb_rd_req
        !           298: looks for the service key in the file
        !           299: .IR /etc/kerberosIV/srvtab.
        !           300: 
        !           301: If the client and server are performing mutual authenication,
        !           302: the
        !           303: .I schedule
        !           304: argument
        !           305: should point to an allocated Key_schedule.
        !           306: Otherwise it is ignored and may be NULL.
        !           307: 
        !           308: The
        !           309: .I version
        !           310: argument should point to a character array of at least KSEND_VNO_LEN
        !           311: characters.  It is filled in with the version string passed by the client to
        !           312: .IR krb_sendauth.
        !           313: .PP
        !           314: .SH KRB_NET_WRITE AND KRB_NET_READ
        !           315: .PP
        !           316: The
        !           317: .I krb_net_write
        !           318: function
        !           319: emulates the write(2) system call, but guarantees that all data
        !           320: specified is written to
        !           321: .I fd
        !           322: before returning, unless an error condition occurs.
        !           323: .PP
        !           324: The
        !           325: .I krb_net_read
        !           326: function
        !           327: emulates the read(2) system call, but guarantees that the requested
        !           328: amount of data is read from
        !           329: .I fd
        !           330: before returning, unless an error condition occurs.
        !           331: .PP
        !           332: .SH BUGS
        !           333: .IR krb_sendauth,
        !           334: .IR krb_recvauth,
        !           335: .IR krb_net_write,
        !           336: and
        !           337: .IR krb_net_read
        !           338: will not work properly on sockets set to non-blocking I/O mode.
        !           339: 
        !           340: .SH SEE ALSO
        !           341: 
        !           342: krb_mk_req(3), krb_rd_req(3), krb_get_phost(3)
        !           343: 
        !           344: .SH AUTHOR
        !           345: John T. Kohl, MIT Project Athena
        !           346: .SH RESTRICTIONS
        !           347: Copyright 1988, Massachusetts Instititute of Technology.
        !           348: For copying and distribution information,
        !           349: please see the file <mit-copyright.h>.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.