diff options
| author | Chris Provenzano <proven@mit.edu> | 1995-03-10 17:27:20 +0000 |
|---|---|---|
| committer | Chris Provenzano <proven@mit.edu> | 1995-03-10 17:27:20 +0000 |
| commit | 2e91e7c2b5f969fd689082910471e3d6c0584b72 (patch) | |
| tree | ca9fb685c32362aa7c24830bfa7ebe83d3e7ef00 /src/kadmin/client/kadmin.c | |
| parent | b2f49b74f53d6deafc39fc0069de3e249a383b13 (diff) | |
| download | krb5-2e91e7c2b5f969fd689082910471e3d6c0584b72.tar.gz krb5-2e91e7c2b5f969fd689082910471e3d6c0584b72.tar.xz krb5-2e91e7c2b5f969fd689082910471e3d6c0584b72.zip | |
* kadmin.c, kadmin_adr.c, kadmin_cpw.c, kadmin_done.c, kadmin_mod.c
* kadmin_add.c, kadmin_cpr.c, kadmin_del.c, kadmin_inq.c, kadmin_msnd.c
Use new calling convention for krb5_sendauth(), krb5_mk_priv(),
krb5_rd_priv(), krb5_mk_safe(), and krb5_rd_safe().
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5100 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin/client/kadmin.c')
| -rw-r--r-- | src/kadmin/client/kadmin.c | 193 |
1 files changed, 51 insertions, 142 deletions
diff --git a/src/kadmin/client/kadmin.c b/src/kadmin/client/kadmin.c index 93ce5e9ed..44d9219db 100644 --- a/src/kadmin/client/kadmin.c +++ b/src/kadmin/client/kadmin.c @@ -35,7 +35,7 @@ #define MAXPATHLEN 1024 #endif -#include "k5-int.h" +#include "krb5.h" static krb5_error_code get_first_ticket PROTOTYPE((krb5_context, @@ -83,9 +83,7 @@ main(argc,argv) kadmin_requests rd_priv_resp; krb5_context context; - krb5_checksum send_cksum; krb5_data msg_data, inbuf; - krb5_int32 seqno; char buffer[255]; char command_type[120]; char princ_name[120]; @@ -94,6 +92,9 @@ main(argc,argv) int oper_type; int nflag = 0; + krb5_auth_context * new_auth_context; + krb5_replay_data replaydata; + krb5_init_context(&context); krb5_init_ets(context); @@ -209,49 +210,34 @@ main(argc,argv) foreign_addr.length = SIZEOF_INADDR ; foreign_addr.contents = (krb5_octet *) &remote_sin.sin_addr; - /* compute checksum, using CRC-32 */ - if (!(send_cksum.contents = (krb5_octet *) - malloc(krb5_checksum_size(context, CKSUMTYPE_CRC32)))) { - fprintf(stderr, "Insufficient Memory while Allocating Checksum!\n"); - (void) krb5_cc_destroy(context, cache); - exit(1); - } - - /* choose some random stuff to compute checksum from */ - if (retval = krb5_calculate_checksum(context, CKSUMTYPE_CRC32, - ADM5_ADM_VERSION, - strlen(ADM5_ADM_VERSION), - 0, - 0, /* if length is 0, crc-32 doesn't - use the seed */ - &send_cksum)) { - fprintf(stderr, "Error while Computing Checksum: %s!\n", - error_message(retval)); - free(send_cksum.contents); - (void) krb5_cc_destroy(context, cache); - exit(1); - } + krb5_auth_con_init(context, &new_auth_context); + krb5_auth_con_setflags(context, new_auth_context, + KRB5_AUTH_CONTEXT_RET_SEQUENCE); + + krb5_auth_con_setaddrs(context, new_auth_context, + &local_addr, &foreign_addr); /* call Kerberos library routine to obtain an authenticator, pass it over the socket to the server, and obtain mutual authentication. */ - if ((retval = krb5_sendauth(context, (krb5_pointer) &local_socket, + inbuf.data = ADM5_ADM_VERSION; + inbuf.length = strlen(ADM5_ADM_VERSION); + + if ((retval = krb5_sendauth(context, &new_auth_context, + (krb5_pointer) &local_socket, ADM_CPW_VERSION, my_creds.client, my_creds.server, AP_OPTS_MUTUAL_REQUIRED, - &send_cksum, + &inbuf, &my_creds, 0, - &seqno, - 0, /* don't need a subsession key */ &err_ret, &rep_ret, NULL))) { fprintf(stderr, "Error while performing sendauth: %s!\n", error_message(retval)); - free(send_cksum.contents); exit(1); } @@ -259,21 +245,18 @@ main(argc,argv) if (retval = krb5_read_message(context, &local_socket, &inbuf)){ fprintf(stderr, " Read Message Error: %s!\n", error_message(retval)); - free(send_cksum.contents); exit(1); } if ((inbuf.length != 2) || (inbuf.data[0] != KADMIND) || (inbuf.data[1] != KADMSAG)){ fprintf(stderr, " Invalid ack from admin server.!\n"); - free(send_cksum.contents); exit(1); } free(inbuf.data); if ((inbuf.data = (char *) calloc(1, 2)) == (char *) 0) { fprintf(stderr, "No memory for command!\n"); - free(send_cksum.contents); exit(1); } @@ -281,20 +264,11 @@ main(argc,argv) inbuf.data[1] = 0xff; inbuf.length = 2; - if ((retval = krb5_mk_priv(context, &inbuf, - ETYPE_DES_CBC_CRC, - &my_creds.keyblock, - &local_addr, - &foreign_addr, - seqno, - KRB5_PRIV_DOSEQUENCE|KRB5_PRIV_NOTIME, - 0, - 0, - &msg_data))) { + if ((retval = krb5_mk_priv(context, new_auth_context, &inbuf, + &msg_data, &replaydata))) { fprintf(stderr, "Error during First Message Encoding: %s!\n", error_message(retval)); free(inbuf.data); - free(send_cksum.contents); exit(1); } free(inbuf.data); @@ -302,7 +276,6 @@ main(argc,argv) /* write private message to server */ if (krb5_write_message(context, &local_socket, &msg_data)){ fprintf(stderr, "Write Error During First Message Transmission!\n"); - free(send_cksum.contents); exit(1); } free(msg_data.data); @@ -312,22 +285,13 @@ main(argc,argv) if (retval = krb5_read_message(context, &local_socket, &inbuf)){ fprintf(stderr, "Read Error During First Reply: %s!\n", error_message(retval)); - free(send_cksum.contents); exit(1); } - if ((retval = krb5_rd_priv(context, &inbuf, - &my_creds.keyblock, - &foreign_addr, - &local_addr, - rep_ret->seq_number, - KRB5_PRIV_DOSEQUENCE|KRB5_PRIV_NOTIME, - 0, - 0, - &msg_data))) { + if ((retval = krb5_rd_priv(context, new_auth_context, &inbuf, + &msg_data, &replaydata))) { fprintf(stderr, "Error during First Read Decoding: %s!\n", error_message(retval)); - free(send_cksum.contents); exit(1); } free(inbuf.data); @@ -346,109 +310,65 @@ repeat: if (!strcmp(command_type, "add")) { valid++; oper_type = ADDOPER; - if (retval = kadm_add_user(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - oper_type, - princ_name)) break; + if (retval = kadm_add_user(context, new_auth_context, &my_creds, + &local_socket, oper_type, princ_name)) + break; } if (!strcmp(command_type, "cpw")) { valid++; oper_type = CHGOPER; - if (retval = kadm_cpw_user(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - oper_type, - princ_name)) break; + if (retval = kadm_cpw_user(context, new_auth_context, &my_creds, + &local_socket, oper_type, princ_name)) + break; } if (!strcmp(command_type, "addrnd")) { valid++; - if (retval = kadm_add_user_rnd(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - princ_name)) break; + if (retval = kadm_add_user_rnd(context, new_auth_context, &my_creds, + &local_socket, princ_name)) + break; } if (!strcmp(command_type, "cpwrnd")) { valid++; - if (retval = kadm_cpw_user_rnd(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - princ_name)) break; + if (retval = kadm_cpw_user_rnd(context, new_auth_context, &my_creds, + &local_socket, princ_name)) + break; } if (!strcmp(command_type, "del")) { valid++; - if (retval = kadm_del_user(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - princ_name)) break; + if (retval = kadm_del_user(context, new_auth_context, &my_creds, + &local_socket, princ_name)) + break; } if (!strcmp(command_type, "inq")) { valid++; - if (retval = kadm_inq_user(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - princ_name)) break; + if (retval = kadm_inq_user(context, new_auth_context, &my_creds, + &local_socket, princ_name)) + break; } if (!strcmp(command_type, "mod")) { valid++; - if (retval = kadm_mod_user(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - princ_name)) break; + if (retval = kadm_mod_user(context, new_auth_context, &my_creds, + &local_socket, princ_name)) + break; } if (!strcmp(command_type, "addv4")) { valid++; oper_type = AD4OPER; - if (retval = kadm_add_user(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - oper_type, - princ_name)) break; + if (retval = kadm_add_user(context, new_auth_context, &my_creds, + &local_socket, oper_type, princ_name)) + break; } if (!strcmp(command_type, "cpwv4")) { valid++; oper_type = CH4OPER; - if (retval = kadm_cpw_user(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno, - oper_type, - princ_name)) break; + if (retval = kadm_cpw_user(context, new_auth_context, &my_creds, + &local_socket, oper_type, princ_name)) + break; } if (!strcmp(command_type, "q")) { valid++; - retval = kadm_done(context, &my_creds, - rep_ret, - &local_addr, - &foreign_addr, - &local_socket, - &seqno); + retval = kadm_done(context, new_auth_context, &my_creds, + &local_socket); break; } @@ -459,7 +379,6 @@ repeat: } if (retval) { - free(send_cksum.contents); exit(1); } @@ -467,22 +386,13 @@ repeat: if (retval = krb5_read_message(context, &local_socket, &inbuf)){ fprintf(stderr, "Read Error During Final Reply: %s!\n", error_message(retval)); - free(send_cksum.contents); exit(1); } - if ((retval = krb5_rd_priv(context, &inbuf, - &my_creds.keyblock, - &foreign_addr, - &local_addr, - rep_ret->seq_number, - KRB5_PRIV_DOSEQUENCE|KRB5_PRIV_NOTIME, - 0, - 0, - &msg_data))) { + if ((retval = krb5_rd_priv(context, new_auth_context, &inbuf, + &msg_data, &replaydata))) { fprintf(stderr, "Error during Final Read Decoding :%s!\n", error_message(retval)); - free(send_cksum.contents); free(inbuf.data); exit(1); } @@ -505,7 +415,6 @@ repeat: if (rd_priv_resp.message) free(rd_priv_resp.message); - free(send_cksum.contents); exit(retval); } |
