summaryrefslogtreecommitdiffstats
path: root/src/kadmin/server
diff options
context:
space:
mode:
authorBarry Jaspan <bjaspan@mit.edu>1997-04-23 19:53:16 +0000
committerBarry Jaspan <bjaspan@mit.edu>1997-04-23 19:53:16 +0000
commit47a32a44d71b8433300739dbd3b6899c12b53227 (patch)
tree16a579383eaf958832b98c4c54f93fce6c47713c /src/kadmin/server
parent76e9c5c254f618b90542b3e309ac5e3a0a888786 (diff)
downloadkrb5-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/ChangeLog4
-rw-r--r--src/kadmin/server/kadm_rpc_svc.c11
-rw-r--r--src/kadmin/server/server_stubs.c55
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)
{