diff options
| author | Barry Jaspan <bjaspan@mit.edu> | 1997-04-23 19:53:16 +0000 |
|---|---|---|
| committer | Barry Jaspan <bjaspan@mit.edu> | 1997-04-23 19:53:16 +0000 |
| commit | 47a32a44d71b8433300739dbd3b6899c12b53227 (patch) | |
| tree | 16a579383eaf958832b98c4c54f93fce6c47713c /src/kadmin/server | |
| parent | 76e9c5c254f618b90542b3e309ac5e3a0a888786 (diff) | |
| download | krb5-47a32a44d71b8433300739dbd3b6899c12b53227.tar.gz krb5-47a32a44d71b8433300739dbd3b6899c12b53227.tar.xz krb5-47a32a44d71b8433300739dbd3b6899c12b53227.zip | |
add kadm5_setkey_principal
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@10072 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin/server')
| -rw-r--r-- | src/kadmin/server/ChangeLog | 4 | ||||
| -rw-r--r-- | src/kadmin/server/kadm_rpc_svc.c | 11 | ||||
| -rw-r--r-- | src/kadmin/server/server_stubs.c | 55 |
3 files changed, 69 insertions, 1 deletions
diff --git a/src/kadmin/server/ChangeLog b/src/kadmin/server/ChangeLog index e36f94d8c..ea9cbdb73 100644 --- a/src/kadmin/server/ChangeLog +++ b/src/kadmin/server/ChangeLog @@ -1,3 +1,7 @@ +Mon Mar 31 17:42:03 1997 Barry Jaspan <bjaspan@mit.edu> + + * kadm_rpc_svc.c, server_stubs.c: add support for setkey_principal + Tue Feb 4 20:59:31 1997 Tom Yu <tlyu@mit.edu> * Makefile.in: diff --git a/src/kadmin/server/kadm_rpc_svc.c b/src/kadmin/server/kadm_rpc_svc.c index 9128821d5..c4b6ebc59 100644 --- a/src/kadmin/server/kadm_rpc_svc.c +++ b/src/kadmin/server/kadm_rpc_svc.c @@ -5,6 +5,9 @@ * $Source$ * * $Log$ + * Revision 1.13 1997/04/23 19:53:11 bjaspan + * add kadm5_setkey_principal + * * Revision 1.12 1996/07/22 20:28:53 marc * this commit includes all the changes on the OV_9510_INTEGRATION and * OV_MERGE branches. This includes, but is not limited to, the new openvision @@ -173,6 +176,12 @@ void kadm_1(rqstp, transp) xdr_result = xdr_generic_ret; local = (char *(*)()) chpass_principal_1; break; + + case SETKEY_PRINCIPAL: + xdr_argument = xdr_setkey_arg; + xdr_result = xdr_generic_ret; + local = (char *(*)()) setkey_principal_1; + break; case CHRAND_PRINCIPAL: xdr_argument = xdr_chrand_arg; @@ -223,7 +232,7 @@ void kadm_1(rqstp, transp) break; default: - krb5_klog_syslog(LOG_ERR, "Invalid OVSEC_KADM procedure number: %s, %d", + krb5_klog_syslog(LOG_ERR, "Invalid KADM5 procedure number: %s, %d", inet_ntoa(rqstp->rq_xprt->xp_raddr.sin_addr), rqstp->rq_proc); svcerr_noproc(transp); diff --git a/src/kadmin/server/server_stubs.c b/src/kadmin/server/server_stubs.c index 8107160af..1d04c03d9 100644 --- a/src/kadmin/server/server_stubs.c +++ b/src/kadmin/server/server_stubs.c @@ -611,6 +611,61 @@ chpass_principal_1(chpass_arg *arg, struct svc_req *rqstp) return &ret; } +generic_ret * +setkey_principal_1(setkey_arg *arg, struct svc_req *rqstp) +{ + static generic_ret ret; + char *prime_arg; + gss_buffer_desc client_name, + service_name; + OM_uint32 minor_stat; + kadm5_server_handle_t handle; + + xdr_free(xdr_generic_ret, &ret); + + if (ret.code = new_server_handle(arg->api_version, rqstp, &handle)) + return &ret; + + if (ret.code = check_handle((void *)handle)) { + free_server_handle(handle); + return &ret; + } + + ret.api_version = handle->api_version; + + if (setup_gss_names(rqstp, &client_name, &service_name) < 0) { + ret.code = KADM5_FAILURE; + return &ret; + } + krb5_unparse_name(handle->context, arg->princ, &prime_arg); + + if (!(CHANGEPW_SERVICE(rqstp)) && + acl_check(handle->context, rqstp->rq_clntcred, + ACL_SETKEY, arg->princ)) { + ret.code = kadm5_setkey_principal((void *)handle, arg->princ, + arg->keyblocks, arg->n_keys); + } else { + krb5_klog_syslog(LOG_NOTICE, LOG_UNAUTH, "kadm5_setkey_principal", + prime_arg, client_name.value, service_name.value, + inet_ntoa(rqstp->rq_xprt->xp_raddr.sin_addr)); + ret.code = KADM5_AUTH_SETKEY; + } + + if(ret.code != KADM5_AUTH_SETKEY) { + krb5_klog_syslog(LOG_NOTICE, LOG_DONE, "kadm5_setkey_principal", + prime_arg, ((ret.code == 0) ? "success" : + error_message(ret.code)), + client_name.value, service_name.value, + inet_ntoa(rqstp->rq_xprt->xp_raddr.sin_addr)); + } + + free_server_handle(handle); + free(prime_arg); + gss_release_buffer(&minor_stat, &client_name); + gss_release_buffer(&minor_stat, &service_name); + return &ret; +} + chrand_ret * chrand_principal_1(chrand_arg *arg, struct svc_req *rqstp) { |
