From 452fcdccdccb4340f20c85dd9d4f45ee2b02bf37 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Mon, 20 Jun 2011 19:35:50 -0400 Subject: ipa-kdb: implement change_pwd function --- util/ipa_krb5.c | 33 +++++++++++++++++++++++++++++++++ util/ipa_krb5.h | 4 ++++ 2 files changed, 37 insertions(+) (limited to 'util') diff --git a/util/ipa_krb5.c b/util/ipa_krb5.c index 96056c76..5b6fc582 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 7019e5e6..f0513d10 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_ */ -- cgit