summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/appl/simple/server/ChangeLog7
-rw-r--r--src/appl/simple/server/sim_server.c77
2 files changed, 31 insertions, 53 deletions
diff --git a/src/appl/simple/server/ChangeLog b/src/appl/simple/server/ChangeLog
index 92e0ffe0b..a57c3a520 100644
--- a/src/appl/simple/server/ChangeLog
+++ b/src/appl/simple/server/ChangeLog
@@ -1,3 +1,8 @@
+Mon Mar 27 07:56:26 1995 Chris Provenzano (proven@mit.edu)
+
+ * sim_server.c: Use new calling convention for krb5_rd_req(),
+ krb5_rd_safe(), and krb5_rd_priv().
+
Thu Mar 2 12:27:03 1995 Theodore Y. Ts'o <tytso@dcl>
* Makefile.in (ISODELIB): Remove reference to $(ISODELIB).
@@ -13,7 +18,7 @@ Tue Feb 28 02:01:53 1995 John Gilmore (gnu at toad.com)
Fri Jan 13 15:23:47 1995 Chris Provenzano (proven@mit.edu)
- * Added krb5_context to all krb5_routines
+ * Added krb5_context to all krb5_routines
Thu Sep 29 22:46:51 1994 Theodore Y. Ts'o (tytso@dcl)
diff --git a/src/appl/simple/server/sim_server.c b/src/appl/simple/server/sim_server.c
index b97f0f01c..b0aff669b 100644
--- a/src/appl/simple/server/sim_server.c
+++ b/src/appl/simple/server/sim_server.c
@@ -65,10 +65,10 @@ char *argv[];
krb5_data packet, message;
unsigned char pktbuf[BUFSIZ];
krb5_address foreign_addr, *portforeign_addr;
- krb5_rcache rcache;
krb5_principal sprinc;
krb5_context context;
- krb5_tkt_authent *ad;
+ krb5_auth_context *auth_context = NULL;
+ krb5_ticket *ticket = NULL;
if (argc != 2) {
fprintf(stderr, "usage: %s <servername>\n",PROGNAME);
@@ -136,27 +136,38 @@ char *argv[];
packet.length = i;
packet.data = (krb5_pointer) pktbuf;
- foreign_addr.addrtype = c_sock.sin_family;
- foreign_addr.length = sizeof(c_sock.sin_addr);
- foreign_addr.contents = (krb5_octet *)&c_sock.sin_addr;
-
/* Check authentication info */
- if (retval = krb5_rd_req_simple(context, &packet, sprinc,
- &foreign_addr,
- &ad)) {
+ if (retval = krb5_rd_req(context, &auth_context, &packet,
+ sprinc, NULL, NULL, &ticket)) {
com_err(PROGNAME, retval, "while reading request");
exit(1);
}
- if (retval = krb5_unparse_name(context,ad->ticket->enc_part2->client,&cp)) {
+ if (retval = krb5_unparse_name(context, ticket->enc_part2->client, &cp)) {
com_err(PROGNAME, retval, "while unparsing client name");
exit(1);
}
printf("Got authentication info from %s\n", cp);
-
free(cp);
- /* GET KRB_MK_SAFE MESSAGE */
+ /* Set foreign_addr for rd_safe() and rd_priv() */
+ foreign_addr.contents = (krb5_octet *)&c_sock.sin_addr;
+ foreign_addr.length = sizeof(c_sock.sin_addr);
+ foreign_addr.addrtype = c_sock.sin_family;
+ if (retval = krb5_gen_portaddr(context, &foreign_addr,
+ (krb5_pointer) &c_sock.sin_port,
+ &portforeign_addr)) {
+ com_err(PROGNAME, retval, "while generating port address");
+ exit(1);
+ }
+
+ if (retval = krb5_auth_con_setaddrs(context, auth_context, NULL,
+ portforeign_addr)) {
+ com_err(PROGNAME, retval, "while setting foreign addr");
+ exit(1);
+ }
+
+ /* GET KRB_MK_SAFE MESSAGE */
/* use "recvfrom" so we know client's address */
i = sizeof(c_sock);
@@ -174,36 +185,13 @@ char *argv[];
packet.length = i;
packet.data = (krb5_pointer) pktbuf;
- foreign_addr.addrtype = c_sock.sin_family;
- foreign_addr.length = sizeof(c_sock.sin_addr);
- foreign_addr.contents = (krb5_octet *)&c_sock.sin_addr;
-
- if (retval = krb5_gen_portaddr(context, &foreign_addr,
- (krb5_pointer) &c_sock.sin_port,
- &portforeign_addr)) {
- com_err(PROGNAME, retval, "while generating port address");
- exit(1);
- }
-
- if (retval = krb5_get_server_rcache(context,
- krb5_princ_component(context,sprinc,0),
- &rcache)) {
- com_err(PROGNAME, retval, "while opening replay cache");
- exit(1);
- }
-
- if (retval = krb5_rd_safe(context, &packet, ad->ticket->enc_part2->session,
- portforeign_addr, 0, 0, 0,
- rcache,
- &message)) {
+ if (retval = krb5_rd_safe(context, auth_context, &packet, &message, NULL)) {
com_err(PROGNAME, retval, "while verifying SAFE message");
- (void) krb5_rc_close(context, rcache);
exit(1);
}
printf("Safe message is: '%.*s'\n", message.length, message.data);
krb5_xfree(message.data);
- krb5_free_address(context, portforeign_addr);
/* NOW GET ENCRYPTED MESSAGE */
@@ -213,7 +201,6 @@ char *argv[];
(struct sockaddr *)&c_sock, &i);
if (i < 0) {
perror("receiving datagram");
- (void) krb5_rc_close(context, rcache);
exit(1);
}
printf("Received %d bytes\n", i);
@@ -221,25 +208,11 @@ char *argv[];
packet.length = i;
packet.data = (krb5_pointer) pktbuf;
- if (retval = krb5_gen_portaddr(context, &foreign_addr,
- (krb5_pointer) &c_sock.sin_port,
- &portforeign_addr)) {
- com_err(PROGNAME, retval, "while generating port address");
- (void) krb5_rc_close(context, rcache);
- exit(1);
- }
-
- if (retval = krb5_rd_priv(context, &packet, ad->ticket->enc_part2->session,
- portforeign_addr, 0, 0, 0, 0,
- rcache,
- &message)) {
+ if (retval = krb5_rd_priv(context, auth_context, &packet, &message, NULL)) {
com_err(PROGNAME, retval, "while verifying PRIV message");
- (void) krb5_rc_close(context, rcache);
exit(1);
}
printf("Decrypted message is: '%.*s'\n", message.length, message.data);
- (void) krb5_rc_close(context, rcache);
-
exit(0);
}