summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2011-06-20 19:35:50 -0400
committerSimo Sorce <ssorce@redhat.com>2011-08-26 08:24:49 -0400
commit452fcdccdccb4340f20c85dd9d4f45ee2b02bf37 (patch)
tree65e61bd20f90aad8b56ffe92b8083c3091a4703a /util
parent49c25dbdf5b51a6cc157135a0d2f89c7eb408dd9 (diff)
downloadfreeipa-452fcdccdccb4340f20c85dd9d4f45ee2b02bf37.tar.gz
freeipa-452fcdccdccb4340f20c85dd9d4f45ee2b02bf37.tar.xz
freeipa-452fcdccdccb4340f20c85dd9d4f45ee2b02bf37.zip
ipa-kdb: implement change_pwd function
Diffstat (limited to 'util')
-rw-r--r--util/ipa_krb5.c33
-rw-r--r--util/ipa_krb5.h4
2 files changed, 37 insertions, 0 deletions
diff --git a/util/ipa_krb5.c b/util/ipa_krb5.c
index 96056c769..5b6fc5821 100644
--- a/util/ipa_krb5.c
+++ b/util/ipa_krb5.c
@@ -452,3 +452,36 @@ fail:
return kerr;
}
+krb5_error_code filter_key_salt_tuples(krb5_context context,
+ krb5_key_salt_tuple *req, int n_req,
+ krb5_key_salt_tuple *supp, int n_supp,
+ krb5_key_salt_tuple **res, int *n_res)
+{
+ krb5_key_salt_tuple *ks = NULL;
+ int n_ks;
+ int i, j;
+
+ ks = calloc(n_req, sizeof(krb5_key_salt_tuple));
+ if (!ks) {
+ return ENOMEM;
+ }
+ n_ks = 0;
+
+ for (i = 0; i < n_req; i++) {
+ for (j = 0; j < n_supp; j++) {
+ if (req[i].ks_enctype == supp[j].ks_enctype &&
+ req[i].ks_salttype == supp[j].ks_salttype) {
+ break;
+ }
+ }
+ if (j < n_supp) {
+ ks[n_ks] = req[i];
+ n_ks++;
+ }
+ }
+
+ *res = ks;
+ *n_res = n_ks;
+ return 0;
+}
+
diff --git a/util/ipa_krb5.h b/util/ipa_krb5.h
index 7019e5e63..f0513d109 100644
--- a/util/ipa_krb5.h
+++ b/util/ipa_krb5.h
@@ -32,4 +32,8 @@ krb5_error_code parse_bval_key_salt_tuples(krb5_context kcontext,
krb5_key_salt_tuple **kst,
int *n_kst);
+krb5_error_code filter_key_salt_tuples(krb5_context context,
+ krb5_key_salt_tuple *req, int n_req,
+ krb5_key_salt_tuple *supp, int n_supp,
+ krb5_key_salt_tuple **res, int *n_res);
#endif /* __IPA_KRB5_H_ */