|
|
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>.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.