summaryrefslogtreecommitdiffstats
path: root/src/lib/kadm5/clnt
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2010-10-08 03:57:28 +0000
committerTom Yu <tlyu@mit.edu>2010-10-08 03:57:28 +0000
commit1cc59c12550c828d487c622990d83481e8bbb6c5 (patch)
treea22d50f4041bfa23ad1001bfa6164626602885ac /src/lib/kadm5/clnt
parentbd7b3a76ef6ca5485ec8a8b2de4a2a5170356f84 (diff)
downloadkrb5-1cc59c12550c828d487c622990d83481e8bbb6c5.tar.gz
krb5-1cc59c12550c828d487c622990d83481e8bbb6c5.tar.xz
krb5-1cc59c12550c828d487c622990d83481e8bbb6c5.zip
Add a kadm5 RPC for purging old keys from the KDB (e.g., from
change_password -keepold), and add a kadmin CLI command for it. Keeping ticket open because an automated test needs to be added. Long-term future work includes start/expire dates on keys, or not-yet-valid flags. ticket: 1219 status: open target_version: 1.9 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24442 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kadm5/clnt')
-rw-r--r--src/lib/kadm5/clnt/client_principal.c23
-rw-r--r--src/lib/kadm5/clnt/client_rpc.c15
-rw-r--r--src/lib/kadm5/clnt/libkadm5clnt_mit.exports1
3 files changed, 39 insertions, 0 deletions
diff --git a/src/lib/kadm5/clnt/client_principal.c b/src/lib/kadm5/clnt/client_principal.c
index 95d5c2dbd3..019c50a28f 100644
--- a/src/lib/kadm5/clnt/client_principal.c
+++ b/src/lib/kadm5/clnt/client_principal.c
@@ -463,3 +463,26 @@ kadm5_ret_t kadm5_decrypt_key(void *server_handle,
{
return EINVAL;
}
+
+kadm5_ret_t
+kadm5_purgekeys(void *server_handle,
+ krb5_principal princ,
+ int keepkvno)
+{
+ purgekeys_arg arg;
+ generic_ret *r;
+ kadm5_server_handle_t handle = server_handle;
+
+ CHECK_HANDLE(server_handle);
+
+ arg.princ = princ;
+ arg.keepkvno = keepkvno;
+ arg.api_version = handle->api_version;
+
+ if (princ == NULL)
+ return EINVAL;
+ r = purgekeys_2(&arg, handle->clnt);
+ if(r == NULL)
+ eret();
+ return r->code;
+}
diff --git a/src/lib/kadm5/clnt/client_rpc.c b/src/lib/kadm5/clnt/client_rpc.c
index 184f154fca..95417a60ce 100644
--- a/src/lib/kadm5/clnt/client_rpc.c
+++ b/src/lib/kadm5/clnt/client_rpc.c
@@ -326,3 +326,18 @@ init_2(void *argp, CLIENT *clnt)
}
return (&clnt_res);
}
+
+generic_ret *
+purgekeys_2(purgekeys_arg *argp, CLIENT *clnt)
+{
+ static generic_ret clnt_res;
+
+ memset(&clnt_res, 0, sizeof(clnt_res));
+ if (clnt_call(clnt, PURGEKEYS,
+ (xdrproc_t) xdr_purgekeys_arg, (caddr_t) argp,
+ (xdrproc_t) xdr_generic_ret, (caddr_t) &clnt_res,
+ TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return (&clnt_res);
+}
diff --git a/src/lib/kadm5/clnt/libkadm5clnt_mit.exports b/src/lib/kadm5/clnt/libkadm5clnt_mit.exports
index 5e81580b19..249a3c774c 100644
--- a/src/lib/kadm5/clnt/libkadm5clnt_mit.exports
+++ b/src/lib/kadm5/clnt/libkadm5clnt_mit.exports
@@ -32,6 +32,7 @@ kadm5_init_with_skey
kadm5_lock
kadm5_modify_policy
kadm5_modify_principal
+kadm5_purgekeys
kadm5_randkey_principal
kadm5_randkey_principal_3
kadm5_rename_principal