diff options
Diffstat (limited to 'util')
-rw-r--r-- | util/ipa_krb5.c | 33 | ||||
-rw-r--r-- | util/ipa_krb5.h | 4 |
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_ */ |