From ffe869d120829d034af8b7a6c96e1a42fd156f6d Mon Sep 17 00:00:00 2001 From: forrest_ly Date: Wed, 16 Mar 2022 10:39:48 +0800 Subject: [PATCH] Init for Anolis OS 23 --- Add-APIs-for-marshalling-credentials.patch | 220 + ...P_GET_CRED_LIST-for-faster-iteration.patch | 358 + ...detection-of-the-OpenSSL-3-KDF-inter.patch | 25 + ...canonicalization-helper-to-k5test.py.patch | 84 + ...ith-keytab-to-defer-canonicalization.patch | 60 + ...context-after-failed-open-in-libkdb5.patch | 35 + ...up-gssapi_krb5-ccache-name-functions.patch | 193 + ...CM-flag-transmission-for-remove_cred.patch | 103 + Fix-KCM-retrieval-support-for-sssd.patch | 62 + ...-deref-on-TGS-inner-body-null-server.patch | 45 + Fix-k5tls-module-for-OpenSSL-3.patch | 58 + ...in-k-with-fallback-or-referral-realm.patch | 64 + ...aks-on-error-in-kadm5-init-functions.patch | 664 + ...pkcs11-build-issues-with-openssl-3.0.patch | 552 + ...incipal-realm-canonicalization-cases.patch | 96 + Handle-OpenSSL-3-s-providers.patch | 301 + ...teration-fallback-work-with-sssd-kcm.patch | 26 + ...dejagnu-kadmin-tests-to-Python-tests.patch | 1750 ++ Remove-TCL-based-libkadm5-API-tests.patch | 18229 ++++++++++++++++ ...ecated-OpenSSL-calls-from-softpkcs11.patch | 150 + Support-host-based-GSS-initiator-names.patch | 578 + Use-KCM_OP_RETRIEVE-in-KCM-client.patch | 235 + ...KDF-and-KRB5KDF-for-deriving-long-te.patch | 482 + ...SSL-s-SSKDF-in-PKINIT-when-available.patch | 408 + Use-asan-in-one-of-the-CI-builds.patch | 22 + ...am-FIPS-with-PRNG-and-RADIUS-and-MD4.patch | 604 + downstream-Remove-3des-support.patch | 6397 ++++++ downstream-SELinux-integration.patch | 1034 + downstream-fix-debuginfo-with-y.tab.c.patch | 41 + downstream-ksu-pam-integration.patch | 774 + downstream-netlib-and-dns.patch | 24 + kadm5.acl | 1 + kadmin.service | 15 + kadmin.sysconfig | 1 + kadmind.logrotate | 9 + kdc.conf | 14 + kprop.service | 13 + kprop.sysconfig | 1 + krb5-1.19.2.tar.gz | Bin 0 -> 8741053 bytes krb5-1.19.2.tar.gz.asc | 16 + krb5-krb5kdc.conf | 1 + krb5.conf | 30 + krb5.spec | 564 + krb5kdc.logrotate | 9 + krb5kdc.service | 14 + krb5kdc.sysconfig | 1 + ksu.pamd | 4 + 47 files changed, 34367 insertions(+) create mode 100644 Add-APIs-for-marshalling-credentials.patch create mode 100644 Add-KCM_OP_GET_CRED_LIST-for-faster-iteration.patch create mode 100644 Add-buildsystem-detection-of-the-OpenSSL-3-KDF-inter.patch create mode 100644 Add-hostname-canonicalization-helper-to-k5test.py.patch create mode 100644 Allow-kinit-with-keytab-to-defer-canonicalization.patch create mode 100644 Clean-up-context-after-failed-open-in-libkdb5.patch create mode 100644 Clean-up-gssapi_krb5-ccache-name-functions.patch create mode 100644 Fix-KCM-flag-transmission-for-remove_cred.patch create mode 100644 Fix-KCM-retrieval-support-for-sssd.patch create mode 100644 Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch create mode 100644 Fix-k5tls-module-for-OpenSSL-3.patch create mode 100644 Fix-kadmin-k-with-fallback-or-referral-realm.patch create mode 100644 Fix-leaks-on-error-in-kadm5-init-functions.patch create mode 100644 Fix-softpkcs11-build-issues-with-openssl-3.0.patch create mode 100644 Fix-some-principal-realm-canonicalization-cases.patch create mode 100644 Handle-OpenSSL-3-s-providers.patch create mode 100644 Make-KCM-iteration-fallback-work-with-sssd-kcm.patch create mode 100644 Move-some-dejagnu-kadmin-tests-to-Python-tests.patch create mode 100644 Remove-TCL-based-libkadm5-API-tests.patch create mode 100644 Remove-deprecated-OpenSSL-calls-from-softpkcs11.patch create mode 100644 Support-host-based-GSS-initiator-names.patch create mode 100644 Use-KCM_OP_RETRIEVE-in-KCM-client.patch create mode 100644 Use-OpenSSL-s-KBKDF-and-KRB5KDF-for-deriving-long-te.patch create mode 100644 Use-OpenSSL-s-SSKDF-in-PKINIT-when-available.patch create mode 100644 Use-asan-in-one-of-the-CI-builds.patch create mode 100644 downstream-FIPS-with-PRNG-and-RADIUS-and-MD4.patch create mode 100644 downstream-Remove-3des-support.patch create mode 100644 downstream-SELinux-integration.patch create mode 100644 downstream-fix-debuginfo-with-y.tab.c.patch create mode 100644 downstream-ksu-pam-integration.patch create mode 100644 downstream-netlib-and-dns.patch create mode 100644 kadm5.acl create mode 100644 kadmin.service create mode 100644 kadmin.sysconfig create mode 100644 kadmind.logrotate create mode 100644 kdc.conf create mode 100644 kprop.service create mode 100644 kprop.sysconfig create mode 100644 krb5-1.19.2.tar.gz create mode 100644 krb5-1.19.2.tar.gz.asc create mode 100644 krb5-krb5kdc.conf create mode 100644 krb5.conf create mode 100644 krb5.spec create mode 100644 krb5kdc.logrotate create mode 100644 krb5kdc.service create mode 100644 krb5kdc.sysconfig create mode 100644 ksu.pamd diff --git a/Add-APIs-for-marshalling-credentials.patch b/Add-APIs-for-marshalling-credentials.patch new file mode 100644 index 0000000..8578721 --- /dev/null +++ b/Add-APIs-for-marshalling-credentials.patch @@ -0,0 +1,220 @@ +From 3a99832252755cf7e5fef2bd824459cea3eb823e Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Thu, 14 Jan 2021 18:13:09 -0500 +Subject: [PATCH] Add APIs for marshalling credentials + +Faciliate KCM daemon implementations by providing functions to +deserialize and reserialize credentials in the FILE v4 format. + +[ghudson@mit.edu: minor editorial changes] + +ticket: 8980 (new) +(cherry picked from commit 18ea3bd2fca55b789b7de9c663624bc11d348fa6) +--- + doc/appdev/refs/api/index.rst | 2 ++ + src/include/krb5/krb5.hin | 36 ++++++++++++++++++++++ + src/lib/krb5/ccache/ccmarshal.c | 53 +++++++++++++++++++++++++++++++++ + src/lib/krb5/ccache/t_marshal.c | 15 +++++++++- + src/lib/krb5/libkrb5.exports | 2 ++ + src/lib/krb5_32.def | 4 +++ + 6 files changed, 111 insertions(+), 1 deletion(-) + +diff --git a/doc/appdev/refs/api/index.rst b/doc/appdev/refs/api/index.rst +index 727d9b492..9e03fd386 100644 +--- a/doc/appdev/refs/api/index.rst ++++ b/doc/appdev/refs/api/index.rst +@@ -232,6 +232,7 @@ Rarely used public interfaces + krb5_kt_remove_entry.rst + krb5_kt_start_seq_get.rst + krb5_make_authdata_kdc_issued.rst ++ krb5_marshal_credentials.rst + krb5_merge_authdata.rst + krb5_mk_1cred.rst + krb5_mk_error.rst +@@ -285,6 +286,7 @@ Rarely used public interfaces + krb5_tkt_creds_get_times.rst + krb5_tkt_creds_init.rst + krb5_tkt_creds_step.rst ++ krb5_unmarshal_credentials.rst + krb5_verify_init_creds.rst + krb5_verify_init_creds_opt_init.rst + krb5_verify_init_creds_opt_set_ap_req_nofail.rst +diff --git a/src/include/krb5/krb5.hin b/src/include/krb5/krb5.hin +index 63e67a2ba..c26dde535 100644 +--- a/src/include/krb5/krb5.hin ++++ b/src/include/krb5/krb5.hin +@@ -3125,6 +3125,42 @@ krb5_get_credentials(krb5_context context, krb5_flags options, + krb5_ccache ccache, krb5_creds *in_creds, + krb5_creds **out_creds); + ++/** ++ * Serialize a @c krb5_creds object. ++ * ++ * @param [in] context Library context ++ * @param [in] creds The credentials object to serialize ++ * @param [out] data_out The serialized credentials ++ * ++ * Serialize @a creds in the format used by the FILE ccache format (vesion 4) ++ * and KCM ccache protocol. ++ * ++ * Use krb5_free_data() to free @a data_out when it is no longer needed. ++ * ++ * @retval 0 Success; otherwise - Kerberos error codes ++ */ ++krb5_error_code KRB5_CALLCONV ++krb5_marshal_credentials(krb5_context context, krb5_creds *in_creds, ++ krb5_data **data_out); ++ ++/** ++ * Deserialize a @c krb5_creds object. ++ * ++ * @param [in] context Library context ++ * @param [in] data The serialized credentials ++ * @param [out] creds_out The resulting creds object ++ * ++ * Deserialize @a data to credentials in the format used by the FILE ccache ++ * format (vesion 4) and KCM ccache protocol. ++ * ++ * Use krb5_free_creds() to free @a creds_out when it is no longer needed. ++ * ++ * @retval 0 Success; otherwise - Kerberos error codes ++ */ ++krb5_error_code KRB5_CALLCONV ++krb5_unmarshal_credentials(krb5_context context, const krb5_data *data, ++ krb5_creds **creds_out); ++ + /** @deprecated Replaced by krb5_get_validated_creds. */ + krb5_error_code KRB5_CALLCONV + krb5_get_credentials_validate(krb5_context context, krb5_flags options, +diff --git a/src/lib/krb5/ccache/ccmarshal.c b/src/lib/krb5/ccache/ccmarshal.c +index ae634ccab..ab284e721 100644 +--- a/src/lib/krb5/ccache/ccmarshal.c ++++ b/src/lib/krb5/ccache/ccmarshal.c +@@ -515,3 +515,56 @@ k5_marshal_mcred(struct k5buf *buf, krb5_creds *mcred) + if (mcred->second_ticket.length > 0) + put_data(buf, version, &mcred->second_ticket); + } ++ ++krb5_error_code KRB5_CALLCONV ++krb5_marshal_credentials(krb5_context context, krb5_creds *in_creds, ++ krb5_data **data_out) ++{ ++ krb5_error_code ret; ++ krb5_data *data; ++ struct k5buf buf; ++ ++ *data_out = NULL; ++ ++ data = k5alloc(sizeof(krb5_data), &ret); ++ if (ret) ++ return ret; ++ ++ k5_buf_init_dynamic(&buf); ++ k5_marshal_cred(&buf, 4, in_creds); ++ ++ ret = k5_buf_status(&buf); ++ if (ret) { ++ free(data); ++ return ret; ++ } ++ ++ /* Steal payload from buf. */ ++ *data = make_data(buf.data, buf.len); ++ *data_out = data; ++ return 0; ++} ++ ++krb5_error_code KRB5_CALLCONV ++krb5_unmarshal_credentials(krb5_context context, const krb5_data *data, ++ krb5_creds **creds_out) ++{ ++ krb5_error_code ret; ++ krb5_creds *creds; ++ ++ *creds_out = NULL; ++ ++ creds = k5alloc(sizeof(krb5_creds), &ret); ++ if (ret) ++ return ret; ++ ++ ret = k5_unmarshal_cred((unsigned char *)data->data, data->length, 4, ++ creds); ++ if (ret) { ++ free(creds); ++ return ret; ++ } ++ ++ *creds_out = creds; ++ return 0; ++} +diff --git a/src/lib/krb5/ccache/t_marshal.c b/src/lib/krb5/ccache/t_marshal.c +index bd0284afa..96e0931a2 100644 +--- a/src/lib/krb5/ccache/t_marshal.c ++++ b/src/lib/krb5/ccache/t_marshal.c +@@ -268,13 +268,14 @@ main(int argc, char **argv) + krb5_context context; + krb5_ccache cache; + krb5_principal princ; +- krb5_creds cred1, cred2; ++ krb5_creds cred1, cred2, *alloc_cred; + krb5_cc_cursor cursor; + const char *filename; + char *ccname, filebuf[256]; + int version, fd; + const struct test *t; + struct k5buf buf; ++ krb5_data ser_data, *alloc_data; + + if (argc != 2) + abort(); +@@ -285,6 +286,18 @@ main(int argc, char **argv) + if (krb5_init_context(&context) != 0) + abort(); + ++ /* Test public functions for unmarshalling and marshalling. */ ++ ser_data = make_data((char *)tests[3].cred1, tests[3].cred1len); ++ if (krb5_unmarshal_credentials(context, &ser_data, &alloc_cred) != 0) ++ abort(); ++ verify_cred1(alloc_cred); ++ if (krb5_marshal_credentials(context, alloc_cred, &alloc_data) != 0) ++ abort(); ++ assert(alloc_data->length == tests[3].cred1len); ++ assert(memcmp(tests[3].cred1, alloc_data->data, alloc_data->length) == 0); ++ krb5_free_data(context, alloc_data); ++ krb5_free_creds(context, alloc_cred); ++ + for (version = FIRST_VERSION; version <= 4; version++) { + t = &tests[version - 1]; + +diff --git a/src/lib/krb5/libkrb5.exports b/src/lib/krb5/libkrb5.exports +index 2d9d56530..adbfa332b 100644 +--- a/src/lib/krb5/libkrb5.exports ++++ b/src/lib/krb5/libkrb5.exports +@@ -489,6 +489,7 @@ krb5_lock_file + krb5_make_authdata_kdc_issued + krb5_make_full_ipaddr + krb5_make_fulladdr ++krb5_marshal_credentials + krb5_mcc_ops + krb5_merge_authdata + krb5_mk_1cred +@@ -592,6 +593,7 @@ krb5_timeofday + krb5_timestamp_to_sfstring + krb5_timestamp_to_string + krb5_unlock_file ++krb5_unmarshal_credentials + krb5_unpack_full_ipaddr + krb5_unparse_name + krb5_unparse_name_ext +diff --git a/src/lib/krb5_32.def b/src/lib/krb5_32.def +index 4953907aa..60b8dd311 100644 +--- a/src/lib/krb5_32.def ++++ b/src/lib/krb5_32.def +@@ -503,3 +503,7 @@ EXPORTS + ; new in 1.19 + k5_cc_store_primary_cred @470 ; PRIVATE + k5_kt_have_match @471 ; PRIVATE GSSAPI ++ ++; new in 1.20 ++ krb5_marshal_credentials @472 ++ krb5_unmarshal_credentials @473 diff --git a/Add-KCM_OP_GET_CRED_LIST-for-faster-iteration.patch b/Add-KCM_OP_GET_CRED_LIST-for-faster-iteration.patch new file mode 100644 index 0000000..455e3e0 --- /dev/null +++ b/Add-KCM_OP_GET_CRED_LIST-for-faster-iteration.patch @@ -0,0 +1,358 @@ +From 8772d8f47b7460a0eef48366881483fd9b3acfd3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pavel=20B=C5=99ezina?= +Date: Thu, 11 Feb 2021 15:33:10 +0100 +Subject: [PATCH] Add KCM_OP_GET_CRED_LIST for faster iteration + +For large caches, one IPC operation per credential dominates the cost +of iteration. Instead transfer the whole list of credentials to the +client in one IPC operation. + +Add optional support for the new opcode to the test KCM server to +allow testing of the main and fallback code paths. + +[ghudson@mit.edu: fixed memory leaks and potential memory errors; +adjusted code style and comments; rewrote commit message; added +kcmserver.py support and tests] + +ticket: 8990 (new) +(cherry picked from commit 81bdb47d8ded390263d8ee48f71d5c312b4f1736) +--- + src/include/kcm.h | 12 ++- + src/lib/krb5/ccache/cc_kcm.c | 144 ++++++++++++++++++++++++++++++++--- + src/tests/kcmserver.py | 28 ++++++- + src/tests/t_ccache.py | 10 ++- + 4 files changed, 175 insertions(+), 19 deletions(-) + +diff --git a/src/include/kcm.h b/src/include/kcm.h +index 5ea1447cd..e4140c3a0 100644 +--- a/src/include/kcm.h ++++ b/src/include/kcm.h +@@ -51,9 +51,9 @@ + * + * All replies begin with a 32-bit big-endian reply code. + * +- * Parameters are appended to the request or reply with no delimiters. Flags +- * and time offsets are stored as 32-bit big-endian integers. Names are +- * marshalled as zero-terminated strings. Principals and credentials are ++ * Parameters are appended to the request or reply with no delimiters. Flags, ++ * time offsets, and lengths are stored as 32-bit big-endian integers. Names ++ * are marshalled as zero-terminated strings. Principals and credentials are + * marshalled in the v4 FILE ccache format. UUIDs are 16 bytes. UUID lists + * are not delimited, so nothing can come after them. + */ +@@ -89,7 +89,11 @@ typedef enum kcm_opcode { + KCM_OP_HAVE_NTLM_CRED, + KCM_OP_DEL_NTLM_CRED, + KCM_OP_DO_NTLM_AUTH, +- KCM_OP_GET_NTLM_USER_LIST ++ KCM_OP_GET_NTLM_USER_LIST, ++ ++ /* MIT extensions */ ++ KCM_OP_MIT_EXTENSION_BASE = 13000, ++ KCM_OP_GET_CRED_LIST, /* (name) -> (count, count*{len, cred}) */ + } kcm_opcode; + + #endif /* KCM_H */ +diff --git a/src/lib/krb5/ccache/cc_kcm.c b/src/lib/krb5/ccache/cc_kcm.c +index 9093f894d..772928e4d 100644 +--- a/src/lib/krb5/ccache/cc_kcm.c ++++ b/src/lib/krb5/ccache/cc_kcm.c +@@ -61,6 +61,17 @@ struct uuid_list { + size_t pos; + }; + ++struct cred_list { ++ krb5_creds *creds; ++ size_t count; ++ size_t pos; ++}; ++ ++struct kcm_cursor { ++ struct uuid_list *uuids; ++ struct cred_list *creds; ++}; ++ + struct kcmio { + SOCKET fd; + #ifdef __APPLE__ +@@ -489,6 +500,69 @@ free_uuid_list(struct uuid_list *uuids) + free(uuids); + } + ++static void ++free_cred_list(struct cred_list *list) ++{ ++ size_t i; ++ ++ if (list == NULL) ++ return; ++ ++ /* Creds are transferred to the caller as list->pos is incremented, so we ++ * can start freeing there. */ ++ for (i = list->pos; i < list->count; i++) ++ krb5_free_cred_contents(NULL, &list->creds[i]); ++ free(list->creds); ++ free(list); ++} ++ ++/* Fetch a cred list from req->reply. */ ++static krb5_error_code ++kcmreq_get_cred_list(struct kcmreq *req, struct cred_list **creds_out) ++{ ++ struct cred_list *list; ++ const unsigned char *data; ++ krb5_error_code ret = 0; ++ size_t count, len, i; ++ ++ *creds_out = NULL; ++ ++ /* Check a rough bound on the count to prevent very large allocations. */ ++ count = k5_input_get_uint32_be(&req->reply); ++ if (count > req->reply.len / 4) ++ return KRB5_KCM_MALFORMED_REPLY; ++ ++ list = malloc(sizeof(*list)); ++ if (list == NULL) ++ return ENOMEM; ++ ++ list->creds = NULL; ++ list->count = count; ++ list->pos = 0; ++ list->creds = k5calloc(count, sizeof(*list->creds), &ret); ++ if (list->creds == NULL) { ++ free(list); ++ return ret; ++ } ++ ++ for (i = 0; i < count; i++) { ++ len = k5_input_get_uint32_be(&req->reply); ++ data = k5_input_get_bytes(&req->reply, len); ++ if (data == NULL) ++ break; ++ ret = k5_unmarshal_cred(data, len, 4, &list->creds[i]); ++ if (ret) ++ break; ++ } ++ if (i < count) { ++ free_cred_list(list); ++ return (ret == ENOMEM) ? ENOMEM : KRB5_KCM_MALFORMED_REPLY; ++ } ++ ++ *creds_out = list; ++ return 0; ++} ++ + static void + kcmreq_free(struct kcmreq *req) + { +@@ -753,33 +827,53 @@ kcm_start_seq_get(krb5_context context, krb5_ccache cache, + { + krb5_error_code ret; + struct kcmreq req = EMPTY_KCMREQ; +- struct uuid_list *uuids; ++ struct uuid_list *uuids = NULL; ++ struct cred_list *creds = NULL; ++ struct kcm_cursor *cursor; + + *cursor_out = NULL; + + get_kdc_offset(context, cache); + +- kcmreq_init(&req, KCM_OP_GET_CRED_UUID_LIST, cache); ++ kcmreq_init(&req, KCM_OP_GET_CRED_LIST, cache); + ret = cache_call(context, cache, &req); +- if (ret) ++ if (ret == 0) { ++ /* GET_CRED_LIST is available. */ ++ ret = kcmreq_get_cred_list(&req, &creds); ++ if (ret) ++ goto cleanup; ++ } else if (ret == KRB5_FCC_INTERNAL) { ++ /* Fall back to GET_CRED_UUID_LIST. */ ++ kcmreq_free(&req); ++ kcmreq_init(&req, KCM_OP_GET_CRED_UUID_LIST, cache); ++ ret = cache_call(context, cache, &req); ++ if (ret) ++ goto cleanup; ++ ret = kcmreq_get_uuid_list(&req, &uuids); ++ if (ret) ++ goto cleanup; ++ } else { + goto cleanup; +- ret = kcmreq_get_uuid_list(&req, &uuids); +- if (ret) ++ } ++ ++ cursor = k5alloc(sizeof(*cursor), &ret); ++ if (cursor == NULL) + goto cleanup; +- *cursor_out = (krb5_cc_cursor)uuids; ++ cursor->uuids = uuids; ++ cursor->creds = creds; ++ *cursor_out = (krb5_cc_cursor)cursor; + + cleanup: + kcmreq_free(&req); + return ret; + } + +-static krb5_error_code KRB5_CALLCONV +-kcm_next_cred(krb5_context context, krb5_ccache cache, krb5_cc_cursor *cursor, +- krb5_creds *cred_out) ++static krb5_error_code ++next_cred_by_uuid(krb5_context context, krb5_ccache cache, ++ struct uuid_list *uuids, krb5_creds *cred_out) + { + krb5_error_code ret; + struct kcmreq req; +- struct uuid_list *uuids = (struct uuid_list *)*cursor; + + memset(cred_out, 0, sizeof(*cred_out)); + +@@ -797,11 +891,39 @@ kcm_next_cred(krb5_context context, krb5_ccache cache, krb5_cc_cursor *cursor, + return map_invalid(ret); + } + ++static krb5_error_code KRB5_CALLCONV ++kcm_next_cred(krb5_context context, krb5_ccache cache, krb5_cc_cursor *cursor, ++ krb5_creds *cred_out) ++{ ++ struct kcm_cursor *c = (struct kcm_cursor *)*cursor; ++ struct cred_list *list; ++ ++ if (c->uuids != NULL) ++ return next_cred_by_uuid(context, cache, c->uuids, cred_out); ++ ++ list = c->creds; ++ if (list->pos >= list->count) ++ return KRB5_CC_END; ++ ++ /* Transfer memory ownership of one cred to the caller. */ ++ *cred_out = list->creds[list->pos]; ++ memset(&list->creds[list->pos], 0, sizeof(*list->creds)); ++ list->pos++; ++ ++ return 0; ++} ++ + static krb5_error_code KRB5_CALLCONV + kcm_end_seq_get(krb5_context context, krb5_ccache cache, + krb5_cc_cursor *cursor) + { +- free_uuid_list((struct uuid_list *)*cursor); ++ struct kcm_cursor *c = *cursor; ++ ++ if (c == NULL) ++ return 0; ++ free_uuid_list(c->uuids); ++ free_cred_list(c->creds); ++ free(c); + *cursor = NULL; + return 0; + } +diff --git a/src/tests/kcmserver.py b/src/tests/kcmserver.py +index 57432e5a7..8c5e66ff1 100644 +--- a/src/tests/kcmserver.py ++++ b/src/tests/kcmserver.py +@@ -23,6 +23,7 @@ + # traceback.print_exception(etype, value, tb, file=f) + # sys.excepthook = ehook + ++import optparse + import select + import socket + import struct +@@ -49,12 +50,14 @@ class KCMOpcodes(object): + SET_DEFAULT_CACHE = 21 + GET_KDC_OFFSET = 22 + SET_KDC_OFFSET = 23 ++ GET_CRED_LIST = 13001 + + + class KRB5Errors(object): + KRB5_CC_END = -1765328242 + KRB5_CC_NOSUPP = -1765328137 + KRB5_FCC_NOFILE = -1765328189 ++ KRB5_FCC_INTERNAL = -1765328188 + + + def make_uuid(): +@@ -183,6 +186,14 @@ def op_set_kdc_offset(argbytes): + return 0, b'' + + ++def op_get_cred_list(argbytes): ++ name, rest = unmarshal_name(argbytes) ++ cache = get_cache(name) ++ creds = [cache.creds[u] for u in cache.cred_uuids] ++ return 0, (struct.pack('>L', len(creds)) + ++ b''.join(struct.pack('>L', len(c)) + c for c in creds)) ++ ++ + ophandlers = { + KCMOpcodes.GEN_NEW : op_gen_new, + KCMOpcodes.INITIALIZE : op_initialize, +@@ -197,7 +208,8 @@ ophandlers = { + KCMOpcodes.GET_DEFAULT_CACHE : op_get_default_cache, + KCMOpcodes.SET_DEFAULT_CACHE : op_set_default_cache, + KCMOpcodes.GET_KDC_OFFSET : op_get_kdc_offset, +- KCMOpcodes.SET_KDC_OFFSET : op_set_kdc_offset ++ KCMOpcodes.SET_KDC_OFFSET : op_set_kdc_offset, ++ KCMOpcodes.GET_CRED_LIST : op_get_cred_list + } + + # Read and respond to a request from the socket s. +@@ -215,7 +227,11 @@ def service_request(s): + + majver, minver, op = struct.unpack('>BBH', req[:4]) + argbytes = req[4:] +- code, payload = ophandlers[op](argbytes) ++ ++ if op in ophandlers: ++ code, payload = ophandlers[op](argbytes) ++ else: ++ code, payload = KRB5Errors.KRB5_FCC_INTERNAL, b'' + + # The KCM response is the code (4 bytes) and the response payload. + # The Heimdal IPC response is the length of the KCM response (4 +@@ -226,9 +242,15 @@ def service_request(s): + s.sendall(hipc_response) + return True + ++parser = optparse.OptionParser() ++parser.add_option('-c', '--credlist', action='store_true', dest='credlist', ++ default=False, help='Support KCM_OP_GET_CRED_LIST') ++(options, args) = parser.parse_args() ++if not options.credlist: ++ del ophandlers[KCMOpcodes.GET_CRED_LIST] + + server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) +-server.bind(sys.argv[1]) ++server.bind(args[0]) + server.listen(5) + select_input = [server,] + sys.stderr.write('starting...\n') +diff --git a/src/tests/t_ccache.py b/src/tests/t_ccache.py +index 66804afa5..90040fb7b 100755 +--- a/src/tests/t_ccache.py ++++ b/src/tests/t_ccache.py +@@ -125,10 +125,18 @@ def collection_test(realm, ccname): + + + collection_test(realm, 'DIR:' + os.path.join(realm.testdir, 'cc')) ++ ++# Test KCM without and with GET_CRED_LIST support. + kcmserver_path = os.path.join(srctop, 'tests', 'kcmserver.py') +-realm.start_server([sys.executable, kcmserver_path, kcm_socket_path], ++kcmd = realm.start_server([sys.executable, kcmserver_path, kcm_socket_path], ++ 'starting...') ++collection_test(realm, 'KCM:') ++stop_daemon(kcmd) ++os.remove(kcm_socket_path) ++realm.start_server([sys.executable, kcmserver_path, '-c', kcm_socket_path], + 'starting...') + collection_test(realm, 'KCM:') ++ + if test_keyring: + def cleanup_keyring(anchor, name): + out = realm.run(['keyctl', 'list', anchor]) diff --git a/Add-buildsystem-detection-of-the-OpenSSL-3-KDF-inter.patch b/Add-buildsystem-detection-of-the-OpenSSL-3-KDF-inter.patch new file mode 100644 index 0000000..269a457 --- /dev/null +++ b/Add-buildsystem-detection-of-the-OpenSSL-3-KDF-inter.patch @@ -0,0 +1,25 @@ +From 2f039fc910022c9569fe6941a194f0b26bd6c894 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Fri, 20 Sep 2019 16:11:29 -0400 +Subject: [PATCH] Add buildsystem detection of the OpenSSL-3 KDF interface + +(cherry picked from commit a3e03dfd40928c4615bd9b8546eac0c104377850) +--- + src/configure.ac | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/configure.ac b/src/configure.ac +index eb6307468..9c2e816fe 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -282,6 +282,10 @@ AC_SUBST(CRYPTO_IMPL) + AC_SUBST(CRYPTO_IMPL_CFLAGS) + AC_SUBST(CRYPTO_IMPL_LIBS) + ++if test "$CRYPTO_IMPL" = openssl; then ++ AC_CHECK_FUNCS(EVP_KDF_fetch) ++fi ++ + AC_ARG_WITH([prng-alg], + AC_HELP_STRING([--with-prng-alg=ALG], [use specified PRNG algorithm. @<:@fortuna@:>@]), + [PRNG_ALG=$withval diff --git a/Add-hostname-canonicalization-helper-to-k5test.py.patch b/Add-hostname-canonicalization-helper-to-k5test.py.patch new file mode 100644 index 0000000..58179a2 --- /dev/null +++ b/Add-hostname-canonicalization-helper-to-k5test.py.patch @@ -0,0 +1,84 @@ +From e88f0319427cee7245fb05c97a25473297c9d2d6 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Fri, 15 Jan 2021 14:43:34 -0500 +Subject: [PATCH] Add hostname canonicalization helper to k5test.py + +To facilitate fallback tests, add a canonicalize_hostname() function +to k5test.py which works similarly to krb5_expand_hostname(). Use it +in t_gssapi.py for the recently-added acceptor name fallback test. + +(cherry picked from commit 225fffe4e912772acea3a01d45bafb60bfb80948) +--- + src/tests/gssapi/t_gssapi.py | 11 +++-------- + src/util/k5test.py | 22 ++++++++++++++++++++++ + 2 files changed, 25 insertions(+), 8 deletions(-) + +diff --git a/src/tests/gssapi/t_gssapi.py b/src/tests/gssapi/t_gssapi.py +index 1af6f31c2..e22cec427 100755 +--- a/src/tests/gssapi/t_gssapi.py ++++ b/src/tests/gssapi/t_gssapi.py +@@ -8,7 +8,7 @@ for realm in multipass_realms(): + realm.run(['./t_iov', '-s', 'p:' + realm.host_princ]) + realm.run(['./t_pcontok', 'p:' + realm.host_princ]) + +-realm = K5Realm(krb5_conf={'libdefaults': {'rdns': 'false'}}) ++realm = K5Realm() + + # Test gss_add_cred(). + realm.run(['./t_add_cred']) +@@ -62,13 +62,8 @@ realm.run(['./t_accname', 'p:host/-nomatch-', + expected_msg=' not found in keytab') + + # If possible, test with an acceptor name requiring fallback to match +-# against a keytab entry. Forward-canonicalize the hostname, relying +-# on the rdns=false realm setting. +-try: +- ai = socket.getaddrinfo(hostname, None, 0, 0, 0, socket.AI_CANONNAME) +- (family, socktype, proto, canonname, sockaddr) = ai[0] +-except socket.gaierror: +- canonname = hostname ++# against a keytab entry. ++canonname = canonicalize_hostname(hostname) + if canonname != hostname: + os.rename(realm.keytab, realm.keytab + '.save') + canonprinc = 'host/' + canonname +diff --git a/src/util/k5test.py b/src/util/k5test.py +index 789b0f4b9..251d11a9d 100644 +--- a/src/util/k5test.py ++++ b/src/util/k5test.py +@@ -155,6 +155,10 @@ Scripts may use the following functions and variables: + * password(name): Return a weakly random password based on name. The + password will be consistent across calls with the same name. + ++* canonicalize_hostname(name, rdns=True): Return the DNS ++ canonicalization of name, optionally using reverse DNS. On error, ++ return name converted to lowercase. ++ + * stop_daemon(proc): Stop a daemon process started with + realm.start_server() or realm.start_in_inetd(). Only necessary if + the port needs to be reused; daemon processes will be stopped +@@ -458,6 +462,24 @@ def password(name): + return name + str(os.getpid()) + + ++def canonicalize_hostname(name, rdns=True): ++ """Canonicalize name using DNS, optionally with reverse DNS.""" ++ try: ++ ai = socket.getaddrinfo(name, None, 0, 0, 0, socket.AI_CANONNAME) ++ except socket.gaierror as e: ++ return name.lower() ++ (family, socktype, proto, canonname, sockaddr) = ai[0] ++ ++ if not rdns: ++ return canonname.lower() ++ ++ try: ++ rname = socket.getnameinfo(sockaddr, socket.NI_NAMEREQD) ++ except socket.gaierror: ++ return canonname.lower() ++ return rname[0].lower() ++ ++ + # Exit handler which ensures processes are cleaned up and, on failure, + # prints messages to help developers debug the problem. + def _onexit(): diff --git a/Allow-kinit-with-keytab-to-defer-canonicalization.patch b/Allow-kinit-with-keytab-to-defer-canonicalization.patch new file mode 100644 index 0000000..eee7d1d --- /dev/null +++ b/Allow-kinit-with-keytab-to-defer-canonicalization.patch @@ -0,0 +1,60 @@ +From fb4d9fa851b1d0d3375556d1cdc1fce72176df1e Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Thu, 3 Jun 2021 16:03:07 -0400 +Subject: [PATCH] Allow kinit with keytab to defer canonicalization + +[ghudson@mit.edu: added tests] + +ticket: 9012 (new) +(cherry picked from commit 5e6a6efc5df689d9fb8730d0227167ffbb6ece0e) +--- + src/clients/kinit/kinit.c | 11 ----------- + src/tests/t_keytab.py | 13 +++++++++++++ + 2 files changed, 13 insertions(+), 11 deletions(-) + +diff --git a/src/clients/kinit/kinit.c b/src/clients/kinit/kinit.c +index d1f5d74c3..5a6d7237c 100644 +--- a/src/clients/kinit/kinit.c ++++ b/src/clients/kinit/kinit.c +@@ -510,17 +510,6 @@ k5_begin(struct k_opts *opts, struct k5_data *k5) + _("when creating default server principal name")); + goto cleanup; + } +- if (k5->me->realm.data[0] == 0) { +- ret = krb5_unparse_name(k5->ctx, k5->me, &k5->name); +- if (ret == 0) { +- com_err(progname, KRB5_ERR_HOST_REALM_UNKNOWN, +- _("(principal %s)"), k5->name); +- } else { +- com_err(progname, KRB5_ERR_HOST_REALM_UNKNOWN, +- _("for local services")); +- } +- goto cleanup; +- } + } else if (k5->out_cc != NULL) { + /* If the output ccache is initialized, use its principal. */ + if (krb5_cc_get_principal(k5->ctx, k5->out_cc, &princ) == 0) +diff --git a/src/tests/t_keytab.py b/src/tests/t_keytab.py +index 850375c92..a9adebb26 100755 +--- a/src/tests/t_keytab.py ++++ b/src/tests/t_keytab.py +@@ -41,6 +41,19 @@ realm.kinit(realm.user_princ, flags=['-i'], + expected_msg='keytab specified, forcing -k') + realm.klist(realm.user_princ) + ++# Test default principal for -k. This operation requires ++# canonicalization against the keytab in krb5_get_init_creds_keytab() ++# as the krb5_sname_to_principal() result won't have a realm. Try ++# with and without without fallback processing since the code paths ++# are different. ++mark('default principal for -k') ++realm.run([kinit, '-k']) ++realm.klist(realm.host_princ) ++no_canon_conf = {'libdefaults': {'dns_canonicalize_hostname': 'false'}} ++no_canon = realm.special_env('no_canon', False, krb5_conf=no_canon_conf) ++realm.run([kinit, '-k'], env=no_canon) ++realm.klist(realm.host_princ) ++ + # Test extracting keys with multiple key versions present. + mark('multi-kvno extract') + os.remove(realm.keytab) diff --git a/Clean-up-context-after-failed-open-in-libkdb5.patch b/Clean-up-context-after-failed-open-in-libkdb5.patch new file mode 100644 index 0000000..fca6a71 --- /dev/null +++ b/Clean-up-context-after-failed-open-in-libkdb5.patch @@ -0,0 +1,35 @@ +From 95547c12b39e62df55cef05cae890302834b7f98 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Wed, 23 Jun 2021 16:57:39 -0400 +Subject: [PATCH] Clean up context after failed open in libkdb5 + +If krb5_db_open() or krb5_db_create() fails, release the dal_handle, +as the caller is unlikely to call krb5_db_close() after a failure. + +(cherry picked from commit 849b7056e703bd3724d909263769ce190db59acc) +--- + src/lib/kdb/kdb5.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/lib/kdb/kdb5.c b/src/lib/kdb/kdb5.c +index 47e9b31a7..11e2430c4 100644 +--- a/src/lib/kdb/kdb5.c ++++ b/src/lib/kdb/kdb5.c +@@ -675,6 +675,8 @@ krb5_db_open(krb5_context kcontext, char **db_args, int mode) + return status; + status = v->init_module(kcontext, section, db_args, mode); + free(section); ++ if (status) ++ (void)krb5_db_fini(kcontext); + return status; + } + +@@ -702,6 +704,8 @@ krb5_db_create(krb5_context kcontext, char **db_args) + return status; + status = v->create(kcontext, section, db_args); + free(section); ++ if (status) ++ (void)krb5_db_fini(kcontext); + return status; + } + diff --git a/Clean-up-gssapi_krb5-ccache-name-functions.patch b/Clean-up-gssapi_krb5-ccache-name-functions.patch new file mode 100644 index 0000000..207f186 --- /dev/null +++ b/Clean-up-gssapi_krb5-ccache-name-functions.patch @@ -0,0 +1,193 @@ +From 5e5ea8e8345c8b2f3254b0d346b8e0de0df3a696 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Wed, 26 May 2021 18:22:10 -0400 +Subject: [PATCH] Clean up gssapi_krb5 ccache name functions + +Modernize kg_get_ccache_name() and kg_get_ccache_name(). Drop +unnecessary use of const in kg_get_ccache_name() so that its return +value can be properly freed. Fixes some static analyzer false +positives. + +(cherry picked from commit f573f7f8ee5269103a0492d6521a3242c5ffb63b) +--- + src/lib/gssapi/krb5/gssapiP_krb5.h | 3 +- + src/lib/gssapi/krb5/gssapi_krb5.c | 47 ++++++++-------------- + src/lib/gssapi/krb5/set_ccache.c | 64 ++++++++++++------------------ + 3 files changed, 42 insertions(+), 72 deletions(-) + +diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h +index fd7abbd77..88d41130a 100644 +--- a/src/lib/gssapi/krb5/gssapiP_krb5.h ++++ b/src/lib/gssapi/krb5/gssapiP_krb5.h +@@ -380,8 +380,7 @@ OM_uint32 kg_sync_ccache_name (krb5_context context, OM_uint32 *minor_status); + OM_uint32 kg_caller_provided_ccache_name (OM_uint32 *minor_status, + int *out_caller_provided_name); + +-OM_uint32 kg_get_ccache_name (OM_uint32 *minor_status, +- const char **out_name); ++OM_uint32 kg_get_ccache_name (OM_uint32 *minor_status, char **out_name); + + OM_uint32 kg_set_ccache_name (OM_uint32 *minor_status, + const char *name); +diff --git a/src/lib/gssapi/krb5/gssapi_krb5.c b/src/lib/gssapi/krb5/gssapi_krb5.c +index 46aa9b7a5..9915a8bb5 100644 +--- a/src/lib/gssapi/krb5/gssapi_krb5.c ++++ b/src/lib/gssapi/krb5/gssapi_krb5.c +@@ -253,46 +253,31 @@ kg_caller_provided_ccache_name (OM_uint32 *minor_status, + } + + OM_uint32 +-kg_get_ccache_name (OM_uint32 *minor_status, const char **out_name) ++kg_get_ccache_name(OM_uint32 *minor_status, char **out_name) + { +- const char *name = NULL; +- OM_uint32 err = 0; + char *kg_ccache_name; ++ const char *def_name; ++ OM_uint32 err; ++ krb5_context context; ++ ++ *out_name = NULL; + + kg_ccache_name = k5_getspecific(K5_KEY_GSS_KRB5_CCACHE_NAME); +- + if (kg_ccache_name != NULL) { +- name = strdup(kg_ccache_name); +- if (name == NULL) +- err = ENOMEM; ++ *out_name = strdup(kg_ccache_name); ++ err = (*out_name == NULL) ? ENOMEM : 0; + } else { +- krb5_context context = NULL; +- +- /* Reset the context default ccache (see text above), and then +- retrieve it. */ ++ /* Use the default ccache name. */ + err = krb5_gss_init_context(&context); +- if (!err) +- err = krb5_cc_set_default_name (context, NULL); +- if (!err) { +- name = krb5_cc_default_name(context); +- if (name) { +- name = strdup(name); +- if (name == NULL) +- err = ENOMEM; +- } +- } +- if (err && context) +- save_error_info(err, context); +- if (context) +- krb5_free_context(context); +- } +- +- if (!err) { +- if (out_name) { +- *out_name = name; +- } ++ if (err) ++ goto cleanup; ++ def_name = krb5_cc_default_name(context); ++ *out_name = (def_name != NULL) ? strdup(def_name) : NULL; ++ err = (*out_name == NULL) ? ENOMEM : 0; ++ krb5_free_context(context); + } + ++cleanup: + *minor_status = err; + return (*minor_status == 0) ? GSS_S_COMPLETE : GSS_S_FAILURE; + } +diff --git a/src/lib/gssapi/krb5/set_ccache.c b/src/lib/gssapi/krb5/set_ccache.c +index 8acf3ec90..91c3462be 100644 +--- a/src/lib/gssapi/krb5/set_ccache.c ++++ b/src/lib/gssapi/krb5/set_ccache.c +@@ -26,7 +26,7 @@ + + /* + * Set ccache name used by gssapi, and optionally obtain old ccache +- * name. Caller should not free returned name. ++ * name. Caller must not free returned name. + */ + + #include +@@ -38,11 +38,9 @@ gss_krb5int_ccache_name(OM_uint32 *minor_status, + const gss_OID desired_object, + const gss_buffer_t value) + { +- char *old_name = NULL; + OM_uint32 err = 0; +- OM_uint32 minor = 0; +- char *gss_out_name; + struct krb5_gss_ccache_name_req *req; ++ char *old_name, *cur_name = NULL; + + err = gss_krb5int_initialize_library(); + if (err) { +@@ -57,45 +55,33 @@ gss_krb5int_ccache_name(OM_uint32 *minor_status, + + req = (struct krb5_gss_ccache_name_req *)value->value; + +- gss_out_name = k5_getspecific(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME); ++ /* Our job is simple if the caller doesn't want the current name. */ ++ if (req->out_name == NULL) ++ return kg_set_ccache_name(minor_status, req->name); + +- if (req->out_name) { +- const char *tmp_name = NULL; ++ /* Fetch the current name and change it. */ ++ kg_get_ccache_name(&err, &cur_name); ++ if (err) ++ goto cleanup; ++ kg_set_ccache_name(&err, req->name); ++ if (err) ++ goto cleanup; + +- if (!err) { +- kg_get_ccache_name (&err, &tmp_name); +- } +- if (!err) { +- old_name = gss_out_name; +- gss_out_name = (char *)tmp_name; +- } +- } +- /* If out_name was NULL, we keep the same gss_out_name value, and +- don't free up any storage (leave old_name NULL). */ ++ /* Store the current name in a thread-specific variable. Free that ++ * variable's previous contents. */ ++ old_name = k5_getspecific(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME); ++ err = k5_setspecific(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME, cur_name); ++ if (err) ++ goto cleanup; ++ free(old_name); + +- if (!err) +- kg_set_ccache_name (&err, req->name); +- +- minor = k5_setspecific(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME, gss_out_name); +- if (minor) { +- /* Um. Now what? */ +- if (err == 0) { +- err = minor; +- } +- free(gss_out_name); +- gss_out_name = NULL; +- } +- +- if (!err) { +- if (req->out_name) { +- *(req->out_name) = gss_out_name; +- } +- } +- +- if (old_name != NULL) { +- free (old_name); +- } ++ /* Give the caller an alias to the stored value. */ ++ *req->out_name = cur_name; ++ cur_name = NULL; ++ err = 0; + ++cleanup: ++ free(cur_name); + *minor_status = err; + return (*minor_status == 0) ? GSS_S_COMPLETE : GSS_S_FAILURE; + } diff --git a/Fix-KCM-flag-transmission-for-remove_cred.patch b/Fix-KCM-flag-transmission-for-remove_cred.patch new file mode 100644 index 0000000..77c383e --- /dev/null +++ b/Fix-KCM-flag-transmission-for-remove_cred.patch @@ -0,0 +1,103 @@ +From 1528c264d0e1eebff34132c01f4f770f01f1d1c2 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Mon, 29 Mar 2021 14:32:56 -0400 +Subject: [PATCH] Fix KCM flag transmission for remove_cred + +MIT krb5 uses low bits for KRB5_TC flags, while Heimdal uses high bits +so that the same flag word can also hold KRB5_GC flags. Add a mapping +function and send the Heimdal flag values when performing a +remove_cred operation. + +ticket: 8995 +(cherry picked from commit 11a82cf424f9c905bb73680c64524f087090d4ef) +--- + src/include/kcm.h | 19 +++++++++++++++++++ + src/lib/krb5/ccache/cc_kcm.c | 36 +++++++++++++++++++++++++++++++++++- + 2 files changed, 54 insertions(+), 1 deletion(-) + +diff --git a/src/include/kcm.h b/src/include/kcm.h +index e4140c3a0..9b66f1cbd 100644 +--- a/src/include/kcm.h ++++ b/src/include/kcm.h +@@ -56,8 +56,27 @@ + * are marshalled as zero-terminated strings. Principals and credentials are + * marshalled in the v4 FILE ccache format. UUIDs are 16 bytes. UUID lists + * are not delimited, so nothing can come after them. ++ * ++ * Flag words must use Heimdal flag values, which are not the same as MIT krb5 ++ * values for KRB5_GC and KRB5_TC constants. The same flag word may contain ++ * both kinds of flags in Heimdal, but not in MIT krb5. Defines for the ++ * applicable Heimdal flag values are given below using KCM_GC and KCM_TC ++ * prefixes. + */ + ++#define KCM_GC_CACHED (1U << 0) ++ ++#define KCM_TC_DONT_MATCH_REALM (1U << 31) ++#define KCM_TC_MATCH_KEYTYPE (1U << 30) ++#define KCM_TC_MATCH_SRV_NAMEONLY (1U << 29) ++#define KCM_TC_MATCH_FLAGS_EXACT (1U << 28) ++#define KCM_TC_MATCH_FLAGS (1U << 27) ++#define KCM_TC_MATCH_TIMES_EXACT (1U << 26) ++#define KCM_TC_MATCH_TIMES (1U << 25) ++#define KCM_TC_MATCH_AUTHDATA (1U << 24) ++#define KCM_TC_MATCH_2ND_TKT (1U << 23) ++#define KCM_TC_MATCH_IS_SKEY (1U << 22) ++ + /* Opcodes without comments are currently unused in the MIT client + * implementation. */ + typedef enum kcm_opcode { +diff --git a/src/lib/krb5/ccache/cc_kcm.c b/src/lib/krb5/ccache/cc_kcm.c +index 772928e4d..1f81a2190 100644 +--- a/src/lib/krb5/ccache/cc_kcm.c ++++ b/src/lib/krb5/ccache/cc_kcm.c +@@ -110,6 +110,40 @@ map_invalid(krb5_error_code code) + KRB5_KCM_MALFORMED_REPLY : code; + } + ++/* ++ * Map an MIT krb5 KRB5_TC flag word to the equivalent Heimdal flag word. Note ++ * that there is no MIT krb5 equivalent for Heimdal's KRB5_TC_DONT_MATCH_REALM ++ * (which is like KRB5_TC_MATCH_SRV_NAMEONLY but also applies to the client ++ * principal) and no Heimdal equivalent for MIT krb5's KRB5_TC_SUPPORTED_KTYPES ++ * (which matches against enctypes from the krb5_context rather than the ++ * matching cred). ++ */ ++static inline krb5_flags ++map_tcflags(krb5_flags mitflags) ++{ ++ krb5_flags heimflags = 0; ++ ++ if (mitflags & KRB5_TC_MATCH_TIMES) ++ heimflags |= KCM_TC_MATCH_TIMES; ++ if (mitflags & KRB5_TC_MATCH_IS_SKEY) ++ heimflags |= KCM_TC_MATCH_IS_SKEY; ++ if (mitflags & KRB5_TC_MATCH_FLAGS) ++ heimflags |= KCM_TC_MATCH_FLAGS; ++ if (mitflags & KRB5_TC_MATCH_TIMES_EXACT) ++ heimflags |= KCM_TC_MATCH_TIMES_EXACT; ++ if (mitflags & KRB5_TC_MATCH_FLAGS_EXACT) ++ heimflags |= KCM_TC_MATCH_FLAGS_EXACT; ++ if (mitflags & KRB5_TC_MATCH_AUTHDATA) ++ heimflags |= KCM_TC_MATCH_AUTHDATA; ++ if (mitflags & KRB5_TC_MATCH_SRV_NAMEONLY) ++ heimflags |= KCM_TC_MATCH_SRV_NAMEONLY; ++ if (mitflags & KRB5_TC_MATCH_2ND_TKT) ++ heimflags |= KCM_TC_MATCH_2ND_TKT; ++ if (mitflags & KRB5_TC_MATCH_KTYPE) ++ heimflags |= KCM_TC_MATCH_KEYTYPE; ++ return heimflags; ++} ++ + /* Begin a request for the given opcode. If cache is non-null, supply the + * cache name as a request parameter. */ + static void +@@ -936,7 +970,7 @@ kcm_remove_cred(krb5_context context, krb5_ccache cache, krb5_flags flags, + struct kcmreq req; + + kcmreq_init(&req, KCM_OP_REMOVE_CRED, cache); +- k5_buf_add_uint32_be(&req.reqbuf, flags); ++ k5_buf_add_uint32_be(&req.reqbuf, map_tcflags(flags)); + k5_marshal_mcred(&req.reqbuf, mcred); + ret = cache_call(context, cache, &req); + kcmreq_free(&req); diff --git a/Fix-KCM-retrieval-support-for-sssd.patch b/Fix-KCM-retrieval-support-for-sssd.patch new file mode 100644 index 0000000..9c09507 --- /dev/null +++ b/Fix-KCM-retrieval-support-for-sssd.patch @@ -0,0 +1,62 @@ +From 43be8fba5301d08fc4d5ddef14f8ae3d9655b0ba Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Tue, 11 May 2021 14:04:07 -0400 +Subject: [PATCH] Fix KCM retrieval support for sssd + +Commit 795ebba8c039be172ab93cd41105c73ffdba0fdb added a retrieval +handler using KCM_OP_RETRIEVE, falling back on the same error codes as +the previous KCM_OP_GET_CRED_LIST support. But sssd (as of 2.4) +returns KRB5_CC_NOSUPP instead of KRB5_CC_IO if it recognizes an +opcode but does not implement it. Add a helper function to recognize +all known unsupported-opcode error codes, and use it in kcm_retrieve() +and kcm_start_seq_get(). + +ticket: 8997 +(cherry picked from commit da103e36e13f3c846bcddbe38dd518a21e5260a0) +--- + src/lib/krb5/ccache/cc_kcm.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/src/lib/krb5/ccache/cc_kcm.c b/src/lib/krb5/ccache/cc_kcm.c +index 23fcf13ea..18505cd3d 100644 +--- a/src/lib/krb5/ccache/cc_kcm.c ++++ b/src/lib/krb5/ccache/cc_kcm.c +@@ -144,6 +144,20 @@ map_tcflags(krb5_flags mitflags) + return heimflags; + } + ++/* ++ * Return true if code could indicate an unsupported operation. Heimdal's KCM ++ * returns KRB5_FCC_INTERNAL. sssd's KCM daemon (as of sssd 2.4) returns ++ * KRB5_CC_NO_SUPP if it recognizes the operation but does not implement it, ++ * and KRB5_CC_IO if it doesn't recognize the operation (which is unfortunate ++ * since it could also indicate a communication failure). ++ */ ++static krb5_boolean ++unsupported_op_error(krb5_error_code code) ++{ ++ return code == KRB5_FCC_INTERNAL || code == KRB5_CC_IO || ++ code == KRB5_CC_NOSUPP; ++} ++ + /* Begin a request for the given opcode. If cache is non-null, supply the + * cache name as a request parameter. */ + static void +@@ -841,7 +855,7 @@ kcm_retrieve(krb5_context context, krb5_ccache cache, krb5_flags flags, + ret = cache_call(context, cache, &req); + + /* Fall back to iteration if the server does not support retrieval. */ +- if (ret == KRB5_FCC_INTERNAL || ret == KRB5_CC_IO) { ++ if (unsupported_op_error(ret)) { + ret = k5_cc_retrieve_cred_default(context, cache, flags, mcred, + cred_out); + goto cleanup; +@@ -922,7 +936,7 @@ kcm_start_seq_get(krb5_context context, krb5_ccache cache, + ret = kcmreq_get_cred_list(&req, &creds); + if (ret) + goto cleanup; +- } else if (ret == KRB5_FCC_INTERNAL || ret == KRB5_CC_IO) { ++ } else if (unsupported_op_error(ret)) { + /* Fall back to GET_CRED_UUID_LIST. */ + kcmreq_free(&req); + kcmreq_init(&req, KCM_OP_GET_CRED_UUID_LIST, cache); diff --git a/Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch b/Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch new file mode 100644 index 0000000..24b9d95 --- /dev/null +++ b/Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch @@ -0,0 +1,45 @@ +From bb8fa495d00ccd931eec87a01b8920636cf7903e Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Tue, 3 Aug 2021 01:15:27 -0400 +Subject: [PATCH] Fix KDC null deref on TGS inner body null server + +After the KDC decodes a FAST inner body, it does not check for a null +server. Prior to commit 39548a5b17bbda9eeb63625a201cfd19b9de1c5b this +would typically result in an error from krb5_unparse_name(), but with +the addition of get_local_tgt() it results in a null dereference. Add +a null check. + +Reported by Joseph Sutton of Catalyst. + +CVE-2021-37750: + +In MIT krb5 releases 1.14 and later, an authenticated attacker can +cause a null dereference in the KDC by sending a FAST TGS request with +no server field. + +ticket: 9008 (new) +tags: pullup +target_version: 1.19-next +target_version: 1.18-next + +(cherry picked from commit d775c95af7606a51bf79547a94fa52ddd1cb7f49) +--- + src/kdc/do_tgs_req.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/kdc/do_tgs_req.c b/src/kdc/do_tgs_req.c +index 6d244ffd4..39a504ca1 100644 +--- a/src/kdc/do_tgs_req.c ++++ b/src/kdc/do_tgs_req.c +@@ -207,6 +207,11 @@ process_tgs_req(krb5_kdc_req *request, krb5_data *pkt, + status = "FIND_FAST"; + goto cleanup; + } ++ if (sprinc == NULL) { ++ status = "NULL_SERVER"; ++ errcode = KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN; ++ goto cleanup; ++ } + + errcode = get_local_tgt(kdc_context, &sprinc->realm, header_server, + &local_tgt, &local_tgt_storage, &local_tgt_key); diff --git a/Fix-k5tls-module-for-OpenSSL-3.patch b/Fix-k5tls-module-for-OpenSSL-3.patch new file mode 100644 index 0000000..a2b9e34 --- /dev/null +++ b/Fix-k5tls-module-for-OpenSSL-3.patch @@ -0,0 +1,58 @@ +From 51938a8b731740299fe47d132b8840edba4141bc Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Sat, 29 May 2021 12:05:49 -0400 +Subject: [PATCH] Fix k5tls module for OpenSSL 3 + +Starting in OpenSSL 3, connection termination without a close_notify +alert causes SSL_read() to return SSL_ERROR_SSL instead of +SSL_ERROR_SYSCALL. OpenSSL 3 also provides a new option +SSL_OP_IGNORE_UNEXPECTED_EOF which allows an application to explicitly +ignore possible truncation attacks and receive SSL_ERROR_ZERO_RETURN +instead. + +Remove the call to SSL_CTX_get_options() since SSL_CTX_set_options() +doesn't clear existing options. + +[ghudson@mit.edu: edited commit message and comment] + +(cherry picked from commit aa9b4a2a64046afd2fab7cb49c346295874a5fb6) +(cherry picked from commit 201e38845e9f70234bcaa9ba7c25b28e38169b0a) +--- + src/plugins/tls/k5tls/openssl.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/tls/k5tls/openssl.c b/src/plugins/tls/k5tls/openssl.c +index 76a43b3cd..99fda7ffc 100644 +--- a/src/plugins/tls/k5tls/openssl.c ++++ b/src/plugins/tls/k5tls/openssl.c +@@ -433,7 +433,7 @@ setup(krb5_context context, SOCKET fd, const char *servername, + char **anchors, k5_tls_handle *handle_out) + { + int e; +- long options; ++ long options = SSL_OP_NO_SSLv2; + SSL_CTX *ctx = NULL; + SSL *ssl = NULL; + k5_tls_handle handle = NULL; +@@ -448,8 +448,19 @@ setup(krb5_context context, SOCKET fd, const char *servername, + ctx = SSL_CTX_new(SSLv23_client_method()); + if (ctx == NULL) + goto error; +- options = SSL_CTX_get_options(ctx); +- SSL_CTX_set_options(ctx, options | SSL_OP_NO_SSLv2); ++ ++#ifdef SSL_OP_IGNORE_UNEXPECTED_EOF ++ /* ++ * For OpenSSL 3 and later, mark close_notify alerts as optional. We don't ++ * need to worry about truncation attacks because the protocols this module ++ * is used with (Kerberos and change-password) receive a single ++ * length-delimited message from the server. For prior versions of OpenSSL ++ * we check for SSL_ERROR_SYSCALL when reading instead (this error changes ++ * to SSL_ERROR_SSL in OpenSSL 3). ++ */ ++ options |= SSL_OP_IGNORE_UNEXPECTED_EOF; ++#endif ++ SSL_CTX_set_options(ctx, options); + + SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, verify_callback); + X509_STORE_set_flags(SSL_CTX_get_cert_store(ctx), 0); diff --git a/Fix-kadmin-k-with-fallback-or-referral-realm.patch b/Fix-kadmin-k-with-fallback-or-referral-realm.patch new file mode 100644 index 0000000..a5162e7 --- /dev/null +++ b/Fix-kadmin-k-with-fallback-or-referral-realm.patch @@ -0,0 +1,64 @@ +From 2d2bb9a14613b3283dabdd40c3ee28e5b680cf93 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Mon, 7 Jun 2021 15:00:41 -0400 +Subject: [PATCH] Fix kadmin -k with fallback or referral realm + +kadmin -k produces a client principal name with +krb5_sname_to_principal(), but it gets converted to a string and back +due to the signature of kadm5_init_with_skey(), which loses track of +the name type, so no canonicalization is performed. + +In libkadm5clnt initialization, recognize the important subset of this +case--an empty realm indicates either fallback processing or the +referral realm--and restore the host-based name type so that the +client principal can be canonicalized against the keytab. + +ticket: 9013 (new) +(cherry picked from commit dcb79089276624d7ddf44e08d35bd6d7d7e557d2) +--- + src/lib/kadm5/clnt/client_init.c | 7 +++++++ + src/tests/t_kadmin.py | 12 ++++++++++++ + 2 files changed, 19 insertions(+) + +diff --git a/src/lib/kadm5/clnt/client_init.c b/src/lib/kadm5/clnt/client_init.c +index aa1223bb3..0aaca701f 100644 +--- a/src/lib/kadm5/clnt/client_init.c ++++ b/src/lib/kadm5/clnt/client_init.c +@@ -221,9 +221,16 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + return KADM5_MISSING_KRB5_CONF_PARAMS; + } + ++ /* ++ * Parse the client name. If it has an empty realm, it is almost certainly ++ * a host-based principal using DNS fallback processing or the referral ++ * realm, so give it the appropriate name type for canonicalization. ++ */ + code = krb5_parse_name(handle->context, client_name, &client); + if (code) + goto error; ++ if (init_type == INIT_SKEY && client->realm.length == 0) ++ client->type = KRB5_NT_SRV_HST; + + /* + * Get credentials. Also does some fallbacks in case kadmin/fqdn +diff --git a/src/tests/t_kadmin.py b/src/tests/t_kadmin.py +index fe6a3cc2e..98453d92e 100644 +--- a/src/tests/t_kadmin.py ++++ b/src/tests/t_kadmin.py +@@ -51,4 +51,16 @@ for i in range(200): + realm.run_kadmin(['addprinc', '-randkey', 'foo%d' % i]) + realm.run_kadmin(['listprincs'], expected_msg='foo199') + ++# Test kadmin -k with the default principal, with and without ++# fallback. This operation requires canonicalization against the ++# keytab in krb5_get_init_creds_keytab() as the ++# krb5_sname_to_principal() result won't have a realm. Try with and ++# without without fallback processing since the code paths are ++# different. ++mark('kadmin -k') ++realm.run([kadmin, '-k', 'getprinc', realm.host_princ]) ++no_canon_conf = {'libdefaults': {'dns_canonicalize_hostname': 'false'}} ++no_canon = realm.special_env('no_canon', False, krb5_conf=no_canon_conf) ++realm.run([kadmin, '-k', 'getprinc', realm.host_princ], env=no_canon) ++ + success('kadmin and kpasswd tests') diff --git a/Fix-leaks-on-error-in-kadm5-init-functions.patch b/Fix-leaks-on-error-in-kadm5-init-functions.patch new file mode 100644 index 0000000..bdacecb --- /dev/null +++ b/Fix-leaks-on-error-in-kadm5-init-functions.patch @@ -0,0 +1,664 @@ +From a14e0fd3c1d00ba625e6d9eb72829f31527c6ad8 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Wed, 23 Jun 2021 16:53:16 -0400 +Subject: [PATCH] Fix leaks on error in kadm5 init functions + +In the GENERIC_CHECK_HANDLE function, separate out the +version-checking logic so we can call it in the init functions before +allocating resources. + +In the client and server library initialization functions, use a +single exit path after argument validation, and share the destruction +code with kadm5_destroy() via a helper. + +(cherry picked from commit 552d7b7626450f963b8e37345c472420c842402c) +--- + src/lib/kadm5/admin_internal.h | 39 ++++--- + src/lib/kadm5/clnt/client_init.c | 174 +++++++++++----------------- + src/lib/kadm5/srv/server_init.c | 191 ++++++++++--------------------- + 3 files changed, 145 insertions(+), 259 deletions(-) + +diff --git a/src/lib/kadm5/admin_internal.h b/src/lib/kadm5/admin_internal.h +index faf8e9c36..9be53883a 100644 +--- a/src/lib/kadm5/admin_internal.h ++++ b/src/lib/kadm5/admin_internal.h +@@ -11,29 +11,32 @@ + + #define KADM5_SERVER_HANDLE_MAGIC 0x12345800 + +-#define GENERIC_CHECK_HANDLE(handle, old_api_version, new_api_version) \ ++#define CHECK_VERSIONS(struct_version, api_version, old_api_err, new_api_err) \ + { \ +- kadm5_server_handle_t srvr = \ +- (kadm5_server_handle_t) handle; \ +- \ +- if (! srvr) \ +- return KADM5_BAD_SERVER_HANDLE; \ +- if (srvr->magic_number != KADM5_SERVER_HANDLE_MAGIC) \ +- return KADM5_BAD_SERVER_HANDLE; \ +- if ((srvr->struct_version & KADM5_MASK_BITS) != \ +- KADM5_STRUCT_VERSION_MASK) \ ++ if ((struct_version & KADM5_MASK_BITS) != KADM5_STRUCT_VERSION_MASK) \ + return KADM5_BAD_STRUCT_VERSION; \ +- if (srvr->struct_version < KADM5_STRUCT_VERSION_1) \ ++ if (struct_version < KADM5_STRUCT_VERSION_1) \ + return KADM5_OLD_STRUCT_VERSION; \ +- if (srvr->struct_version > KADM5_STRUCT_VERSION_1) \ ++ if (struct_version > KADM5_STRUCT_VERSION_1) \ + return KADM5_NEW_STRUCT_VERSION; \ +- if ((srvr->api_version & KADM5_MASK_BITS) != \ +- KADM5_API_VERSION_MASK) \ ++ if ((api_version & KADM5_MASK_BITS) != KADM5_API_VERSION_MASK) \ + return KADM5_BAD_API_VERSION; \ +- if (srvr->api_version < KADM5_API_VERSION_2) \ +- return old_api_version; \ +- if (srvr->api_version > KADM5_API_VERSION_4) \ +- return new_api_version; \ ++ if (api_version < KADM5_API_VERSION_2) \ ++ return old_api_err; \ ++ if (api_version > KADM5_API_VERSION_4) \ ++ return new_api_err; \ ++ } ++ ++#define GENERIC_CHECK_HANDLE(handle, old_api_err, new_api_err) \ ++ { \ ++ kadm5_server_handle_t srvr = handle; \ ++ \ ++ if (srvr == NULL) \ ++ return KADM5_BAD_SERVER_HANDLE; \ ++ if (srvr->magic_number != KADM5_SERVER_HANDLE_MAGIC) \ ++ return KADM5_BAD_SERVER_HANDLE; \ ++ CHECK_VERSIONS(srvr->struct_version, srvr->api_version, \ ++ old_api_err, new_api_err); \ + } + + /* +diff --git a/src/lib/kadm5/clnt/client_init.c b/src/lib/kadm5/clnt/client_init.c +index 0aaca701f..75614bb19 100644 +--- a/src/lib/kadm5/clnt/client_init.c ++++ b/src/lib/kadm5/clnt/client_init.c +@@ -138,6 +138,36 @@ kadm5_init_with_skey(krb5_context context, char *client_name, + server_handle); + } + ++static kadm5_ret_t ++free_handle(kadm5_server_handle_t handle) ++{ ++ kadm5_ret_t ret = 0; ++ OM_uint32 minor_stat; ++ krb5_ccache ccache; ++ ++ if (handle == NULL) ++ return 0; ++ ++ if (handle->destroy_cache && handle->cache_name != NULL) { ++ ret = krb5_cc_resolve(handle->context, handle->cache_name, &ccache); ++ if (!ret) ++ ret = krb5_cc_destroy(handle->context, ccache); ++ } ++ free(handle->cache_name); ++ (void)gss_release_cred(&minor_stat, &handle->cred); ++ if (handle->clnt != NULL && handle->clnt->cl_auth != NULL) ++ AUTH_DESTROY(handle->clnt->cl_auth); ++ if (handle->clnt != NULL) ++ clnt_destroy(handle->clnt); ++ if (handle->client_socket != -1) ++ close(handle->client_socket); ++ free(handle->lhandle); ++ kadm5_free_config_params(handle->context, &handle->params); ++ free(handle); ++ ++ return ret; ++} ++ + static kadm5_ret_t + init_any(krb5_context context, char *client_name, enum init_type init_type, + char *pass, krb5_ccache ccache_in, char *service_name, +@@ -145,36 +175,34 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + krb5_ui_4 api_version, char **db_args, void **server_handle) + { + int fd = -1; +- OM_uint32 minor_stat; + krb5_boolean iprop_enable; + int port; + rpcprog_t rpc_prog; + rpcvers_t rpc_vers; +- krb5_ccache ccache; + krb5_principal client = NULL, server = NULL; + struct timeval timeout; + +- kadm5_server_handle_t handle; ++ kadm5_server_handle_t handle = NULL; + kadm5_config_params params_local; + +- int code = 0; ++ krb5_error_code code; + generic_ret r = { 0, 0 }; + + initialize_ovk_error_table(); + initialize_ovku_error_table(); + +- if (! server_handle) { ++ if (server_handle == NULL || client_name == NULL) + return EINVAL; +- } + +- if (! (handle = malloc(sizeof(*handle)))) { +- return ENOMEM; +- } +- memset(handle, 0, sizeof(*handle)); +- if (! (handle->lhandle = malloc(sizeof(*handle)))) { +- free(handle); +- return ENOMEM; +- } ++ CHECK_VERSIONS(struct_version, api_version, KADM5_OLD_LIB_API_VERSION, ++ KADM5_NEW_LIB_API_VERSION); ++ ++ handle = k5alloc(sizeof(*handle), &code); ++ if (handle == NULL) ++ goto cleanup; ++ handle->lhandle = k5alloc(sizeof(*handle), &code); ++ if (handle->lhandle == NULL) ++ goto cleanup; + + handle->magic_number = KADM5_SERVER_HANDLE_MAGIC; + handle->struct_version = struct_version; +@@ -192,33 +220,20 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + + handle->context = context; + +- if(client_name == NULL) { +- free(handle); +- return EINVAL; +- } +- +- /* +- * Verify the version numbers before proceeding; we can't use +- * CHECK_HANDLE because not all fields are set yet. +- */ +- GENERIC_CHECK_HANDLE(handle, KADM5_OLD_LIB_API_VERSION, +- KADM5_NEW_LIB_API_VERSION); +- + memset(¶ms_local, 0, sizeof(params_local)); + +- if ((code = kadm5_get_config_params(handle->context, 0, +- params_in, &handle->params))) { +- free(handle); +- return(code); +- } ++ code = kadm5_get_config_params(handle->context, 0, params_in, ++ &handle->params); ++ if (code) ++ goto cleanup; + + #define REQUIRED_PARAMS (KADM5_CONFIG_REALM | \ + KADM5_CONFIG_ADMIN_SERVER | \ + KADM5_CONFIG_KADMIND_PORT) + + if ((handle->params.mask & REQUIRED_PARAMS) != REQUIRED_PARAMS) { +- free(handle); +- return KADM5_MISSING_KRB5_CONF_PARAMS; ++ code = KADM5_MISSING_KRB5_CONF_PARAMS; ++ goto cleanup; + } + + /* +@@ -228,7 +243,7 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + */ + code = krb5_parse_name(handle->context, client_name, &client); + if (code) +- goto error; ++ goto cleanup; + if (init_type == INIT_SKEY && client->realm.length == 0) + client->type = KRB5_NT_SRV_HST; + +@@ -239,7 +254,7 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + code = get_init_creds(handle, client, init_type, pass, ccache_in, + service_name, handle->params.realm, &server); + if (code) +- goto error; ++ goto cleanup; + + /* If the service_name and client_name are iprop-centric, use the iprop + * port and RPC identifiers. */ +@@ -258,7 +273,7 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + + code = connect_to_server(handle->params.admin_server, port, &fd); + if (code) +- goto error; ++ goto cleanup; + + handle->clnt = clnttcp_create(NULL, rpc_prog, rpc_vers, &fd, 0, 0); + if (handle->clnt == NULL) { +@@ -266,7 +281,7 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + #ifdef DEBUG + clnt_pcreateerror("clnttcp_create"); + #endif +- goto error; ++ goto cleanup; + } + + /* Set a one-hour timeout. */ +@@ -278,10 +293,6 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + handle->lhandle->clnt = handle->clnt; + handle->lhandle->client_socket = fd; + +- /* now that handle->clnt is set, we can check the handle */ +- if ((code = _kadm5_check_handle((void *) handle))) +- goto error; +- + /* + * The RPC connection is open; establish the GSS-API + * authentication context. +@@ -289,7 +300,7 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + code = setup_gss(handle, params_in, + (init_type == INIT_CREDS) ? client : NULL, server); + if (code) +- goto error; ++ goto cleanup; + + /* + * Bypass the remainder of the code and return straight away +@@ -297,7 +308,8 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + */ + if (iprop_enable) { + code = 0; +- *server_handle = (void *) handle; ++ *server_handle = handle; ++ handle = NULL; + goto cleanup; + } + +@@ -306,7 +318,7 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + #ifdef DEBUG + clnt_perror(handle->clnt, "init_2 null resp"); + #endif +- goto error; ++ goto cleanup; + } + /* Drop down to v3 wire protocol if server does not support v4 */ + if (r.code == KADM5_NEW_SERVER_API_VERSION && +@@ -315,7 +327,7 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + memset(&r, 0, sizeof(generic_ret)); + if (init_2(&handle->api_version, &r, handle->clnt)) { + code = KADM5_RPC_ERROR; +- goto error; ++ goto cleanup; + } + } + /* Drop down to v2 wire protocol if server does not support v3 */ +@@ -325,47 +337,21 @@ init_any(krb5_context context, char *client_name, enum init_type init_type, + memset(&r, 0, sizeof(generic_ret)); + if (init_2(&handle->api_version, &r, handle->clnt)) { + code = KADM5_RPC_ERROR; +- goto error; ++ goto cleanup; + } + } + if (r.code) { + code = r.code; +- goto error; ++ goto cleanup; + } + +- *server_handle = (void *) handle; +- +- goto cleanup; +- +-error: +- /* +- * Note that it is illegal for this code to execute if "handle" +- * has not been allocated and initialized. I.e., don't use "goto +- * error" before the block of code at the top of the function +- * that allocates and initializes "handle". +- */ +- if (handle->destroy_cache && handle->cache_name) { +- if (krb5_cc_resolve(handle->context, +- handle->cache_name, &ccache) == 0) +- (void) krb5_cc_destroy (handle->context, ccache); +- } +- if (handle->cache_name) +- free(handle->cache_name); +- (void)gss_release_cred(&minor_stat, &handle->cred); +- if(handle->clnt && handle->clnt->cl_auth) +- AUTH_DESTROY(handle->clnt->cl_auth); +- if(handle->clnt) +- clnt_destroy(handle->clnt); +- if (fd != -1) +- close(fd); +- free(handle->lhandle); +- kadm5_free_config_params(handle->context, &handle->params); ++ *server_handle = handle; ++ handle = NULL; + + cleanup: +- krb5_free_principal(handle->context, client); +- krb5_free_principal(handle->context, server); +- if (code) +- free(handle); ++ krb5_free_principal(context, client); ++ krb5_free_principal(context, server); ++ (void)free_handle(handle); + + return code; + } +@@ -695,38 +681,8 @@ rpc_auth(kadm5_server_handle_t handle, kadm5_config_params *params_in, + kadm5_ret_t + kadm5_destroy(void *server_handle) + { +- OM_uint32 minor_stat; +- krb5_ccache ccache = NULL; +- int code = KADM5_OK; +- kadm5_server_handle_t handle = +- (kadm5_server_handle_t) server_handle; +- + CHECK_HANDLE(server_handle); +- +- if (handle->destroy_cache && handle->cache_name) { +- if ((code = krb5_cc_resolve(handle->context, +- handle->cache_name, &ccache)) == 0) +- code = krb5_cc_destroy (handle->context, ccache); +- } +- if (handle->cache_name) +- free(handle->cache_name); +- if (handle->cred) +- (void)gss_release_cred(&minor_stat, &handle->cred); +- if (handle->clnt && handle->clnt->cl_auth) +- AUTH_DESTROY(handle->clnt->cl_auth); +- if (handle->clnt) +- clnt_destroy(handle->clnt); +- if (handle->client_socket != -1) +- close(handle->client_socket); +- if (handle->lhandle) +- free (handle->lhandle); +- +- kadm5_free_config_params(handle->context, &handle->params); +- +- handle->magic_number = 0; +- free(handle); +- +- return code; ++ return free_handle(server_handle); + } + /* not supported on client */ + kadm5_ret_t kadm5_lock(void *server_handle) +diff --git a/src/lib/kadm5/srv/server_init.c b/src/lib/kadm5/srv/server_init.c +index 3adc4b57d..2c0d51efd 100644 +--- a/src/lib/kadm5/srv/server_init.c ++++ b/src/lib/kadm5/srv/server_init.c +@@ -19,23 +19,6 @@ + #include "osconf.h" + #include "iprop_hdr.h" + +-/* +- * Function check_handle +- * +- * Purpose: Check a server handle and return a com_err code if it is +- * invalid or 0 if it is valid. +- * +- * Arguments: +- * +- * handle The server handle. +- */ +- +-static int check_handle(void *handle) +-{ +- CHECK_HANDLE(handle); +- return 0; +-} +- + static int dup_db_args(kadm5_server_handle_t handle, char **db_args) + { + int count = 0; +@@ -84,6 +67,23 @@ static void free_db_args(kadm5_server_handle_t handle) + } + } + ++static void ++free_handle(kadm5_server_handle_t handle) ++{ ++ if (handle == NULL) ++ return; ++ ++ destroy_pwqual(handle); ++ k5_kadm5_hook_free_handles(handle->context, handle->hook_handles); ++ ulog_fini(handle->context); ++ krb5_db_fini(handle->context); ++ krb5_free_principal(handle->context, handle->current_caller); ++ kadm5_free_config_params(handle->context, &handle->params); ++ free(handle->lhandle); ++ free_db_args(handle); ++ free(handle); ++} ++ + kadm5_ret_t kadm5_init_with_password(krb5_context context, char *client_name, + char *pass, char *service_name, + kadm5_config_params *params, +@@ -163,8 +163,8 @@ kadm5_ret_t kadm5_init(krb5_context context, char *client_name, char *pass, + char **db_args, + void **server_handle) + { +- int ret; +- kadm5_server_handle_t handle; ++ krb5_error_code ret; ++ kadm5_server_handle_t handle = NULL; + kadm5_config_params params_local; /* for v1 compat */ + + if (! server_handle) +@@ -173,17 +173,17 @@ kadm5_ret_t kadm5_init(krb5_context context, char *client_name, char *pass, + if (! client_name) + return EINVAL; + +- if (! (handle = (kadm5_server_handle_t) malloc(sizeof *handle))) +- return ENOMEM; +- memset(handle, 0, sizeof(*handle)); ++ CHECK_VERSIONS(struct_version, api_version, KADM5_OLD_SERVER_API_VERSION, ++ KADM5_NEW_SERVER_API_VERSION); ++ ++ handle = k5alloc(sizeof(*handle), &ret); ++ if (handle == NULL) ++ goto cleanup; ++ handle->context = context; + + ret = dup_db_args(handle, db_args); +- if (ret) { +- free(handle); +- return ret; +- } +- +- handle->context = context; ++ if (ret) ++ goto cleanup; + + initialize_ovk_error_table(); + initialize_ovku_error_table(); +@@ -192,13 +192,6 @@ kadm5_ret_t kadm5_init(krb5_context context, char *client_name, char *pass, + handle->struct_version = struct_version; + handle->api_version = api_version; + +- /* +- * Verify the version numbers before proceeding; we can't use +- * CHECK_HANDLE because not all fields are set yet. +- */ +- GENERIC_CHECK_HANDLE(handle, KADM5_OLD_SERVER_API_VERSION, +- KADM5_NEW_SERVER_API_VERSION); +- + /* + * Acquire relevant profile entries. Merge values + * in params_in with values from profile, based on +@@ -208,11 +201,8 @@ kadm5_ret_t kadm5_init(krb5_context context, char *client_name, char *pass, + + ret = kadm5_get_config_params(handle->context, 1, params_in, + &handle->params); +- if (ret) { +- free_db_args(handle); +- free(handle); +- return(ret); +- } ++ if (ret) ++ goto cleanup; + + #define REQUIRED_PARAMS (KADM5_CONFIG_REALM | KADM5_CONFIG_DBNAME | \ + KADM5_CONFIG_ENCTYPE | \ +@@ -226,132 +216,69 @@ kadm5_ret_t kadm5_init(krb5_context context, char *client_name, char *pass, + KADM5_CONFIG_IPROP_PORT) + + if ((handle->params.mask & REQUIRED_PARAMS) != REQUIRED_PARAMS) { +- kadm5_free_config_params(handle->context, &handle->params); +- free_db_args(handle); +- free(handle); +- return KADM5_MISSING_CONF_PARAMS; ++ ret = KADM5_MISSING_CONF_PARAMS; ++ goto cleanup; + } + if ((handle->params.mask & KADM5_CONFIG_IPROP_ENABLED) == KADM5_CONFIG_IPROP_ENABLED + && handle->params.iprop_enabled) { + if ((handle->params.mask & IPROP_REQUIRED_PARAMS) != IPROP_REQUIRED_PARAMS) { +- kadm5_free_config_params(handle->context, &handle->params); +- free_db_args(handle); +- free(handle); +- return KADM5_MISSING_CONF_PARAMS; ++ ret = KADM5_MISSING_CONF_PARAMS; ++ goto cleanup; + } + } + + ret = krb5_set_default_realm(handle->context, handle->params.realm); +- if (ret) { +- kadm5_free_config_params(handle->context, &handle->params); +- free_db_args(handle); +- free(handle); +- return ret; +- } ++ if (ret) ++ goto cleanup; + + ret = krb5_db_open(handle->context, db_args, + KRB5_KDB_OPEN_RW | KRB5_KDB_SRV_TYPE_ADMIN); +- if (ret) { +- kadm5_free_config_params(handle->context, &handle->params); +- free_db_args(handle); +- free(handle); +- return(ret); +- } ++ if (ret) ++ goto cleanup; + +- if ((ret = krb5_parse_name(handle->context, client_name, +- &handle->current_caller))) { +- kadm5_free_config_params(handle->context, &handle->params); +- krb5_db_fini(handle->context); +- free_db_args(handle); +- free(handle); +- return ret; +- } ++ ret = krb5_parse_name(handle->context, client_name, ++ &handle->current_caller); ++ if (ret) ++ goto cleanup; + +- if (! (handle->lhandle = malloc(sizeof(*handle)))) { +- kadm5_free_config_params(handle->context, &handle->params); +- krb5_db_fini(handle->context); +- free_db_args(handle); +- free(handle); +- return ENOMEM; +- } ++ handle->lhandle = k5alloc(sizeof(*handle), &ret); ++ if (handle->lhandle == NULL) ++ goto cleanup; + *handle->lhandle = *handle; + handle->lhandle->api_version = KADM5_API_VERSION_4; + handle->lhandle->struct_version = KADM5_STRUCT_VERSION; + handle->lhandle->lhandle = handle->lhandle; + +- /* can't check the handle until current_caller is set */ +- ret = check_handle((void *) handle); +- if (ret) { +- kadm5_free_config_params(handle->context, &handle->params); +- free_db_args(handle); +- free(handle); +- return ret; +- } +- + ret = kdb_init_master(handle, handle->params.realm, + (handle->params.mask & KADM5_CONFIG_MKEY_FROM_KBD) + && handle->params.mkey_from_kbd); +- if (ret) { +- kadm5_free_config_params(handle->context, &handle->params); +- krb5_db_fini(handle->context); +- free_db_args(handle); +- free(handle); +- return ret; +- } ++ if (ret) ++ goto cleanup; + + ret = kdb_init_hist(handle, handle->params.realm); +- if (ret) { +- kadm5_free_config_params(handle->context, &handle->params); +- krb5_db_fini(handle->context); +- free_db_args(handle); +- free(handle); +- return ret; +- } ++ if (ret) ++ goto cleanup; + + ret = k5_kadm5_hook_load(context,&handle->hook_handles); +- if (ret) { +- kadm5_free_config_params(handle->context, &handle->params); +- krb5_db_fini(handle->context); +- krb5_free_principal(handle->context, handle->current_caller); +- free_db_args(handle); +- free(handle); +- return ret; +- } ++ if (ret) ++ goto cleanup; + + ret = init_pwqual(handle); +- if (ret) { +- kadm5_free_config_params(handle->context, &handle->params); +- k5_kadm5_hook_free_handles(context, handle->hook_handles); +- krb5_db_fini(handle->context); +- krb5_free_principal(handle->context, handle->current_caller); +- free_db_args(handle); +- free(handle); +- return ret; +- } ++ if (ret) ++ goto cleanup; + +- *server_handle = (void *) handle; ++ *server_handle = handle; ++ handle = NULL; + +- return KADM5_OK; ++cleanup: ++ free_handle(handle); ++ return ret; + } + + kadm5_ret_t kadm5_destroy(void *server_handle) + { +- kadm5_server_handle_t handle = server_handle; +- + CHECK_HANDLE(server_handle); +- +- destroy_pwqual(handle); +- +- k5_kadm5_hook_free_handles(handle->context, handle->hook_handles); +- ulog_fini(handle->context); +- krb5_db_fini(handle->context); +- krb5_free_principal(handle->context, handle->current_caller); +- kadm5_free_config_params(handle->context, &handle->params); +- handle->magic_number = 0; +- free(handle->lhandle); +- free_db_args(handle); +- free(handle); +- ++ free_handle(server_handle); + return KADM5_OK; + } + diff --git a/Fix-softpkcs11-build-issues-with-openssl-3.0.patch b/Fix-softpkcs11-build-issues-with-openssl-3.0.patch new file mode 100644 index 0000000..ba5a8b5 --- /dev/null +++ b/Fix-softpkcs11-build-issues-with-openssl-3.0.patch @@ -0,0 +1,552 @@ +From f85a818fe1a7438db7e1ea579818da67e0be017d Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Sat, 15 May 2021 17:35:25 -0400 +Subject: [PATCH] Fix softpkcs11 build issues with openssl 3.0 + +EVP_PKEY_get0_RSA() has been modified to have const return type. Remove +its usages in favor of the EVP_PKEY interface. Also remove calls to +RSA_blinding_off(), which we don't need and would require a non-const +object. Similarly, remove RSA_set_method() calls that set a pre-existing +default. + +Since softpkcs11 doesn't link against krb5 and can't use zap(), allocate +buffers with OPENSSL_malloc() so can use OPENSSL_clear_free(). + +Move several argument validation checks to the top of their functions. + +Fix some incorrect/inconsistent log messages. + +(cherry picked from commit 00de1aad7b3647b91017c7009b0bc65cd0c8b2e0) +(cherry picked from commit a86b780ef275b35e8dc1e6d1886ec8e8d941f7c4) +--- + src/tests/softpkcs11/main.c | 360 ++++++++++++++---------------------- + 1 file changed, 141 insertions(+), 219 deletions(-) + +diff --git a/src/tests/softpkcs11/main.c b/src/tests/softpkcs11/main.c +index 1cccdfb43..caa537b68 100644 +--- a/src/tests/softpkcs11/main.c ++++ b/src/tests/softpkcs11/main.c +@@ -375,10 +375,9 @@ add_st_object(void) + return NULL; + soft_token.object.objs = objs; + +- o = malloc(sizeof(*o)); ++ o = calloc(1, sizeof(*o)); + if (o == NULL) + return NULL; +- memset(o, 0, sizeof(*o)); + o->attrs = NULL; + o->num_attributes = 0; + o->object_handle = soft_token.object.num_objs; +@@ -424,7 +423,7 @@ add_pubkey_info(struct st_object *o, CK_KEY_TYPE key_type, EVP_PKEY *key) + CK_ULONG modulus_bits = 0; + CK_BYTE *exponent = NULL; + size_t exponent_len = 0; +- RSA *rsa; ++ const RSA *rsa; + const BIGNUM *n, *e; + + rsa = EVP_PKEY_get0_RSA(key); +@@ -445,8 +444,6 @@ add_pubkey_info(struct st_object *o, CK_KEY_TYPE key_type, EVP_PKEY *key) + add_object_attribute(o, 0, CKA_PUBLIC_EXPONENT, + exponent, exponent_len); + +- RSA_set_method(rsa, RSA_PKCS1_OpenSSL()); +- + free(modulus); + free(exponent); + } +@@ -679,10 +676,6 @@ add_certificate(char *label, + } else { + /* XXX verify keytype */ + +- if (key_type == CKK_RSA) +- RSA_set_method(EVP_PKEY_get0_RSA(o->u.private_key.key), +- RSA_PKCS1_OpenSSL()); +- + if (X509_check_private_key(cert, o->u.private_key.key) != 1) { + EVP_PKEY_free(o->u.private_key.key); + o->u.private_key.key = NULL; +@@ -695,7 +688,7 @@ add_certificate(char *label, + } + + ret = CKR_OK; +- out: ++out: + if (ret != CKR_OK) { + st_logf("something went wrong when adding cert!\n"); + +@@ -1224,8 +1217,6 @@ C_Login(CK_SESSION_HANDLE hSession, + } + + /* XXX check keytype */ +- RSA_set_method(EVP_PKEY_get0_RSA(o->u.private_key.key), +- RSA_PKCS1_OpenSSL()); + + if (X509_check_private_key(o->u.private_key.cert, o->u.private_key.key) != 1) { + EVP_PKEY_free(o->u.private_key.key); +@@ -1495,8 +1486,9 @@ C_Encrypt(CK_SESSION_HANDLE hSession, + struct st_object *o; + void *buffer = NULL; + CK_RV ret; +- RSA *rsa; +- int padding, len, buffer_len, padding_len; ++ size_t buffer_len = 0; ++ int padding; ++ EVP_PKEY_CTX *ctx = NULL; + + st_logf("Encrypt\n"); + +@@ -1512,70 +1504,58 @@ C_Encrypt(CK_SESSION_HANDLE hSession, + return CKR_ARGUMENTS_BAD; + } + +- rsa = EVP_PKEY_get0_RSA(o->u.public_key); +- +- if (rsa == NULL) +- return CKR_ARGUMENTS_BAD; +- +- RSA_blinding_off(rsa); /* XXX RAND is broken while running in mozilla ? */ +- +- buffer_len = RSA_size(rsa); +- +- buffer = malloc(buffer_len); +- if (buffer == NULL) { +- ret = CKR_DEVICE_MEMORY; +- goto out; +- } +- +- ret = CKR_OK; +- switch(state->encrypt_mechanism->mechanism) { +- case CKM_RSA_PKCS: +- padding = RSA_PKCS1_PADDING; +- padding_len = RSA_PKCS1_PADDING_SIZE; +- break; +- case CKM_RSA_X_509: +- padding = RSA_NO_PADDING; +- padding_len = 0; +- break; +- default: +- ret = CKR_FUNCTION_NOT_SUPPORTED; +- goto out; +- } +- +- if ((CK_ULONG)buffer_len + padding_len < ulDataLen) { +- ret = CKR_ARGUMENTS_BAD; +- goto out; +- } +- + if (pulEncryptedDataLen == NULL) { + st_logf("pulEncryptedDataLen NULL\n"); + ret = CKR_ARGUMENTS_BAD; + goto out; + } + +- if (pData == NULL_PTR) { ++ if (pData == NULL) { + st_logf("data NULL\n"); + ret = CKR_ARGUMENTS_BAD; + goto out; + } + +- len = RSA_public_encrypt(ulDataLen, pData, buffer, rsa, padding); +- if (len <= 0) { ++ switch(state->encrypt_mechanism->mechanism) { ++ case CKM_RSA_PKCS: ++ padding = RSA_PKCS1_PADDING; ++ break; ++ case CKM_RSA_X_509: ++ padding = RSA_NO_PADDING; ++ break; ++ default: ++ ret = CKR_FUNCTION_NOT_SUPPORTED; ++ goto out; ++ } ++ ++ ctx = EVP_PKEY_CTX_new(o->u.public_key, NULL); ++ if (ctx == NULL || EVP_PKEY_encrypt_init(ctx) <= 0 || ++ EVP_PKEY_CTX_set_rsa_padding(ctx, padding) <= 0 || ++ EVP_PKEY_encrypt(ctx, NULL, &buffer_len, pData, ulDataLen) <= 0) { + ret = CKR_DEVICE_ERROR; + goto out; + } +- if (len > buffer_len) +- abort(); + +- if (pEncryptedData != NULL_PTR) +- memcpy(pEncryptedData, buffer, len); +- *pulEncryptedDataLen = len; +- +- out: +- if (buffer) { +- memset(buffer, 0, buffer_len); +- free(buffer); ++ buffer = OPENSSL_malloc(buffer_len); ++ if (buffer == NULL) { ++ ret = CKR_DEVICE_MEMORY; ++ goto out; + } ++ ++ if (EVP_PKEY_encrypt(ctx, buffer, &buffer_len, pData, ulDataLen) <= 0) { ++ ret = CKR_DEVICE_ERROR; ++ goto out; ++ } ++ st_logf("Encrypt done\n"); ++ ++ if (pEncryptedData != NULL) ++ memcpy(pEncryptedData, buffer, buffer_len); ++ *pulEncryptedDataLen = buffer_len; ++ ++ ret = CKR_OK; ++out: ++ OPENSSL_clear_free(buffer, buffer_len); ++ EVP_PKEY_CTX_free(ctx); + return ret; + } + +@@ -1646,8 +1626,9 @@ C_Decrypt(CK_SESSION_HANDLE hSession, + struct st_object *o; + void *buffer = NULL; + CK_RV ret; +- RSA *rsa; +- int padding, len, buffer_len, padding_len; ++ size_t buffer_len = 0; ++ int padding; ++ EVP_PKEY_CTX *ctx = NULL; + + st_logf("Decrypt\n"); + +@@ -1663,41 +1644,6 @@ C_Decrypt(CK_SESSION_HANDLE hSession, + return CKR_ARGUMENTS_BAD; + } + +- rsa = EVP_PKEY_get0_RSA(o->u.private_key.key); +- +- if (rsa == NULL) +- return CKR_ARGUMENTS_BAD; +- +- RSA_blinding_off(rsa); /* XXX RAND is broken while running in mozilla ? */ +- +- buffer_len = RSA_size(rsa); +- +- buffer = malloc(buffer_len); +- if (buffer == NULL) { +- ret = CKR_DEVICE_MEMORY; +- goto out; +- } +- +- ret = CKR_OK; +- switch(state->decrypt_mechanism->mechanism) { +- case CKM_RSA_PKCS: +- padding = RSA_PKCS1_PADDING; +- padding_len = RSA_PKCS1_PADDING_SIZE; +- break; +- case CKM_RSA_X_509: +- padding = RSA_NO_PADDING; +- padding_len = 0; +- break; +- default: +- ret = CKR_FUNCTION_NOT_SUPPORTED; +- goto out; +- } +- +- if ((CK_ULONG)buffer_len + padding_len < ulEncryptedDataLen) { +- ret = CKR_ARGUMENTS_BAD; +- goto out; +- } +- + if (pulDataLen == NULL) { + st_logf("pulDataLen NULL\n"); + ret = CKR_ARGUMENTS_BAD; +@@ -1710,24 +1656,48 @@ C_Decrypt(CK_SESSION_HANDLE hSession, + goto out; + } + +- len = RSA_private_decrypt(ulEncryptedDataLen, pEncryptedData, buffer, +- rsa, padding); +- if (len <= 0) { ++ switch(state->decrypt_mechanism->mechanism) { ++ case CKM_RSA_PKCS: ++ padding = RSA_PKCS1_PADDING; ++ break; ++ case CKM_RSA_X_509: ++ padding = RSA_NO_PADDING; ++ break; ++ default: ++ ret = CKR_FUNCTION_NOT_SUPPORTED; ++ goto out; ++ } ++ ++ ctx = EVP_PKEY_CTX_new(o->u.private_key.key, NULL); ++ if (ctx == NULL || EVP_PKEY_decrypt_init(ctx) <= 0 || ++ EVP_PKEY_CTX_set_rsa_padding(ctx, padding) <= 0 || ++ EVP_PKEY_decrypt(ctx, NULL, &buffer_len, pEncryptedData, ++ ulEncryptedDataLen) <= 0) { + ret = CKR_DEVICE_ERROR; + goto out; + } +- if (len > buffer_len) +- abort(); ++ ++ buffer = OPENSSL_malloc(buffer_len); ++ if (buffer == NULL) { ++ ret = CKR_DEVICE_MEMORY; ++ goto out; ++ } ++ ++ if (EVP_PKEY_decrypt(ctx, buffer, &buffer_len, pEncryptedData, ++ ulEncryptedDataLen) <= 0) { ++ ret = CKR_DEVICE_ERROR; ++ goto out; ++ } ++ st_logf("Decrypt done\n"); + + if (pData != NULL_PTR) +- memcpy(pData, buffer, len); +- *pulDataLen = len; ++ memcpy(pData, buffer, buffer_len); ++ *pulDataLen = buffer_len; + +- out: +- if (buffer) { +- memset(buffer, 0, buffer_len); +- free(buffer); +- } ++ ret = CKR_OK; ++out: ++ OPENSSL_clear_free(buffer, buffer_len); ++ EVP_PKEY_CTX_free(ctx); + return ret; + } + +@@ -1806,8 +1776,9 @@ C_Sign(CK_SESSION_HANDLE hSession, + struct st_object *o; + void *buffer = NULL; + CK_RV ret; +- RSA *rsa; +- int padding, len, buffer_len, padding_len; ++ int padding; ++ size_t buffer_len = 0; ++ EVP_PKEY_CTX *ctx = NULL; + + st_logf("Sign\n"); + VERIFY_SESSION_HANDLE(hSession, &state); +@@ -1822,40 +1793,6 @@ C_Sign(CK_SESSION_HANDLE hSession, + return CKR_ARGUMENTS_BAD; + } + +- rsa = EVP_PKEY_get0_RSA(o->u.private_key.key); +- +- if (rsa == NULL) +- return CKR_ARGUMENTS_BAD; +- +- RSA_blinding_off(rsa); /* XXX RAND is broken while running in mozilla ? */ +- +- buffer_len = RSA_size(rsa); +- +- buffer = malloc(buffer_len); +- if (buffer == NULL) { +- ret = CKR_DEVICE_MEMORY; +- goto out; +- } +- +- switch(state->sign_mechanism->mechanism) { +- case CKM_RSA_PKCS: +- padding = RSA_PKCS1_PADDING; +- padding_len = RSA_PKCS1_PADDING_SIZE; +- break; +- case CKM_RSA_X_509: +- padding = RSA_NO_PADDING; +- padding_len = 0; +- break; +- default: +- ret = CKR_FUNCTION_NOT_SUPPORTED; +- goto out; +- } +- +- if ((CK_ULONG)buffer_len < ulDataLen + padding_len) { +- ret = CKR_ARGUMENTS_BAD; +- goto out; +- } +- + if (pulSignatureLen == NULL) { + st_logf("signature len NULL\n"); + ret = CKR_ARGUMENTS_BAD; +@@ -1868,26 +1805,46 @@ C_Sign(CK_SESSION_HANDLE hSession, + goto out; + } + +- len = RSA_private_encrypt(ulDataLen, pData, buffer, rsa, padding); +- st_logf("private encrypt done\n"); +- if (len <= 0) { ++ switch(state->sign_mechanism->mechanism) { ++ case CKM_RSA_PKCS: ++ padding = RSA_PKCS1_PADDING; ++ break; ++ case CKM_RSA_X_509: ++ padding = RSA_NO_PADDING; ++ break; ++ default: ++ ret = CKR_FUNCTION_NOT_SUPPORTED; ++ goto out; ++ } ++ ++ ctx = EVP_PKEY_CTX_new(o->u.private_key.key, NULL); ++ if (ctx == NULL || EVP_PKEY_sign_init(ctx) <= 0 || ++ EVP_PKEY_CTX_set_rsa_padding(ctx, padding) <= 0 || ++ EVP_PKEY_sign(ctx, NULL, &buffer_len, pData, ulDataLen) <= 0) { + ret = CKR_DEVICE_ERROR; + goto out; + } +- if (len > buffer_len) +- abort(); + +- if (pSignature != NULL_PTR) +- memcpy(pSignature, buffer, len); +- *pulSignatureLen = len; ++ buffer = OPENSSL_malloc(buffer_len); ++ if (buffer == NULL) { ++ ret = CKR_DEVICE_MEMORY; ++ goto out; ++ } ++ ++ if (EVP_PKEY_sign(ctx, buffer, &buffer_len, pData, ulDataLen) <= 0) { ++ ret = CKR_DEVICE_ERROR; ++ goto out; ++ } ++ st_logf("Sign done\n"); ++ ++ if (pSignature != NULL) ++ memcpy(pSignature, buffer, buffer_len); ++ *pulSignatureLen = buffer_len; + + ret = CKR_OK; +- +- out: +- if (buffer) { +- memset(buffer, 0, buffer_len); +- free(buffer); +- } ++out: ++ OPENSSL_clear_free(buffer, buffer_len); ++ EVP_PKEY_CTX_free(ctx); + return ret; + } + +@@ -1951,10 +1908,9 @@ C_Verify(CK_SESSION_HANDLE hSession, + { + struct session_state *state; + struct st_object *o; +- void *buffer = NULL; + CK_RV ret; +- RSA *rsa; +- int padding, len, buffer_len; ++ int padding; ++ EVP_PKEY_CTX *ctx = NULL; + + st_logf("Verify\n"); + VERIFY_SESSION_HANDLE(hSession, &state); +@@ -1969,39 +1925,6 @@ C_Verify(CK_SESSION_HANDLE hSession, + return CKR_ARGUMENTS_BAD; + } + +- rsa = EVP_PKEY_get0_RSA(o->u.public_key); +- +- if (rsa == NULL) +- return CKR_ARGUMENTS_BAD; +- +- RSA_blinding_off(rsa); /* XXX RAND is broken while running in mozilla ? */ +- +- buffer_len = RSA_size(rsa); +- +- buffer = malloc(buffer_len); +- if (buffer == NULL) { +- ret = CKR_DEVICE_MEMORY; +- goto out; +- } +- +- ret = CKR_OK; +- switch(state->verify_mechanism->mechanism) { +- case CKM_RSA_PKCS: +- padding = RSA_PKCS1_PADDING; +- break; +- case CKM_RSA_X_509: +- padding = RSA_NO_PADDING; +- break; +- default: +- ret = CKR_FUNCTION_NOT_SUPPORTED; +- goto out; +- } +- +- if ((CK_ULONG)buffer_len < ulDataLen) { +- ret = CKR_ARGUMENTS_BAD; +- goto out; +- } +- + if (pSignature == NULL) { + st_logf("signature NULL\n"); + ret = CKR_ARGUMENTS_BAD; +@@ -2014,34 +1937,34 @@ C_Verify(CK_SESSION_HANDLE hSession, + goto out; + } + +- len = RSA_public_decrypt(ulDataLen, pData, buffer, rsa, padding); +- st_logf("private encrypt done\n"); +- if (len <= 0) { ++ switch(state->verify_mechanism->mechanism) { ++ case CKM_RSA_PKCS: ++ padding = RSA_PKCS1_PADDING; ++ break; ++ case CKM_RSA_X_509: ++ padding = RSA_NO_PADDING; ++ break; ++ default: ++ ret = CKR_FUNCTION_NOT_SUPPORTED; ++ goto out; ++ } ++ ++ ctx = EVP_PKEY_CTX_new(o->u.public_key, NULL); ++ if (ctx == NULL || EVP_PKEY_verify_init(ctx) <= 0 || ++ EVP_PKEY_CTX_set_rsa_padding(ctx, padding) <= 0 || ++ EVP_PKEY_verify(ctx, pSignature, ulSignatureLen, pData, ++ ulDataLen) <= 0) { + ret = CKR_DEVICE_ERROR; + goto out; + } +- if (len > buffer_len) +- abort(); ++ st_logf("Verify done\n"); + +- if ((CK_ULONG)len != ulSignatureLen) { +- ret = CKR_GENERAL_ERROR; +- goto out; +- } +- +- if (memcmp(pSignature, buffer, len) != 0) { +- ret = CKR_GENERAL_ERROR; +- goto out; +- } +- +- out: +- if (buffer) { +- memset(buffer, 0, buffer_len); +- free(buffer); +- } ++ ret = CKR_OK; ++out: ++ EVP_PKEY_CTX_free(ctx); + return ret; + } + +- + CK_RV + C_VerifyUpdate(CK_SESSION_HANDLE hSession, + CK_BYTE_PTR pPart, +@@ -2072,7 +1995,6 @@ C_GenerateRandom(CK_SESSION_HANDLE hSession, + return CKR_FUNCTION_NOT_SUPPORTED; + } + +- + CK_FUNCTION_LIST funcs = { + { 2, 11 }, + C_Initialize, diff --git a/Fix-some-principal-realm-canonicalization-cases.patch b/Fix-some-principal-realm-canonicalization-cases.patch new file mode 100644 index 0000000..81fde7f --- /dev/null +++ b/Fix-some-principal-realm-canonicalization-cases.patch @@ -0,0 +1,96 @@ +From 0779309f52f4c05bb1f01f638261ef1b8ca82488 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Mon, 7 Jun 2021 13:27:29 -0400 +Subject: [PATCH] Fix some principal realm canonicalization cases + +The no_hostrealm and subst_defrealm flags in struct canonprinc were +only applied when dns_canonicalize_hostname=fallback; in the other +cases, the initial krb5_sname_to_principal() result is treated as +canonical. For no_hostrealm this limitation doesn't currently matter, +because all uses pass a principal with no realm as input. However, +subst_defrealm is used to convert the referral realm to the default +realm in krb5_get_init_creds_keytab(), krb5_cc_cache_match(), and +gss_acquire_cred() when it needs to check the desired name against a +specified ccache. + +In k5_canonprinc(), if the input principal is a +krb5_sname_to_principal() result and fallback isn't in effect, apply +subst_defrealm. Document in os-proto.h that no_hostrealm doesn't +remove an existing realm and that krb5_sname_to_principal() may +already have looked one up. + +ticket: 9011 (new) +(cherry picked from commit c077d0c6430c4ac163443aacc03d14d206a4cbb8) +--- + src/lib/krb5/os/os-proto.h | 13 +++++++++---- + src/lib/krb5/os/sn2princ.c | 24 +++++++++++++++++++++--- + 2 files changed, 30 insertions(+), 7 deletions(-) + +diff --git a/src/lib/krb5/os/os-proto.h b/src/lib/krb5/os/os-proto.h +index 7d5e7978f..a985f2aec 100644 +--- a/src/lib/krb5/os/os-proto.h ++++ b/src/lib/krb5/os/os-proto.h +@@ -85,10 +85,15 @@ struct sendto_callback_info { + + /* + * Initialize with all zeros except for princ. Set no_hostrealm to disable +- * host-to-realm lookup, which ordinarily happens after canonicalizing the host +- * part. Set subst_defrealm to substitute the default realm for the referral +- * realm after realm lookup (this has no effect if no_hostrealm is set). Free +- * with free_canonprinc() when done. ++ * host-to-realm lookup, which ordinarily happens during fallback processing ++ * after canonicalizing the host part. Set subst_defrealm to substitute the ++ * default realm for the referral realm after realm lookup. Do not set both ++ * flags. Free with free_canonprinc() when done. ++ * ++ * no_hostrealm only applies if fallback processing is in use ++ * (dns_canonicalize_hostname = fallback). It will not remove the realm if ++ * krb5_sname_to_principal() already canonicalized the hostname and looked up a ++ * realm. subst_defrealm applies whether or not fallback processing is in use. + */ + struct canonprinc { + krb5_const_principal princ; +diff --git a/src/lib/krb5/os/sn2princ.c b/src/lib/krb5/os/sn2princ.c +index c99b7da17..93c155932 100644 +--- a/src/lib/krb5/os/sn2princ.c ++++ b/src/lib/krb5/os/sn2princ.c +@@ -271,18 +271,36 @@ krb5_error_code + k5_canonprinc(krb5_context context, struct canonprinc *iter, + krb5_const_principal *princ_out) + { ++ krb5_error_code ret; + int step = ++iter->step; + + *princ_out = NULL; + +- /* If we're not doing fallback, the input principal is canonical. */ +- if (context->dns_canonicalize_hostname != CANONHOST_FALLBACK || +- iter->princ->type != KRB5_NT_SRV_HST || iter->princ->length != 2 || ++ /* If the hostname isn't from krb5_sname_to_principal(), the input ++ * principal is canonical. */ ++ if (iter->princ->type != KRB5_NT_SRV_HST || iter->princ->length != 2 || + iter->princ->data[1].length == 0) { + *princ_out = (step == 1) ? iter->princ : NULL; + return 0; + } + ++ /* If we're not doing fallback, the hostname is canonical, but we may need ++ * to substitute the default realm. */ ++ if (context->dns_canonicalize_hostname != CANONHOST_FALLBACK) { ++ if (step > 1) ++ return 0; ++ iter->copy = *iter->princ; ++ if (iter->subst_defrealm && iter->copy.realm.length == 0) { ++ ret = krb5_get_default_realm(context, &iter->realm); ++ if (ret) ++ return ret; ++ iter->copy = *iter->princ; ++ iter->copy.realm = string2data(iter->realm); ++ } ++ *princ_out = &iter->copy; ++ return 0; ++ } ++ + /* Canonicalize without DNS at step 1, with DNS at step 2. */ + if (step > 2) + return 0; diff --git a/Handle-OpenSSL-3-s-providers.patch b/Handle-OpenSSL-3-s-providers.patch new file mode 100644 index 0000000..d7b0d90 --- /dev/null +++ b/Handle-OpenSSL-3-s-providers.patch @@ -0,0 +1,301 @@ +From e3f3d31a3db23f6c8437cd0efe45f67a7f4fc6aa Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Sat, 15 May 2021 21:18:06 -0400 +Subject: [PATCH] Handle OpenSSL 3's providers + +OpenSSL 3 compartmentalizes what algorithms it uses, which for us means +another hoop to jump through to use dubious cryptography. (Right now, +we need to load "legacy" in order to access MD4 and RC4.) + +Use our normal initializer logic to set up providers both in the OpenSSL +provider an the PKINIT plugin. Since DT_FINI is too late, release them +using atexit() as OpenSSL does. + +(cherry picked from commit bea5a703a06da1f1ab56821b77a2d3661cb0dda4) +[rharwood@redhat.com: work around des3 removal and rc4 fips changes] +--- + src/configure.ac | 1 + + src/lib/crypto/openssl/enc_provider/aes.c | 16 ++++++ + .../crypto/openssl/enc_provider/camellia.c | 16 ++++++ + src/lib/crypto/openssl/enc_provider/rc4.c | 4 ++ + .../crypto/openssl/hash_provider/hash_evp.c | 5 ++ + src/lib/crypto/openssl/init.c | 53 +++++++++++++++++++ + src/plugins/preauth/pkinit/Makefile.in | 1 + + .../preauth/pkinit/pkinit_crypto_openssl.c | 33 ++++++++++-- + 8 files changed, 126 insertions(+), 3 deletions(-) + +diff --git a/src/configure.ac b/src/configure.ac +index 9c2e816fe..20066918b 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -284,6 +284,7 @@ AC_SUBST(CRYPTO_IMPL_LIBS) + + if test "$CRYPTO_IMPL" = openssl; then + AC_CHECK_FUNCS(EVP_KDF_fetch) ++ AC_CHECK_FUNCS(OSSL_PROVIDER_load) + fi + + AC_ARG_WITH([prng-alg], +diff --git a/src/lib/crypto/openssl/enc_provider/aes.c b/src/lib/crypto/openssl/enc_provider/aes.c +index 6b4622fe9..31c90a69d 100644 +--- a/src/lib/crypto/openssl/enc_provider/aes.c ++++ b/src/lib/crypto/openssl/enc_provider/aes.c +@@ -68,6 +68,10 @@ cbc_enc(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, + EVP_CIPHER_CTX *ctx; + struct iov_cursor cursor; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) + return ENOMEM; +@@ -102,6 +106,10 @@ cbc_decr(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, + EVP_CIPHER_CTX *ctx; + struct iov_cursor cursor; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) + return ENOMEM; +@@ -137,6 +145,10 @@ cts_encr(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, + struct iov_cursor cursor; + AES_KEY enck; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + memset(iv_cts,0,sizeof(iv_cts)); + if (ivec && ivec->data){ + if (ivec->length != sizeof(iv_cts)) +@@ -190,6 +202,10 @@ cts_decr(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, + struct iov_cursor cursor; + AES_KEY deck; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + memset(iv_cts,0,sizeof(iv_cts)); + if (ivec && ivec->data){ + if (ivec->length != sizeof(iv_cts)) +diff --git a/src/lib/crypto/openssl/enc_provider/camellia.c b/src/lib/crypto/openssl/enc_provider/camellia.c +index f79679a0b..7cc7fc6fb 100644 +--- a/src/lib/crypto/openssl/enc_provider/camellia.c ++++ b/src/lib/crypto/openssl/enc_provider/camellia.c +@@ -92,6 +92,10 @@ cbc_enc(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, + EVP_CIPHER_CTX *ctx; + struct iov_cursor cursor; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) + return ENOMEM; +@@ -126,6 +130,10 @@ cbc_decr(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, + EVP_CIPHER_CTX *ctx; + struct iov_cursor cursor; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) + return ENOMEM; +@@ -161,6 +169,10 @@ cts_encr(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, + struct iov_cursor cursor; + CAMELLIA_KEY enck; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + memset(iv_cts,0,sizeof(iv_cts)); + if (ivec && ivec->data){ + if (ivec->length != sizeof(iv_cts)) +@@ -214,6 +226,10 @@ cts_decr(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, + struct iov_cursor cursor; + CAMELLIA_KEY deck; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + memset(iv_cts,0,sizeof(iv_cts)); + if (ivec && ivec->data){ + if (ivec->length != sizeof(iv_cts)) +diff --git a/src/lib/crypto/openssl/enc_provider/rc4.c b/src/lib/crypto/openssl/enc_provider/rc4.c +index 9bf407899..a10cb5192 100644 +--- a/src/lib/crypto/openssl/enc_provider/rc4.c ++++ b/src/lib/crypto/openssl/enc_provider/rc4.c +@@ -66,6 +66,10 @@ k5_arcfour_docrypt(krb5_key key, const krb5_data *state, krb5_crypto_iov *data, + EVP_CIPHER_CTX *ctx = NULL; + struct arcfour_state *arcstate; + ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; ++ + if (FIPS_mode()) + return KRB5_CRYPTO_INTERNAL; + +diff --git a/src/lib/crypto/openssl/hash_provider/hash_evp.c b/src/lib/crypto/openssl/hash_provider/hash_evp.c +index 2eb5139c0..09d7b3896 100644 +--- a/src/lib/crypto/openssl/hash_provider/hash_evp.c ++++ b/src/lib/crypto/openssl/hash_provider/hash_evp.c +@@ -41,6 +41,11 @@ hash_evp(const EVP_MD *type, const krb5_crypto_iov *data, size_t num_data, + const krb5_data *d; + size_t i; + int ok; ++ krb5_error_code ret; ++ ++ ret = krb5int_crypto_init(); ++ if (ret) ++ return ret; + + if (output->length != (unsigned int)EVP_MD_size(type)) + return KRB5_CRYPTO_INTERNAL; +diff --git a/src/lib/crypto/openssl/init.c b/src/lib/crypto/openssl/init.c +index 1139bce53..f72dbfe81 100644 +--- a/src/lib/crypto/openssl/init.c ++++ b/src/lib/crypto/openssl/init.c +@@ -26,12 +26,65 @@ + + #include "crypto_int.h" + ++#ifdef HAVE_OSSL_PROVIDER_LOAD ++ ++/* ++ * Starting in OpenSSL 3, algorithms are grouped into containers called ++ * "providers", not all of which are loaded by default. At time of writing, ++ * we need MD4 and RC4 from the legacy provider. Oddly, 3DES is not in ++ * legacy. ++ */ ++ ++#include ++ ++static OSSL_PROVIDER *legacy_provider = NULL; ++static OSSL_PROVIDER *default_provider = NULL; ++ ++static void ++unload_providers(void) ++{ ++ if (default_provider != NULL) ++ (void)OSSL_PROVIDER_unload(default_provider); ++ if (legacy_provider != NULL) ++ (void)OSSL_PROVIDER_unload(legacy_provider); ++ default_provider = NULL; ++ legacy_provider = NULL; ++} ++ ++int ++krb5int_crypto_impl_init(void) ++{ ++ legacy_provider = OSSL_PROVIDER_load(NULL, "legacy"); ++ default_provider = OSSL_PROVIDER_load(NULL, "default"); ++ ++ /* ++ * Someone might build openssl without the legacy provider. They will ++ * have a bad time, but some things will still work. I don't know think ++ * this configuration is worth supporting. ++ */ ++ if (legacy_provider == NULL || default_provider == NULL) ++ abort(); ++ ++ /* ++ * If we attempt to do this with our normal LIBFINIFUNC logic (DT_FINI), ++ * OpenSSL will have cleaned itself up by the time we're invoked. OpenSSL ++ * registers its cleanup (OPENSSL_cleanup) with atexit() - do the same and ++ * we'll be higher on the stack. ++ */ ++ atexit(unload_providers); ++ return 0; ++} ++ ++#else /* !HAVE_OSSL_PROVIDER_LOAD */ ++ + int + krb5int_crypto_impl_init(void) + { + return 0; + } + ++#endif ++ + void + krb5int_crypto_impl_cleanup(void) + { +diff --git a/src/plugins/preauth/pkinit/Makefile.in b/src/plugins/preauth/pkinit/Makefile.in +index 15ca0eb48..d20fb18a8 100644 +--- a/src/plugins/preauth/pkinit/Makefile.in ++++ b/src/plugins/preauth/pkinit/Makefile.in +@@ -5,6 +5,7 @@ MODULE_INSTALL_DIR = $(KRB5_PA_MODULE_DIR) + LIBBASE=pkinit + LIBMAJOR=0 + LIBMINOR=0 ++LIBINITFUNC=pkinit_openssl_init + RELDIR=../plugins/preauth/pkinit + # Depends on libk5crypto and libkrb5 + SHLIB_EXPDEPS = \ +diff --git a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c +index 350c2118a..42e5c581d 100644 +--- a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c ++++ b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c +@@ -44,6 +44,13 @@ + #include + #endif + ++#ifdef HAVE_OSSL_PROVIDER_LOAD ++#include ++ ++static OSSL_PROVIDER *legacy_provider = NULL; ++static OSSL_PROVIDER *default_provider = NULL; ++#endif ++ + static krb5_error_code pkinit_init_pkinit_oids(pkinit_plg_crypto_context ); + static void pkinit_fini_pkinit_oids(pkinit_plg_crypto_context ); + +@@ -2937,12 +2944,32 @@ cleanup: + return retval; + } + ++/* pkinit_openssl_init() and unload_providers() are largely duplicated from ++ * lib/crypto/openssl/init.c - see explanations there. */ ++static void ++unload_providers(void) ++{ ++ if (default_provider != NULL) ++ (void)OSSL_PROVIDER_unload(default_provider); ++ if (legacy_provider != NULL) ++ (void)OSSL_PROVIDER_unload(legacy_provider); ++ default_provider = NULL; ++ legacy_provider = NULL; ++} ++ + int + pkinit_openssl_init() + { +- /* Initialize OpenSSL. */ +- ERR_load_crypto_strings(); +- OpenSSL_add_all_algorithms(); ++#ifdef HAVE_OSSL_PROVIDER_LOAD ++ legacy_provider = OSSL_PROVIDER_load(NULL, "legacy"); ++ default_provider = OSSL_PROVIDER_load(NULL, "default"); ++ ++ if (legacy_provider == NULL || default_provider == NULL) ++ abort(); ++ ++ atexit(unload_providers); ++#endif ++ + return 0; + } + diff --git a/Make-KCM-iteration-fallback-work-with-sssd-kcm.patch b/Make-KCM-iteration-fallback-work-with-sssd-kcm.patch new file mode 100644 index 0000000..a0e28a9 --- /dev/null +++ b/Make-KCM-iteration-fallback-work-with-sssd-kcm.patch @@ -0,0 +1,26 @@ +From 32ee800fa31d3bbda660bb9270f9aa20718ab202 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pavel=20B=C5=99ezina?= +Date: Tue, 30 Mar 2021 14:35:28 +0200 +Subject: [PATCH] Make KCM iteration fallback work with sssd-kcm + +sssd-kcm returns KRB5_CC_IO if the operation code is not known. + +ticket: 8990 +(cherry picked from commit 06afae820a44c1dc96ad88a0b16c3e50bc938b2a) +--- + src/lib/krb5/ccache/cc_kcm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lib/krb5/ccache/cc_kcm.c b/src/lib/krb5/ccache/cc_kcm.c +index 1f81a2190..46705f1da 100644 +--- a/src/lib/krb5/ccache/cc_kcm.c ++++ b/src/lib/krb5/ccache/cc_kcm.c +@@ -876,7 +876,7 @@ kcm_start_seq_get(krb5_context context, krb5_ccache cache, + ret = kcmreq_get_cred_list(&req, &creds); + if (ret) + goto cleanup; +- } else if (ret == KRB5_FCC_INTERNAL) { ++ } else if (ret == KRB5_FCC_INTERNAL || ret == KRB5_CC_IO) { + /* Fall back to GET_CRED_UUID_LIST. */ + kcmreq_free(&req); + kcmreq_init(&req, KCM_OP_GET_CRED_UUID_LIST, cache); diff --git a/Move-some-dejagnu-kadmin-tests-to-Python-tests.patch b/Move-some-dejagnu-kadmin-tests-to-Python-tests.patch new file mode 100644 index 0000000..1c97190 --- /dev/null +++ b/Move-some-dejagnu-kadmin-tests-to-Python-tests.patch @@ -0,0 +1,1750 @@ +From 2fd38805a159020722395e79213540d9bcfa6c71 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Thu, 22 Apr 2021 15:51:36 -0400 +Subject: [PATCH] Move some dejagnu kadmin tests to Python tests + +Remove the dejagnu scripts kadmin.exp, pwchange.exp, and pwhist.exp. + +Add a new Python test script t_kadmin.py for the miscellaneous kadmin +tests from kadmin.exp. + +In t_changepw.py, use modprinc +needchange for one of the kinit +password change tests to gain the same coverage as pwchange.exp had, +and add the "password changes are usable by kinit" tests from +kadmin.exp. + +In t_policy.py, add the ticket 929 regression tests from kadmin.exp +and the ticket 2841 regression tests from pwhist.exp. + +(cherry picked from commit 8027531caf6911bb07bf13de087da0e6bef5a348) +--- + src/tests/Makefile.in | 1 + + src/tests/dejagnu/krb-standalone/kadmin.exp | 1133 ----------------- + src/tests/dejagnu/krb-standalone/pwchange.exp | 145 --- + src/tests/dejagnu/krb-standalone/pwhist.exp | 217 ---- + src/tests/t_changepw.py | 34 +- + src/tests/t_kadmin.py | 54 + + src/tests/t_policy.py | 62 + + 7 files changed, 143 insertions(+), 1503 deletions(-) + delete mode 100644 src/tests/dejagnu/krb-standalone/kadmin.exp + delete mode 100644 src/tests/dejagnu/krb-standalone/pwchange.exp + delete mode 100644 src/tests/dejagnu/krb-standalone/pwhist.exp + create mode 100644 src/tests/t_kadmin.py + +diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in +index fd714eedb..20f27d748 100644 +--- a/src/tests/Makefile.in ++++ b/src/tests/Makefile.in +@@ -147,6 +147,7 @@ check-pytests: unlockiter s4u2self + $(RUNPYTEST) $(srcdir)/t_referral.py $(PYTESTFLAGS) + $(RUNPYTEST) $(srcdir)/t_skew.py $(PYTESTFLAGS) + $(RUNPYTEST) $(srcdir)/t_keytab.py $(PYTESTFLAGS) ++ $(RUNPYTEST) $(srcdir)/t_kadmin.py $(PYTESTFLAGS) + $(RUNPYTEST) $(srcdir)/t_kadmin_acl.py $(PYTESTFLAGS) + $(RUNPYTEST) $(srcdir)/t_kadmin_parsing.py $(PYTESTFLAGS) + $(RUNPYTEST) $(srcdir)/t_kdb.py $(PYTESTFLAGS) +diff --git a/src/tests/dejagnu/krb-standalone/kadmin.exp b/src/tests/dejagnu/krb-standalone/kadmin.exp +deleted file mode 100644 +index fa50a61fb..000000000 +--- a/src/tests/dejagnu/krb-standalone/kadmin.exp ++++ /dev/null +@@ -1,1133 +0,0 @@ +-# Kerberos kadmin test. +-# This is a DejaGnu test script. +-# This script tests Kerberos kadmin5 using kadmin.local as verification. +- +-#++ +-# kadmin_add - Test add new v5 principal function of kadmin. +-# +-# Adds principal $pname with password $password. Returns 1 on success. +-#-- +-proc kadmin_add { pname password } { +- global REALMNAME +- global KADMIN +- global KADMIN_LOCAL +- global KEY +- global spawn_id +- global tmppwd +- +- set good 0 +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "ank $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin add $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin add $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin add $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*:" { +- send "adminpass$KEY\r" +- } +- expect "Enter password for principal \"$pname@$REALMNAME\":" { send "$password\r" } +- expect "Re-enter password for principal \"$pname@$REALMNAME\":" { send "$password\r" } +- expect "Principal \"$pname@$REALMNAME\" created." { set good 1 } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin add)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- # +- # use kadmin.local to verify that a principal was created and that its +- # salt types are 0 (normal). +- # +- envstack_push +- setup_kerberos_env kdc +- spawn $KADMIN_LOCAL -r $REALMNAME +- envstack_pop +- expect_after { +- -i $spawn_id +- timeout { +- fail "kadmin add $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin add $pname" +- catch "expect_after" +- return 0 +- } +- } +- set good 0 +- expect "kadmin.local: " { send "getprinc $pname\r" } +- expect "Principal: $pname@$REALMNAME" { set good 1 } +- expect "Expiration date:" { verbose "got expiration date" } +- expect "Last password change:" { verbose "got last pwchange" } +- expect "Password expiration date:" { verbose "got pwexpire date" } +- expect "Maximum ticket life:" { verbose "got max life" } +- expect "Maximum renewable life:" { verbose "got max rlife" } +- expect "Last modified:" { verbose "got last modified" } +- expect "Last successful authentication:" { verbose "last succ auth" } +- expect "Last failed authentication:" { verbose "last pw failed" } +- expect "Failed password attempts:" { verbose "num failed attempts" } +- expect "Number of keys:" { verbose "num keys"} +- expect { +- "Key: " { verbose "Key listed" +- exp_continue +- } +- "Attributes:" { verbose "attributes" } +- } +- expect "kadmin.local: " { send "q\r" } +- +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin.local show)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- pass "kadmin add $pname" +- return 1 +- } +- else { +- fail "kadmin add $pname" +- return 0 +- } +- } +- else { +- fail "kadmin add $pname" +- return 0 +- } +-} +- +-#++ +-# kadmin_add_rnd - Test add new v5 principal with random key function. +-# +-# Adds principal $pname with random key. Returns 1 on success. +-#-- +-proc kadmin_add_rnd { pname { flags "" } } { +- global REALMNAME +- global KADMIN +- global KADMIN_LOCAL +- global KEY +- global spawn_id +- global tmppwd +- +- set good 0 +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "ank -randkey $flags $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin add rnd $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin add_rnd $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin add_rnd $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- expect "Principal \"$pname@$REALMNAME\" created." { set good 1 } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin add_rnd)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- # +- # use kadmin.local to verify that a principal was created and that its +- # salt types are 0 (normal). +- # +- envstack_push +- setup_kerberos_env kdc +- spawn $KADMIN_LOCAL -r $REALMNAME +- envstack_pop +- expect_after { +- -i $spawn_id +- timeout { +- fail "kadmin add_rnd $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin add_rnd $pname" +- catch "expect_after" +- return 0 +- } +- } +- set good 0 +- expect "kadmin.local:" { send "getprinc $pname\r" } +- expect "Principal: $pname@$REALMNAME" { set good 1 } +- expect "kadmin.local:" { send "q\r" } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin.local show)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- pass "kadmin add_rnd $pname" +- return 1 +- } +- else { +- fail "kadmin add_rnd $pname" +- return 0 +- } +- } +- else { +- fail "kadmin add_rnd $pname" +- return 0 +- } +-} +- +-#++ +-# kadmin_show - Test show principal function of kadmin. +-# +-# Retrieves entry for $pname. Returns 1 on success. +-#-- +-proc kadmin_show { pname } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "get_principal $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin show $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin show $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin show $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" +- send "adminpass$KEY\r" +- expect -re "\r.*Principal: $pname@$REALMNAME.*Key: .*Attributes:.*Policy: .*\r" +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin show)" +- catch "close -i $spawn_id" +- pass "kadmin show $pname" +- return 1 +-} +- +-#++ +-# kadmin_cpw - Test change password function of kadmin +-# +-# Change password of $pname to $password. Returns 1 on success. +-#-- +-proc kadmin_cpw { pname password } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "cpw $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin cpw $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin cpw $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin cpw $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- +- expect "Enter password for principal \"$pname@$REALMNAME\":" { send "$password\r" } +- expect "Re-enter password for principal \"$pname@$REALMNAME\":" { send "$password\r" } +- # When in doubt, jam one of these in there. +- expect "\r" +- expect "Password for \"$pname@$REALMNAME\" changed." +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin cpw)" +- catch "close -i $spawn_id" +- pass "kadmin cpw $pname" +- return 1 +-} +- +-#++ +-# kadmin_cpw_rnd - Test change random key function of kadmin. +-# +-# Changes principal $pname's key to a new random key. Returns 1 on success. +-#-- +-proc kadmin_cpw_rnd { pname } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "cpw -randkey $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin cpw_rnd $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin cpw_rnd $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin cpw_rnd $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- # When in doubt, jam one of these in there. +- expect "\r" +- expect "Key for \"$pname@$REALMNAME\" randomized." +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin cpw_rnd)" +- catch "close -i $spawn_id" +- pass "kadmin cpw_rnd $pname" +- return 1 +-} +- +-#++ +-# kadmin_modify - Test modify principal function of kadmin. +-# +-# Modifies principal $pname with flags $flags. Returns 1 on success. +-#-- +-proc kadmin_modify { pname flags } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "modprinc $flags $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin modify $pname ($flags) lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin modify $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin modify $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" +- send "adminpass$KEY\r" +- # When in doubt, jam one of these in there. +- expect "\r" +- expect "Principal \"$pname@$REALMNAME\" modified." +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin modify)" +- catch "close -i $spawn_id" +- pass "kadmin modify $pname" +- return 1 +-} +- +- +-#++ +-# kadmin_list - Test list database function of kadmin. +-# +-# Lists the database and verifies that output matches regular expression +-# "(.*@$REALMNAME)*". Returns 1 on success. +-#-- +-proc kadmin_list { } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- +- # "*" would match everything +- # "*n" should match a few like kadmin/admin but see ticket 5667 +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "get_principals *n" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin ldb lost KDC" +- catch "expect_after" +- return 0 +- } +- "Communication failure" { +- fail "kadmin ldb got RPC error" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin ldb" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin ldb" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- expect -re "\(.*@$REALMNAME\r\n\)+" +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin list)" +- catch "close -i $spawn_id" +- pass "kadmin ldb" +- return 1 +-} +- +-#++ +-# kadmin_extract - Test extract service key function of kadmin. +-# +-# Extracts service key for service name $name instance $instance. Returns +-# 1 on success. +-#-- +-proc kadmin_extract { instance name } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- global tmppwd +- +- catch "exec rm -f $tmppwd/keytab" +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "xst -k $tmppwd/keytab $name/$instance" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin xst $instance $name lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin xst $instance $name" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin xst $instance $name" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin xst)" +- catch "close -i $spawn_id" +- catch "exec rm -f $instance-new-keytab" +- pass "kadmin xst $instance $name" +- return 1 +-} +- +-#++ +-# kadmin_delete - Test delete principal function of kadmin. +-# +-# Deletes principal $pname. Returns 1 on success. +-#-- +-proc kadmin_delete { pname } { +- global REALMNAME +- global KADMIN +- global KADMIN_LOCAL +- global KEY +- global spawn_id +- global tmppwd +- +- set good 0 +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "delprinc -force $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin_delete $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin delprinc $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin delprinc $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- expect "Principal \"$pname@$REALMNAME\" deleted." { set good 1 } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin delprinc)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- # +- # use kadmin.local to verify that the old principal is not present. +- # +- envstack_push +- setup_kerberos_env kdc +- spawn $KADMIN_LOCAL -r $REALMNAME +- envstack_pop +- expect_after { +- -i $spawn_id +- timeout { +- fail "kadmin delprinc $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin delprinc $pname" +- catch "expect_after" +- return 0 +- } +- } +- set good 0 +- expect "kadmin.local: " { send "getprinc $pname\r" } +- expect "Principal does not exist while retrieving \"$pname@$REALMNAME\"." { set good 1 } +- expect "kadmin.local: " { send "quit\r" } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin.local show)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- pass "kadmin delprinc $pname" +- return 1 +- } +- else { +- fail "kadmin delprinc $pname" +- return 0 +- } +- } +- else { +- fail "kadmin delprinc $pname" +- return 0 +- } +-} +- +-#++ +-# kadmin_delete - Test delete principal function of kadmin. +-# +-# Deletes principal $pname. Returns 1 on success. +-#-- +-proc kadmin_delete_locked_down { pname } { +- global REALMNAME +- global KADMIN +- global KADMIN_LOCAL +- global KEY +- global spawn_id +- global tmppwd +- +- # +- # First test that we fail, then unlock and retry +- # +- +- set good 0 +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "delprinc -force $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin_delete $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin delprinc $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin delprinc $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- expect "delete_principal: Operation requires ``delete'' privilege while deleting principal \"$pname@$REALMNAME\"" { set good 1 } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin delprinc)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- # +- # use kadmin.local to remove lockdown. +- # +- envstack_push +- setup_kerberos_env kdc +- spawn $KADMIN_LOCAL -r $REALMNAME +- envstack_pop +- expect_after { +- -i $spawn_id +- timeout { +- fail "kadmin delprinc $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin delprinc $pname" +- catch "expect_after" +- return 0 +- } +- } +- set good 0 +- expect "kadmin.local: " { send "modprinc -lockdown_keys $pname\r" } +- expect "Principal \"$pname@$REALMNAME\" modified." { set good 1 } +- expect "kadmin.local: " { send "quit\r" } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin.local show)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- set good 0 +- if {[kadmin_delete $pname]} { set good 1 } +- } +- if { $good == 1 } { +- pass "kadmin delprinc $pname" +- return 1 +- } +- else { +- fail "kadmin delprinc $pname" +- return 0 +- } +- } +- else { +- fail "kadmin delprinc $pname" +- return 0 +- } +-} +- +-#++ +-# kpasswd_cpw - Test password changing using kpasswd. +-# +-# Change $princ's password from $opw to $npw. Returns 1 on success. +-#-- +-proc kpasswd_cpw { princ opw npw } { +- global KPASSWD +- global REALMNAME +- +- spawn $KPASSWD $princ +- expect_after { +- timeout { +- fail "kpasswd $princ $npw" +-# catch "expect_after" +- return 0 +- } +- eof { +- fail "kpasswd $princ $npw" +-# catch "expect_after" +- return 0 +- } +- } +- +-# expect "Changing password for $princ." +-# expect "Old password:" { send "$opw\r" } +-# expect "New password:" { send "$npw\r" } +-# expect "New password (again):" { send "$npw\r" } +- expect "Password for $princ@$REALMNAME:" { send "$opw\r" } +- expect "Enter new password:" { send "$npw\r" } +- expect "Enter it again:" { send "$npw\r" } +-# expect "Kerberos password changed." +- expect "Password changed." +- expect_after +- expect eof +- +- if ![check_exit_status "kpasswd"] { +- fail "kpasswd $princ $npw" +- return 0 +- } +- pass "kpasswd $princ $npw" +- return 1 +-} +- +-#++ +-# kadmin_addpol - Test add new policy function of kadmin. +-# +-# Adds policy $pname. Returns 1 on success. +-#-- +-proc kadmin_addpol { pname } { +- global REALMNAME +- global KADMIN +- global KADMIN_LOCAL +- global KEY +- global spawn_id +- global tmppwd +- +- set good 0 +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "addpol $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin addpol $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin addpol $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin addpol $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin addpol)" +- catch "close -i $spawn_id" +- # +- # use kadmin.local to verify that a policy was created +- # +- envstack_push +- setup_kerberos_env kdc +- spawn $KADMIN_LOCAL -r $REALMNAME +- envstack_pop +- expect_after { +- -i $spawn_id +- timeout { +- fail "kadmin addpol $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin addpol $pname" +- catch "expect_after" +- return 0 +- } +- } +- set good 0 +- expect "kadmin.local: " { send "getpol $pname\r" } +- expect "Policy: $pname" { set good 1 } +- expect "Maximum password life:" { verbose "got max pw life" } +- expect "Minimum password life:" { verbose "got min pw life" } +- expect "Minimum password length:" { verbose "got min pw length" } +- expect "Minimum number of password character classes:" { +- verbose "got min pw character classes" } +- expect "Number of old keys kept:" { verbose "got num old keys kept" } +- expect "kadmin.local: " { send "q\r" } +- +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin.local showpol)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- pass "kadmin addpol $pname" +- return 1 +- } +- else { +- fail "kadmin addpol $pname" +- return 0 +- } +-} +- +-#++ +-# kadmin_delpol - Test delete policy function of kadmin. +-# +-# Deletes policy $pname. Returns 1 on success. +-#-- +-proc kadmin_delpol { pname } { +- global REALMNAME +- global KADMIN +- global KADMIN_LOCAL +- global KEY +- global spawn_id +- global tmppwd +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "delpol -force $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin_delpol $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin delpol $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin delpol $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin delpol)" +- catch "close -i $spawn_id" +- # +- # use kadmin.local to verify that the old policy is not present. +- # +- envstack_push +- setup_kerberos_env kdc +- spawn $KADMIN_LOCAL -r $REALMNAME +- envstack_pop +- expect_after { +- -i $spawn_id +- timeout { +- fail "kadmin delpol $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin delpol $pname" +- catch "expect_after" +- return 0 +- } +- } +- set good 0 +- expect "kadmin.local: " { send "getpol $pname\r" } +- expect "Policy does not exist while retrieving policy \"$pname\"." { +- set good 1 +- } +- expect "kadmin.local: " { send "quit\r" } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin.local showpol)" +- catch "close -i $spawn_id" +- if { $good == 1 } { +- pass "kadmin delpol $pname" +- return 1 +- } +- else { +- fail "kadmin delpol $pname" +- return 0 +- } +-} +- +-#++ +-# kadmin_listpols - Test list policy database function of kadmin. +-# +-# Lists the policies. Returns 1 on success. +-#-- +-proc kadmin_listpols { } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "get_policies *" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin lpols lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin lpols" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin lpols" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" { +- send "adminpass$KEY\r" +- } +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin listpols)" +- catch "close -i $spawn_id" +- pass "kadmin lpols" +- return 1 +-} +- +-#++ +-# kadmin_modpol - Test modify policy function of kadmin. +-# +-# Modifies policy $pname with flags $flags. Returns 1 on success. +-#-- +-proc kadmin_modpol { pname flags } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "modpol $flags $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin modpol $pname ($flags) lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin modpol $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin modpol $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" +- send "adminpass$KEY\r" +- # When in doubt, jam one of these in there. +- expect "\r" +- # Sadly, kadmin doesn't print a confirmation message for policy operations. +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin modpol)" +- catch "close -i $spawn_id" +- pass "kadmin modpol $pname" +- return 1 +-} +- +-#++ +-# kadmin_showpol - Test show policy function of kadmin. +-# +-# Retrieves entry for $pname. Returns 1 on success. +-#-- +-proc kadmin_showpol { pname } { +- global REALMNAME +- global KADMIN +- global KEY +- global spawn_id +- +- spawn $KADMIN -p krbtest/admin@$REALMNAME -q "get_policy $pname" +- expect_after { +- "Cannot contact any KDC" { +- fail "kadmin showpol $pname lost KDC" +- catch "expect_after" +- return 0 +- } +- timeout { +- fail "kadmin showpol $pname" +- catch "expect_after" +- return 0 +- } +- eof { +- fail "kadmin showpol $pname" +- catch "expect_after" +- return 0 +- } +- } +- expect -re "assword\[^\r\n\]*: *" +- send "adminpass$KEY\r" +- expect -re "\r.*Policy: $pname.*Number of old keys kept: .*\r" +- expect_after +- expect eof +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin showpol)" +- catch "close -i $spawn_id" +- pass "kadmin showpol $pname" +- return 1 +-} +- +-#++ +-# kdestroy +-#-- +-proc kdestroy { } { +- global KDESTROY +- +- spawn $KDESTROY -5 +- if ![check_exit_status "kdestroy"] { +- return 0 +- } +- return 1 +-} +- +-# Wrap the tests in a procedure, so that we can kill the daemons if +-# we get some sort of error. +- +-proc kadmin_test { } { +- global hostname +- +- # Start up the kerberos and kadmind daemons +- if {![start_kerberos_daemons 0] } { +- return +- } +- +- # Test basic kadmin functions. +- if {![kadmin_add v5principal/instance1 v5principal] \ +- || ![kadmin_addpol standardpol] \ +- || ![kadmin_showpol standardpol] \ +- || ![kadmin_listpols] \ +- || ![kadmin_modpol standardpol "-minlength 5"] \ +- || ![kadmin_add v4principal/instance2 v4principal] \ +- || ![kadmin_add_rnd v5random] \ +- || ![kadmin_show v5principal/instance1] \ +- || ![kadmin_show v4principal/instance2] \ +- || ![kadmin_show v5random] \ +- || ![kadmin_cpw v5principal/instance1 faroutman] \ +- || ![kadmin_cpw v4principal/instance2 honkydory] \ +- || ![kadmin_cpw_rnd v5random] \ +- || ![kadmin_modify v5random -allow_tix] \ +- || ![kadmin_modify v5random +allow_tix] \ +- || ![kadmin_modify v5random "-policy standardpol"] \ +- || ![kadmin_list] \ +- || ![kadmin_extract instance1 v5principal] \ +- || ![kadmin_delete v5random] \ +- || ![kadmin_delete v4principal/instance2] \ +- || ![kadmin_delete v5principal/instance1] \ +- || ![kadmin_delpol standardpol]} { +- return +- } +- +-# You cannot extract a v4 key... +-# || ![kadmin_extractv4 instance2 v4principal] \ +- +- # now test kpasswd +- if {![kadmin_add testprinc/instance thisisatest] \ +- || ![kpasswd_cpw testprinc/instance thisisatest anothertest] \ +- || ![kpasswd_cpw testprinc/instance anothertest goredsox] \ +- || ![kadmin_delete testprinc/instance]} { +- return +- } +- +- # now test that we can kinit with principals/passwords. +- # We defer kdestroying until after kpasswd at least once to test FAST automatic use in kpasswd +- if {![kadmin_add testprinc1/instance thisisatest] \ +- || ![kinit testprinc1/instance thisisatest 0] \ +- || ![kpasswd_cpw testprinc1/instance thisisatest anothertest] \ +- || ![kdestroy] \ +- || ![kinit testprinc1/instance anothertest 0] \ +- || ![kdestroy] \ +- || ![kpasswd_cpw testprinc1/instance anothertest goredsox] \ +- || ![kinit testprinc1/instance goredsox 0] \ +- || ![kdestroy] \ +- || ![kadmin_cpw testprinc1/instance betterwork] \ +- || ![kinit testprinc1/instance betterwork 0] \ +- || ![kdestroy] \ +- || ![kadmin_delete testprinc1/instance]} { +- return +- } +- +- # now test modify changes. +- if {![kadmin_add testuser longtestpw] \ +- || ![kinit testuser longtestpw 0] \ +- || ![kdestroy] \ +- || ![kadmin_modify testuser "-maxlife \"2500 seconds\""] \ +- || ![kinit testuser longtestpw 0] \ +- || ![kdestroy] \ +- || ![kadmin_delete testuser]} { +- return +- } +- +- # now test that reducing the history number doesn't make kadmind vulnerable. +- if {![kadmin_addpol crashpol] \ +- || ![kadmin_modpol crashpol "-history 5"] \ +- || ![kadmin_add crash first] \ +- || ![kadmin_modify crash "-policy crashpol"] \ +- || ![kadmin_cpw crash second] \ +- || ![kadmin_cpw crash third] \ +- || ![kadmin_cpw crash fourth] \ +- || ![kadmin_modpol crashpol "-history 3"] \ +- || ![kadmin_cpw crash fifth] \ +- || ![kadmin_delete crash] \ +- || ![kadmin_delpol crashpol]} { +- return +- } +- +- # test retrieval of large number of principals +- # bug [2877] +- for { set i 0 } { $i < 200 } { incr i } { +- if { ![kadmin_add "foo$i" foopass] } { +- return +- } +- } +- +- if { ![kadmin_list] } { +- return +- } +- +- # test fallback to kadmin/hostname +- if {![kadmin_add_rnd kadmin/$hostname] \ +- || ![kadmin_delete_locked_down kadmin/admin] \ +- || ![kadmin_list] \ +- || ![kadmin_add_rnd kadmin/admin -allow_tgs_req] \ +- || ![kadmin_list]} { +- return +- } +- +- verbose "kadmin_test succeeded" +-} +- +-run_once kadmin { +- # Set up the kerberos database. +- if {![get_hostname] \ +- || ![setup_kerberos_files] \ +- || ![setup_kerberos_env] \ +- || ![setup_kerberos_db 0]} { +- return +- } +- +- # Run the test. +- set status [catch kadmin_test msg] +- +- # Shut down the kerberos daemons and the rsh daemon. +- stop_kerberos_daemons +- +- if { $status != 0 } { +- send_error "ERROR: error in kadmin.exp\n" +- send_error "$msg\n" +- exit 1 +- } +-} +diff --git a/src/tests/dejagnu/krb-standalone/pwchange.exp b/src/tests/dejagnu/krb-standalone/pwchange.exp +deleted file mode 100644 +index 010e8344a..000000000 +--- a/src/tests/dejagnu/krb-standalone/pwchange.exp ++++ /dev/null +@@ -1,145 +0,0 @@ +-# Password-changing Kerberos test. +-# This is a DejaGnu test script. +- +-# We are about to start up a couple of daemon processes. We do all +-# the rest of the tests inside a proc, so that we can easily kill the +-# processes when the procedure ends. +- +-proc kinit_expecting_pwchange { name pass newpass } { +- global REALMNAME +- global KINIT +- global spawn_id +- +- # Use kinit to get a ticket. +- # +- # For now always get forwardable tickets. Later when we need to make +- # tests that distinguish between forwardable tickets and otherwise +- # we should but another option to this proc. --proven +- # +- spawn $KINIT -5 -f $name@$REALMNAME +- expect { +- "Password for $name@$REALMNAME:" { +- verbose "kinit started" +- } +- timeout { +- fail "kinit" +- return 0 +- } +- eof { +- fail "kinit" +- return 0 +- } +- } +- send "$pass\r" +- expect { +- "Enter new password: " { } +- timeout { +- fail "kinit (new password prompt)" +- return 0 +- } +- eof { +- fail "kinit (new password prompt)" +- return 0 +- } +- } +- send "$newpass\r" +- expect { +- " again: " { } +- timeout { +- fail "kinit (new password prompt2)" +- return 0 +- } +- eof { +- fail "kinit (new password prompt2)" +- return 0 +- } +- } +- send "$newpass\r" +- expect eof +- if ![check_exit_status kinit] { +- return 0 +- } +- +- return 1 +-} +- +-proc doit { } { +- global REALMNAME +- global KLIST +- global KDESTROY +- global KEY +- global KADMIN_LOCAL +- global KTUTIL +- global hostname +- global tmppwd +- global spawn_id +- global supported_enctypes +- global KRBIV +- global portbase +- global mode +- +- # Start up the kerberos and kadmind daemons. +- if ![start_kerberos_daemons 0] { +- return +- } +- +- # Use kadmin to add a key. +- if ![add_kerberos_key pwchanger 0] { +- return +- } +- +- setup_kerberos_env kdc +- spawn $KADMIN_LOCAL -q "modprinc +needchange pwchanger" +- catch expect_after +- expect { +- timeout { +- fail "kadmin.local modprinc +needchange" +- } +- eof { +- pass "kadmin.local modprinc +needchange" +- } +- } +- set k_stat [wait -i $spawn_id] +- verbose "wait -i $spawn_id returned $k_stat (kadmin modprinc +needchange)" +- catch "close -i $spawn_id" +- +- setup_kerberos_env client +- if ![kinit_expecting_pwchange pwchanger pwchanger$KEY floople] { +- return +- } +- pass "kinit (password change)" +- if ![kinit pwchanger floople 0] { +- return +- } +- pass "kinit (new password)" +- +- # Destroy the ticket. +- spawn $KDESTROY -5 +- if ![check_exit_status "kdestroy"] { +- return +- } +- pass "kdestroy" +-} +- +-run_once pwchange { +- # Set up the Kerberos files and environment. +- if {![get_hostname] || ![setup_kerberos_files] || ![setup_kerberos_env]} { +- return +- } +- +- # Initialize the Kerberos database. The argument tells +- # setup_kerberos_db that it is being called from here. +- if ![setup_kerberos_db 0] { +- return +- } +- +- set status [catch doit msg] +- +- stop_kerberos_daemons +- +- if { $status != 0 } { +- send_error "ERROR: error in pwchange.exp\n" +- send_error "$msg\n" +- exit 1 +- } +-} +diff --git a/src/tests/dejagnu/krb-standalone/pwhist.exp b/src/tests/dejagnu/krb-standalone/pwhist.exp +deleted file mode 100644 +index ed7a3771a..000000000 +--- a/src/tests/dejagnu/krb-standalone/pwhist.exp ++++ /dev/null +@@ -1,217 +0,0 @@ +-# password history tests +- +-# one *non-interactive* kadmin.local request +-proc onerq { rq pname str {flags ""} } { +- global REALMNAME +- global KADMIN_LOCAL +- +- spawn $KADMIN_LOCAL -r $REALMNAME -q "$rq $flags $pname" +- expect_after { +- timeout { +- verbose "kadmin.local $rq $flags $pname timed out" +- catch expect_after +- kill [exp_pid] +- close +- expect eof +- wait +- return 0 +- } eof { +- verbose "kadmin.local $rq $flags $pname got EOF" +- catch expect_after +- wait +- return 0 +- } +- } +- expect $str +- expect_after +- expect eof +- wait +- return 1 +-} +- +-proc addprinc { pname pw } { +- global REALMNAME +- +- return [onerq addprinc $pname \ +- "Principal \"$pname@$REALMNAME\" created." "-pw $pw"] +-} +- +-proc delprinc { pname } { +- global REALMNAME +- return [onerq delprinc $pname \ +- "Principal \"$pname@$REALMNAME\" deleted." "-force"] +-} +- +-proc cpw { pname pw } { +- global REALMNAME +- +- return [onerq cpw $pname \ +- "Password for \"$pname@$REALMNAME\" changed." "-pw $pw"] +-} +- +-proc modprinc { pname flags } { +- global REALMNAME +- +- return [onerq modprinc $pname \ +- "Principal \"$pname@$REALMNAME\" modified." $flags] +-} +- +-proc addpol { pname } { +- if ![onerq addpol $pname ""] { +- return 0 +- } +- return [onerq getpol $pname "Policy: $pname"] +-} +- +-proc delpol { pname } { +- onerq delpol $pname "" -force +- return [onerq getpol $pname \ +- "Policy does not exist while retrieving policy \"$pname\"."] +-} +- +-proc modpol { pname flags } { +- return [onerq modpol $pname "" $flags] +-} +- +-# Mandatory command must return true. +-# Issues a break in its parent on failure. +-proc mustrun { cmd } { +- if ![eval $cmd] { +- perror "mandatory command failed: $cmd" +- uplevel break +- } +-} +- +-# Fail test if command fails. +-# Issues a break in its parent on failure. +-proc chkpass { cmd } { +- upvar test test +- if ![eval $cmd] { +- verbose "unexpected failure: $cmd" +- fail $test +- uplevel break +- } +-} +- +-# Fail test if command succeeds. +-# Issues a break in its parent on failure. +-proc chkfail { cmd } { +- upvar test test +- if [eval $cmd] { +- verbose "unexpected success: $cmd" +- fail $test +- uplevel break +- } +-} +- +-# wrapper to run command (actually usually sequence of commands) +-# +-# If any part of CMD throws an exception, set failall, otherwise pass. +-# If failall is already true, report unresolved. +-proc wraptest { test cmd } { +- upvar failall failall +- if $failall { +- unresolved $test +- return +- } +- if [catch $cmd] { +- set failall 1 +- } else { +- pass $test +- } +-} +- +-run_once pwhist { +- # Set up the kerberos database. +- if {![get_hostname] \ +- || ![setup_kerberos_files] \ +- || ![setup_kerberos_env kdc] \ +- || ![setup_kerberos_db 0]} { +- return +- } +- +- set failall 0 +- wraptest "nkeys=1, nhist=3" { +- mustrun { addpol crashpol } +- mustrun { modpol crashpol "-history 3"} +- mustrun { addprinc crash 1111 } +- mustrun { modprinc crash "-policy crashpol" } +- chkpass { cpw crash 2222 } +- chkfail { cpw crash 2222 } +- chkfail { cpw crash 1111 } +- } +- verbose {old_keys [ 1111 ->[] ]} +- +- # The following will result in reading/writing past array bounds if +- # add_to_history() is not patched. +- # +- # NOTE: A pass from this test does not mean the bug isn't present; +- # check with Purify, valgrind, etc. +- wraptest "array bounds ok on nkeys=1, nhist 3->2" { +- mustrun { modpol crashpol "-history 2" } +- chkpass { cpw crash 3333 } +- } +- verbose {old_keys [ ->2222 ]} +- +- wraptest "verify nhist=2" { +- mustrun { delprinc crash } +- mustrun { addprinc crash 1111 } +- mustrun { modprinc crash "-policy crashpol" } +- chkpass { cpw crash 2222 } +- chkfail { cpw crash 2222 } +- chkfail { cpw crash 1111 } +- } +- verbose {old_keys [ ->1111 ]} +- +- # The following will fail if growing the history array causes an extra +- # key to be lost due to failure to shift entries. +- wraptest "grow nhist 2->3" { +- mustrun { modpol crashpol "-history 3" } +- chkpass { cpw crash 3333 } +- chkfail { cpw crash 3333 } +- chkfail { cpw crash 2222 } +- chkfail { cpw crash 1111 } +- } +- verbose {old_keys [ 2222 ->1111 ]} +- +- wraptest "grow nhist 3->4" { +- mustrun { modpol crashpol "-history 4" } +- chkfail { cpw crash 3333 } +- chkfail { cpw crash 2222 } +- chkfail { cpw crash 1111 } +- chkpass { cpw crash 4444 } +- chkfail { cpw crash 3333 } +- chkfail { cpw crash 2222 } +- chkfail { cpw crash 1111 } +- } +- verbose {old_keys [ 2222 3333 ->1111 ]} +- wraptest "shrink nhist 4->3" { +- mustrun { modpol crashpol "-history 3" } +- chkfail { cpw crash 4444 } +- chkfail { cpw crash 3333 } +- chkfail { cpw crash 2222 } +- chkfail { cpw crash 1111 } +- chkpass { cpw crash 5555 } +- } +- verbose {old_keys [ 4444 ->3333 ]} +- wraptest "verify nhist=3" { +- chkfail { cpw crash 5555 } +- chkfail { cpw crash 4444 } +- chkfail { cpw crash 3333 } +- chkpass { cpw crash 2222 } +- } +- verbose {old_keys [ ->4444 5555 ]} +- wraptest "shrink nhist 3->2" { +- mustrun { modpol crashpol "-history 2" } +- chkfail { cpw crash 2222 } +- chkfail { cpw crash 5555 } +- chkfail { cpw crash 4444 } +- chkpass { cpw crash 3333 } +- } +- verbose {old_keys [ ->2222 ]} +- +- delprinc crash +- delpol crashpol +- +- stop_kerberos_daemons +-} +diff --git a/src/tests/t_changepw.py b/src/tests/t_changepw.py +index 573bdbd49..bf8e3a9eb 100755 +--- a/src/tests/t_changepw.py ++++ b/src/tests/t_changepw.py +@@ -1,23 +1,24 @@ + from k5test import * + +-# This file is intended to cover any password-changing mechanism. For +-# now it only contains a regression test for #7868. +- + realm = K5Realm(create_host=False, get_creds=False, start_kadmind=True) ++realm.prep_kadmin() + + # Mark a principal as expired and change its password through kinit. ++mark('password change via kinit') + realm.run([kadminl, 'modprinc', '-pwexpire', '1 day ago', 'user']) + pwinput = password('user') + '\nabcd\nabcd\n' + realm.run([kinit, realm.user_princ], input=pwinput) + +-# Do the same thing with FAST, with tracing turned on. +-realm.run([kadminl, 'modprinc', '-pwexpire', '1 day ago', 'user']) ++# Regression test for #7868 (preauth options ignored when ++# krb5_get_init_creds_password() initiates a password change). This ++# time use the REQUIRES_PWCHANGE bit instead of the password ++# expiration time. ++mark('password change via kinit with FAST') ++realm.run([kadminl, 'modprinc', '+needchange', 'user']) + pwinput = 'abcd\nefgh\nefgh\n' + out, trace = realm.run([kinit, '-T', realm.ccache, realm.user_princ], + input=pwinput, return_trace=True) +- +-# Read the trace and check that FAST was used when getting the +-# kadmin/changepw ticket. ++# Check that FAST was used when getting the kadmin/changepw ticket. + getting_changepw = fast_used_for_changepw = False + for line in trace.splitlines(): + if 'Getting initial credentials for user@' in line: +@@ -29,4 +30,21 @@ for line in trace.splitlines(): + if not fast_used_for_changepw: + fail('FAST was not used to get kadmin/changepw ticket') + ++# Test that passwords specified via kadmin and kpasswd are usable with ++# kinit. ++mark('password change usability by kinit') ++realm.run([kadminl, 'addprinc', '-pw', 'pw1', 'testprinc']) ++# Run kpasswd with an active cache to exercise automatic FAST use. ++realm.kinit('testprinc', 'pw1') ++realm.run([kpasswd, 'testprinc'], input='pw1\npw2\npw2\n') ++realm.kinit('testprinc', 'pw2') ++realm.run([kdestroy]) ++realm.run([kpasswd, 'testprinc'], input='pw2\npw3\npw3\n') ++realm.kinit('testprinc', 'pw3') ++realm.run([kdestroy]) ++realm.run_kadmin(['cpw', '-pw', 'pw4', 'testprinc']) ++realm.kinit('testprinc', 'pw4') ++realm.run([kdestroy]) ++realm.run([kadminl, 'delprinc', 'testprinc']) ++ + success('Password change tests') +diff --git a/src/tests/t_kadmin.py b/src/tests/t_kadmin.py +new file mode 100644 +index 000000000..fe6a3cc2e +--- /dev/null ++++ b/src/tests/t_kadmin.py +@@ -0,0 +1,54 @@ ++from k5test import * ++ ++realm = K5Realm(start_kadmind=True) ++ ++# Create a principal. Test -q option and keyboard entry of the admin ++# password and principal password. Verify creation with kadmin.local. ++realm.run([kadmin, '-q', 'addprinc princ/pw'], ++ input=password('admin') + '\npw1\npw1\n') ++realm.run([kadminl, 'getprinc', 'princ/pw'], ++ expected_msg='Principal: princ/pw@KRBTEST.COM') ++ ++# Run the remaining tests with a cache for efficiency. ++realm.prep_kadmin() ++ ++realm.run_kadmin(['addpol', 'standardpol']) ++realm.run_kadmin(['listpols'], expected_msg='standardpol') ++realm.run_kadmin(['modpol', '-minlength', '5', 'standardpol']) ++realm.run_kadmin(['getpol', 'standardpol'], ++ expected_msg='Minimum password length: 5') ++ ++realm.run_kadmin(['addprinc', '-randkey', 'princ/random']) ++realm.run([kadminl, 'getprinc', 'princ/random'], ++ expected_msg='Principal: princ/random@KRBTEST.COM') ++ ++realm.run_kadmin(['cpw', 'princ/pw'], input='newpw\nnewpw\n') ++realm.run_kadmin(['cpw', '-randkey', 'princ/random']) ++ ++realm.run_kadmin(['modprinc', '-allow_tix', 'princ/random']) ++realm.run_kadmin(['modprinc', '+allow_tix', 'princ/random']) ++realm.run_kadmin(['modprinc', '-policy', 'standardpol', 'princ/random']) ++ ++realm.run_kadmin(['listprincs'], expected_msg='princ/random@KRBTEST.COM') ++ ++realm.run_kadmin(['ktadd', 'princ/pw']) ++ ++realm.run_kadmin(['delprinc', 'princ/random']) ++realm.run([kadminl, 'getprinc', 'princ/random'], expected_code=1, ++ expected_msg='Principal does not exist') ++realm.run_kadmin(['delprinc', 'princ/pw']) ++realm.run([kadminl, 'getprinc', 'princ/pw'], expected_code=1, ++ expected_msg='Principal does not exist') ++ ++realm.run_kadmin(['delpol', 'standardpol']) ++realm.run([kadminl, 'getpol', 'standardpol'], expected_code=1, ++ expected_msg='Policy does not exist') ++ ++# Regression test for #2877 (fixed-sized GSSRPC buffers can't ++# accomodate large listprinc results). ++mark('large listprincs result') ++for i in range(200): ++ realm.run_kadmin(['addprinc', '-randkey', 'foo%d' % i]) ++realm.run_kadmin(['listprincs'], expected_msg='foo199') ++ ++success('kadmin and kpasswd tests') +diff --git a/src/tests/t_policy.py b/src/tests/t_policy.py +index 5a0c06b86..2bb4f5f18 100755 +--- a/src/tests/t_policy.py ++++ b/src/tests/t_policy.py +@@ -25,6 +25,68 @@ realm.run([kadminl, 'cpw', '-pw', 'l0ngenough', 'pwuser'], expected_code=1, + realm.run([kadminl, 'cpw', '-pw', '3rdpassword', 'pwuser']) + realm.run([kadminl, 'cpw', '-pw', 'l0ngenough', 'pwuser']) + ++# Regression test for #929 (kadmind crash with more historical ++# passwords in a principal entry than current policy history setting). ++mark('password history (policy value reduced below current array size)') ++realm.run([kadminl, 'addpol', '-history', '5', 'histpol']) ++realm.addprinc('histprinc', 'first') ++realm.run([kadminl, 'modprinc', '-policy', 'histpol', 'histprinc']) ++realm.run([kadminl, 'cpw', '-pw', 'second', 'histprinc']) ++realm.run([kadminl, 'cpw', '-pw', 'third', 'histprinc']) ++realm.run([kadminl, 'cpw', '-pw', 'fourth', 'histprinc']) ++realm.run([kadminl, 'modpol', '-history', '3', 'histpol']) ++realm.run([kadminl, 'cpw', '-pw', 'fifth', 'histprinc']) ++realm.run([kadminl, 'delprinc', 'histprinc']) ++ ++# Regression test for #2841 (heap buffer overflow when policy history ++# value is reduced to match the number of historical passwords for a ++# principal). ++mark('password history (policy value reduced to current array size)') ++def histfail(*pwlist): ++ for pw in pwlist: ++ realm.run([kadminl, 'cpw', '-pw', pw, 'histprinc'], expected_code=1, ++ expected_msg='Cannot reuse password') ++realm.run([kadminl, 'modpol', '-history', '3', 'histpol']) ++realm.addprinc('histprinc', '1111') ++realm.run([kadminl, 'modprinc', '-policy', 'histpol', 'histprinc']) ++realm.run([kadminl, 'cpw', '-pw', '2222', 'histprinc']) ++histfail('2222', '1111') ++realm.run([kadminl, 'modpol', '-history', '2', 'histpol']) ++realm.run([kadminl, 'cpw', '-pw', '3333', 'histprinc']) ++ ++# Test that the history array is properly resized if the policy ++# history value is increased after the array is filled. ++mark('password history (policy value increase)') ++realm.run([kadminl, 'delprinc', 'histprinc']) ++realm.addprinc('histprinc', '1111') ++realm.run([kadminl, 'modprinc', '-policy', 'histpol', 'histprinc']) ++realm.run([kadminl, 'cpw', '-pw', '2222', 'histprinc']) ++histfail('2222', '1111') ++realm.run([kadminl, 'cpw', '-pw', '2222', 'histprinc'], expected_code=1, ++ expected_msg='Cannot reuse password') ++realm.run([kadminl, 'cpw', '-pw', '1111', 'histprinc'], expected_code=1, ++ expected_msg='Cannot reuse password') ++realm.run([kadminl, 'modpol', '-history', '3', 'histpol']) ++realm.run([kadminl, 'cpw', '-pw', '3333', 'histprinc']) ++histfail('3333', '2222', '1111') ++realm.run([kadminl, 'modpol', '-history', '4', 'histpol']) ++histfail('3333', '2222', '1111') ++realm.run([kadminl, 'cpw', '-pw', '4444', 'histprinc']) ++histfail('4444', '3333', '2222', '1111') ++ ++# Test that when the policy history value is reduced, all currently ++# known old passwords still fail until the next password change, after ++# which the new number of old passwords fails (but no more). ++mark('password history (policy value reduction)') ++realm.run([kadminl, 'modpol', '-history', '3', 'histpol']) ++histfail('4444', '3333', '2222', '1111') ++realm.run([kadminl, 'cpw', '-pw', '5555', 'histprinc']) ++histfail('5555', '3333', '3333') ++realm.run([kadminl, 'cpw', '-pw', '2222', 'histprinc']) ++realm.run([kadminl, 'modpol', '-history', '2', 'histpol']) ++histfail('2222', '5555', '4444') ++realm.run([kadminl, 'cpw', '-pw', '3333', 'histprinc']) ++ + # Test references to nonexistent policies. + mark('nonexistent policy references') + realm.run([kadminl, 'addprinc', '-randkey', '-policy', 'newpol', 'newuser']) diff --git a/Remove-TCL-based-libkadm5-API-tests.patch b/Remove-TCL-based-libkadm5-API-tests.patch new file mode 100644 index 0000000..7819198 --- /dev/null +++ b/Remove-TCL-based-libkadm5-API-tests.patch @@ -0,0 +1,18229 @@ +From ddb189ff95350afc0e3e063016a0f0dd5213dc4c Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Fri, 16 Apr 2021 10:24:04 -0400 +Subject: [PATCH] Remove TCL-based libkadm5 API tests + +[antorres@redhat.com: remove diff for .gitignore] +--- + .gitignore | 20 - + doc/kadm5/api-unit-test.tex | 2680 ----------------- + src/config/pre.in | 18 +- + src/configure.ac | 31 +- + src/kadmin/Makefile.in | 2 +- + src/kadmin/testing/Makefile.in | 8 - + src/kadmin/testing/deps | 1 - + src/kadmin/testing/proto/kdc.conf.proto | 16 - + src/kadmin/testing/proto/krb5.conf.proto | 32 - + src/kadmin/testing/proto/ovsec_adm.dict | 3 - + src/kadmin/testing/scripts/Makefile.in | 18 - + src/kadmin/testing/scripts/deps | 1 - + src/kadmin/testing/scripts/env-setup.shin | 104 - + src/kadmin/testing/scripts/init_db | 229 -- + src/kadmin/testing/scripts/start_servers | 69 - + .../testing/scripts/start_servers_local | 157 - + src/kadmin/testing/scripts/stop_servers | 60 - + src/kadmin/testing/scripts/stop_servers_local | 44 - + src/kadmin/testing/tcl/util.t | 58 - + src/kadmin/testing/util/Makefile.in | 42 - + src/kadmin/testing/util/bsddb_dump.c | 65 - + src/kadmin/testing/util/deps | 16 - + src/kadmin/testing/util/tcl_kadm5.c | 2566 ---------------- + src/kadmin/testing/util/tcl_kadm5.h | 3 - + src/kadmin/testing/util/tcl_kadm5_syntax | 57 - + src/kadmin/testing/util/tcl_krb5_hash.c | 167 - + src/kadmin/testing/util/test.c | 38 - + src/lib/kadm5/Makefile.in | 3 +- + src/lib/kadm5/unit-test/Makefile.in | 143 - + src/lib/kadm5/unit-test/api.2/crte-policy.exp | 927 ------ + src/lib/kadm5/unit-test/api.2/get-policy.exp | 199 -- + src/lib/kadm5/unit-test/api.2/mod-policy.exp | 675 ----- + .../api.current/chpass-principal-v2.exp | 68 - + .../api.current/chpass-principal.exp | 176 -- + .../unit-test/api.current/crte-policy.exp | 927 ------ + .../unit-test/api.current/crte-principal.exp | 1336 -------- + .../kadm5/unit-test/api.current/destroy.exp | 203 -- + .../unit-test/api.current/dlte-policy.exp | 208 -- + .../unit-test/api.current/dlte-principal.exp | 253 -- + .../unit-test/api.current/get-policy.exp | 199 -- + .../api.current/get-principal-v2.exp | 250 -- + .../unit-test/api.current/get-principal.exp | 346 --- + .../kadm5/unit-test/api.current/init-v2.exp | 506 ---- + src/lib/kadm5/unit-test/api.current/init.exp | 699 ----- + .../unit-test/api.current/mod-policy.exp | 711 ----- + .../api.current/mod-principal-v2.exp | 115 - + .../unit-test/api.current/mod-principal.exp | 1606 ---------- + .../api.current/randkey-principal-v2.exp | 61 - + .../api.current/randkey-principal.exp | 297 -- + src/lib/kadm5/unit-test/config/unix.exp | 222 -- + src/lib/kadm5/unit-test/deps | 86 - + src/lib/kadm5/unit-test/destroy-test.c | 48 - + src/lib/kadm5/unit-test/diff-files/destroy-1 | 2 - + src/lib/kadm5/unit-test/diff-files/no-diffs | 2 - + src/lib/kadm5/unit-test/handle-test.c | 140 - + src/lib/kadm5/unit-test/init-test.c | 39 - + src/lib/kadm5/unit-test/iter-test.c | 51 - + src/lib/kadm5/unit-test/lib/lib.t | 306 -- + src/lib/kadm5/unit-test/lock-test.c | 105 - + src/lib/kadm5/unit-test/randkey-test.c | 42 - + src/lib/kadm5/unit-test/setkey-test.c | 246 -- + src/lib/kadm5/unit-test/site.exp | 2 - + 62 files changed, 7 insertions(+), 17697 deletions(-) + delete mode 100644 doc/kadm5/api-unit-test.tex + delete mode 100644 src/kadmin/testing/Makefile.in + delete mode 100644 src/kadmin/testing/deps + delete mode 100644 src/kadmin/testing/proto/kdc.conf.proto + delete mode 100644 src/kadmin/testing/proto/krb5.conf.proto + delete mode 100644 src/kadmin/testing/proto/ovsec_adm.dict + delete mode 100644 src/kadmin/testing/scripts/Makefile.in + delete mode 100644 src/kadmin/testing/scripts/deps + delete mode 100755 src/kadmin/testing/scripts/env-setup.shin + delete mode 100755 src/kadmin/testing/scripts/init_db + delete mode 100755 src/kadmin/testing/scripts/start_servers + delete mode 100755 src/kadmin/testing/scripts/start_servers_local + delete mode 100755 src/kadmin/testing/scripts/stop_servers + delete mode 100755 src/kadmin/testing/scripts/stop_servers_local + delete mode 100644 src/kadmin/testing/tcl/util.t + delete mode 100644 src/kadmin/testing/util/Makefile.in + delete mode 100644 src/kadmin/testing/util/bsddb_dump.c + delete mode 100644 src/kadmin/testing/util/deps + delete mode 100644 src/kadmin/testing/util/tcl_kadm5.c + delete mode 100644 src/kadmin/testing/util/tcl_kadm5.h + delete mode 100644 src/kadmin/testing/util/tcl_kadm5_syntax + delete mode 100644 src/kadmin/testing/util/tcl_krb5_hash.c + delete mode 100644 src/kadmin/testing/util/test.c + delete mode 100644 src/lib/kadm5/unit-test/Makefile.in + delete mode 100644 src/lib/kadm5/unit-test/api.2/crte-policy.exp + delete mode 100644 src/lib/kadm5/unit-test/api.2/get-policy.exp + delete mode 100644 src/lib/kadm5/unit-test/api.2/mod-policy.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/chpass-principal-v2.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/chpass-principal.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/crte-policy.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/crte-principal.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/destroy.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/dlte-policy.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/dlte-principal.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/get-policy.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/get-principal-v2.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/get-principal.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/init-v2.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/init.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/mod-policy.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/mod-principal-v2.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/mod-principal.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/randkey-principal-v2.exp + delete mode 100644 src/lib/kadm5/unit-test/api.current/randkey-principal.exp + delete mode 100644 src/lib/kadm5/unit-test/config/unix.exp + delete mode 100644 src/lib/kadm5/unit-test/deps + delete mode 100644 src/lib/kadm5/unit-test/destroy-test.c + delete mode 100644 src/lib/kadm5/unit-test/diff-files/destroy-1 + delete mode 100644 src/lib/kadm5/unit-test/diff-files/no-diffs + delete mode 100644 src/lib/kadm5/unit-test/handle-test.c + delete mode 100644 src/lib/kadm5/unit-test/init-test.c + delete mode 100644 src/lib/kadm5/unit-test/iter-test.c + delete mode 100644 src/lib/kadm5/unit-test/lib/lib.t + delete mode 100644 src/lib/kadm5/unit-test/lock-test.c + delete mode 100644 src/lib/kadm5/unit-test/randkey-test.c + delete mode 100644 src/lib/kadm5/unit-test/setkey-test.c + delete mode 100644 src/lib/kadm5/unit-test/site.exp + +diff --git a/doc/kadm5/api-unit-test.tex b/doc/kadm5/api-unit-test.tex +deleted file mode 100644 +index 014242037..000000000 +--- a/doc/kadm5/api-unit-test.tex ++++ /dev/null +@@ -1,2680 +0,0 @@ +-% This document is included for historical purposes only, and does not +-% apply to krb5 today. +- +-\documentstyle[times,fullpage]{article} +- +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-%% Make _ actually generate an _, and allow line-breaking after it. +-\let\underscore=\_ +-\catcode`_=13 +-\def_{\underscore\penalty75\relax} +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +- +-\newcommand{\test}[1]{\begin{description} +-\setlength{\itemsep}{0pt} +-#1 +-\end{description} +- +-} +- +-\newcommand{\numtest}[2]{\begin{description} +-\setlength{\itemsep}{0pt} +-\Number{#1} +-#2 +-\end{description} +- +-} +- +-\newcommand{\Number}[1]{\item[Number:] #1} +-\newcommand{\Reason}[1]{\item[Reason:] #1} +-\newcommand{\Expected}[1]{\item[Expected:] #1} +-\newcommand{\Conditions}[1]{\item[Conditions:] #1} +-\newcommand{\Priority}[1]{\item[Priority:] #1} +-\newcommand{\Status}[1]{\item[Status:] #1} +-\newcommand{\Vtwonote}[1]{\item[V2 note:] #1} +-\newcommand{\Version}[1]{\item[Version:] #1} +-\newcommand{\Call}[1]{} +-%\newcommand{\Call}[1]{\item[Call:] #1} +-%\newcommand{\Number}[1]{} +-%\newcommand{\Reason}[1]{} +-%\newcommand{\Expected}[1]{} +-%\newcommand{\Conditions}[1]{} +-%\newcommand{\Priority}[1]{} +- +-\title{KADM5 Admin API\\ +-Unit Test Description} +-\author{Jonathan I. Kamens} +- +-\begin{document} +- +-\maketitle +- +-%\tableofcontents +- +-\section{Introduction} +- +-The following is a description of a black-box unit test of the KADM5 +-API. Each API function is listed, followed by the tests that should be +-performed on it. +- +-The tests described here are based on the ``Kerberos Administration +-System KADM5 API Functional Specifications'', revision 1.68. This +-document was originally written based on the OpenVision API functional +-specifications, version 1.41, dated August 18, 1994, and many +-indications of the original version remain. +- +-All tests which test for success should verify, using some means other +-than the return value of the function being tested, that the requested +-operation was successfully performed. For example: for init, test +-that other operations can be performed after init; for destroy, test +-that other operations can't be performed after destroy; for modify +-functions, verify that all modifications to the database which should +-have taken place did, and that the new, modified data is in effect; +-for get operations, verify that the data retrieved is the data that +-should actually be in the database. +- +-The tests would be better if they compared the actual contents of the +-database before and after each test, rather than relying on the KADM5 +-API to report the results of changes. +- +-Similarly, all tests which test for failure should verify that the +-no component of the requested operation took place. For example: if +-init fails, other operations should not work. If a modify fails, all +-data in the database should be the same as it was before the attempt +-to modify, and the old data should still be what is enforced. +-Furthermore, tests which test for failure should verify that the +-failure code returned is correct for the specific failure condition +-tested. +- +-Most of the tests listed below should be run twice -- once locally on +-the server after linking against the server API library, and once +-talking to the server via authenticated Sun RPC after linking against +-the client API library. Tests which should only be run locally or via +-RPC are labelled with a ``local'' or ``RPC''. +- +-Furthermore, in addition to the tests labelled below, a test should be +-implemented to verify that a client can't perform operations on the +-server through the client API library when it's linked against +-standard Sun RPC instead of OpenV*Secure's authenticated Sun RPC. +-This will require a client with a modified version of ovsec_kadm_init +-which doesn't call auth_gssapi_create. This client should call this +-modified ovsec_kadm_init and then call some other admin API function, +-specifying arguments to both functions that would work if the +-authenticated Sun RPC had been used, but shouldn't if authentication +-wasn't used. The test should verify that the API function call after +-the init doesn't succeed. +- +-There is also another test to see if all the API functions handle getting an +-invalid server handle correctly. This is not done as part of the tests that +-are run through the TCL program cause the TCL program has no way of +-invalidating a server handle. So there is a program that calls init and +-changes the handle magic number, and then attempts to call each API function +-with the corrupted server handle. +- +-A number of tests have been added or changed to correspond with KADM5 +-API version 2. Tests which are only performed against the newer +-version specify the version number in the test description. +- +-\section{ovsec_kadm_init} +- +-\numtest{1}{ +-\Reason{An empty string realm is rejected.} +-\Status{Implemented} +-\Vtwonote{The empty string is now passed as the realm field of the +-parameters structure.} +-} +- +-\numtest{2}{ +-\Reason{A realm containing invalid characters is rejected.} +-\Status{Implemented} +-\Vtwonote{The invalid character is now passed as the realm field of the +-parameters structure.} +-} +- +-\numtest{2.5}{ +-\Reason{A non-existent realm is rejected.} +-\Status{Implemented} +-\Vtwonote{The non-existent realm is now passed as the realm field of the +-parameters structure.} +-} +- +-\numtest{3}{ +-\Reason{A bad service name representing an existing principal +- (different from the client principal) is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{4}{ +-\Reason{A bad service name representing a non-existent +- principal is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{5}{ +-\Reason{A bad service name identical to the (existing) client +- name is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{6}{ +-\Reason{A null password causes password prompting.} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Reason{An empty-string causes password prompting} +-\Status{Implemented} +-} +- +-\numtest{8}{ +-\Reason{An incorrect password which is the password of another +- user is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Reason{An incorrect password which isn't the password of any +- user is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Reason{A null client_name is rejected.} +-\Status{Implemented} +-} +- +-% Empty string client name is legal. +-%\numtest{11}{ +-%\Reason{An empty-string client_name is rejected.} +-%} +- +-\numtest{12}{ +-\Reason{A client_name referring to a non-existent principal in +- the default realm is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Reason{A client_name referring to a non-existent principal +- with the local realm specified explicitly is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Reason{A client_name referring to a non-existent principal in +- a nonexistent realm is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{15}{ +-\Reason{A client_name referring to an existing principal in a +- nonexistent realm is rejected.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{16}{ +-\Reason{Valid invocation.} +-\Status{Implemented} +-} +- +-\numtest{17}{ +-\Reason{Valid invocation (explicit client realm).} +-\Status{Implemented} +-} +- +-\numtest{18}{ +-\Reason{Valid invocation (CHANGEPW_SERVICE).} +-\Status{Implemented} +-} +- +-\numtest{19}{ +-\Reason{Valid invocation (explicit service realm).} +-\Status{Implemented} +-\Vtwonote{The explicit realm is now passed as the realm field of the +-configuration parameters.} +-} +- +-\numtest{20}{ +-\Reason{Valid invocation (database access allowed after init).} +-\Status{Implemented} +-} +- +-%\numtest{21}{ +-%\Reason{Init fails when called twice in a row.} +-%\Status{Implemented} +-%} +- +-\numtest{22}{ +-\Reason{A null password causes master-key prompting.} +-\Conditions{local} +-\Status{Implemented} +-\Vtwonote{Obsolete.} +-} +- +-\numtest{22.5}{ +-\Reason{A empty string password causes master-key prompting.} +-\Conditions{local} +-\Status{Implemented} +-\Vtwonote{Obsolete.} +-} +- +-%\numtest{23}{ +-%\Reason{A non-null password causes reading from the kstash.} +-%\Conditions{local} +-%\Status{Implemented} +-%} +- +-\numtest{24}{ +-\Reason{Null service name is ignored in local invocation.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{25}{ +-\Reason{Non-null service name is ignored in local invocation.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-%\numtest{26}{ +-%\Reason{Can't do ``get'' operation before calling init.} +-%\Status{Implemented} +-%} +- +-%\numtest{27}{ +-%\Reason{Can't do ``add'' operation before calling init.} +-%\Status{Implemented} +-%} +- +-%\numtest{28}{ +-%\Reason{Can't do ``modify'' operation before calling init.} +-%\Status{Implemented} +-%} +- +-%\numtest{29}{ +-%\Reason{Can't do ``delete'' operation before calling init.} +-%\Status{Implemented} +-%} +- +-\numtest{30}{ +-\Reason{Can init after failed init attempt.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{31}{ +-\Priority{High} +-\Reason{Return BAD_STRUCT_VERSION when the mask bits are set to invalid values} +-\Status{Implemented} +-} +- +-\numtest{32}{ +-\Priority{High} +-\Reason{Return BAD_STRUCT_VERSION when the mask bits are not set} +-\Status{Implemented} +-} +- +-\numtest{33}{ +-\Priority{High} +-\Reason{Return OLD_STRUCT_VERSION when attempting to use an old/unsupported +- structure version} +-\Status{Implemented} +-} +- +-\numtest{34}{ +-\Priority{High} +-\Reason{Return NEW_STRUCT_VERSION when attempting to use a newer version of +- of the structure then what is supported} +-\Status{Implemented} +-} +- +-\numtest{35}{ +-\Priority{High} +-\Reason{Return BAD_API_VERSION when the mask bits are set to invalid values} +-\Status{Implemented} +-} +- +-\numtest{36}{ +-\Priority{High} +-\Reason{Return BAD_API_VERSION when the mask bits are not set} +-\Status{Implemented} +-} +- +-\numtest{37}{ +-\Priority{High} +-\Reason{Return OLD_LIB_API_VERSION when using an old/unsuppored +- api version number} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{38}{ +-\Priority{High} +-\Reason{Return OLD_SERVER_API_VERSION attempting to use an +- old/unsupported api version number} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{39}{ +-\Priority{High} +-\Reason{Return NEW_LIB_API_VERSION when using a newer api +- version number then supported} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{40}{ +-\Priority{High} +-\Reason{Return NEW_SERVER_API_VERSION when using a newer api version +- number then supported} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{41}{ +-\Priority{High} +-\Reason{Return BAD_XXX_VERSION when the API and the structure +- version numbers are reversed} +-\Status{Implemented} +-} +- +-\numtest{42}{ +-\Priority{High} +-\Reason{Succeeds when using valid api and struct version numbers and masks} +-\Status{Implemented} +-} +- +-\numtest{43}{ +-\Priority{Low} +-\Reason{Returns two different server handle when called twice with same info} +-} +- +-\numtest{44}{ +-\Priority{Low} +-\Reason{Returns two different server handles when called twice with +- different info} +-} +- +-\numtest{45}{ +-\Priority{Bug fix, secure-install/3390} +-\Reason{Returns SECURE_PRINC_MISSING when ADMIN_SERVICE does not +-exist.} +-\Status{Implemented} +-} +- +-\numtest{46}{ +-\Priority{Bug fix, secure-install/3390} +-\Reason{Returns SECURE_PRINC_MISSING when CHANGEPW_SERVICE does not +-exist.} +-\Status{Implemented} +-} +- +-\numtest{100}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the profile field of the configuration parameters, if +-set.} +-\Status{Implemented} +-} +- +-\numtest{101}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the kadmind_port field of the configuration parameters, +-if set.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{102}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the admin_server field of the configuration parameters, +-if set with only an admin server name.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{102.5}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the admin_server field of the configuration parameters, +-if set with a host name and port number.} +-\Conditions{RPC} +-} +- +-\numtest{103}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the dbname field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{104}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the admin_dbname field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{105}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the admin_lockfile field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{106}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the mkey_from_kbd field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{107}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the stash_file field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{108}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the mkey_name field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{109}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the max_life field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{110}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the max_rlife field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{111}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the expiration field of the configuration parameters, if +-set.} +-\Status{Implemented} +-\Conditions{local} +-} +- +-\numtest{112}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the flags field of the configuration parameters, if +-set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{113}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Obeys the keysalts and num_keysalts field of the configuration +-parameters, if set.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{114}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Returns KADM5_BAD_SERVER_PARAMS if any client-only parameters +-are specified to server-side init.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{115}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Returns KADM5_BAD_CLIENT_PARAMS if any client-only parameters +-are specified to server-side init.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{116}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Two calls to init with clients having different privileges +-succeeds, and both clients maintain their correct privileges.} +-\Priority{Bug fix} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{117}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{The max_life field defaults to value specified in the API +-Functional Specification when kdc.conf is unreadable.} +-\Priority{Bug fix, krb5-admin/18} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{150}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{init_with_creds works when given an open ccache with a valid +-credential for ADMIN_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{151}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{init_with_creds works when given an open ccache with a valid +-credential for CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{152}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{init_with_creds fails with KRB5_FCC_NOFILE (was +- KADM5_GSS_ERROR) when given an open +-ccache with no credentials.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{153}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{init_with_creds fails with KRB5_CC_NOTFOUND (was +- KADM5_GSS_ERROR) when given an open +-ccache without credentials for ADMIN_SERVICE or CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{154}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{If the KRB5_KDC_PROFILE environment variable is set to a filename +-that does not exist, init fails with ENOENT.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\section{ovsec_kadm_destroy} +- +-\numtest{1}{ +-\Reason{Valid invocation.} +-\Status{Implemented} +-} +- +-%\numtest{2}{ +-%\Reason{Valid invocation (``get'' not allowed after destroy).} +-%\Status{Implemented} +-%} +- +-%\numtest{3}{ +-%\Reason{Valid invocation (``add'' not allowed after destroy).} +-%\Status{Implemented} +-%} +- +-%\numtest{4}{ +-%\Reason{Valid invocation (``modify'' not allowed after destroy).} +-%\Status{Implemented} +-%} +- +-%\numtest{5}{ +-%\Reason{Valid invocation (``delete'' not allowed after destroy).} +-%\Status{Implemented} +-%} +- +-%\numtest{6}{ +-%\Reason{Fails if database not initialized.} +-%\Status{Implemented} +-%} +- +-%\numtest{7}{ +-%\Reason{Fails if invoked twice in a row.} +-%\Status{Implemented} +-%} +- +-\numtest{8}{ +-\Reason{Database can be reinitialized after destroy.} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{client} +-} +- +-\section{ovsec_kadm_create_principal} +- +-%In the tests below, ``getu'' refers to a user who has only ``get'' access, +-%''addu'' refers to a user who has only ``add'' access, ``modifyu'' refers to +-%a user who has only ``modify'' access, and ``deleteu'' refers to a user +-%who has only ``delete'' access. ``amu'' refers to a user with ``add'' and +-%''modify'' access. ``new_princ'' refers to a principal entry structure +-%filled in as follows: +-% +-% krb5_parse_name("newuser", \&new_princ.principal); +-% krb5_timeofday(\&new_princ.princ_expire_time); +-% new_princ.princ_expire_time += 130; +-% krb5_timeofday(\&new_princ.last_pwd_change); +-% new_princ.last_pwd_change += 140; +-% krb5_timeofday(\&new_princ.pw_expiration); +-% new_princ.pw_expiration += 150; +-% new_princ.max_life = 160; +-% krb5_parse_name("usera", \&new_princ.mod_name); +-% krb5_timeofday(\&new_princ.mod_date); +-% new_princ.mod_date += 170; +-% new_princ.attributes = 0xabcdabcd; +-% new_princ.kvno = 180; +-% new_princ.mkvno = 190; +-% new_princ.policy = null; +-% new_princ.aux_attributes = 0xdeadbeef; +-% +-%The offsets of 130 through 190 above are used to ensure that the +-%fields are all known to be different from each other, so that +-%accidentally switched fields can be detected. Some of the fields in +-%this structure may be changed by the tests, but they should clean up +-%after themselves. +- +-%\numtest{1}{ +-%\Reason{Fails if database not initialized.} +-%\Status{Implemented} +-%} +- +-\numtest{2}{ +-\Reason{Fails on null princ argument.} +-\Status{Implemented} +-} +- +-\numtest{3}{ +-\Reason{Fails on null password argument.} +-\Status{Implemented} +-} +- +-\numtest{4}{ +-\Reason{Fails on empty-string password argument.} +-\Status{Implemented} +-} +- +-\numtest{5}{ +-\Reason{Fails when mask contains undefined bit.} +-\Status{Implemented} +-} +- +-\numtest{6}{ +-\Reason{Fails when mask contains LAST_PWD_CHANGE bit.} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Reason{Fails when mask contains MOD_TIME bit.} +-\Status{Implemented} +-} +- +-\numtest{8}{ +-\Reason{Fails when mask contains MOD_NAME bit.} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Reason{Fails when mask contains MKVNO bit.} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Reason{Fails when mask contains AUX_ATTRIBUTES bit.} +-\Status{Implemented} +-} +- +-\numtest{11}{ +-\Reason{Fails when mask contains POLICY_CLR bit.} +-\Status{Implemented} +-} +- +-\numtest{12}{ +-\Reason{Fails for caller with no access bits.} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Reason{Fails when caller has ``get'' access and not ``add''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Reason{Fails when caller has ``modify'' access and not ``add''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{15}{ +-\Reason{Fails when caller has ``delete'' access and not ``add''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{16}{ +-\Reason{Fails when caller connected with CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{17}{ +-\Reason{Fails on attempt to create existing principal.} +-\Status{Implemented} +-} +- +-\numtest{18}{ +-\Reason{Fails when password is too short.} +-\Status{Implemented} +-} +- +-\numtest{19}{ +-\Reason{Fails when password has too few classes.} +-\Status{Implemented} +-} +- +-\numtest{20}{ +-\Reason{Fails when password is in dictionary.} +-\Status{Implemented} +-} +- +-\numtest{21}{ +-\Reason{Nonexistent policy is rejected.} +-\Status{Implemented} +-} +- +-\numtest{22}{ +-\Reason{Fails on invalid principal name.} +-\Status{Implemented} +-} +- +-\numtest{23}{ +-\Reason{Valid invocation.} +-\Status{Implemented} +-} +- +-\numtest{24}{ +-\Reason{Succeeds when caller has ``add'' access and another one.} +-\Status{Implemented} +-} +- +-%\numtest{25}{ +-%\Reason{Fails when password is too short, when override_qual is true.} +-%} +- +-%\numtest{26}{ +-%\Reason{Fails when password has too few classes, when +-% override_qual is true.} +-%} +- +-%\numtest{27}{ +-%\Reason{Fails when password is in dictionary, when override_qual is +-% true.} +-%} +- +-\numtest{28}{ +-\Reason{Succeeds when assigning policy.} +-\Status{Implemented} +-} +- +-\numtest{29}{ +-\Priority{High} +-\Reason{Allows 0 (never) for princ_expire_time.} +-\Status{Implemented} +-} +- +-\numtest{30}{ +-\Reason{Allows 0 (never) for pw_expiration when there's no policy.} +-\Status{Implemented} +-} +- +-\numtest{31}{ +-\Reason{Allows 0 (never) for pw_expiration when there's a policy with +- 0 for pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{32}{ +-\Reason{Accepts 0 (never) for pw_expiration when there's a policy with +- non-zero pw_max_life, and sets pw_expiration to zero.} +-\Status{Implemented} +-} +- +-\numtest{33}{ +-\Reason{Accepts and sets non-zero pw_expiration when no policy.} +-\Status{Implemented} +-} +- +-\numtest{34}{ +-\Reason{Accepts and sets non-zero pw_expiration when there's a policy +- with zero pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{35}{ +-\Reason{Accepts and sets non-zero pw_expiration when there's a policy +- with pw_max_life later than the specified pw_expiration.} +-\Status{Implemented} +-} +- +-\numtest{36}{ +-\Reason{Accepts and sets non-zero pw_expiration greater than now_pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{37}{ +-\Priority{High} +-\Reason{Sets pw_expiration to 0 (never) if there's no policy and no +- specified pw_expiration.} +-\Status{Implemented} +-} +- +-\numtest{38}{ +-\Priority{High} +-\Reason{Sets pw_expiration to 0 (never) if it isn't specified and the +- policy has a 0 (never) pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{39}{ +-\Priority{High} +-\Reason{Sets pw_expiration to now + pw_max_life if it isn't specified +- and the policy has a non-zero pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{40}{ +-\Priority{High} +-\Reason{Allows 0 (forever) for max_life.} +-\Status{Implemented} +-} +- +-\numtest{41}{ +-\Priority{High} +-\Reason{Doesn't modify or free mod_name on success.} +-} +- +-\numtest{42}{ +-\Priority{High} +-\Reason{Doesn't modify or free mod_name on failure.} +-} +- +-\numtest{43}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{44}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +- +-\section{ovsec_kadm_delete_principal} +- +-%\numtest{1}{ +-%\Reason{Fails if database not initialized.} +-%\Status{Implemented} +-%} +- +-\numtest{2}{ +-\Reason{Fails on null principal.} +-\Status{Implemented} +-} +- +-% Empty string principal is legal. +-%\numtest{3}{ +-%\Reason{Fails on empty-string principal.} +-%} +- +-% There is not invalid principal names +-%\numtest{4}{ +-%\Reason{Fails on invalid principal name.} +-%} +- +-\numtest{5}{ +-\Priority{High} +-\Reason{Fails on nonexistent principal.} +-\Status{Implemented} +-} +- +-\numtest{6}{ +-\Priority{High} +-\Reason{Fails when caller connected with CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Priority{High} +-\Reason{Fails if caller has ``add'' access and not ``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{8}{ +-\Priority{High} +-\Reason{Fails if caller has ``modify'' access and not ``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Priority{High} +-\Reason{Fails if caller has ``get'' access and not ``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Priority{High} +-\Reason{Fails if caller has no access bits.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{11}{ +-\Priority{High} +-\Reason{Valid invocation.} +-\Status{Implemented} +-} +- +-\numtest{12}{ +-\Priority{High} +-\Reason{Valid invocation (on principal with policy).} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +- +-\section{ovsec_kadm_modify_principal} +- +-%\numtest{1}{ +-%\Reason{Fails if database not initialized.} +-%\Status{Implemented} +-%} +- +-\numtest{2}{ +-\Priority{High} +-\Reason{Fails if user connected with CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{3}{ +-\Reason{Fails on mask with undefined bit set.} +-\Status{Implemented} +-} +- +-\numtest{4}{ +-\Reason{Fails on mask with PRINCIPAL set.} +-\Status{Implemented} +-} +- +-\numtest{5}{ +-\Priority{High} +-\Reason{Fails on mask with LAST_PWD_CHANGE set.} +-\Status{Implemented} +-} +- +-\numtest{6}{ +-\Reason{Fails on mask with MOD_TIME set.} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Reason{Fails on mask with MOD_NAME set.} +-\Status{Implemented} +-} +- +-\numtest{8}{ +-\Reason{Fails on mask with MKVNO set.} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Priority{High} +-\Reason{Fails on mask with AUX_ATTRIBUTES set.} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Reason{Fails on nonexistent principal.} +-\Status{Implemented} +-} +- +-\numtest{11}{ +-\Priority{High} +-\Reason{Fails for user with no access bits.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{12}{ +-\Priority{High} +-\Reason{Fails for user with ``get'' access.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Priority{High} +-\Reason{Fails for user with ``add'' access.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Priority{High} +-\Reason{Fails for user with ``delete'' access.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{15}{ +-\Priority{High} +-\Reason{Succeeds for user with ``modify'' access.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{16}{ +-\Reason{Succeeds for user with ``modify'' and another access.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{17}{ +-\Priority{High} +-\Reason{Fails when nonexistent policy is specified.} +-\Status{Implemented} +-} +- +-\numtest{18}{ +-\Priority{High} +-\Reason{Succeeds when existent policy is specified.} +-\Status{Implemented} +-} +- +-\numtest{19}{ +-\Reason{Updates policy count when setting policy from none.} +-\Status{Implemented} +-} +- +-\numtest{20}{ +-\Reason{Updates policy count when clearing policy from set.} +-\Status{Implemented} +-} +- +-\numtest{21}{ +-\Reason{Updates policy count when setting policy from other policy.} +-\Status{Implemented} +-} +- +-\numtest{21.5}{ +-\Reason{Policy reference count remains unchanged when policy is +- changed to itself.} +-\Status{Implemented.} +-} +- +-\numtest{22}{ +-\Reason{Allows 0 (never) for pw_expiration when there's no policy.} +-\Status{Implemented} +-} +- +-\numtest{23}{ +-\Reason{Allows 0 (never) for pw_expiration when there's a policy with +- 0 for pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{24}{ +-\Reason{Accepts 0 (never) for pw_expiration when there's a policy with +- non-zero pw_max_life, but actually sets pw_expiration to +- last_pwd_change + pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{25}{ +-\Reason{Accepts and sets non-zero pw_expiration when no policy.} +-\Status{Implemented} +-} +- +-\numtest{26}{ +-\Reason{Accepts and sets non-zero pw_expiration when there's a policy +- with zero pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{27}{ +-\Reason{Accepts and sets non-zero pw_expiration when there's a policy +- with pw_max_life later than the specified pw_expiration.} +-\Status{Implemented} +-} +- +-\numtest{28}{ +-\Reason{Accepts non-zero pw_expiration and limits it to last_pwd_change + +- pw_max_life when it's later than last_pwd_change + non-zero +- pw_max_life in policy.} +-\Status{Implemented} +-} +- +-\numtest{29}{ +-\Priority{High} +-\Reason{Sets pw_expiration to 0 (never) when a policy is cleared and +-no pw_expiration is specified.} +-\Status{Implemented} +-} +- +-\numtest{30}{ +-\Priority{High} +-\Reason{Sets pw_expiration to 0 (never) if it isn't specified and the +- new policy has a 0 (never) pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{31}{ +-\Priority{High} +-\Reason{Sets pw_expiration to now + pw_max_life if it isn't specified +- and the new policy has a non-zero pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{32}{ +-\Priority{High} +-\Reason{Accepts princ_expire_time change.} +-\Status{Implemented} +-} +- +- +- +-\numtest{33}{ +-\Priority{High} +-\Reason{Accepts attributes change.} +-\Status{Implemented} +-} +- +-\numtest{33.25}{ +-\Priority{High} +-\Reason{Accepts attributes change (KRB5_KDB_REQUIRES_PW_CHANGE).} +-\Status{Implemented} +-} +- +-\numtest{33.5}{ +-\Priority{High} +-\Reason{Accepts attributes change (KRB5_DISALLOW_TGT_BASE).} +-\Status{Implemented} +-} +- +-\numtest{33.75}{ +-\Priority{High} +-\Reason{Accepts attributes change (KRB5_PW_CHANGE_SERVICE).} +-\Status{Implemented} +-} +- +-\numtest{34}{ +-\Priority{High} +-\Reason{Accepts max_life change.} +-\Status{Implemented} +-} +- +-\numtest{35}{ +-\Priority{High} +-\Reason{Accepts kvno change.} +-\Status{Implemented} +-} +- +-\numtest{36}{ +-\Reason{Behaves correctly when policy is set to the same as it was +- before.} +-\Status{Implemented} +-} +- +-\numtest{37}{ +-\Reason{Behaves properly when POLICY_CLR is specified and there was no +- policy before.} +-\Status{Implemented} +-} +- +-\numtest{38}{ +-\Priority{High} +-\Reason{Accepts 0 (never) for princ_expire_time.} +-\Status{Implemented} +-} +- +-\numtest{39}{ +-\Priority{High} +-\Reason{Accepts 0 for max_life.} +-\Status{Implemented} +-} +- +-\numtest{40}{ +-\Reason{Rejects null principal argument.} +-\Status{Implemented} +-} +- +-\numtest{41}{ +-\Priority{High} +-\Reason{Doesn't modify or free mod_name on success.} +-} +- +-\numtest{42}{ +-\Priority{High} +-\Reason{Doesn't modify or free mod_name on failure.} +-} +- +-\numtest{43}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{44}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +-\numtest{100}{ +-\Version{KADM5_API_VERSION_2} +-\Priority{bug-fix} +-\Reason{Accepts max_rlife change.} +-\Status{Implemented} +-} +- +-\numtest{101}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Rejects last_success change.} +-\Status{Implemented} +-} +- +-\numtest{102}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Rejects last_failed change.} +-\Status{Implemented} +-} +- +-\numtest{103}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Rejects fail_auth_count change.} +-\Status{Implemented} +-} +- +-\numtest{103.5}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Rejects key_data change.} +-\Status{Implemented} +-} +- +-\numtest{104}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Accepts tl_data change when all types are greater than 256.} +-\Status{Implemented} +-} +- +-\numtest{105}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Returns KADM5_BAD_TL_TYPE when given tl_data with a type less +-than 256.} +-\Status{Implemented} +-} +- +-\section{ovsec_kadm_rename_principal} +- +-%\numtest{1}{ +-%\Reason{Fails if database not initialized.} +-%\Status{Implemented} +-%} +- +-\numtest{2}{ +-\Priority{High} +-\Reason{Fails if user connected with CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{3}{ +-\Priority{High} +-\Reason{Fails for user with no access bits.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{4}{ +-\Reason{Fails for user with ``modify'' access and not ``add'' or +-``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{5}{ +-\Reason{Fails for user with ``get'' access and not ``add'' or +-``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{6}{ +-\Reason{Fails for user with ``modify'' and ``add'' but not ``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Reason{Fails for user with ``modify'' and ``delete'' but not ``add''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{8}{ +-\Reason{Fails for user with ``get'' and ``add'' but not ``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Reason{Fails for user with ``get'' and ``delete'' but not ``add.''} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Reason{Fails for user with ``modify'', ``get'' and ``add'', but not +- ``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{11}{ +-\Reason{Fails for user with ``modify'', ``get'' and ``delete'', but +- not ``add''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{12}{ +-\Priority{High} +-\Reason{Fails for user with ``add'' but not ``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Priority{High} +-\Reason{Fails for user with ``delete'' but not ``add''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Priority{High} +-\Reason{Succeeds for user with ``add'' and ``delete'', when that user +-has non-name-based salt.} +-\Status{Implemented} +-} +- +-\numtest{15}{ +-\Priority{High} +-\Reason{Fails if target principal name exists.} +-\Status{Implemented} +-} +- +-\numtest{16}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{17}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +-\numtest{18}{ +-\Priority{bug fix} +-\Reason{Returns NO_RENAME_SALT when asked to rename a principal whose +-salt depends on the principal name.} +-\Status{Implemented} +-} +- +-\section{ovsec_kadm_chpass_principal} +-\label{ovseckadmchpassprincipal} +- +-\subsection{Quality/history enforcement tests} +- +-This section lists a series of tests which will be run a number of +-times, with various parameter settings (e.g., which access bits user +-has, whether user connected with ADMIN_SERVICE or CHANGEPW_SERVICE, +-etc.). The table following the +-list of tests gives the various parameter settings under which the +-tests should be run, as well which should succeed and which should +-fail for each choice of parameter settings. +- +-\subsubsection{List of tests} +- +-The test number of each of these tests is an offset from the base +-given in the table below. +- +-\numtest{1}{ +-\Priority{High} +-\Reason{With history setting of 1, change password to itself.} +-} +- +-\numtest{2}{ +-\Reason{With history setting of 2 but no password changes since +- principal creation, change password to itself.} +-} +- +-\numtest{3}{ +-\Reason{With history setting of 2 and one password change since +- principal creation, change password to itself +- and directly previous password.} +-} +- +-\numtest{4}{ +-\Priority{High} +-\Reason{With a history setting of 3 and no password changes, +- change password to itself.} +-} +- +-\numtest{5}{ +-\Priority{High} +-\Reason{With a history setting of 3 and 1 password change, +- change password to itself or previous password.} +-} +- +-\numtest{6}{ +-\Priority{High} +-\Reason{With a history setting of 3 and 2 password changes, +- change password to itself and the two previous passwords.} +-} +- +-\numtest{7}{ +-\Priority{High} +-\Reason{Change to previously unused password when now - +- last_pwd_change $<$ pw_min_life.} +-} +- +-\numtest{8}{ +-\Priority{High} +-\Reason{Change to previously unused password that doesn't contain enough +- character classes.} +-} +- +-\numtest{9}{ +-\Priority{High} +-\Reason{Change to previously unused password that's too short.} +-} +- +-\numtest{10}{ +-\Priority{High} +-\Reason{Change to previously unused password that's in the dictionary.} +-} +- +-\subsubsection{List of parameter settings} +- +-In the table below, ``7 passes'' means that test 7 above passes and +-the rest of the tests fail. +- +-\begin{tabular}{llllll} +-Base & Modify access? & Own password? & Service & Pass/Fail \\ \hline +-0 & No & Yes & ADMIN & all fail \\ +-20 & No & Yes & CHANGEPW & all fail \\ +-40 & No & No & ADMIN & all fail \\ +-60 & No & No & CHANGEPW & all fail \\ +-80 & Yes & Yes & ADMIN & 7 passes \\ +-100 & Yes & Yes & CHANGEPW & all fail \\ +-120 & Yes & No & ADMIN & 7 passes \\ +-140 & Yes & No & CHANGEPW & all fail \\ +-\end{tabular} +- +-\subsection{Other quality/history tests} +- +-\numtest{161}{ +-\Priority{High} +-\Reason{With history of 1, can change password to anything other than +- itself that doesn't conflict with other quality +- rules.} +-} +- +-\numtest{162}{ +-\Reason{With history of 2 and 2 password changes, can change password +- to original password.} +-} +- +-\numtest{163}{ +-\Priority{High} +-\Reason{With history of 3 and 3 password changes, can change password +- to original password.} +-} +- +-\numtest{164}{ +-\Priority{High} +-\Reason{Can change password when now - last_pwd_change $>$ pw_min_life.} +-} +- +-\numtest{165}{ +-\Priority{High} +-\Reason{Can change password when it contains exactly the number of +- classes required by the policy.} +-} +- +-\numtest{166}{ +-\Priority{High} +-\Reason{Can change password when it is exactly the length required by +- the policy.} +-} +- +-\numtest{167}{ +-\Priority{High} +-\Reason{Can change password to a word that isn't in the dictionary.} +-} +- +- +-\subsection{Other tests} +- +-%\numtest{168}{ +-%\Reason{Fails if database not initialized.} +-%} +- +-\numtest{169}{ +-\Reason{Fails for non-existent principal.} +-} +- +-\numtest{170}{ +-\Reason{Fails for null password.} +-} +- +-\numtest{171}{ +-\Priority{High} +-\Reason{Fails for empty-string password.} +-} +- +-\numtest{172}{ +-\Priority{High} +-\Reason{Pw_expiration is set to now + max_pw_life if policy exists and +- has non-zero max_pw_life.} +-} +- +-\numtest{173}{ +-\Priority{High} +-\Reason{Pw_expiration is set to 0 if policy exists and has zero +- max_pw_life.} +-} +- +-\numtest{174}{ +-\Priority{High} +-\Reason{Pw_expiration is set to 0 if no policy.} +-} +- +-\numtest{175}{ +-\Priority{High} +-\Reason{KRB5_KDC_REQUIRES_PWCHANGE bit is cleared when password is +- successfully changed.} +-} +- +-\numtest{176}{ +-\Priority{High} +-\Reason{Fails for user with no access bits, on other's password.} +-} +- +-\numtest{177}{ +-\Priority{High} +-\Reason{Fails for user with ``get'' but not ``modify'' access, on +- other's password.} +-} +- +-\numtest{178}{ +-\Reason{Fails for user with ``delete'' but not ``modify'' access, on +- other's password.} +-} +- +-\numtest{179}{ +-\Reason{Fails for user with ``add'' but not ``modify'' access, on +- other's password.} +-} +- +-\numtest{180}{ +-\Reason{Succeeds for user with ``get'' and ``modify'' access, on +- other's password.} +-\Status{Implemented} +-} +- +-\numtest{180.5}{ +-\Priority{High} +-\Reason{Succeeds for user with ``modify'' but not ``get'' access, on +- other's password.} +-\Conditions{RPC} +-\Status{Implemented} +-} +-\numtest{180.625}{ +-\Priority{High} +-\Reason{Fails for user with modify when connecting with CHANGEPW_SERVICE on +- others password} +-\Conditions{RPC} +-\Status{Implemented} +-} +-\numtest{180.75}{ +-\Priority{High} +-\Reason{Fails for user with modify when connecting with CHANGEPW_SERVICE +- on other's password which has expired} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-%\numtest{181}{ +-%\Reason{Password that would succeed if override_qual were false fails +-% if override_qual is true.} +-%\Expected{Returns CANNOT_OVERRIDE.} +-%} +- +-\numtest{182}{ +-\Priority{High} +-\Reason{Can not change key of ovsec_adm/history principal.} +-\Status{Implemented} +-} +- +-\numtest{183}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{184}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +-\numtest{200}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Creates a key for the principal for each unique encryption +-type/salt type in use.} +-\Status{Implemented} +-} +- +-\section{ovsec_kadm_chpass_principal_util} +- +-Rerun all the tests listed for ovsec_kadm_chpass_principal above in +-Section \ref{ovseckadmchpassprincipal}. Verify that they succeed +-and fail in the same circumstances. Also verify that in each failure +-case, the error message returned in msg_ret is as specified in the +-functional specification. +- +-Also, run the following additional tests. +- +-\numtest{1}{ +-\Reason{Null msg_ret is rejected.} +-} +- +-\numtest{2}{ +-\Priority{High} +-\Reason{New password is put into pw_ret, when it's prompted for.} +-} +- +-\numtest{3}{ +-\Priority{High} +-Reason{New password is put into pw_ret, when it's supplied by the +- caller.} +-} +- +-\numtest{4}{ +-\Priority{High} +-\Reason{Successful invocation when pw_ret is null.} +-} +- +- +- +-\section{ovsec_kadm_randkey_principal} +- +-\subsection{TOOSOON enforcement tests} +- +-This test should be run a number of times, as indicated in the table +-following it. The table also indicates the expected result of each +-run of the test. +- +-\test{ +-\Reason{Change key when now - last_pwd_change $<$ pw_min_life.} +-} +- +-\subsubsection{List of parameter settings} +- +-\begin{tabular}{llllll} +-Number & Modify Access? & Own Key? & Service & Pass/Fail & Implemented? \\ \hline +-1 & No & Yes & ADMIN & fail & Yes \\ +-3 & No & Yes & CHANGEPW & fail & Yes \\ +-5 & No & No & ADMIN & fail \\ +-7 & No & No & CHANGEPW & fail \\ +-9 & Yes & Yes & ADMIN & pass \\ +-11 & Yes & Yes & CHANGEPW & fail \\ +-13 & Yes & No & ADMIN & pass & Yes \\ +-15 & Yes & No & CHANGEPW & fail & Yes \\ +-\end{tabular} +- +-\subsection{Other tests} +- +-\numtest{17}{ +-\Reason{Fails if database not initialized.} +-} +- +-\numtest{18}{ +-\Reason{Fails for non-existent principal.} +-} +- +-\numtest{19}{ +-\Reason{Fails for null keyblock pointer.} +-} +- +-\numtest{20}{ +-\Priority{High} +-\Reason{Pw_expiration is set to now + max_pw_life if policy exists and +- has non-zero max_pw_life.} +-} +- +-\numtest{21}{ +-\Priority{High} +-\Reason{Pw_expiration is set to 0 if policy exists and has zero +- max_pw_life.} +-} +- +-\numtest{22}{ +-\Priority{High} +-\Reason{Pw_expiration is set to 0 if no policy.} +-} +- +-\numtest{23}{ +-\Priority{High} +-\Reason{KRB5_KDC_REQUIRES_PWCHANGE bit is cleared when key is +- successfully changed.} +-} +- +-\numtest{24}{ +-\Priority{High} +-\Reason{Fails for user with no access bits, on other's password.} +-} +- +-\numtest{25}{ +-\Priority{High} +-\Reason{Fails for user with ``get'' but not ``modify'' access, on +- other's password.} +-\Vtwonote{Change-password instead of modify access.} +-} +- +-\numtest{26}{ +-\Reason{Fails for user with ``delete'' but not ``modify'' access, on +- other's password.} +-\Vtwonote{Change-password instead of modify access.} +-} +- +-\numtest{27}{ +-\Reason{Fails for user with ``add'' but not ``modify'' access, on +- other's password.} +-\Vtwonote{Change-password instead of modify access.} +-} +- +-\numtest{28}{ +-\Reason{Succeeds for user with ``get'' and ``modify'' access, on +- other's password.} +-\Status{Implemented} +-\Vtwonote{Change-password instead of modify access.} +-} +- +-\numtest{28.25}{ +-\Priority{High} +-\Reason{Fails for user with get and modify access on others password +- When conneceted with CHANGEPW_SERVICE} +-\Status{Implemented} +-\Vtwonote{Change-password instead of modify access.} +-} +- +-\numtest{28.5}{ +-\Priority{High} +-\Reason{Succeeds for user with ``modify'' but not ``get'' access, on +- other's password.} +-\Status{Implemented} +-\Vtwonote{Change-password instead of modify access.} +-} +- +-\numtest{29}{ +-\Reason{The new key that's assigned is truly random. XXX not sure how +- to test this.} +-} +- +-\numtest{30}{ +-\Reason{Succeeds for own key, no other access bits when connecting with CHANGEPW service} +-\Status{Implemented} +-} +-\numtest{31}{ +-\Reason{Succeeds for own key, no other access bits when connecting with ADMIM service} +-\Status{Implemented} +-} +- +-\numtest{32}{ +-\Reason{Cannot change ovsec_adm/history key} +-\Status{Implemented} +-} +- +-\numtest{33}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{34}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +-\numtest{100}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{Returns a key for each unique encryption type specified in the +-keysalts.} +-} +- +-\section{ovsec_kadm_get_principal} +- +-\numtest{1}{ +-\Reason{Fails for null ent.} +-\Status{Implemented} +-} +- +-\numtest{2}{ +-\Reason{Fails for non-existent principal.} +-\Status{Implemented} +-} +- +-\numtest{3}{ +-\Priority{High} +-\Reason{Fails for user with no access bits, retrieving other principal.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{4}{ +-\Priority{High} +-\Reason{Fails for user with ``add'' but not ``get'', getting principal +- other than his own, using ADMIN_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{5}{ +-\Reason{Fails for user with ``modify'' but not ``get'', getting +- principal other than his own, using ADMIN_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{6}{ +-\Reason{Fails for user with ``delete'' but not ``get'', getting +- principal other than his own, using ADMIN_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Reason{Fails for user with ``delete'' but not ``get'', getting +- principal other than his own, using CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{8}{ +-\Priority{High} +-\Reason{Fails for user with ``get'', getting principal other than his +- own, using CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Priority{High} +-\Reason{Succeeds for user without ``get'', retrieving self, using +- ADMIN_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Reason{Succeeds for user without ``get'', retrieving self, using +- CHANGEPW_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{11}{ +-\Reason{Succeeds for user with ``get'', retrieving self, using +- ADMIN_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{12}{ +-\Reason{Succeeds for user with ``get'', retrieving self, using +- CHANGEPW_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Priority{High} +-\Reason{Succeeds for user with ``get'', retrieving other user, using +- ADMIN_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Reason{Succeeds for user with ``get'' and ``modify'', retrieving +- other principal, using ADMIN_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{15}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{16}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +-\numtest{100}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{If KADM5_PRINCIPAL_NORMAL_MASK is specified, the key_data and +-tl_data fields are NULL/zero.} +-\Status{Implemented} +-} +- +-\numtest{101}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{If KADM5_KEY_DATA is specified, the key_data fields contain +-data but the contents are all NULL.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{102}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{If KADM5_KEY_DATA is specified, the key_data fields contain +-data and the contents are all non-NULL.} +-\Conditions{local} +-\Status{Implemented} +-} +- +-\numtest{103}{ +-\Version{KADM5_API_VERSION_2} +-\Reason{If KADM5_TL_DATA is specified, the tl_data field contains the +-correct tl_data and no entries whose type is less than 256.} +-\Status{Implemented} +-} +- +- +-\section{ovsec_kadm_create_policy} +- +-\numtest{1}{ +-\Reason{Fails for mask with undefined bit set.} +-\Status{Implemented - untested} +-} +- +-\numtest{2}{ +-\Priority{High} +-\Reason{Fails if caller connected with CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{3}{ +-\Reason{Fails for mask without POLICY bit set.} +-\Status{Implemented - untested} +-} +- +-\numtest{4}{ +-\Reason{Fails for mask with REF_COUNT bit set.} +-\Status{Implemented} +-} +- +-\numtest{5}{ +-\Reason{Fails for invalid policy name.} +-\Status{Implemented - untested} +-} +- +-\numtest{6}{ +-\Priority{High} +-\Reason{Fails for existing policy name.} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Reason{Fails for null policy name.} +-\Status{Implemented - untested} +-} +- +-\numtest{8}{ +-\Priority{High} +-\Reason{Fails for empty-string policy name.} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Priority{High} +-\Reason{Accepts 0 for pw_min_life.} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Priority{High} +-\Reason{Accepts non-zero for pw_min_life.} +-\Status{Implemented} +-} +- +-\numtest{11}{ +-\Priority{High} +-\Reason{Accepts 0 for pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{12}{ +-\Priority{High} +-\Reason{Accepts non-zero for pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Priority{High} +-\Reason{Rejects 0 for pw_min_length.} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Priority{High} +-\Reason{Accepts non-zero for pw_min_length.} +-\Status{Implemented} +-} +- +-\numtest{15}{ +-\Priority{High} +-\Reason{Rejects 0 for pw_min_classes.} +-\Status{Implemented} +-} +- +-\numtest{16}{ +-\Priority{High} +-\Reason{Accepts 1 for pw_min_classes.} +-\Status{Implemented} +-} +- +-\numtest{17}{ +-\Priority{High} +-\Reason{Accepts 4 for pw_min_classes.} +-\Status{Implemented} +-} +- +-\numtest{18}{ +-\Priority{High} +-\Reason{Rejects 5 for pw_min_classes.} +-\Status{Implemented} +-} +- +-\numtest{19}{ +-\Priority{High} +-\Reason{Rejects 0 for pw_history_num.} +-\Status{Implemented} +-} +- +-\numtest{20}{ +-\Priority{High} +-\Reason{Accepts 1 for pw_history_num.} +-\Status{Implemented} +-} +- +-\numtest{21}{ +-\Priority{High} +-\Reason{Accepts 10 for pw_history_num.} +-\Status{Implemented} +-} +- +-\numtest{21.5}{ +-\Reason{Rejects 11 for pw_history_num.} +-\Status{Implemented - untested} +-} +- +-\numtest{22}{ +-\Priority{High} +-\Reason{Fails for user with no access bits.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{23}{ +-\Priority{High} +-\Reason{Fails for user with ``get'' but not ``add''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{24}{ +-\Reason{Fails for user with ``modify'' but not ``add.''} +-\Conditions{RPC} +-\Status{Implemented - untested} +-} +- +-\numtest{25}{ +-\Reason{Fails for user with ``delete'' but not ``add.''} +-\Conditions{RPC} +-\Status{Implemented - untested} +-} +- +-\numtest{26}{ +-\Priority{High} +-\Reason{Succeeds for user with ``add.''} +-\Status{Implemented} +-} +- +-\numtest{27}{ +-\Reason{Succeeds for user with ``get'' and ``add.''} +-\Status{Implemented - untested} +-} +- +-\numtest{28}{ +-\Reason{Rejects null policy argument.} +-\Status{Implemented - untested} +-} +- +-\numtest{29}{ +-\Reason{Rejects pw_min_life greater than pw_max_life.} +-} +- +-\numtest{30}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{31}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +- +-\section{ovsec_kadm_delete_policy} +- +-\numtest{1}{ +-\Reason{Fails for null policy name.} +-} +- +-\numtest{2}{ +-\Priority{High} +-\Reason{Fails for empty-string policy name.} +-\Status{Implemented} +-} +- +-\numtest{3}{ +-\Reason{Fails for non-existent policy name.} +-} +- +-\numtest{4}{ +-\Reason{Fails for bad policy name.} +-} +- +-\numtest{5}{ +-\Priority{High} +-\Reason{Fails if caller connected with CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{6}{ +-\Priority{High} +-\Reason{Fails for user with no access bits.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Priority{High} +-\Reason{Fails for user with ``add'' but not ``delete''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{8}{ +-\Reason{Fails for user with ``modify'' but not ``delete''.} +-\Conditions{RPC} +-} +- +-\numtest{9}{ +-\Reason{Fails for user with ``get'' but not ``delete.''} +-\Conditions{RPC} +-} +- +-\numtest{10}{ +-\Priority{High} +-\Reason{Succeeds for user with only ``delete''.} +-\Status{Implemented} +-} +- +-\numtest{11}{ +-\Reason{Succeeds for user with ``delete'' and ``add''.} +-} +- +-\numtest{12}{ +-\Priority{High} +-\Reason{Fails for policy with non-zero reference count.} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +- +-\section{ovsec_kadm_modify_policy} +- +-\numtest{1}{ +-\Reason{Fails for mask with undefined bit set.} +-\Conditions{RPC} +-} +- +-\numtest{2}{ +-\Priority{High} +-\Reason{Fails if caller connected with CHANGEPW_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{3}{ +-\Reason{Fails for mask with POLICY bit set.} +-} +- +-\numtest{4}{ +-\Reason{Fails for mask with REF_COUNT bit set.} +-\Status{Implemented} +-} +- +-\numtest{5}{ +-\Reason{Fails for invalid policy name.} +-} +- +-\numtest{6}{ +-\Reason{Fails for non-existent policy name.} +-} +- +-\numtest{7}{ +-\Reason{Fails for null policy name.} +-} +- +-\numtest{8}{ +-\Priority{High} +-\Reason{Fails for empty-string policy name.} +-\Status{Implemented} +-} +- +-\numtest{9}{ +-\Priority{High} +-\Reason{Accepts 0 for pw_min_life.} +-\Status{Implemented} +-} +- +-\numtest{10}{ +-\Priority{High} +-\Reason{Accepts non-zero for pw_min_life.} +-\Status{Implemented} +-} +- +-\numtest{11}{ +-\Priority{High} +-\Reason{Accepts 0 for pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{12}{ +-\Priority{High} +-\Reason{Accepts non-zero for pw_max_life.} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Priority{High} +-\Reason{Accepts 0 for pw_min_length.} +-\Status{Implemented} +-} +- +-\numtest{14}{ +-\Priority{High} +-\Reason{Accepts non-zero for pw_min_length.} +-\Status{Implemented} +-} +- +-\numtest{15}{ +-\Priority{High} +-\Reason{Rejects 0 for pw_min_classes.} +-\Status{Implemented} +-} +- +-\numtest{16}{ +-\Priority{High} +-\Reason{Accepts 1 for pw_min_classes.} +-\Status{Implemented} +-} +- +-\numtest{17}{ +-\Priority{High} +-\Reason{Accepts 4 for pw_min_classes.} +-\Status{Implemented} +-} +- +-\numtest{18}{ +-\Priority{High} +-\Reason{Rejects 5 for pw_min_classes.} +-\Status{Implemented} +-} +- +-\numtest{19}{ +-\Priority{High} +-\Reason{Rejects 0 for pw_history_num.} +-\Status{Implemented} +-} +- +-\numtest{20}{ +-\Priority{High} +-\Reason{Accepts 1 for pw_history_num.} +-\Status{Implemented} +-} +- +-\numtest{21}{ +-\Priority{High} +-\Reason{Accepts 10 for pw_history_num.} +-\Status{Implemented} +-} +- +-\numtest{22}{ +-\Priority{High} +-\Reason{Fails for user with no access bits.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{23}{ +-\Priority{High} +-\Reason{Fails for user with ``get'' but not ``modify''.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{24}{ +-\Reason{Fails for user with ``add'' but not ``modify.''} +-\Conditions{RPC} +-} +- +-\numtest{25}{ +-\Reason{Fails for user with ``delete'' but not ``modify.''} +-\Conditions{RPC} +-} +- +-\numtest{26}{ +-\Priority{High} +-\Reason{Succeeds for user with ``modify.''} +-\Status{Implemented} +-} +- +-\numtest{27}{ +-\Reason{Succeeds for user with ``get'' and ``modify.''} +-} +- +-\numtest{28}{ +-\Reason{Rejects null policy argument.} +-} +- +-\numtest{29}{ +-\Reason{Rejects change which makes pw_min_life greater than +- pw_max_life.} +-} +- +-\numtest{30}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{31}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +-\section{ovsec_kadm_get_policy} +- +-\numtest{1}{ +-\Reason{Fails for null policy.} +-} +- +-\numtest{2}{ +-\Reason{Fails for invalid policy name.} +-} +- +-\numtest{3}{ +-\Priority{High} +-\Reason{Fails for empty-string policy name.} +-\Status{Implemented} +-} +- +-\numtest{4}{ +-\Reason{Fails for non-existent policy name.} +-} +- +-\numtest{5}{ +-\Reason{Fails for null ent.} +-} +- +-\numtest{6}{ +-\Priority{High} +-\Reason{Fails for user with no access bits trying to get other's +- policy, using ADMIN_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{7}{ +-\Priority{High} +-\Reason{Fails for user with ``add'' but not ``get'' trying to get +- other's policy, using ADMIN_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{8}{ +-\Reason{Fails for user with ``modify'' but not ``get'' trying to get +- other's policy, using ADMIN_SERVICE.} +-\Conditions{RPC} +-} +- +-\numtest{9}{ +-\Reason{Fails for user with ``delete'' but not ``get'' trying to get +- other's policy, using ADMIN_SERVICE.} +-\Conditions{RPC} +-} +- +-\numtest{10}{ +-\Reason{Fails for user with ``delete'' but not ``get'' trying to get +- other's policy, using CHANGEPW_SERVICE.} +-\Conditions{RPC} +-} +- +-\numtest{11}{ +-\Priority{High} +-\Reason{Succeeds for user with only ``get'', trying to get own policy, +- using ADMIN_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{12}{ +-\Priority{High} +-\Reason{Succeeds for user with only ``get'', trying to get own policy, +- using CHANGEPW_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{13}{ +-\Reason{Succeeds for user with ``add'' and ``get'', trying to get own +- policy, using ADMIN_SERVICE.} +-} +- +-\numtest{14}{ +-\Reason{Succeeds for user with ``add'' and ``get'', trying to get own +- policy, using CHANGEPW_SERVICE.} +-} +- +-\numtest{15}{ +-\Reason{Succeeds for user without ``get'', trying to get own policy, +- using ADMIN_SERVICE.} +-} +- +-\numtest{16}{ +-\Priority{High} +-\Reason{Succeeds for user without ``get'', trying to get own policy, +- using CHANGEPW_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{17}{ +-\Priority{High} +-\Reason{Succeeds for user with ``get'', trying to get other's policy, +- using ADMIN_SERVICE.} +-\Status{Implemented} +-} +- +-\numtest{18}{ +-\Priority{High} +-\Reason{Fails for user with ``get'', trying to get other's policy, +- using CHANGEPW_SERVICE.} +-\Conditions{RPC} +-\Status{Implemented} +-} +- +-\numtest{19}{ +-\Reason{Succeeds for user with ``modify'' and ``get'', trying to get +- other's policy, using ADMIN_SERVICE.} +-} +- +-\numtest{20}{ +-\Reason{Fails for user with ``modify'' and ``get'', trying to get +- other's policy, using CHANGEPW_SERVICE.} +-} +- +-\numtest{21}{ +-\Priority{High} +-\Reason{Returns BAD_SERVER_HANDLE when a null server handle is passed in} +-\Status{Implemented} +-} +- +-\numtest{22}{ +-\Priority{Low} +-\Reason{Connects to correct server when multiple handles exist} +-\Conditions{RPC} +-} +- +- +-\section{ovsec_kadm_free_principal_ent} +- +-In addition to the tests listed here, a memory-leak detector such as +-TestCenter, Purify or dbmalloc should be used to verify that the +-memory freed by this function is really freed. +- +-\numtest{1}{ +-\Reason{Null princ succeeds.} +-} +- +-\numtest{2}{ +-\Reason{Non-null princ succeeds.} +-} +- +- +-\section{ovsec_kadm_free_policy_ent} +- +-In addition to the tests listed here, a memory-leak detector such as +-TestCenter, Purify or dbmalloc should be used to verify that the +-memory freed by this function is really freed. +- +-\numtest{1}{ +-\Reason{Null policy succeeds.} +-} +- +-\numtest{2}{ +-\Reason{Non-null policy succeeds.} +-} +- +- +- +-\section{ovsec_kadm_get_privs} +- +-\numtest{1}{ +-\Reason{Fails for null pointer argument.} +-} +- +-This test should be run with the 16 possible combinations of access +-bits (since there are 4 access bits, there are $2^4 = 16$ possible +-combinations of them): +- +-\numtest{2}{ +-\Priority{High} +-\Reason{Returns correct bit mask for access bits of user.} +-\Conditions{RPC} +-} +- +-This test should be run locally: +- +-\numtest{3}{ +-\Priority{High} +-\Reason{Returns 0x0f.} +-\Conditions{local} +-} +- +-\end{document} +diff --git a/src/config/pre.in b/src/config/pre.in +index 3752174c7..b2d17b077 100644 +--- a/src/config/pre.in ++++ b/src/config/pre.in +@@ -228,16 +228,8 @@ KRB5_INCSUBDIRS = \ + $(KRB5_INCDIR)/gssapi \ + $(KRB5_INCDIR)/gssrpc + +-# +-# Macros used by the KADM5 (OV-based) unit test system. +-# XXX check which of these are actually used! +-# + SKIPTESTS = $(BUILDTOP)/skiptests +-TESTDIR = $(BUILDTOP)/kadmin/testing +-STESTDIR = $(top_srcdir)/kadmin/testing +-ENV_SETUP = $(TESTDIR)/scripts/env-setup.sh +-CLNTTCL = $(TESTDIR)/util/kadm5_clnt_tcl +-SRVTCL = $(TESTDIR)/util/kadm5_srv_tcl ++ + # Dejagnu variables. + # We have to set the host with --host so that setup_xfail will work. + # If we don't set it, then the host type used is "native", which +@@ -249,14 +241,6 @@ RUNTEST = runtest $(DEJAFLAGS) + RUNPYTEST = PYTHONPATH=$(top_srcdir)/util VALGRIND="$(VALGRIND)" \ + $(PYTHON) + +-START_SERVERS = $(STESTDIR)/scripts/start_servers $(TEST_SERVER) $(TEST_PATH) +-START_SERVERS_LOCAL = $(STESTDIR)/scripts/start_servers_local +- +-STOP_SERVERS = $(STESTDIR)/scripts/stop_servers $(TEST_SERVER) $(TEST_PATH) +-STOP_SERVERS_LOCAL = $(STESTDIR)/scripts/stop_servers_local +-# +-# End of macros for the KADM5 unit test system. +-# + + transform = @program_transform_name@ + +diff --git a/src/configure.ac b/src/configure.ac +index 61778dcd0..4f16fee45 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -991,33 +991,9 @@ ath_compat= + AC_ARG_ENABLE([athena], + [ --enable-athena build with MIT Project Athena configuration], + ath_compat=compat,) +-# The following are tests for the presence of programs required for +-# kadmin testing. +-AC_CHECK_PROG(have_RUNTEST,runtest,runtest) +-AC_CHECK_PROG(have_PERL,perl,perl) +-if test "$have_PERL" = perl -a "$have_RUNTEST" = runtest -a "$TCL_LIBS" != ""; then +- DO_TEST=ok +-fi +-AC_SUBST(DO_TEST) +- +-# The following are substituted into kadmin/testing/scripts/env-setup.sh +-RBUILD=`pwd` +-AC_SUBST(RBUILD) +-case "$srcdir" in +-/*) S_TOP=$srcdir ;; +-*) S_TOP=`pwd`/$srcdir ;; +-esac +-AC_SUBST(S_TOP) +-AC_PATH_PROG(EXPECT,expect) +-# For kadmin/testing/util/Makefile.in +-if test "$TCL_LIBS" != "" ; then +- DO_ALL=tcl +-fi +-AC_SUBST(DO_ALL) ++ + KRB5_AC_PRIOCNTL_HACK +-K5_GEN_FILE(kadmin/testing/scripts/env-setup.sh:kadmin/testing/scripts/env-setup.shin) +-# for lib/kadm5 +-AC_CHECK_PROG(RUNTEST,runtest,runtest) ++ + AC_CHECK_PROG(PERL,perl,perl) + + # lib/gssapi +@@ -1552,7 +1528,7 @@ V5_AC_OUTPUT_MAKEFILE(. + + lib/rpc lib/rpc/unit-test + +- lib/kadm5 lib/kadm5/clnt lib/kadm5/srv lib/kadm5/unit-test ++ lib/kadm5 lib/kadm5/clnt lib/kadm5/srv + lib/krad + lib/apputils + +@@ -1588,7 +1564,6 @@ V5_AC_OUTPUT_MAKEFILE(. + clients/kdestroy clients/kpasswd clients/ksu clients/kswitch + + kadmin kadmin/cli kadmin/dbutil kadmin/ktutil kadmin/server +- kadmin/testing kadmin/testing/scripts kadmin/testing/util + + appl + appl/sample appl/sample/sclient appl/sample/sserver +diff --git a/src/kadmin/Makefile.in b/src/kadmin/Makefile.in +index f4061f4f7..87cfa43fd 100644 +--- a/src/kadmin/Makefile.in ++++ b/src/kadmin/Makefile.in +@@ -1,6 +1,6 @@ + mydir=kadmin + BUILDTOP=$(REL).. +-SUBDIRS = cli dbutil ktutil server testing ++SUBDIRS = cli dbutil ktutil server + + all: + +diff --git a/src/kadmin/testing/Makefile.in b/src/kadmin/testing/Makefile.in +deleted file mode 100644 +index 5b803cb23..000000000 +--- a/src/kadmin/testing/Makefile.in ++++ /dev/null +@@ -1,8 +0,0 @@ +-mydir=kadmin$(S)testing +-BUILDTOP=$(REL)..$(S).. +-SUBDIRS = scripts util +- +-all: +- +-clean: +- -$(RM) -r krb5-test-root admin_* init-* *.rcache2 ovsec-* +diff --git a/src/kadmin/testing/deps b/src/kadmin/testing/deps +deleted file mode 100644 +index 2feac3c9d..000000000 +--- a/src/kadmin/testing/deps ++++ /dev/null +@@ -1 +0,0 @@ +-# No dependencies here. +diff --git a/src/kadmin/testing/proto/kdc.conf.proto b/src/kadmin/testing/proto/kdc.conf.proto +deleted file mode 100644 +index 8a4b87de1..000000000 +--- a/src/kadmin/testing/proto/kdc.conf.proto ++++ /dev/null +@@ -1,16 +0,0 @@ +-[kdcdefaults] +- kdc_listen = 1750 +- kdc_tcp_listen = 1750 +- +-[realms] +- __REALM__ = { +- profile = __K5ROOT__/krb5.conf +- database_name = __K5ROOT__/kdb5 +- key_stash_file = __K5ROOT__/.k5.__REALM__ +- acl_file = __K5ROOT__/ovsec_adm.acl +- dict_file = __K5ROOT__/ovsec_adm.dict +- kadmind_port = 1751 +- kpasswd_port = 1752 +- master_key_type = des3-hmac-sha1 +- supported_enctypes = des3-hmac-sha1:normal aes256-cts:normal aes128-cts:normal aes256-sha2:normal aes128-sha2:normal +- } +diff --git a/src/kadmin/testing/proto/krb5.conf.proto b/src/kadmin/testing/proto/krb5.conf.proto +deleted file mode 100644 +index a1c57119c..000000000 +--- a/src/kadmin/testing/proto/krb5.conf.proto ++++ /dev/null +@@ -1,32 +0,0 @@ +-[libdefaults] +- default_realm = __REALM__ +- default_keytab_name = FILE:__K5ROOT__/keytab +- dns_fallback = no +- dns_canonicalize_hostname = fallback +- qualify_shortname = "" +- plugin_base_dir = __PLUGIN_DIR__ +- allow_weak_crypto = true +- +-[realms] +- __REALM__ = { +- kdc = __HOSTNAME__:1750 +- admin_server = __HOSTNAME__:1751 +- database_module = foobar_db2_module_blah +- } +- +-[domain_realm] +- __HOSTNAME__ = __REALM__ +- +-[logging] +- admin_server = FILE:__K5ROOT__/syslog +- kdc = FILE:__K5ROOT__/syslog +- default = FILE:__K5ROOT__/syslog +- +- +-# THIS SHOULD BE IN KDC.CONF INSTEAD! +-[dbmodules] +- db_module_dir = __MODDIR__ +- foobar_db2_module_blah = { +- db_library = db2 +- database_name = __K5ROOT__/kdb5 +- } +diff --git a/src/kadmin/testing/proto/ovsec_adm.dict b/src/kadmin/testing/proto/ovsec_adm.dict +deleted file mode 100644 +index b54e3a85e..000000000 +--- a/src/kadmin/testing/proto/ovsec_adm.dict ++++ /dev/null +@@ -1,3 +0,0 @@ +-Abyssinia +-Discordianism +-foo +diff --git a/src/kadmin/testing/scripts/Makefile.in b/src/kadmin/testing/scripts/Makefile.in +deleted file mode 100644 +index 635930511..000000000 +--- a/src/kadmin/testing/scripts/Makefile.in ++++ /dev/null +@@ -1,18 +0,0 @@ +-mydir=kadmin$(S)testing$(S)scripts +-BUILDTOP=$(REL)..$(S)..$(S).. +- +-all: env-setup.sh runenv.sh $(GEN_SCRIPTS) +- +-# Should only rebuild env_setup.sh here (use CONFIG_FILES=), but the weird krb5 +-# makefile post-processing is unconditional and would trash the makefile. +-env-setup.sh: env-setup.stamp +-env-setup.stamp: $(srcdir)/env-setup.shin $(BUILDTOP)/config.status \ +- Makefile +- (cd $(BUILDTOP) && \ +- CONFIG_FILES=$(mydir)/env-setup.sh:$(mydir)/env-setup.shin $(SHELL) \ +- config.status) +- chmod +x env-setup.sh +- touch env-setup.stamp +- +-clean: +- -rm -f env-setup.sh env-setup.stamp +diff --git a/src/kadmin/testing/scripts/deps b/src/kadmin/testing/scripts/deps +deleted file mode 100644 +index 2feac3c9d..000000000 +--- a/src/kadmin/testing/scripts/deps ++++ /dev/null +@@ -1 +0,0 @@ +-# No dependencies here. +diff --git a/src/kadmin/testing/scripts/env-setup.shin b/src/kadmin/testing/scripts/env-setup.shin +deleted file mode 100755 +index 88f8ad1aa..000000000 +--- a/src/kadmin/testing/scripts/env-setup.shin ++++ /dev/null +@@ -1,104 +0,0 @@ +-#!/bin/sh +-# +-# The KADM5 unit tests were developed to work under gmake. As a +-# result, they expect to inherit a number of environment variables. +-# Rather than rewrite the tests, we simply use this script as an +-# execution wrapper that sets all the necessary environment variables +-# before running the program specified on its command line. +-# +-# The variable settings all came from OV's config.mk. +-# +-# Usage: env-setup.sh +-# +- +-TOP=@RBUILD@/kadmin +-STOP=@S_TOP@/kadmin +-export TOP +-export STOP +-# These two may be needed in case $libdir references them. +-prefix=@prefix@ +-exec_prefix=@exec_prefix@ +-libdir=@libdir@ ; eval "libdir=$libdir"; export libdir +- +-# The shared library run time setup +-TOPLIBD=@RBUILD@/lib +-PROG_LIBPATH=-L@RBUILD@/lib +-BUILDTOP=@RBUILD@ +-# XXX kludge! +-PROG_RPATH=@RBUILD@/lib +-# This converts $(TOPLIBD) to $TOPLIBD +-cat > /tmp/env_setup$$ <<\EOF +-@KRB5_RUN_ENV@ +-EOF +- +-foo=`sed -e 's/(//g' -e 's/)//g' -e 's/\\\$\\\$/\$/g' /tmp/env_setup$$` +-eval $foo +-export @KRB5_RUN_VARS@ +- +-# This will get put in setup.csh for convenience +-KRB5_RUN_ENV_CSH=`eval echo "$foo" | \ +- sed -e 's/\([^=]*\)=\(.*\)/setenv \1 \2/g'` +-export KRB5_RUN_ENV_CSH +-rm /tmp/env_setup$$ +- +-TESTDIR=$TOP/testing; export TESTDIR +-STESTDIR=$STOP/testing; export STESTDIR +-if [ "$K5ROOT" = "" ]; then +- K5ROOT="`cd $TESTDIR; pwd`/krb5-test-root" +- export K5ROOT +-fi +- +-# If $VERBOSE_TEST is non-null, enter verbose mode. Set $VERBOSE to +-# true or false so its exit status identifies the mode. +-if test x$VERBOSE_TEST = x; then +- VERBOSE=false +-else +- VERBOSE=true +-fi +-export VERBOSE +- +-REALM=SECURE-TEST.OV.COM; export REALM +- +-if test x$EXPECT = x; then +- EXPECT=@EXPECT@; export EXPECT +-fi +- +-COMPARE_DUMP=$TESTDIR/scripts/compare_dump.pl; export COMPARE_DUMP +-INITDB=$STESTDIR/scripts/init_db; export INITDB +-SIMPLE_DUMP=$TESTDIR/scripts/simple_dump.pl; export SIMPLE_DUMP +-TCLUTIL=$STESTDIR/tcl/util.t; export TCLUTIL +-BSDDB_DUMP=$TESTDIR/util/bsddb_dump; export BSDDB_DUMP +-CLNTTCL=$TESTDIR/util/kadm5_clnt_tcl; export CLNTTCL +-SRVTCL=$TESTDIR/util/kadm5_srv_tcl; export SRVTCL +- +-HOSTNAME=`hostname | tr '[A-Z]' '[a-z]'` +-export HOSTNAME +- +-KRB5_CONFIG=$K5ROOT/krb5.conf; export KRB5_CONFIG +-KRB5_KDC_PROFILE=$K5ROOT/kdc.conf; export KRB5_KDC_PROFILE +-KRB5_KTNAME=$K5ROOT/ovsec_adm.keytab; export KRB5_KTNAME +-KRB5_CLIENT_KTNAME=$K5ROOT/client_keytab; export KRB5_CLIENT_KTNAME +-KRB5CCNAME=$K5ROOT/krb5cc_unit-test; export KRB5CCNAME +-GSS_MECH_CONFIG=$K5ROOT/mech.conf; export GSS_MECH_CONFIG +- +-# Make sure we don't get confused by translated messages +-# or localized times. +-LC_ALL=C; export LC_ALL +- +-if [ "x$PS_ALL" = "x" ]; then +- if ps auxww >/dev/null 2>&1; then +- PS_ALL="ps auxww" +- PS_PID="ps uwwp" +- elif ps -ef >/dev/null 2>&1; then +- PS_ALL="ps -ef" +- PS_PID="ps -fp" +- else +- PS_ALL="ps auxww" +- PS_PID="ps uwwp" +- echo "WARNING! Cannot auto-detect ps type, assuming BSD." +- fi +- +- export PS_ALL PS_PID +-fi +- +-exec ${1+"$@"} +diff --git a/src/kadmin/testing/scripts/init_db b/src/kadmin/testing/scripts/init_db +deleted file mode 100755 +index 216f62793..000000000 +--- a/src/kadmin/testing/scripts/init_db ++++ /dev/null +@@ -1,229 +0,0 @@ +-#!/bin/sh +- +-if $VERBOSE; then +- REDIRECT= +-else +- REDIRECT='>/dev/null' +-fi +- +-# Requires that $K5ROOT, /etc/krb.conf, and .k5.$REALM be world-writeable. +- +-if [ "$TOP" = "" ]; then +- echo "init_db: Environment variable \$TOP must point to top of build tree" 1>&2 +- exit 1 +-fi +- +-if [ "$STOP" = "" ]; then +- echo "init_db: Environment variable \$STOP must point to top of source tree" 1>&2 +- exit 1 +-fi +- +-if [ "$libdir" = "" ]; then +- echo "init_db: Environment variable \$libdir must point to library install directory" 1>&2 +- exit 1 +-fi +- +-IROOT=$TOP/.. +-ADMIN=$TOP/dbutil +-BIN=$IROOT/bin +-ETC=$IROOT/etc +-MODDIR=$TOP/../plugins/kdb +-SBIN=$TOP/keytab:$TOP/server +-DUMMY=${REALM=SECURE-TEST.OV.COM}; export REALM +- +-. ./runenv.sh +- +-if [ ! -d $MODDIR ]; then +- echo "+++" 1>&2 +- echo "+++ Error! $MODDIR does not exist!" 1>&2 +- echo "+++ The MODDIR variable should point to the directory in which" 1>&2 +- echo "+++ database modules have been installed for testing." 1>&2 +- echo "+++" 1>&2 +- exit 1 +-fi +- +-DUMMY=${TESTDIR=$TOP/testing}; export TESTDIR +-DUMMY=${STESTDIR=$STOP/testing} +-DUMMY=${SRVTCL=$TESTDIR/util/kadm5_srv_tcl}; export SRVTCL +-DUMMY=${TCLUTIL=$STESTDIR/tcl/util.t}; export TCLUTIL +- +-PATH=$ADMIN:$BIN:$ETC:$SBIN:$PATH; export PATH +- +-if [ ! -x $SRVTCL ]; then +- echo "+++" 1>&2 +- echo "+++ Error! $SRVTCL does not exist!" 1>&2 +- echo "+++ It was probably not compiled because TCL was not available. If you" 1>&2 +- echo "+++ now have TCL installed, cd into that directory, re-run configure" 1>&2 +- echo "+++ with the --with-tcl option, and then re-run make." 1>&2 +- echo "+++" 1>&2 +- +- exit 1 +-fi +- +-rm -rf $K5ROOT/* +-if [ -d $K5ROOT ]; then +- true +-else +- mkdir $K5ROOT +-fi +- +-# touch $K5ROOT/syslog +-# for pid in `$PS_ALL | awk '/syslogd/ && !/awk/ {print $2}'` ; do +-# case "$pid" in +-# xxx) ;; +-# *) +-# if $VERBOSE; then $PS_PID$pid | grep -v COMMAND; fi +-# kill -1 $pid +-# ;; +-# esac +-# done +- +-sed -e "s/__REALM__/$REALM/g" -e "s#__K5ROOT__#$K5ROOT#g" \ +- -e "s/__HOSTNAME__/$HOSTNAME/g" \ +- -e "s#__MODDIR__#$MODDIR#g" \ +- < $STESTDIR/proto/krb5.conf.proto > $K5ROOT/krb5.conf +-sed -e "s/__REALM__/$REALM/g" -e "s#__K5ROOT__#$K5ROOT#g" \ +- < $STESTDIR/proto/kdc.conf.proto > $K5ROOT/kdc.conf +- +-eval kdb5_util -r $REALM create -W -P mrroot -s $REDIRECT || exit 1 +- +-cp $STESTDIR/proto/ovsec_adm.dict $K5ROOT/ovsec_adm.dict +- +-cat - > /tmp/init_db$$ <<\EOF +-source $env(TCLUTIL) +-set r $env(REALM) +-if {[info exists env(USER)]} { +- set whoami $env(USER) +-} else { +- set whoami [exec whoami] +-} +- +-set cmds { +- {kadm5_init $env(SRVTCL) mrroot null \ +- [config_params {KADM5_CONFIG_REALM} $r] $KADM5_STRUCT_VERSION \ +- $KADM5_API_VERSION_3 server_handle} +- +- {kadm5_create_policy $server_handle "test-pol 0 10000 8 2 3 0 2 90 180" \ +- {KADM5_POLICY KADM5_PW_MIN_LENGTH KADM5_PW_MIN_CLASSES KADM5_PW_MAX_LIFE KADM5_PW_HISTORY_NUM KADM5_PW_MAX_FAILURE KADM5_PW_FAILURE_COUNT_INTERVAL KADM5_PW_LOCKOUT_DURATION}} +- {kadm5_create_policy $server_handle "once-a-min 10 0 0 0 0 0 0 0 0" \ +- {KADM5_POLICY KADM5_PW_MIN_LIFE}} +- {kadm5_create_policy $server_handle "dict-only 0 0 0 0 0 0 0 0 0" \ +- {KADM5_POLICY}} +- {kadm5_create_policy $server_handle [simple_policy test-pol-nopw] \ +- {KADM5_POLICY}} +- +- {kadm5_create_principal $server_handle \ +- [simple_principal testuser@$r] {KADM5_PRINCIPAL} notathena} +- {kadm5_create_principal $server_handle \ +- [simple_principal test1@$r] {KADM5_PRINCIPAL} test1} +- {kadm5_create_principal $server_handle \ +- [simple_principal test2@$r] {KADM5_PRINCIPAL} test2} +- {kadm5_create_principal $server_handle \ +- [simple_principal test3@$r] {KADM5_PRINCIPAL} test3} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/get@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/modify@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/delete@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/add@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/none@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/rename@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/mod-add@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/mod-delete@$r] {KADM5_PRINCIPAL} \ +- admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/get-add@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/get-delete@$r] {KADM5_PRINCIPAL} \ +- admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/get-mod@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/no-add@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [simple_principal admin/no-delete@$r] {KADM5_PRINCIPAL} admin} +- {kadm5_create_principal $server_handle \ +- [princ_w_pol pol1@$r test-pol] {KADM5_PRINCIPAL \ +- KADM5_POLICY} pol111111} +- {kadm5_create_principal $server_handle \ +- [princ_w_pol pol2@$r once-a-min] {KADM5_PRINCIPAL \ +- KADM5_POLICY} pol222222} +- {kadm5_create_principal $server_handle \ +- [princ_w_pol pol3@$r dict-only] {KADM5_PRINCIPAL \ +- KADM5_POLICY} pol333333} +- {kadm5_create_principal $server_handle \ +- [princ_w_pol admin/get-pol@$r test-pol-nopw] \ +- {KADM5_PRINCIPAL KADM5_POLICY} StupidAdmin} +- {kadm5_create_principal $server_handle \ +- [princ_w_pol admin/pol@$r test-pol-nopw] {KADM5_PRINCIPAL \ +- KADM5_POLICY} StupidAdmin} +- +- {kadm5_create_principal $server_handle \ +- [simple_principal changepw/kerberos] \ +- {KADM5_PRINCIPAL} {XXX THIS IS WRONG}} +- +- {kadm5_create_principal $server_handle \ +- [simple_principal $whoami] \ +- {KADM5_PRINCIPAL} $whoami} +- +- {kadm5_create_principal $server_handle \ +- [simple_principal testkeys@$r] {KADM5_PRINCIPAL} testkeys} +- +- {kadm5_destroy $server_handle} +-} +- +-foreach cmd $cmds { +- if {[catch $cmd output]} { +- puts stderr "Error! Command: $cmd\nError: $output" +- exit 1 +- } else { +- puts stdout $output +- } +-} +-EOF +-eval "$SRVTCL < /tmp/init_db$$ $REDIRECT" +-rm /tmp/init_db$$ +- +-if [ $? -ne 0 ]; then +- echo "Error in $SRVTCL!" 1>&2 +- exit 1 +-fi +- +-cat > $K5ROOT/ovsec_adm.acl < $K5ROOT/setup.csh <&2 +- exit 1 +- fi +- +- local=0 +- hostname=$1 +- if [ $# = 1 ]; then +- rempath=`sh -c "cd $TOP && pwd"` +- else +- rempath=$2 +- fi +-fi +- +-if [ $local = 0 ]; then +- +- # Fix up the local krb5.conf to point to the remote +- sed -e "s/__REALM__/$REALM/g" -e "s#__K5ROOT__#$K5ROOT#g" \ +- -e "s/__HOSTNAME__/$HOSTNAME/g" \ +- -e "s#__MODDIR__#$TOP/../plugins/kdb#g"\ +- -e "s#__PLUGIN_DIR__#$TOP/../plugins#g"\ +- < $STESTDIR/proto/krb5.conf.proto > $K5ROOT/krb5.conf +- +-# Using /usr/ucb/rsh and getting rid of "-k $REALM" until we get +-# around to fixing the fact that Kerberos rsh doesn't strip out "-k +-# REALM" when falling back. +- +- START_SERVERS_LOCAL=`echo $START_SERVERS_LOCAL|sed "s%$TOP%$rempath%"` +- CMD="$RSH_CMD $hostname -n \ +- \"sh -c 'VERBOSE_TEST=$VERBOSE_TEST TOP=$rempath \ +- $rempath/testing/scripts/env-setup.sh \ +- $START_SERVERS_LOCAL $rempath'\"" +- +- if $VERBOSE; then +- echo "+++" +- echo "+++ Begin execution of start_servers_local on $hostname" +- echo "+++" +- echo $CMD +- fi +- eval $CMD +- if $VERBOSE; then +- echo "+++" +- echo "+++ End execution of start_servers_local on $hostname" +- echo "+++" +- fi +-else +- $START_SERVERS_LOCAL +-fi +- +diff --git a/src/kadmin/testing/scripts/start_servers_local b/src/kadmin/testing/scripts/start_servers_local +deleted file mode 100755 +index 858e88031..000000000 +--- a/src/kadmin/testing/scripts/start_servers_local ++++ /dev/null +@@ -1,157 +0,0 @@ +-#!/bin/sh +- +-DUMMY=${TESTDIR=$TOP/testing} +-DUMMY=${STESTDIR=$STOP/testing} +-DUMMY=${INITDB=$STESTDIR/scripts/init_db} +-DUMMY=${SRVTCL=$TESTDIR/util/kadm5_srv_tcl}; export SRVTCL +-DUMMY=${STOP_SERVERS_LOCAL=$STESTDIR/scripts/stop_servers_local} +-DUMMY=${KRB5RCACHEDIR=$TESTDIR} ; export KRB5RCACHEDIR +- +-. ./runenv.sh +- +-if [ -d /usr/tmp ]; then +- usrtmp=/usr/tmp +-else +- usrtmp=/var/tmp +-fi +- +-$STOP_SERVERS_LOCAL -start_servers +- +-if $VERBOSE; then +- REDIRECT= +-else +- REDIRECT='>/dev/null' +-fi +- +-while :; do +- case $1 in +- -keysalt) +- shift +- if [ $# -gt 0 ]; then +- keysalts="$keysalts $1" +- else +- break +- fi +- ;; +- -kdcport) +- shift +- if [ $# -gt 0 ]; then +- kdcport=$1 +- else +- break +- fi +- ;; +- *) +- break +- ;; +- esac +- shift +-done +- +-if [ $# -gt 1 ]; then +- echo "Usage: $0 [-kdcport port] [-keysalts tuple] ... [top]" 1>&2 +- exit 1 +-elif [ $# = 1 ]; then +- TOP=$1 +- export TOP +-fi +- +-# create a fresh db +- +-$INITDB "$keysalts" || exit 1 +- +-# Post-process the config files based on our arguments +-if [ "$keysalts" != "" ]; then +- sedcmd="s/\([ ]*supported_enctypes =\).*/\1 $keysalts/" +- sed -e "$sedcmd" < $K5ROOT/kdc.conf > $K5ROOT/kdc.conf.new +- mv $K5ROOT/kdc.conf.new $K5ROOT/kdc.conf +-fi +-if [ "$kdcport" != "" ] ; then +- sedcmd="s/\(kdc_ports = .*\)[ ]*/\1, $kdcport/" +- sed -e "$sedcmd" < $K5ROOT/kdc.conf > $K5ROOT/kdc.conf.new +- mv $K5ROOT/kdc.conf.new $K5ROOT/kdc.conf +-fi +- +-# allow admin to krlogin as root (for cleanup) +-DUMMY=${REALM=SECURE-TEST.OV.COM}; export REALM +- +-cat - > /tmp/start_servers_local$$ <<\EOF +-if { [catch { +- source $env(STOP)/testing/tcl/util.t +- set r $env(REALM) +- set q $env(HOSTNAME) +- puts stdout [kadm5_init $env(SRVTCL) mrroot null \ +- [config_params {KADM5_CONFIG_REALM} $r] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 server_handle] +- puts stdout [kadm5_create_principal $server_handle \ +- [simple_principal host/$q@$r] {KADM5_PRINCIPAL} notathena] +- puts stdout [kadm5_destroy $server_handle] +-} err]} { +- puts stderr "initialization error: $err" +- exit 1 +-} +-exit 0 +-EOF +-eval "$SRVTCL < /tmp/start_servers_local$$ $REDIRECT" +-x=$? +-rm /tmp/start_servers_local$$ +-if test $x != 0 ; then exit 1 ; fi +- +-# run the servers (from the build tree) +- +-adm_start_file=/tmp/adm_server_start.$$ +-kdc_start_file=/tmp/kdc_server_start.$$ +- +-rm -f $kdc_start_file +- +-if test "x$USER" = x ; then +- USER=$LOGNAME ; export USER +-fi +- +-kdc_args="-R dfl:kdc_rcache.$USER" +- +-(trap "" 2; $TOP/../kdc/krb5kdc $kdc_args; touch $kdc_start_file) \ +- < /dev/null > $usrtmp/kdc-log.$USER 2>&1 & +- +-s=1 +-max_s=60 +-sofar_s=0 +-timewait_s=300 +- +-ovadm_args=-W +- +-rm -f $adm_start_file +- +-(sleep 1; $TOP/server/kadmind $ovadm_args; \ +- touch $adm_start_file) < /dev/null > $usrtmp/kadm-log.$USER 2>&1 & +- +-# wait until they start +- +-while [ $sofar_s -le $max_s ]; do +- if $VERBOSE; then +- echo "Sleeping for $s seconds to allow servers" \ +- "to start..." +- fi +- +- sofar_s=`expr $sofar_s + $s` +- +- sleep $s +- +- if [ -f $adm_start_file -a -f $kdc_start_file ]; then +- break +- fi +-done +- +-if [ $sofar_s -gt $max_s ]; then +- echo "Admin server or KDC failed to start after $sofar_s" \ +- "seconds." 1>&2 +- if [ ! -f $adm_start_file ]; then +- echo " No admin server start file $adm_start_file." 1>&2 +- fi +- if [ ! -f $kdc_start_file ]; then +- echo " No KDC start file $adm_start_file." 1>&2 +- fi +- exit 1 +-fi +- +-rm -f $kdc_start_file $adm_start_file +diff --git a/src/kadmin/testing/scripts/stop_servers b/src/kadmin/testing/scripts/stop_servers +deleted file mode 100755 +index b7f8384ca..000000000 +--- a/src/kadmin/testing/scripts/stop_servers ++++ /dev/null +@@ -1,60 +0,0 @@ +-#!/bin/sh +-# +-# Usage: stop_servers [hostname [path]] +-# +-# This script turns a host into a OpenV*Secure primary server for the +-# realm SECURE-TEST.OV.COM. If no arguments are specified, +-# the local host is affected. Otherwise, the host hostname is +-# affected; the path argument is the top of the Secure install tree on +-# that host, and if it is not specified the current canonical value of +-# TOP is used. +- +-DUMMY=${TESTDIR=$TOP/testing} +-DUMMY=${STESTDIR=$STOP/testing} +-DUMMY=${STOP_SERVERS_LOCAL=$STESTDIR/scripts/stop_servers_local} +-# This'll be wrong sometimes +-DUMMY=${RSH_CMD=rsh} +- +-local=1 +- +-if [ $# -gt 0 ]; then +- if [ $# != 1 -a $# != 2 ]; then +- echo "Usage: $0 [hostname [path]]" 1>&2 +- exit 1 +- fi +- +- local=0 +- hostname=$1 +- if [ $# = 1 ]; then +- rempath=`sh -c "cd $TOP && pwd"` +- else +- rempath=$2 +- fi +-fi +- +-if [ $local = 0 ]; then +- if $VERBOSE; then +- echo "+++ Stopping servers on remote host $hostname..." +- fi +- +- STOP_SERVERS_LOCAL=`echo $STOP_SERVERS_LOCAL | sed "s%$TOP%$rempath%"` +- CMD="$RSH_CMD $hostname -n \ +- \"sh -c 'VERBOSE_TEST=$VERBOSE_TEST TOP=$rempath \ +- $rempath/testing/scripts/env-setup.sh \ +- $STOP_SERVERS_LOCAL $rempath'\"" +- +- if $VERBOSE; then +- echo "+++" +- echo "+++ Begin execution of stop_servers_local on $hostname" +- echo "+++" +- echo $CMD +- fi +- eval $CMD +- if $VERBOSE; then +- echo "+++" +- echo "+++ End execution of stop_servers_local on $hostname" +- echo "+++" +- fi +-else +- $STOP_SERVERS_LOCAL +-fi +diff --git a/src/kadmin/testing/scripts/stop_servers_local b/src/kadmin/testing/scripts/stop_servers_local +deleted file mode 100755 +index 24a9de7b3..000000000 +--- a/src/kadmin/testing/scripts/stop_servers_local ++++ /dev/null +@@ -1,44 +0,0 @@ +-#!/bin/sh +- +-DUMMY=${TESTDIR=$TOP/testing} +-DUMMY=${KRB5RCACHEDIR=$TESTDIR} +- +-while [ $# -gt 0 ] ; do +- case $1 in +- -start_servers) +- start_servers=$1 +- ;; +- *) +- TOP=$1 +- export TOP +- ;; +- esac +- shift +-done +- +-# kill any running servers. +- +-if $VERBOSE; then echo "Killing servers:"; fi +- +-for pid in xxx \ +- `$PS_ALL | grep krb5kdc | grep -v grep | awk '{print $2}'` \ +- `$PS_ALL | grep kadmind | grep -v grep | awk '{print $2}'` \ +- ; do +- case "$pid" in +- xxx) +- ;; +- *) +- if $VERBOSE; then $PS_PID$pid | grep -v COMMAND; fi +- kill $pid +- ;; +- esac +-done +- +-# Destroy the kdc replay cache so we don't lose if we try to run the +-# KDC as another unix user. +-if test "x$USER" = x ; then +- USER=$LOGNAME +-fi +-rm -f $KRB5RCACHEDIR/krb5kdc_rcache.$USER +- +-exit 0 +diff --git a/src/kadmin/testing/tcl/util.t b/src/kadmin/testing/tcl/util.t +deleted file mode 100644 +index 6751f89e6..000000000 +--- a/src/kadmin/testing/tcl/util.t ++++ /dev/null +@@ -1,58 +0,0 @@ +-proc simple_principal {name} { +- return "{$name} 0 0 0 0 {$name} 0 0 0 0 null 0" +-} +- +-proc princ_w_pol {name policy} { +- return "{$name} 0 0 0 0 {$name} 0 0 0 0 {$policy} 0" +-} +- +-proc simple_policy {name} { +- return "{$name} 0 0 0 0 0 0 0 0 0" +-} +- +-proc config_params {masks values} { +- if {[llength $masks] != [llength $values]} { +- error "config_params: length of mask and values differ" +- } +- +- set params [list $masks 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 {}] +- for {set i 0} {$i < [llength $masks]} {incr i} { +- set mask [lindex $masks $i] +- set value [lindex $values $i] +- switch -glob -- $mask { +- "KADM5_CONFIG_REALM" {set params [lreplace $params 1 1 $value]} +- "KADM5_CONFIG_KADMIND_PORT" { +- set params [lreplace $params 2 2 $value]} +- "KADM5_CONFIG_ADMIN_SERVER" { +- set params [lreplace $params 3 3 $value]} +- "KADM5_CONFIG_DBNAME" {set params [lreplace $params 4 4 $value]} +- "KADM5_CONFIG_ADBNAME" {set params [lreplace $params 5 5 $value]} +- "KADM5_CONFIG_ADB_LOCKFILE" { +- set params [lreplace $params 6 6 $value]} +- "KADM5_CONFIG_ACL_FILE" {set params [lreplace $params 8 8 $value]} +- "KADM5_CONFIG_DICT_FILE" { +- set params [lreplace $params 9 9 $value]} +- "KADM5_CONFIG_MKEY_FROM_KBD" { +- set params [lreplace $params 10 10 $value]} +- "KADM5_CONFIG_STASH_FILE" { +- set params [lreplace $params 11 11 $value]} +- "KADM5_CONFIG_MKEY_NAME" { +- set params [lreplace $params 12 12 $value]} +- "KADM5_CONFIG_ENCTYPE" {set params [lreplace $params 13 13 $value]} +- "KADM5_CONFIG_MAX_LIFE" { +- set params [lreplace $params 14 14 $value]} +- "KADM5_CONFIG_MAX_RLIFE" { +- set params [lreplace $params 15 15 $value]} +- "KADM5_CONFIG_EXPIRATION" { +- set params [lreplace $params 16 16 $value]} +- "KADM5_CONFIG_FLAGS" {set params [lreplace $params 17 17 $value]} +- "KADM5_CONFIG_ENCTYPES" { +- set params [lreplace $params 18 19 [llength $value] $value]} +- "*" {error "config_params: unknown mask $mask"} +- } +- } +- return $params +-} +- +- +- +diff --git a/src/kadmin/testing/util/Makefile.in b/src/kadmin/testing/util/Makefile.in +deleted file mode 100644 +index 7785c742e..000000000 +--- a/src/kadmin/testing/util/Makefile.in ++++ /dev/null +@@ -1,42 +0,0 @@ +-mydir=kadmin$(S)testing$(S)util +-BUILDTOP=$(REL)..$(S)..$(S).. +-LOCALINCLUDES = $(TCL_INCLUDES) -I$(BUILDTOP)/lib/kdb/ +-# Force Tcl headers to use stdarg.h, because krb5 does too, and if +-# Tcl uses varargs.h it'll just mess things up. +-DEFINES= -DHAS_STDARG +-KRB5_PTHREAD_LIB=$(THREAD_LINKOPTS) +- +-PROG_LIBPATH=-L$(TOPLIBD) $(TCL_LIBPATH) +-PROG_RPATH=$(KRB5_LIBDIR)$(TCL_RPATH) +- +-SRCS = $(srcdir)/tcl_kadm5.c $(srcdir)/test.c +-OBJS = tcl_kadm5.o test.o +- +-CLNTPROG= kadm5_clnt_tcl +-SRVPROG = kadm5_srv_tcl +- +-DO_ALL=@DO_ALL@ +- +-all: all-$(DO_ALL) +- +-all-: +- @echo "+++" +- @echo "+++ WARNING: Tcl not available. The kadm5 tests will not be run." +- @echo "+++" +- @echo 'Skipped kadm5 tests: Tcl not found' >> $(SKIPTESTS) +- +-all-tcl: $(CLNTPROG) $(SRVPROG) +- +-$(SRVPROG): $(OBJS) $(KADMSRV_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o $(SRVPROG) $(OBJS) $(TCL_MAYBE_RPATH) \ +- $(KADMSRV_LIBS) $(KRB5_PTHREAD_LIB) $(KRB5_BASE_LIBS) $(TCL_LIBS) +- +-$(CLNTPROG): $(OBJS) $(KADMCLNT_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o $(CLNTPROG) $(OBJS) $(TCL_MAYBE_RPATH) \ +- $(KRB5_PTHREAD_LIB) $(KADMCLNT_LIBS) $(KRB5_BASE_LIBS) $(TCL_LIBS) +- +-bsddb_dump: bsddb_dump.o +- $(CC_LINK) -o bsddb_dump bsddb_dump.o $(KADMSRV_LIBS) +- +-clean: +- $(RM) $(CLNTPROG) $(SRVPROG) +diff --git a/src/kadmin/testing/util/bsddb_dump.c b/src/kadmin/testing/util/bsddb_dump.c +deleted file mode 100644 +index 5dbe7ae9c..000000000 +--- a/src/kadmin/testing/util/bsddb_dump.c ++++ /dev/null +@@ -1,65 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* +- * $Id$ +- */ +- +-#include +-#include +-#include +-#include +- +-main(int argc, char *argv[]) +-{ +- char *file; +- DB *db; +- DBT dbkey, dbdata; +- int code, i; +- +- HASHINFO info; +- +- info.hash = NULL; +- info.bsize = 256; +- info.ffactor = 8; +- info.nelem = 25000; +- info.lorder = 0; +- +- if (argc != 2) { +- fprintf(stderr, "usage: argv[0] dbfile\n"); +- exit(2); +- } +- +- file = argv[1]; +- +- if((db = dbopen(file, O_RDWR, 0666, DB_HASH, &info)) == NULL) { +- perror("Opening db file"); +- exit(1); +- } +- +- if ((code = (*db->seq)(db, &dbkey, &dbdata, R_FIRST)) == -1) { +- perror("starting db iteration"); +- exit(1); +- } +- +- while (code == 0) { +- for (i=0; iseq)(db, &dbkey, &dbdata, R_NEXT); +- } +- +- if (code == -1) { +- perror("during db iteration"); +- exit(1); +- } +- +- if ((*db->close)(db) == -1) { +- perror("closing db"); +- exit(1); +- } +- +- exit(0); +-} +diff --git a/src/kadmin/testing/util/deps b/src/kadmin/testing/util/deps +deleted file mode 100644 +index ca828a85c..000000000 +--- a/src/kadmin/testing/util/deps ++++ /dev/null +@@ -1,16 +0,0 @@ +-# +-# Generated makefile dependencies follow. +-# +-$(OUTPRE)tcl_kadm5.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/gssapi/gssapi.h $(BUILDTOP)/include/gssrpc/types.h \ +- $(BUILDTOP)/include/kadm5/admin.h $(BUILDTOP)/include/kadm5/chpass_util_strings.h \ +- $(BUILDTOP)/include/kadm5/kadm_err.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/lib/kdb/adb_err.h $(COM_ERR_DEPS) $(top_srcdir)/include/gssrpc/auth.h \ +- $(top_srcdir)/include/gssrpc/auth_gss.h $(top_srcdir)/include/gssrpc/auth_unix.h \ +- $(top_srcdir)/include/gssrpc/clnt.h $(top_srcdir)/include/gssrpc/rename.h \ +- $(top_srcdir)/include/gssrpc/rpc.h $(top_srcdir)/include/gssrpc/rpc_msg.h \ +- $(top_srcdir)/include/gssrpc/svc.h $(top_srcdir)/include/gssrpc/svc_auth.h \ +- $(top_srcdir)/include/gssrpc/xdr.h $(top_srcdir)/include/kdb.h \ +- $(top_srcdir)/include/krb5.h tcl_kadm5.c tcl_kadm5.h +-$(OUTPRE)test.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- tcl_kadm5.h test.c +diff --git a/src/kadmin/testing/util/tcl_kadm5.c b/src/kadmin/testing/util/tcl_kadm5.c +deleted file mode 100644 +index 864a929c8..000000000 +--- a/src/kadmin/testing/util/tcl_kadm5.c ++++ /dev/null +@@ -1,2566 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include "autoconf.h" +-#include +-#include +-#if HAVE_TCL_H +-#include +-#elif HAVE_TCL_TCL_H +-#include +-#endif +-#define USE_KADM5_API_VERSION 2 +-#include +-#include +-#include +-#include +-#include +-#include "tcl_kadm5.h" +- +-struct flagval { +- char *name; +- krb5_flags val; +-}; +- +-/* XXX This should probably be in the hash table like server_handle */ +-static krb5_context context; +- +-static struct flagval krb5_flags_array[] = { +- {"KRB5_KDB_DISALLOW_POSTDATED", KRB5_KDB_DISALLOW_POSTDATED}, +- {"KRB5_KDB_DISALLOW_FORWARDABLE", KRB5_KDB_DISALLOW_FORWARDABLE}, +- {"KRB5_KDB_DISALLOW_TGT_BASED", KRB5_KDB_DISALLOW_TGT_BASED}, +- {"KRB5_KDB_DISALLOW_RENEWABLE", KRB5_KDB_DISALLOW_RENEWABLE}, +- {"KRB5_KDB_DISALLOW_PROXIABLE", KRB5_KDB_DISALLOW_PROXIABLE}, +- {"KRB5_KDB_DISALLOW_DUP_SKEY", KRB5_KDB_DISALLOW_DUP_SKEY}, +- {"KRB5_KDB_DISALLOW_ALL_TIX", KRB5_KDB_DISALLOW_ALL_TIX}, +- {"KRB5_KDB_REQUIRES_PRE_AUTH", KRB5_KDB_REQUIRES_PRE_AUTH}, +- {"KRB5_KDB_REQUIRES_HW_AUTH", KRB5_KDB_REQUIRES_HW_AUTH}, +- {"KRB5_KDB_REQUIRES_PWCHANGE", KRB5_KDB_REQUIRES_PWCHANGE}, +- {"KRB5_KDB_DISALLOW_SVR", KRB5_KDB_DISALLOW_SVR}, +- {"KRB5_KDB_PWCHANGE_SERVICE", KRB5_KDB_PWCHANGE_SERVICE} +-}; +- +-static struct flagval aux_attributes[] = { +- {"KADM5_POLICY", KADM5_POLICY} +-}; +- +-static struct flagval principal_mask_flags[] = { +- {"KADM5_PRINCIPAL", KADM5_PRINCIPAL}, +- {"KADM5_PRINC_EXPIRE_TIME", KADM5_PRINC_EXPIRE_TIME}, +- {"KADM5_PW_EXPIRATION", KADM5_PW_EXPIRATION}, +- {"KADM5_LAST_PWD_CHANGE", KADM5_LAST_PWD_CHANGE}, +- {"KADM5_ATTRIBUTES", KADM5_ATTRIBUTES}, +- {"KADM5_MAX_LIFE", KADM5_MAX_LIFE}, +- {"KADM5_MOD_TIME", KADM5_MOD_TIME}, +- {"KADM5_MOD_NAME", KADM5_MOD_NAME}, +- {"KADM5_KVNO", KADM5_KVNO}, +- {"KADM5_MKVNO", KADM5_MKVNO}, +- {"KADM5_AUX_ATTRIBUTES", KADM5_AUX_ATTRIBUTES}, +- {"KADM5_POLICY", KADM5_POLICY}, +- {"KADM5_POLICY_CLR", KADM5_POLICY_CLR}, +- {"KADM5_MAX_RLIFE", KADM5_MAX_RLIFE}, +- {"KADM5_LAST_SUCCESS", KADM5_LAST_SUCCESS}, +- {"KADM5_LAST_FAILED", KADM5_LAST_FAILED}, +- {"KADM5_FAIL_AUTH_COUNT", KADM5_FAIL_AUTH_COUNT}, +- {"KADM5_KEY_DATA", KADM5_KEY_DATA}, +- {"KADM5_TL_DATA", KADM5_TL_DATA}, +- {"KADM5_PRINCIPAL_NORMAL_MASK", KADM5_PRINCIPAL_NORMAL_MASK} +-}; +- +-static struct flagval policy_mask_flags[] = { +- {"KADM5_POLICY", KADM5_POLICY}, +- {"KADM5_PW_MAX_LIFE", KADM5_PW_MAX_LIFE}, +- {"KADM5_PW_MIN_LIFE", KADM5_PW_MIN_LIFE}, +- {"KADM5_PW_MIN_LENGTH", KADM5_PW_MIN_LENGTH}, +- {"KADM5_PW_MIN_CLASSES", KADM5_PW_MIN_CLASSES}, +- {"KADM5_PW_HISTORY_NUM", KADM5_PW_HISTORY_NUM}, +- {"KADM5_REF_COUNT", KADM5_REF_COUNT}, +- {"KADM5_PW_MAX_FAILURE", KADM5_PW_MAX_FAILURE}, +- {"KADM5_PW_FAILURE_COUNT_INTERVAL", KADM5_PW_FAILURE_COUNT_INTERVAL}, +- {"KADM5_PW_LOCKOUT_DURATION", KADM5_PW_LOCKOUT_DURATION}, +-}; +- +-static struct flagval config_mask_flags[] = { +- {"KADM5_CONFIG_REALM", KADM5_CONFIG_REALM}, +- {"KADM5_CONFIG_DBNAME", KADM5_CONFIG_DBNAME}, +- {"KADM5_CONFIG_MKEY_NAME", KADM5_CONFIG_MKEY_NAME}, +- {"KADM5_CONFIG_MAX_LIFE", KADM5_CONFIG_MAX_LIFE}, +- {"KADM5_CONFIG_MAX_RLIFE", KADM5_CONFIG_MAX_RLIFE}, +- {"KADM5_CONFIG_EXPIRATION", KADM5_CONFIG_EXPIRATION}, +- {"KADM5_CONFIG_FLAGS", KADM5_CONFIG_FLAGS}, +- {"KADM5_CONFIG_STASH_FILE", KADM5_CONFIG_STASH_FILE}, +- {"KADM5_CONFIG_ENCTYPE", KADM5_CONFIG_ENCTYPE}, +- {"KADM5_CONFIG_ADBNAME", KADM5_CONFIG_ADBNAME}, +- {"KADM5_CONFIG_ADB_LOCKFILE", KADM5_CONFIG_ADB_LOCKFILE}, +- {"KADM5_CONFIG_ACL_FILE", KADM5_CONFIG_ACL_FILE}, +- {"KADM5_CONFIG_KADMIND_PORT", KADM5_CONFIG_KADMIND_PORT}, +- {"KADM5_CONFIG_ENCTYPES", KADM5_CONFIG_ENCTYPES}, +- {"KADM5_CONFIG_ADMIN_SERVER", KADM5_CONFIG_ADMIN_SERVER}, +- {"KADM5_CONFIG_DICT_FILE", KADM5_CONFIG_DICT_FILE}, +- {"KADM5_CONFIG_MKEY_FROM_KBD", KADM5_CONFIG_MKEY_FROM_KBD}, +-}; +- +-static struct flagval priv_flags[] = { +- {"KADM5_PRIV_GET", KADM5_PRIV_GET}, +- {"KADM5_PRIV_ADD", KADM5_PRIV_ADD}, +- {"KADM5_PRIV_MODIFY", KADM5_PRIV_MODIFY}, +- {"KADM5_PRIV_DELETE", KADM5_PRIV_DELETE} +-}; +- +- +-static char *arg_error = "wrong # args"; +- +-static Tcl_HashTable *struct_table = 0; +- +-static int put_server_handle(Tcl_Interp *interp, void *handle, char **name) +-{ +- int i = 1, newPtr = 0; +- static char buf[20]; +- Tcl_HashEntry *entry; +- +- if (! struct_table) { +- if (! (struct_table = +- malloc(sizeof(*struct_table)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- Tcl_InitHashTable(struct_table, TCL_STRING_KEYS); +- } +- +- do { +- sprintf(buf, "kadm5_handle%d", i); +- entry = Tcl_CreateHashEntry(struct_table, buf, &newPtr); +- i++; +- } while (! newPtr); +- +- Tcl_SetHashValue(entry, handle); +- +- *name = buf; +- +- return TCL_OK; +-} +- +-static int get_server_handle(Tcl_Interp *interp, const char *name, +- void **handle) +-{ +- Tcl_HashEntry *entry; +- +- if(!strcasecmp(name, "null")) +- *handle = 0; +- else { +- if (! (struct_table && +- (entry = Tcl_FindHashEntry(struct_table, name)))) { +- Tcl_AppendResult(interp, "unknown server handle ", name, 0); +- return TCL_ERROR; +- } +- *handle = (void *) Tcl_GetHashValue(entry); +- } +- return TCL_OK; +-} +- +-static int remove_server_handle(Tcl_Interp *interp, const char *name) +-{ +- Tcl_HashEntry *entry; +- +- if (! (struct_table && +- (entry = Tcl_FindHashEntry(struct_table, name)))) { +- Tcl_AppendResult(interp, "unknown server handle ", name, 0); +- return TCL_ERROR; +- } +- +- Tcl_SetHashValue(entry, NULL); +- return TCL_OK; +-} +- +-#define GET_HANDLE(num_args, ignored) \ +- void *server_handle; \ +- const char *whoami = argv[0]; \ +- argv++, argc--; \ +- if (argc != num_args + 1) { \ +- Tcl_AppendResult(interp, whoami, ": ", arg_error, 0); \ +- return TCL_ERROR; \ +- } \ +- { \ +- int ltcl_ret; \ +- if ((ltcl_ret = get_server_handle(interp, argv[0], &server_handle)) \ +- != TCL_OK) { \ +- return ltcl_ret; \ +- } \ +- } \ +- argv++, argc--; +- +-static Tcl_HashTable *create_flag_table(struct flagval *flags, int size) +-{ +- Tcl_HashTable *table; +- Tcl_HashEntry *entry; +- int i; +- +- if (! (table = (Tcl_HashTable *) malloc(sizeof(Tcl_HashTable)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_InitHashTable(table, TCL_STRING_KEYS); +- +- for (i = 0; i < size; i++) { +- int newPtr; +- +- if (! (entry = Tcl_CreateHashEntry(table, flags[i].name, &newPtr))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_SetHashValue(entry, &flags[i].val); +- } +- +- return table; +-} +- +- +-static Tcl_DString *unparse_str(char *in_str) +-{ +- Tcl_DString *str; +- +- if (! (str = malloc(sizeof(*str)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_DStringInit(str); +- +- if (! in_str) { +- Tcl_DStringAppend(str, "null", -1); +- } +- else { +- Tcl_DStringAppend(str, in_str, -1); +- } +- +- return str; +-} +- +- +- +-static int parse_str(Tcl_Interp *interp, const char *in_str, char **out_str) +-{ +- if (! in_str) { +- *out_str = 0; +- } +- else if (! strcasecmp(in_str, "null")) { +- *out_str = 0; +- } +- else { +- *out_str = (char *) in_str; +- } +- return TCL_OK; +-} +- +- +-static void set_ok(Tcl_Interp *interp, char *string) +-{ +- Tcl_SetResult(interp, "OK", TCL_STATIC); +- Tcl_AppendElement(interp, "KADM5_OK"); +- Tcl_AppendElement(interp, string); +-} +- +- +- +-static Tcl_DString *unparse_err(kadm5_ret_t code) +-{ +- char *code_string; +- const char *error_string; +- Tcl_DString *dstring; +- +- switch (code) { +- case KADM5_FAILURE: code_string = "KADM5_FAILURE"; break; +- case KADM5_AUTH_GET: code_string = "KADM5_AUTH_GET"; break; +- case KADM5_AUTH_ADD: code_string = "KADM5_AUTH_ADD"; break; +- case KADM5_AUTH_MODIFY: +- code_string = "KADM5_AUTH_MODIFY"; break; +- case KADM5_AUTH_DELETE: +- code_string = "KADM5_AUTH_DELETE"; break; +- case KADM5_AUTH_INSUFFICIENT: +- code_string = "KADM5_AUTH_INSUFFICIENT"; break; +- case KADM5_BAD_DB: code_string = "KADM5_BAD_DB"; break; +- case KADM5_DUP: code_string = "KADM5_DUP"; break; +- case KADM5_RPC_ERROR: code_string = "KADM5_RPC_ERROR"; break; +- case KADM5_NO_SRV: code_string = "KADM5_NO_SRV"; break; +- case KADM5_BAD_HIST_KEY: +- code_string = "KADM5_BAD_HIST_KEY"; break; +- case KADM5_NOT_INIT: code_string = "KADM5_NOT_INIT"; break; +- case KADM5_INIT: code_string = "KADM5_INIT"; break; +- case KADM5_BAD_PASSWORD: +- code_string = "KADM5_BAD_PASSWORD"; break; +- case KADM5_UNK_PRINC: code_string = "KADM5_UNK_PRINC"; break; +- case KADM5_UNK_POLICY: code_string = "KADM5_UNK_POLICY"; break; +- case KADM5_BAD_MASK: code_string = "KADM5_BAD_MASK"; break; +- case KADM5_BAD_CLASS: code_string = "KADM5_BAD_CLASS"; break; +- case KADM5_BAD_LENGTH: code_string = "KADM5_BAD_LENGTH"; break; +- case KADM5_BAD_POLICY: code_string = "KADM5_BAD_POLICY"; break; +- case KADM5_BAD_HISTORY: code_string = "KADM5_BAD_HISTORY"; break; +- case KADM5_BAD_PRINCIPAL: +- code_string = "KADM5_BAD_PRINCIPAL"; break; +- case KADM5_BAD_AUX_ATTR: +- code_string = "KADM5_BAD_AUX_ATTR"; break; +- case KADM5_PASS_Q_TOOSHORT: +- code_string = "KADM5_PASS_Q_TOOSHORT"; break; +- case KADM5_PASS_Q_CLASS: +- code_string = "KADM5_PASS_Q_CLASS"; break; +- case KADM5_PASS_Q_DICT: +- code_string = "KADM5_PASS_Q_DICT"; break; +- case KADM5_PASS_REUSE: code_string = "KADM5_PASS_REUSE"; break; +- case KADM5_PASS_TOOSOON: +- code_string = "KADM5_PASS_TOOSOON"; break; +- case KADM5_POLICY_REF: +- code_string = "KADM5_POLICY_REF"; break; +- case KADM5_PROTECT_PRINCIPAL: +- code_string = "KADM5_PROTECT_PRINCIPAL"; break; +- case KADM5_BAD_SERVER_HANDLE: +- code_string = "KADM5_BAD_SERVER_HANDLE"; break; +- case KADM5_BAD_STRUCT_VERSION: +- code_string = "KADM5_BAD_STRUCT_VERSION"; break; +- case KADM5_OLD_STRUCT_VERSION: +- code_string = "KADM5_OLD_STRUCT_VERSION"; break; +- case KADM5_NEW_STRUCT_VERSION: +- code_string = "KADM5_NEW_STRUCT_VERSION"; break; +- case KADM5_BAD_API_VERSION: +- code_string = "KADM5_BAD_API_VERSION"; break; +- case KADM5_OLD_LIB_API_VERSION: +- code_string = "KADM5_OLD_LIB_API_VERSION"; break; +- case KADM5_OLD_SERVER_API_VERSION: +- code_string = "KADM5_OLD_SERVER_API_VERSION"; break; +- case KADM5_NEW_LIB_API_VERSION: +- code_string = "KADM5_NEW_LIB_API_VERSION"; break; +- case KADM5_NEW_SERVER_API_VERSION: +- code_string = "KADM5_NEW_SERVER_API_VERSION"; break; +- case KADM5_SECURE_PRINC_MISSING: +- code_string = "KADM5_SECURE_PRINC_MISSING"; break; +- case KADM5_NO_RENAME_SALT: +- code_string = "KADM5_NO_RENAME_SALT"; break; +- case KADM5_BAD_CLIENT_PARAMS: +- code_string = "KADM5_BAD_CLIENT_PARAMS"; break; +- case KADM5_BAD_SERVER_PARAMS: +- code_string = "KADM5_BAD_SERVER_PARAMS"; break; +- case KADM5_AUTH_LIST: +- code_string = "KADM5_AUTH_LIST"; break; +- case KADM5_AUTH_CHANGEPW: +- code_string = "KADM5_AUTH_CHANGEPW"; break; +- case KADM5_GSS_ERROR: code_string = "KADM5_GSS_ERROR"; break; +- case KADM5_BAD_TL_TYPE: code_string = "KADM5_BAD_TL_TYPE"; break; +- case KADM5_MISSING_CONF_PARAMS: +- code_string = "KADM5_MISSING_CONF_PARAMS"; break; +- case KADM5_BAD_SERVER_NAME: +- code_string = "KADM5_BAD_SERVER_NAME"; break; +- case KADM5_MISSING_KRB5_CONF_PARAMS: +- code_string = "KADM5_MISSING_KRB5_CONF_PARAMS"; break; +- case KADM5_XDR_FAILURE: code_string = "KADM5_XDR_FAILURE"; break; +- case KADM5_CANT_RESOLVE: code_string = "KADM5_CANT_RESOLVE"; break; +- +- +- case OSA_ADB_DUP: code_string = "OSA_ADB_DUP"; break; +- case OSA_ADB_NOENT: code_string = "ENOENT"; break; +- case OSA_ADB_DBINIT: code_string = "OSA_ADB_DBINIT"; break; +- case OSA_ADB_BAD_POLICY: code_string = "Bad policy name"; break; +- case OSA_ADB_BAD_PRINC: code_string = "Bad principal name"; break; +- case OSA_ADB_BAD_DB: code_string = "Invalid database."; break; +- case OSA_ADB_XDR_FAILURE: code_string = "OSA_ADB_XDR_FAILURE"; break; +- case OSA_ADB_BADLOCKMODE: code_string = "OSA_ADB_BADLOCKMODE"; break; +- case OSA_ADB_CANTLOCK_DB: code_string = "OSA_ADB_CANTLOCK_DB"; break; +- case OSA_ADB_NOTLOCKED: code_string = "OSA_ADB_NOTLOCKED"; break; +- case OSA_ADB_NOLOCKFILE: code_string = "OSA_ADB_NOLOCKFILE"; break; +- case OSA_ADB_NOEXCL_PERM: code_string = "OSA_ADB_NOEXCL_PERM"; break; +- +- case KRB5_KDB_INUSE: code_string = "KRB5_KDB_INUSE"; break; +- case KRB5_KDB_UK_SERROR: code_string = "KRB5_KDB_UK_SERROR"; break; +- case KRB5_KDB_UK_RERROR: code_string = "KRB5_KDB_UK_RERROR"; break; +- case KRB5_KDB_UNAUTH: code_string = "KRB5_KDB_UNAUTH"; break; +- case KRB5_KDB_NOENTRY: code_string = "KRB5_KDB_NOENTRY"; break; +- case KRB5_KDB_ILL_WILDCARD: code_string = "KRB5_KDB_ILL_WILDCARD"; break; +- case KRB5_KDB_DB_INUSE: code_string = "KRB5_KDB_DB_INUSE"; break; +- case KRB5_KDB_DB_CHANGED: code_string = "KRB5_KDB_DB_CHANGED"; break; +- case KRB5_KDB_TRUNCATED_RECORD: +- code_string = "KRB5_KDB_TRUNCATED_RECORD"; break; +- case KRB5_KDB_RECURSIVELOCK: +- code_string = "KRB5_KDB_RECURSIVELOCK"; break; +- case KRB5_KDB_NOTLOCKED: code_string = "KRB5_KDB_NOTLOCKED"; break; +- case KRB5_KDB_BADLOCKMODE: code_string = "KRB5_KDB_BADLOCKMODE"; break; +- case KRB5_KDB_DBNOTINITED: code_string = "KRB5_KDB_DBNOTINITED"; break; +- case KRB5_KDB_DBINITED: code_string = "KRB5_KDB_DBINITED"; break; +- case KRB5_KDB_ILLDIRECTION: code_string = "KRB5_KDB_ILLDIRECTION"; break; +- case KRB5_KDB_NOMASTERKEY: code_string = "KRB5_KDB_NOMASTERKEY"; break; +- case KRB5_KDB_BADMASTERKEY: code_string = "KRB5_KDB_BADMASTERKEY"; break; +- case KRB5_KDB_INVALIDKEYSIZE: +- code_string = "KRB5_KDB_INVALIDKEYSIZE"; break; +- case KRB5_KDB_CANTREAD_STORED: +- code_string = "KRB5_KDB_CANTREAD_STORED"; break; +- case KRB5_KDB_BADSTORED_MKEY: +- code_string = "KRB5_KDB_BADSTORED_MKEY"; break; +- case KRB5_KDB_CANTLOCK_DB: code_string = "KRB5_KDB_CANTLOCK_DB"; break; +- case KRB5_KDB_DB_CORRUPT: code_string = "KRB5_KDB_DB_CORRUPT"; break; +- +- case KRB5_PARSE_ILLCHAR: code_string = "KRB5_PARSE_ILLCHAR"; break; +- case KRB5_PARSE_MALFORMED: code_string = "KRB5_PARSE_MALFORMED"; break; +- case KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN: code_string = "KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN"; break; +- case KRB5_REALM_UNKNOWN: code_string = "KRB5_REALM_UNKNOWN"; break; +- case KRB5_KDC_UNREACH: code_string = "KRB5_KDC_UNREACH"; break; +- case KRB5_KDCREP_MODIFIED: code_string = "KRB5_KDCREP_MODIFIED"; break; +- case KRB5KRB_AP_ERR_BAD_INTEGRITY: code_string = "KRB5KRB_AP_ERR_BAD_INTEGRITY"; break; +- case KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN: code_string = "KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN"; break; +- case KRB5_CONFIG_BADFORMAT: code_string = "KRB5_CONFIG_BADFORMAT"; break; +- +- case KRB5_CC_NOTFOUND: code_string = "KRB5_CC_NOTFOUND"; break; +- case KRB5_FCC_NOFILE: code_string = "KRB5_FCC_NOFILE"; break; +- +- case EINVAL: code_string = "EINVAL"; break; +- case ENOENT: code_string = "ENOENT"; break; +- +- default: +- fprintf(stderr, "**** CODE %ld (%s) ***\n", (long) code, +- error_message (code)); +- code_string = "UNKNOWN"; +- break; +- } +- +- error_string = error_message(code); +- +- if (! (dstring = (Tcl_DString *) malloc(sizeof(Tcl_DString)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX Do we really want to exit? Ok if this is */ +- /* just a test program, but what about if it gets */ +- /* used for other things later? */ +- } +- +- Tcl_DStringInit(dstring); +- +- if (! (Tcl_DStringAppendElement(dstring, "ERROR") && +- Tcl_DStringAppendElement(dstring, code_string) && +- Tcl_DStringAppendElement(dstring, error_string))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- return dstring; +-} +- +- +- +-static void stash_error(Tcl_Interp *interp, krb5_error_code code) +-{ +- Tcl_DString *dstring = unparse_err(code); +- Tcl_DStringResult(interp, dstring); +- Tcl_DStringFree(dstring); +- free(dstring); +-} +- +-static Tcl_DString *unparse_key_data(krb5_key_data *key_data, int n_key_data) +-{ +- Tcl_DString *str; +- char buf[2048]; +- int i, j; +- +- if (! (str = malloc(sizeof(*str)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_DStringInit(str); +- for (i = 0; i < n_key_data; i++) { +- krb5_key_data *key = &key_data[i]; +- +- Tcl_DStringStartSublist(str); +- sprintf(buf, "%d", key->key_data_type[0]); +- Tcl_DStringAppendElement(str, buf); +- sprintf(buf, "%d", key->key_data_ver > 1 ? +- key->key_data_type[1] : -1); +- Tcl_DStringAppendElement(str, buf); +- if (key->key_data_contents[0]) { +- sprintf(buf, "0x"); +- for (j = 0; j < key->key_data_length[0]; j++) { +- sprintf(buf + 2*(j+1), "%02x", +- key->key_data_contents[0][j]); +- } +- } else *buf = '\0'; +- Tcl_DStringAppendElement(str, buf); +- Tcl_DStringEndSublist(str); +- } +- +- return str; +-} +- +-static Tcl_DString *unparse_tl_data(krb5_tl_data *tl_data, int n_tl_data) +-{ +- Tcl_DString *str; +- char buf[2048]; +- +- if (! (str = malloc(sizeof(*str)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_DStringInit(str); +- Tcl_DStringStartSublist(str); +- for (; tl_data; tl_data = tl_data->tl_data_next) { +- Tcl_DStringStartSublist(str); +- sprintf(buf, "%d", tl_data->tl_data_type); +- Tcl_DStringAppendElement(str, buf); +- sprintf(buf, "%d", tl_data->tl_data_length); +- Tcl_DStringAppendElement(str, buf); +- Tcl_DStringAppend(str, " ", 1); +- Tcl_DStringAppend(str, (char *) tl_data->tl_data_contents, +- tl_data->tl_data_length); +- Tcl_DStringEndSublist(str); +- } +- Tcl_DStringEndSublist(str); +- +- return str; +-} +- +-static Tcl_DString *unparse_flags(struct flagval *array, int size, +- krb5_int32 flags) +-{ +- int i; +- Tcl_DString *str; +- +- if (! (str = malloc(sizeof(*str)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_DStringInit(str); +- +- for (i = 0; i < size; i++) { +- if (flags & array[i].val) { +- Tcl_DStringAppendElement(str, array[i].name); +- } +- } +- +- return str; +-} +- +- +-static int parse_flags(Tcl_Interp *interp, Tcl_HashTable *table, +- struct flagval *array, int size, const char *str, +- krb5_flags *flags) +-{ +- int tmp, argc, i, retcode = TCL_OK; +- const char **argv; +- Tcl_HashEntry *entry; +- +- if (Tcl_GetInt(interp, str, &tmp) == TCL_OK) { +- *flags = tmp; +- return TCL_OK; +- } +- Tcl_ResetResult(interp); +- +- if (Tcl_SplitList(interp, str, &argc, &argv) != TCL_OK) { +- return TCL_ERROR; +- } +- +- if (! table) { +- table = create_flag_table(array, size); +- } +- +- *flags = 0; +- +- for (i = 0; i < argc; i++) { +- if (! (entry = Tcl_FindHashEntry(table, argv[i]))) { +- Tcl_AppendResult(interp, "unknown krb5 flag ", argv[i], 0); +- retcode = TCL_ERROR; +- break; +- } +- *flags |= *(krb5_flags *) Tcl_GetHashValue(entry); +- } +- +- Tcl_Free((char *) argv); +- return(retcode); +-} +- +-static Tcl_DString *unparse_privs(krb5_flags flags) +-{ +- return unparse_flags(priv_flags, sizeof(priv_flags) / +- sizeof(struct flagval), flags); +-} +- +- +-static Tcl_DString *unparse_krb5_flags(krb5_flags flags) +-{ +- return unparse_flags(krb5_flags_array, sizeof(krb5_flags_array) / +- sizeof(struct flagval), flags); +-} +- +-static int parse_krb5_flags(Tcl_Interp *interp, const char *str, +- krb5_flags *flags) +-{ +- krb5_flags tmp; +- static Tcl_HashTable *table = 0; +- int tcl_ret; +- +- if ((tcl_ret = parse_flags(interp, table, krb5_flags_array, +- sizeof(krb5_flags_array) / +- sizeof(struct flagval), +- str, &tmp)) != TCL_OK) { +- return tcl_ret; +- } +- +- *flags = tmp; +- return TCL_OK; +-} +- +-static Tcl_DString *unparse_aux_attributes(krb5_int32 flags) +-{ +- return unparse_flags(aux_attributes, sizeof(aux_attributes) / +- sizeof(struct flagval), flags); +-} +- +- +-static int parse_aux_attributes(Tcl_Interp *interp, const char *str, +- long *flags) +-{ +- krb5_flags tmp; +- static Tcl_HashTable *table = 0; +- int tcl_ret; +- +- if ((tcl_ret = parse_flags(interp, table, aux_attributes, +- sizeof(aux_attributes) / +- sizeof(struct flagval), +- str, &tmp)) != TCL_OK) { +- return tcl_ret; +- } +- +- *flags = tmp; +- return TCL_OK; +-} +- +-static int parse_principal_mask(Tcl_Interp *interp, const char *str, +- krb5_int32 *flags) +-{ +- krb5_flags tmp; +- static Tcl_HashTable *table = 0; +- int tcl_ret; +- +- if ((tcl_ret = parse_flags(interp, table, principal_mask_flags, +- sizeof(principal_mask_flags) / +- sizeof(struct flagval), +- str, &tmp)) != TCL_OK) { +- return tcl_ret; +- } +- +- *flags = tmp; +- return TCL_OK; +-} +- +-static int parse_policy_mask(Tcl_Interp *interp, const char *str, +- krb5_int32 *flags) +-{ +- krb5_flags tmp; +- static Tcl_HashTable *table = 0; +- int tcl_ret; +- +- if ((tcl_ret = parse_flags(interp, table, policy_mask_flags, +- sizeof(policy_mask_flags) / +- sizeof(struct flagval), +- str, &tmp)) != TCL_OK) { +- return tcl_ret; +- } +- +- *flags = tmp; +- return TCL_OK; +-} +- +- +-static Tcl_DString *unparse_principal_ent(kadm5_principal_ent_t princ, +- krb5_int32 mask) +-{ +- Tcl_DString *str, *tmp_dstring; +- char *tmp; +- char buf[20]; +- krb5_error_code krb5_ret; +- +- if (! (str = malloc(sizeof(*str)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_DStringInit(str); +- +- tmp = 0; /* It looks to me from looking at the library source */ +- /* code for krb5_parse_name that the pointer passed into */ +- /* it should be initialized to 0 if I want it do be */ +- /* allocated automatically. */ +- if (mask & KADM5_PRINCIPAL) { +- krb5_ret = krb5_unparse_name(context, princ->principal, &tmp); +- if (krb5_ret) { +- /* XXX Do we want to return an error? Not sure. */ +- Tcl_DStringAppendElement(str, "[unparsable principal]"); +- } +- else { +- Tcl_DStringAppendElement(str, tmp); +- free(tmp); +- } +- } else +- Tcl_DStringAppendElement(str, "null"); +- +- sprintf(buf, "%u", (unsigned int)princ->princ_expire_time); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%u", (unsigned int)princ->last_pwd_change); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%u", (unsigned int)princ->pw_expiration); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%d", princ->max_life); +- Tcl_DStringAppendElement(str, buf); +- +- tmp = 0; +- if (mask & KADM5_MOD_NAME) { +- if ((krb5_ret = krb5_unparse_name(context, princ->mod_name, &tmp))) { +- /* XXX */ +- Tcl_DStringAppendElement(str, "[unparsable principal]"); +- } +- else { +- Tcl_DStringAppendElement(str, tmp); +- free(tmp); +- } +- } else +- Tcl_DStringAppendElement(str, "null"); +- +- sprintf(buf, "%u", (unsigned int)princ->mod_date); +- Tcl_DStringAppendElement(str, buf); +- +- if (mask & KADM5_ATTRIBUTES) { +- tmp_dstring = unparse_krb5_flags(princ->attributes); +- Tcl_DStringAppendElement(str, tmp_dstring->string); +- Tcl_DStringFree(tmp_dstring); +- free(tmp_dstring); +- } else +- Tcl_DStringAppendElement(str, "null"); +- +- sprintf(buf, "%d", princ->kvno); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%d", princ->mkvno); +- Tcl_DStringAppendElement(str, buf); +- +- /* XXX This may be dangerous, because the contents of the policy */ +- /* field are undefined if the POLICY bit isn't set. However, I */ +- /* think it's a bug for the field not to be null in that case */ +- /* anyway, so we should assume that it will be null so that we'll */ +- /* catch it if it isn't. */ +- +- tmp_dstring = unparse_str(princ->policy); +- Tcl_DStringAppendElement(str, tmp_dstring->string); +- Tcl_DStringFree(tmp_dstring); +- free(tmp_dstring); +- +- tmp_dstring = unparse_aux_attributes(princ->aux_attributes); +- Tcl_DStringAppendElement(str, tmp_dstring->string); +- Tcl_DStringFree(tmp_dstring); +- free(tmp_dstring); +- +- sprintf(buf, "%d", princ->max_renewable_life); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%u", (unsigned int)princ->last_success); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%u", (unsigned int)princ->last_failed); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%d", princ->fail_auth_count); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%d", princ->n_key_data); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%d", princ->n_tl_data); +- Tcl_DStringAppendElement(str, buf); +- +- tmp_dstring = unparse_key_data(princ->key_data, princ->n_key_data); +- Tcl_DStringAppendElement(str, tmp_dstring->string); +- Tcl_DStringFree(tmp_dstring); +- free(tmp_dstring); +- +- tmp_dstring = unparse_tl_data(princ->tl_data, princ->n_tl_data); +- Tcl_DStringAppendElement(str, tmp_dstring->string); +- Tcl_DStringFree(tmp_dstring); +- free(tmp_dstring); +- +- return str; +-} +- +-static int parse_keysalts(Tcl_Interp *interp, const char *list, +- krb5_key_salt_tuple **keysalts, +- int num_keysalts) +-{ +- const char **argv, **argv1 = NULL; +- int i, tmp, argc, argc1, retcode; +- +- *keysalts = NULL; +- if (list == NULL) +- return TCL_OK; +- +- if ((retcode = Tcl_SplitList(interp, list, &argc, &argv)) != TCL_OK) { +- return retcode; +- } +- if (argc != num_keysalts) { +- Tcl_SetResult(interp, "wrong number of keysalts", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- *keysalts = (krb5_key_salt_tuple *) +- malloc(sizeof(krb5_key_salt_tuple)*num_keysalts); +- for (i = 0; i < num_keysalts; i++) { +- if ((retcode = Tcl_SplitList(interp, argv[i], &argc1, &argv1)) != +- TCL_OK) { +- goto finished; +- } +- if (argc1 != 2) { +- Tcl_SetResult(interp, "wrong # of fields in keysalt", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- /* XXX this used to be argv1[1] too! */ +- if ((retcode = Tcl_GetInt(interp, argv1[0], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing ks_enctype"); +- retcode = TCL_ERROR; +- goto finished; +- } +- (*keysalts)[i].ks_enctype = tmp; +- if ((retcode = Tcl_GetInt(interp, argv1[1], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing ks_salttype"); +- goto finished; +- } +- (*keysalts)[i].ks_salttype = tmp; +- +- Tcl_Free((char *) argv1); +- argv1 = NULL; +- } +- +-finished: +- if (argv1) { +- Tcl_Free((char *) argv1); +- } +- Tcl_Free((char *) argv); +- return retcode; +-} +- +-static int parse_key_data(Tcl_Interp *interp, const char *list, +- krb5_key_data **key_data, +- int n_key_data) +-{ +- const char **argv = NULL; +- int argc, retcode; +- +- *key_data = NULL; +- if (list == NULL) { +- if (n_key_data != 0) { +- Tcl_SetResult(interp, "wrong number of key_datas", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } else +- return TCL_OK; +- } +- +- if ((retcode = Tcl_SplitList(interp, list, &argc, &argv)) != TCL_OK) { +- return retcode; +- } +- if (argc != n_key_data) { +- Tcl_SetResult(interp, "wrong number of key_datas", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if (argc != 0) { +- Tcl_SetResult(interp, "cannot parse key_data yet", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- +-finished: +- Tcl_Free((char *) argv); +- return retcode; +-} +- +-static int parse_tl_data(Tcl_Interp *interp, const char *list, +- krb5_tl_data **tlp, +- int n_tl_data) +-{ +- krb5_tl_data *tl, *tl2; +- const char **argv = NULL, **argv1 = NULL; +- int i, tmp, argc, argc1, retcode; +- +- *tlp = NULL; +- if (list == NULL) { +- if (n_tl_data != 0) { +- Tcl_SetResult(interp, "wrong number of tl_datas", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } else +- return TCL_OK; +- } +- +- if ((retcode = Tcl_SplitList(interp, list, &argc, &argv)) != TCL_OK) { +- return retcode; +- } +- if (argc != n_tl_data) { +- Tcl_SetResult(interp, "wrong number of tl_datas", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- tl = tl2 = NULL; +- for (i = 0; i < n_tl_data; i++) { +- tl2 = (krb5_tl_data *) malloc(sizeof(krb5_tl_data)); +- memset(tl2, 0, sizeof(krb5_tl_data)); +- tl2->tl_data_next = tl; +- tl = tl2; +- } +- tl2 = tl; +- +- for (i = 0; i < n_tl_data; i++) { +- if ((retcode = Tcl_SplitList(interp, argv[i], &argc1, &argv1)) != +- TCL_OK) { +- goto finished; +- } +- if (argc1 != 3) { +- Tcl_SetResult(interp, "wrong # of fields in tl_data", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- if ((retcode = Tcl_GetInt(interp, argv1[0], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing tl_data_type"); +- retcode = TCL_ERROR; +- goto finished; +- } +- tl->tl_data_type = tmp; +- if ((retcode = Tcl_GetInt(interp, argv1[1], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing tl_data_length"); +- retcode = TCL_ERROR; +- goto finished; +- } +- tl->tl_data_length = tmp; +- if (tl->tl_data_length != strlen(argv1[2])) { +- Tcl_SetResult(interp, "length != string length", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- tl->tl_data_contents = (krb5_octet *) strdup(argv1[2]); +- +- Tcl_Free((char *) argv1); +- argv1 = NULL; +- tl = tl->tl_data_next; +- } +- if (tl != NULL) { +- Tcl_SetResult(interp, "tl is not NULL!", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- *tlp = tl2; +- +-finished: +- if (argv1) { +- Tcl_Free((char *) argv1); +- } +- Tcl_Free((char *) argv); +- return retcode; +-} +- +-static int parse_config_params(Tcl_Interp *interp, char *list, +- kadm5_config_params *params) +-{ +- static Tcl_HashTable *table = 0; +- const char **argv = NULL; +- int tmp, argc, retcode; +- +- memset(params, 0, sizeof(kadm5_config_params)); +- if (list == NULL) +- return TCL_OK; +- +- if ((retcode = Tcl_SplitList(interp, list, &argc, &argv)) != TCL_OK) { +- return retcode; +- } +- +- if (argc != 20) { +- Tcl_SetResult(interp, "wrong # args in config params structure", +- TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if ((retcode = parse_flags(interp, table, config_mask_flags, +- sizeof(config_mask_flags) / +- sizeof(struct flagval), +- argv[0], &tmp)) != TCL_OK) { +- goto finished; +- } +- params->mask = tmp; +- +- if ((retcode = parse_str(interp, argv[1], ¶ms->realm)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing realm name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if ((retcode = Tcl_GetInt(interp, argv[2], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing kadmind_port"); +- retcode = TCL_ERROR; +- goto finished; +- } +- params->kadmind_port = tmp; +- if ((retcode = parse_str(interp, argv[3], ¶ms->admin_server)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing profile name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if ((retcode = parse_str(interp, argv[4], ¶ms->dbname)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing profile name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- /* Ignore argv[5], which used to set the admin_dbname field. */ +- /* Ignore argv[6], which used to set the admin_lockfile field. */ +- /* Ignore argv[7], which used to set the admin_keytab field. */ +- if ((retcode = parse_str(interp, argv[8], ¶ms->acl_file)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing acl_file name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if ((retcode = parse_str(interp, argv[9], ¶ms->dict_file)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing dict_file name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if ((retcode = Tcl_GetInt(interp, argv[10], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing mkey_from_kbd"); +- retcode = TCL_ERROR; +- goto finished; +- } +- params->mkey_from_kbd = tmp; +- if ((retcode = parse_str(interp, argv[11], ¶ms->stash_file)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing stash_file name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if ((retcode = parse_str(interp, argv[12], ¶ms->mkey_name)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing mkey_name name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if ((retcode = Tcl_GetInt(interp, argv[13], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing enctype"); +- retcode = TCL_ERROR; +- goto finished; +- } +- params->enctype = tmp; +- if ((retcode = Tcl_GetInt(interp, argv[14], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing max_life"); +- retcode = TCL_ERROR; +- goto finished; +- } +- params->max_life = tmp; +- if ((retcode = Tcl_GetInt(interp, argv[15], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing max_rlife"); +- retcode = TCL_ERROR; +- goto finished; +- } +- params->max_rlife = tmp; +- if ((retcode = Tcl_GetInt(interp, argv[16], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing expiration"); +- retcode = TCL_ERROR; +- goto finished; +- } +- params->expiration = tmp; +- if ((retcode = parse_krb5_flags(interp, argv[17], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing flags"); +- retcode = TCL_ERROR; +- goto finished; +- } +- params->flags = tmp; +- if ((retcode = Tcl_GetInt(interp, argv[18], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing num_keysalts"); +- retcode = TCL_ERROR; +- goto finished; +- } +- params->num_keysalts = tmp; +- if ((retcode = parse_keysalts(interp, argv[19], ¶ms->keysalts, +- params->num_keysalts)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing keysalts"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +-finished: +- return retcode; +-} +- +-static int parse_principal_ent(Tcl_Interp *interp, char *list, +- kadm5_principal_ent_t *out_princ) +-{ +- kadm5_principal_ent_t princ = 0; +- krb5_error_code krb5_ret; +- int tcl_ret; +- int argc; +- const char **argv; +- int tmp; +- int retcode = TCL_OK; +- +- if ((tcl_ret = Tcl_SplitList(interp, list, &argc, &argv)) != TCL_OK) { +- return tcl_ret; +- } +- +- if (argc != 12 && argc != 20) { +- Tcl_SetResult(interp, "wrong # args in principal structure", +- TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if (! (princ = malloc(sizeof *princ))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- memset(princ, 0, sizeof(*princ)); +- +- if ((krb5_ret = krb5_parse_name(context, argv[0], &princ->principal)) != 0) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing principal"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- /* +- * All of the numerical values parsed here are parsed into an +- * "int" and then assigned into the structure in case the actual +- * width of the field in the Kerberos structure is different from +- * the width of an integer. +- */ +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[1], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing princ_expire_time"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->princ_expire_time = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[2], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing last_pwd_change"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->last_pwd_change = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[3], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_expiration"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->pw_expiration = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[4], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing max_life"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->max_life = tmp; +- +- if ((krb5_ret = krb5_parse_name(context, argv[5], &princ->mod_name)) != 0) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing mod_name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[6], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing mod_date"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->mod_date = tmp; +- +- if ((tcl_ret = parse_krb5_flags(interp, argv[7], &princ->attributes)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing attributes"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[8], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing kvno"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->kvno = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[9], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing mkvno"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->mkvno = tmp; +- +- if ((tcl_ret = parse_str(interp, argv[10], &princ->policy)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing policy"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if(princ->policy != NULL) { +- if(!(princ->policy = strdup(princ->policy))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); +- } +- } +- +- if ((tcl_ret = parse_aux_attributes(interp, argv[11], +- &princ->aux_attributes)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing aux_attributes"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if (argc == 12) goto finished; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[12], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing max_renewable_life"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->max_renewable_life = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[13], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing last_success"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->last_success = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[14], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing last_failed"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->last_failed = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[15], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing fail_auth_count"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->fail_auth_count = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[16], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing n_key_data"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->n_key_data = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[17], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing n_tl_data"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->n_tl_data = tmp; +- +- if ((tcl_ret = parse_key_data(interp, argv[18], +- &princ->key_data, +- princ->n_key_data)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing key_data"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if ((tcl_ret = parse_tl_data(interp, argv[19], +- &princ->tl_data, +- princ->n_tl_data)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing tl_data"); +- retcode = TCL_ERROR; +- goto finished; +- } +- princ->n_tl_data = tmp; +- +-finished: +- Tcl_Free((char *) argv); +- *out_princ = princ; +- return retcode; +-} +- +- +-static void free_principal_ent(kadm5_principal_ent_t *princ) +-{ +- krb5_free_principal(context, (*princ)->principal); +- krb5_free_principal(context, (*princ)->mod_name); +- free((*princ)->policy); +- free(*princ); +- *princ = 0; +-} +- +-static Tcl_DString *unparse_policy_ent(kadm5_policy_ent_t policy) +-{ +- Tcl_DString *str, *tmp_dstring; +- char buf[20]; +- +- if (! (str = malloc(sizeof(*str)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_DStringInit(str); +- +- tmp_dstring = unparse_str(policy->policy); +- Tcl_DStringAppendElement(str, tmp_dstring->string); +- Tcl_DStringFree(tmp_dstring); +- free(tmp_dstring); +- +- sprintf(buf, "%ld", policy->pw_min_life); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%ld", policy->pw_max_life); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%ld", policy->pw_min_length); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%ld", policy->pw_min_classes); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%ld", policy->pw_history_num); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%ld", policy->policy_refcnt); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%d", policy->pw_max_fail); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%d", policy->pw_failcnt_interval); +- Tcl_DStringAppendElement(str, buf); +- +- sprintf(buf, "%d", policy->pw_lockout_duration); +- Tcl_DStringAppendElement(str, buf); +- +- return str; +-} +- +- +- +-static int parse_policy_ent(Tcl_Interp *interp, char *list, +- kadm5_policy_ent_t *out_policy) +-{ +- kadm5_policy_ent_t policy = 0; +- int tcl_ret; +- int argc; +- const char **argv; +- int tmp; +- int retcode = TCL_OK; +- +- if ((tcl_ret = Tcl_SplitList(interp, list, &argc, &argv)) != TCL_OK) { +- return tcl_ret; +- } +- +- if (argc != 7 && argc != 10) { +- Tcl_SetResult(interp, "wrong # args in policy structure", TCL_STATIC); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if (! (policy = malloc(sizeof *policy))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- if ((tcl_ret = parse_str(interp, argv[0], &policy->policy)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing policy name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if(policy->policy != NULL) { +- if (! (policy->policy = strdup(policy->policy))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- } +- +- /* +- * All of the numerical values parsed here are parsed into an +- * "int" and then assigned into the structure in case the actual +- * width of the field in the Kerberos structure is different from +- * the width of an integer. +- */ +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[1], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_min_life"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->pw_min_life = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[2], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_max_life"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->pw_max_life = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[3], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_min_length"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->pw_min_length = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[4], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_min_classes"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->pw_min_classes = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[5], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_history_num"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->pw_history_num = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[6], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing policy_refcnt"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->policy_refcnt = tmp; +- +- if (argc == 7) goto finished; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[7], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_max_fail"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->pw_max_fail = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[8], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_failcnt_interval"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->pw_failcnt_interval = tmp; +- +- if ((tcl_ret = Tcl_GetInt(interp, argv[9], &tmp)) +- != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_lockout_duration"); +- retcode = TCL_ERROR; +- goto finished; +- } +- policy->pw_lockout_duration = tmp; +- +-finished: +- Tcl_Free((char *) argv); +- *out_policy = policy; +- return retcode; +-} +- +- +-static void free_policy_ent(kadm5_policy_ent_t *policy) +-{ +- free((*policy)->policy); +- free(*policy); +- *policy = 0; +-} +- +-static Tcl_DString *unparse_keytype(krb5_enctype enctype) +-{ +- Tcl_DString *str; +- char buf[50]; +- +- if (! (str = malloc(sizeof(*str)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_DStringInit(str); +- +- switch (enctype) { +- /* XXX is this right? */ +- case ENCTYPE_NULL: Tcl_DStringAppend(str, "ENCTYPE_NULL", -1); break; +- default: +- sprintf(buf, "UNKNOWN KEYTYPE (0x%x)", enctype); +- Tcl_DStringAppend(str, buf, -1); +- break; +- } +- +- return str; +-} +- +- +-static Tcl_DString *unparse_keyblocks(krb5_keyblock *keyblocks, int num_keys) +-{ +- Tcl_DString *str; +- Tcl_DString *keytype; +- unsigned int i; +- int j; +- +- if (! (str = malloc(sizeof(*str)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- +- Tcl_DStringInit(str); +- +- for (j = 0; j < num_keys; j++) { +- krb5_keyblock *keyblock = &keyblocks[j]; +- +- Tcl_DStringStartSublist(str); +- +- keytype = unparse_keytype(keyblock->enctype); +- Tcl_DStringAppendElement(str, keytype->string); +- Tcl_DStringFree(keytype); +- free(keytype); +- if (keyblock->length == 0) { +- Tcl_DStringAppendElement(str, "0x00"); +- } +- else { +- Tcl_DStringAppendElement(str, "0x"); +- for (i = 0; i < keyblock->length; i++) { +- char buf[3]; +- sprintf(buf, "%02x", (int) keyblock->contents[i]); +- Tcl_DStringAppend(str, buf, -1); +- } +- } +- +- Tcl_DStringEndSublist(str); +- } +- +- +- return str; +-} +- +-enum init_type { INIT_NONE, INIT_PASS, INIT_CREDS }; +- +-static int _tcl_kadm5_init_any(enum init_type init_type, ClientData clientData, +- Tcl_Interp *interp, int argc, const char *argv[]) +-{ +- kadm5_ret_t ret; +- char *client_name, *pass, *service_name; +- int tcl_ret; +- krb5_ui_4 struct_version, api_version; +- const char *handle_var; +- void *server_handle; +- char *handle_name, *params_str; +- const char *whoami = argv[0]; +- kadm5_config_params params; +- +- argv++, argc--; +- +- kadm5_init_krb5_context(&context); +- +- if (argc != 7) { +- Tcl_AppendResult(interp, whoami, ": ", arg_error, 0); +- return TCL_ERROR; +- } +- +- if (((tcl_ret = parse_str(interp, argv[0], &client_name)) != TCL_OK) || +- ((tcl_ret = parse_str(interp, argv[1], &pass)) != TCL_OK) || +- ((tcl_ret = parse_str(interp, argv[2], &service_name)) != TCL_OK) || +- ((tcl_ret = parse_str(interp, argv[3], ¶ms_str)) != TCL_OK) || +- ((tcl_ret = parse_config_params(interp, params_str, ¶ms)) +- != TCL_OK) || +- ((tcl_ret = Tcl_GetInt(interp, argv[4], (int *) &struct_version)) != +- TCL_OK) || +- ((tcl_ret = Tcl_GetInt(interp, argv[5], (int *) &api_version)) != +- TCL_OK)) { +- return tcl_ret; +- } +- +- handle_var = argv[6]; +- +- if (! (handle_var && *handle_var)) { +- Tcl_SetResult(interp, "must specify server handle variable name", +- TCL_STATIC); +- return TCL_ERROR; +- } +- +- if (init_type == INIT_CREDS) { +- krb5_ccache cc; +- +- if (pass == NULL) { +- if ((ret = krb5_cc_default(context, &cc))) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- } else { +- if ((ret = krb5_cc_resolve(context, pass, &cc))) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- } +- +- ret = kadm5_init_with_creds(context, client_name, cc, service_name, +- ¶ms, struct_version, +- api_version, NULL, &server_handle); +- +- (void) krb5_cc_close(context, cc); +- } else +- ret = kadm5_init(context, client_name, pass, service_name, ¶ms, +- struct_version, api_version, NULL, &server_handle); +- +- /* The string fields of params are aliases into argv[3], but +- * params.keysalts is allocated, so clean it up. */ +- free(params.keysalts); +- +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- +- if ((tcl_ret = put_server_handle(interp, server_handle, &handle_name)) +- != TCL_OK) { +- return tcl_ret; +- } +- +- if (! Tcl_SetVar(interp, handle_var, handle_name, TCL_LEAVE_ERR_MSG)) { +- return TCL_ERROR; +- } +- +- set_ok(interp, "KADM5 API initialized."); +- return TCL_OK; +-} +- +-static int tcl_kadm5_init(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- return _tcl_kadm5_init_any(INIT_PASS, clientData, interp, argc, argv); +-} +- +-static int tcl_kadm5_init_with_creds(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- return _tcl_kadm5_init_any(INIT_CREDS, clientData, interp, argc, argv); +-} +- +-static int tcl_kadm5_destroy(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- kadm5_ret_t ret; +- int tcl_ret; +- +- GET_HANDLE(0, 0); +- +- ret = kadm5_destroy(server_handle); +- +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- +- if ((tcl_ret = remove_server_handle(interp, argv[-1])) != TCL_OK) { +- return tcl_ret; +- } +- +- set_ok(interp, "KADM5 API deinitialized."); +- return TCL_OK; +-} +- +-static int tcl_kadm5_create_principal(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- int tcl_ret; +- kadm5_ret_t ret; +- int retcode = TCL_OK; +- char *princ_string; +- kadm5_principal_ent_t princ = 0; +- krb5_int32 mask; +- char *pw; +-#ifdef OVERRIDE +- int override_qual; +-#endif +- +- GET_HANDLE(3, 0); +- +- if ((tcl_ret = parse_str(interp, argv[0], &princ_string)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing principal"); +- return tcl_ret; +- } +- +- if (princ_string && +- ((tcl_ret = parse_principal_ent(interp, princ_string, &princ)) +- != TCL_OK)) { +- return tcl_ret; +- } +- +- if ((tcl_ret = parse_principal_mask(interp, argv[1], &mask)) != TCL_OK) { +- retcode = tcl_ret; +- goto finished; +- } +- +- if ((tcl_ret = parse_str(interp, argv[2], &pw)) != TCL_OK) { +- retcode = tcl_ret; +- goto finished; +- } +-#ifdef OVERRIDE +- if ((tcl_ret = Tcl_GetBoolean(interp, argv[3], &override_qual)) != +- TCL_OK) { +- retcode = tcl_ret; +- goto finished; +- } +-#endif +- +-#ifdef OVERRIDE +- ret = kadm5_create_principal(server_handle, princ, mask, pw, +- override_qual); +-#else +- ret = kadm5_create_principal(server_handle, princ, mask, pw); +-#endif +- +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- goto finished; +- } +- else { +- set_ok(interp, "Principal created."); +- } +- +-finished: +- if (princ) { +- free_principal_ent(&princ); +- } +- return retcode; +-} +- +- +- +-static int tcl_kadm5_delete_principal(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- krb5_principal princ; +- krb5_error_code krb5_ret; +- kadm5_ret_t ret; +- int tcl_ret; +- char *name; +- +- GET_HANDLE(1, 0); +- +- if((tcl_ret = parse_str(interp, argv[0], &name)) != TCL_OK) +- return tcl_ret; +- if(name != NULL) { +- if ((krb5_ret = krb5_parse_name(context, name, &princ))) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing principal"); +- return TCL_ERROR; +- } +- } else princ = NULL; +- ret = kadm5_delete_principal(server_handle, princ); +- +- if(princ != NULL) +- krb5_free_principal(context, princ); +- +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- else { +- set_ok(interp, "Principal deleted."); +- return TCL_OK; +- } +-} +- +- +- +-static int tcl_kadm5_modify_principal(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- char *princ_string; +- kadm5_principal_ent_t princ = 0; +- int tcl_ret; +- krb5_int32 mask; +- int retcode = TCL_OK; +- kadm5_ret_t ret; +- +- GET_HANDLE(2, 0); +- +- if ((tcl_ret = parse_str(interp, argv[0], &princ_string)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing principal"); +- return tcl_ret; +- } +- +- if (princ_string && +- ((tcl_ret = parse_principal_ent(interp, princ_string, &princ)) +- != TCL_OK)) { +- return tcl_ret; +- } +- +- if ((tcl_ret = parse_principal_mask(interp, argv[1], &mask)) != TCL_OK) { +- retcode = TCL_ERROR; +- goto finished; +- } +- +- ret = kadm5_modify_principal(server_handle, princ, mask); +- +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- else { +- set_ok(interp, "Principal modified."); +- } +- +-finished: +- if (princ) { +- free_principal_ent(&princ); +- } +- return retcode; +-} +- +- +-static int tcl_kadm5_rename_principal(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- krb5_principal source, target; +- krb5_error_code krb5_ret; +- kadm5_ret_t ret; +- int retcode = TCL_OK; +- +- GET_HANDLE(2, 0); +- +- if ((krb5_ret = krb5_parse_name(context, argv[0], &source)) != 0) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing source"); +- return TCL_ERROR; +- } +- +- if ((krb5_ret = krb5_parse_name(context, argv[1], &target)) != 0) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing target"); +- krb5_free_principal(context, source); +- return TCL_ERROR; +- } +- +- ret = kadm5_rename_principal(server_handle, source, target); +- +- if (ret == KADM5_OK) { +- set_ok(interp, "Principal renamed."); +- } +- else { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- +- krb5_free_principal(context, source); +- krb5_free_principal(context, target); +- return retcode; +-} +- +- +- +-static int tcl_kadm5_chpass_principal(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- krb5_principal princ; +- char *pw; +-#ifdef OVERRIDE +- int override_qual; +-#endif +- krb5_error_code krb5_ret; +- int retcode = TCL_OK; +- kadm5_ret_t ret; +- +- GET_HANDLE(2, 0); +- +- if ((krb5_ret = krb5_parse_name(context, argv[0], &princ)) != 0) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing principal name"); +- return TCL_ERROR; +- } +- +- if (parse_str(interp, argv[1], &pw) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing password"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +-#ifdef OVERRIDE +- if (Tcl_GetBoolean(interp, argv[2], &override_qual) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing override_qual"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- ret = kadm5_chpass_principal(server_handle, +- princ, pw, override_qual); +-#else +- ret = kadm5_chpass_principal(server_handle, princ, pw); +-#endif +- +- if (ret == KADM5_OK) { +- set_ok(interp, "Password changed."); +- goto finished; +- } +- else { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- +-finished: +- krb5_free_principal(context, princ); +- return retcode; +-} +- +- +- +-static int tcl_kadm5_chpass_principal_util(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- krb5_principal princ; +- char *new_pw; +-#ifdef OVERRIDE +- int override_qual; +-#endif +- char *pw_ret, *pw_ret_var; +- char msg_ret[1024], *msg_ret_var; +- krb5_error_code krb5_ret; +- kadm5_ret_t ret; +- int retcode = TCL_OK; +- +- GET_HANDLE(4, 0); +- +- if ((krb5_ret = krb5_parse_name(context, argv[0], &princ)) != 0) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing principal name"); +- return TCL_ERROR; +- } +- +- if (parse_str(interp, argv[1], &new_pw) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing new password"); +- retcode = TCL_ERROR; +- goto finished; +- } +-#ifdef OVERRIDE +- if (Tcl_GetBoolean(interp, argv[2], &override_qual) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing override_qual"); +- retcode = TCL_ERROR; +- goto finished; +- } +-#endif +- if (parse_str(interp, argv[3], &pw_ret_var) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing pw_ret variable name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- if (parse_str(interp, argv[4], &msg_ret_var) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing msg_ret variable name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- ret = kadm5_chpass_principal_util(server_handle, princ, new_pw, +-#ifdef OVERRIDE +- override_qual, +-#endif +- pw_ret_var ? &pw_ret : 0, +- msg_ret_var ? msg_ret : 0, +- msg_ret_var ? sizeof(msg_ret) : 0); +- +- if (ret == KADM5_OK) { +- if (pw_ret_var && +- (! Tcl_SetVar(interp, pw_ret_var, pw_ret, +- TCL_LEAVE_ERR_MSG))) { +- Tcl_AppendElement(interp, "while setting pw_ret variable"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if (msg_ret_var && +- (! Tcl_SetVar(interp, msg_ret_var, msg_ret, +- TCL_LEAVE_ERR_MSG))) { +- Tcl_AppendElement(interp, +- "while setting msg_ret variable"); +- retcode = TCL_ERROR; +- goto finished; +- } +- set_ok(interp, "Password changed."); +- } +- else { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- +-finished: +- krb5_free_principal(context, princ); +- return retcode; +-} +- +- +- +-static int tcl_kadm5_randkey_principal(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- krb5_principal princ; +- krb5_keyblock *keyblocks; +- int num_keys; +- char *keyblock_var, *num_var, buf[50]; +- Tcl_DString *keyblock_dstring = 0; +- krb5_error_code krb5_ret; +- kadm5_ret_t ret; +- int retcode = TCL_OK; +- +- GET_HANDLE(3, 0); +- +- if ((krb5_ret = krb5_parse_name(context, argv[0], &princ)) != 0) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing principal name"); +- return TCL_ERROR; +- } +- +- if (parse_str(interp, argv[1], &keyblock_var) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing keyblock variable name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if (parse_str(interp, argv[2], &num_var) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing keyblock variable name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- ret = kadm5_randkey_principal(server_handle, +- princ, keyblock_var ? &keyblocks : 0, +- &num_keys); +- +- if (ret == KADM5_OK) { +- if (keyblock_var) { +- keyblock_dstring = unparse_keyblocks(keyblocks, num_keys); +- if (! Tcl_SetVar(interp, keyblock_var, +- keyblock_dstring->string, +- TCL_LEAVE_ERR_MSG)) { +- Tcl_AppendElement(interp, +- "while setting keyblock variable"); +- retcode = TCL_ERROR; +- goto finished; +- } +- } +- if (num_var) { +- sprintf(buf, "%d", num_keys); +- if (! Tcl_SetVar(interp, num_var, buf, +- TCL_LEAVE_ERR_MSG)) { +- Tcl_AppendElement(interp, +- "while setting num_keys variable"); +- } +- } +- set_ok(interp, "Key randomized."); +- } +- else { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- +-finished: +- krb5_free_principal(context, princ); +- if (keyblock_dstring) { +- Tcl_DStringFree(keyblock_dstring); +- free(keyblock_dstring); +- } +- return retcode; +-} +- +- +- +-static int tcl_kadm5_get_principal(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- krb5_principal princ; +- kadm5_principal_ent_rec ent; +- Tcl_DString *ent_dstring = 0; +- char *ent_var; +- char *name; +- krb5_error_code krb5_ret; +- int tcl_ret; +- kadm5_ret_t ret = -1; +- krb5_int32 mask; +- int retcode = TCL_OK; +- +- GET_HANDLE(3, 1); +- +- if((tcl_ret = parse_str(interp, argv[0], &name)) != TCL_OK) +- return tcl_ret; +- if(name != NULL) { +- if ((krb5_ret = krb5_parse_name(context, name, &princ)) != 0) { +- stash_error(interp, krb5_ret); +- Tcl_AppendElement(interp, "while parsing principal name"); +- return TCL_ERROR; +- } +- } else princ = NULL; +- +- if ((tcl_ret = parse_str(interp, argv[1], &ent_var)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing entry variable name"); +- retcode = TCL_ERROR; +- goto finished; +- } +- if ((tcl_ret = parse_principal_mask(interp, argv[2], &mask)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing principal mask"); +- retcode = TCL_ERROR; +- goto finished; +- } +- +- ret = kadm5_get_principal(server_handle, princ, ent_var ? &ent : 0, +- mask); +- +- if (ret == KADM5_OK) { +- if (ent_var) { +- ent_dstring = unparse_principal_ent(&ent, mask); +- if (! Tcl_SetVar(interp, ent_var, ent_dstring->string, +- TCL_LEAVE_ERR_MSG)) { +- Tcl_AppendElement(interp, +- "while setting entry variable"); +- retcode = TCL_ERROR; +- goto finished; +- } +- set_ok(interp, "Principal retrieved."); +- } +- } +- else { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- +-finished: +- if (ent_dstring) { +- Tcl_DStringFree(ent_dstring); +- free(ent_dstring); +- } +- if(princ != NULL) +- krb5_free_principal(context, princ); +- if (ret == KADM5_OK && ent_var && +- (ret = kadm5_free_principal_ent(server_handle, &ent)) && +- (retcode == TCL_OK)) { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- return retcode; +-} +- +-static int tcl_kadm5_create_policy(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- int tcl_ret; +- kadm5_ret_t ret; +- int retcode = TCL_OK; +- char *policy_string; +- kadm5_policy_ent_t policy = 0; +- krb5_int32 mask; +- +- GET_HANDLE(2, 0); +- +- if ((tcl_ret = parse_str(interp, argv[0], &policy_string)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing policy"); +- return tcl_ret; +- } +- +- if (policy_string && +- ((tcl_ret = parse_policy_ent(interp, policy_string, &policy)) +- != TCL_OK)) { +- return tcl_ret; +- } +- +- if ((tcl_ret = parse_policy_mask(interp, argv[1], &mask)) != TCL_OK) { +- retcode = tcl_ret; +- goto finished; +- } +- +- ret = kadm5_create_policy(server_handle, policy, mask); +- +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- goto finished; +- } +- else { +- set_ok(interp, "Policy created."); +- } +- +-finished: +- if (policy) { +- free_policy_ent(&policy); +- } +- return retcode; +-} +- +- +- +-static int tcl_kadm5_delete_policy(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- kadm5_ret_t ret; +- char *policy; +- +- GET_HANDLE(1, 0); +- +- if (parse_str(interp, argv[0], &policy) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing policy name"); +- return TCL_ERROR; +- } +- +- ret = kadm5_delete_policy(server_handle, policy); +- +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- else { +- set_ok(interp, "Policy deleted."); +- return TCL_OK; +- } +-} +- +- +- +-static int tcl_kadm5_modify_policy(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- char *policy_string; +- kadm5_policy_ent_t policy = 0; +- int tcl_ret; +- krb5_int32 mask; +- int retcode = TCL_OK; +- kadm5_ret_t ret; +- +- GET_HANDLE(2, 0); +- +- if ((tcl_ret = parse_str(interp, argv[0], &policy_string)) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing policy"); +- return tcl_ret; +- } +- +- if (policy_string && +- ((tcl_ret = parse_policy_ent(interp, policy_string, &policy)) +- != TCL_OK)) { +- return tcl_ret; +- } +- +- if ((tcl_ret = parse_policy_mask(interp, argv[1], &mask)) != TCL_OK) { +- retcode = TCL_ERROR; +- goto finished; +- } +- +- ret = kadm5_modify_policy(server_handle, policy, mask); +- +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- else { +- set_ok(interp, "Policy modified."); +- } +- +-finished: +- if (policy) { +- free_policy_ent(&policy); +- } +- return retcode; +-} +- +- +-static int tcl_kadm5_get_policy(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- kadm5_policy_ent_rec ent; +- Tcl_DString *ent_dstring = 0; +- char *policy; +- char *ent_var; +- kadm5_ret_t ret; +- int retcode = TCL_OK; +- +- GET_HANDLE(2, 1); +- +- if (parse_str(interp, argv[0], &policy) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing policy name"); +- return TCL_ERROR; +- } +- +- if (parse_str(interp, argv[1], &ent_var) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing entry variable name"); +- return TCL_ERROR; +- } +- +- ret = kadm5_get_policy(server_handle, policy, ent_var ? &ent : 0); +- +- if (ret == KADM5_OK) { +- if (ent_var) { +- ent_dstring = unparse_policy_ent(&ent); +- if (! Tcl_SetVar(interp, ent_var, ent_dstring->string, +- TCL_LEAVE_ERR_MSG)) { +- Tcl_AppendElement(interp, +- "while setting entry variable"); +- retcode = TCL_ERROR; +- goto finished; +- } +- set_ok(interp, "Policy retrieved."); +- } +- } +- else { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- +-finished: +- if (ent_dstring) { +- Tcl_DStringFree(ent_dstring); +- free(ent_dstring); +- } +- if (ent_var && ret == KADM5_OK && +- (ret = kadm5_free_policy_ent(server_handle, &ent)) && +- (retcode == TCL_OK)) { +- stash_error(interp, ret); +- retcode = TCL_ERROR; +- } +- return retcode; +-} +- +- +- +-static int tcl_kadm5_free_principal_ent(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- char *ent_name; +- kadm5_principal_ent_t ent; +- kadm5_ret_t ret; +- +- GET_HANDLE(1, 0); +- +- if (parse_str(interp, argv[0], &ent_name) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing entry name"); +- return TCL_ERROR; +- } +- +- if ((! ent_name) && +- (ret = kadm5_free_principal_ent(server_handle, 0))) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- else { +- Tcl_HashEntry *entry; +- +- if (strncmp(ent_name, "principal", sizeof("principal")-1)) { +- Tcl_AppendResult(interp, "invalid principal handle \"", +- ent_name, "\"", 0); +- return TCL_ERROR; +- } +- if (! struct_table) { +- if (! (struct_table = malloc(sizeof(*struct_table)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- Tcl_InitHashTable(struct_table, TCL_STRING_KEYS); +- } +- +- if (! (entry = Tcl_FindHashEntry(struct_table, ent_name))) { +- Tcl_AppendResult(interp, "principal handle \"", ent_name, +- "\" not found", 0); +- return TCL_ERROR; +- } +- +- ent = (kadm5_principal_ent_t) Tcl_GetHashValue(entry); +- +- ret = kadm5_free_principal_ent(server_handle, ent); +- if (ret != KADM5_OK) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- Tcl_DeleteHashEntry(entry); +- } +- set_ok(interp, "Principal freed."); +- return TCL_OK; +-} +- +- +-static int tcl_kadm5_free_policy_ent(ClientData clientData, +- Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- char *ent_name; +- kadm5_policy_ent_t ent; +- kadm5_ret_t ret; +- +- GET_HANDLE(1, 0); +- +- if (parse_str(interp, argv[0], &ent_name) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing entry name"); +- return TCL_ERROR; +- } +- +- if ((! ent_name) && +- (ret = kadm5_free_policy_ent(server_handle, 0))) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- else { +- Tcl_HashEntry *entry; +- +- if (strncmp(ent_name, "policy", sizeof("policy")-1)) { +- Tcl_AppendResult(interp, "invalid principal handle \"", +- ent_name, "\"", 0); +- return TCL_ERROR; +- } +- if (! struct_table) { +- if (! (struct_table = malloc(sizeof(*struct_table)))) { +- fprintf(stderr, "Out of memory!\n"); +- exit(1); /* XXX */ +- } +- Tcl_InitHashTable(struct_table, TCL_STRING_KEYS); +- } +- +- if (! (entry = Tcl_FindHashEntry(struct_table, ent_name))) { +- Tcl_AppendResult(interp, "policy handle \"", ent_name, +- "\" not found", 0); +- return TCL_ERROR; +- } +- +- ent = (kadm5_policy_ent_t) Tcl_GetHashValue(entry); +- +- if ((ret = kadm5_free_policy_ent(server_handle, ent)) != KADM5_OK) { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +- Tcl_DeleteHashEntry(entry); +- } +- set_ok(interp, "Policy freed."); +- return TCL_OK; +-} +- +- +-static int tcl_kadm5_get_privs(ClientData clientData, Tcl_Interp *interp, +- int argc, const char *argv[]) +-{ +- const char *set_ret; +- kadm5_ret_t ret; +- char *priv_var; +- long privs; +- +- GET_HANDLE(1, 0); +- +- if (parse_str(interp, argv[0], &priv_var) != TCL_OK) { +- Tcl_AppendElement(interp, "while parsing privs variable name"); +- return TCL_ERROR; +- } +- +- ret = kadm5_get_privs(server_handle, priv_var ? &privs : 0); +- +- if (ret == KADM5_OK) { +- if (priv_var) { +- Tcl_DString *str = unparse_privs(privs); +- set_ret = Tcl_SetVar(interp, priv_var, str->string, +- TCL_LEAVE_ERR_MSG); +- Tcl_DStringFree(str); +- free(str); +- if (! set_ret) { +- Tcl_AppendElement(interp, "while setting priv variable"); +- return TCL_ERROR; +- } +- } +- set_ok(interp, "Privileges retrieved."); +- return TCL_OK; +- } +- else { +- stash_error(interp, ret); +- return TCL_ERROR; +- } +-} +- +- +-void Tcl_kadm5_init(Tcl_Interp *interp) +-{ +- char buf[20]; +- +- Tcl_SetVar(interp, "KADM5_ADMIN_SERVICE", +- KADM5_ADMIN_SERVICE, TCL_GLOBAL_ONLY); +- Tcl_SetVar(interp, "KADM5_CHANGEPW_SERVICE", +- KADM5_CHANGEPW_SERVICE, TCL_GLOBAL_ONLY); +- (void) sprintf(buf, "%d", KADM5_STRUCT_VERSION); +- Tcl_SetVar(interp, "KADM5_STRUCT_VERSION", buf, TCL_GLOBAL_ONLY); +- (void) sprintf(buf, "%d", KADM5_API_VERSION_2); +- Tcl_SetVar(interp, "KADM5_API_VERSION_2", buf, TCL_GLOBAL_ONLY); +- (void) sprintf(buf, "%d", KADM5_API_VERSION_3); +- Tcl_SetVar(interp, "KADM5_API_VERSION_3", buf, TCL_GLOBAL_ONLY); +- (void) sprintf(buf, "%d", KADM5_API_VERSION_4); +- Tcl_SetVar(interp, "KADM5_API_VERSION_4", buf, TCL_GLOBAL_ONLY); +- (void) sprintf(buf, "%d", KADM5_API_VERSION_MASK); +- Tcl_SetVar(interp, "KADM5_API_VERSION_MASK", buf, TCL_GLOBAL_ONLY); +- (void) sprintf(buf, "%d", KADM5_STRUCT_VERSION_MASK); +- Tcl_SetVar(interp, "KADM5_STRUCT_VERSION_MASK", buf, +- TCL_GLOBAL_ONLY); +- +- Tcl_CreateCommand(interp, "kadm5_init", tcl_kadm5_init, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_init_with_creds", +- tcl_kadm5_init_with_creds, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_destroy", tcl_kadm5_destroy, 0, +- 0); +- Tcl_CreateCommand(interp, "kadm5_create_principal", +- tcl_kadm5_create_principal, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_delete_principal", +- tcl_kadm5_delete_principal, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_modify_principal", +- tcl_kadm5_modify_principal, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_rename_principal", +- tcl_kadm5_rename_principal, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_chpass_principal", +- tcl_kadm5_chpass_principal, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_chpass_principal_util", +- tcl_kadm5_chpass_principal_util, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_randkey_principal", +- tcl_kadm5_randkey_principal, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_get_principal", +- tcl_kadm5_get_principal, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_create_policy", +- tcl_kadm5_create_policy, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_delete_policy", +- tcl_kadm5_delete_policy, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_modify_policy", +- tcl_kadm5_modify_policy, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_get_policy", +- tcl_kadm5_get_policy, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_free_principal_ent", +- tcl_kadm5_free_principal_ent, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_free_policy_ent", +- tcl_kadm5_free_policy_ent, 0, 0); +- Tcl_CreateCommand(interp, "kadm5_get_privs", +- tcl_kadm5_get_privs, 0, 0); +-} +diff --git a/src/kadmin/testing/util/tcl_kadm5.h b/src/kadmin/testing/util/tcl_kadm5.h +deleted file mode 100644 +index 1f91a11a1..000000000 +--- a/src/kadmin/testing/util/tcl_kadm5.h ++++ /dev/null +@@ -1,3 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +- +-void Tcl_kadm5_init(Tcl_Interp *interp); +diff --git a/src/kadmin/testing/util/tcl_kadm5_syntax b/src/kadmin/testing/util/tcl_kadm5_syntax +deleted file mode 100644 +index 5f16e58e0..000000000 +--- a/src/kadmin/testing/util/tcl_kadm5_syntax ++++ /dev/null +@@ -1,57 +0,0 @@ +-Here's a brief summary of the syntax of the tcl versions of the +-kadm5 functions: +- +-string Can be a string or "null" which will turn into a null pointer +-principal_ent A 12-field list in the order of the principal_ent +- structure: {string number number number number string +- number mask number number string mask} +- It can also be "null", like a string, to indicate that +- a null structure pointer should be used. +-mask Either a number, representing the actual value of the +- mask, or a sequence of symbols in a list. Example: +- {PRINCIPAL ATTRIBUTES} is a valid principal mask. +-boolean "1", "0", "true", "false", etc. +-varname The name of a Tcl variable, or "null" to not assign. +-policy_ent Similar to principal_ent, but with seven fields, +- instead of 12. The first is a string, and the rest +- are numbers. +- +-init +- client_name:string pass:string service_name:string +- realm:string struct_version:int api_version:int +- server_handle_ret:varname +-destroy +- server_handle:string +-create_principal +- server_handle:string principal:principal_ent +- mask:principal_mask password:string +-delete_principal +- server_handle:string name:string +-modify_principal +- server_handle:string principal_principal_ent +- mask:principal_mask +-rename_principal +- server_handle:string source:string target:string +-chpass_principal +- server_handle:string name:string password:string +-chpass_principal_util +- server_handle:string name:string password:string +- pw_ret:varname msg_ret:varname +-randkey_principal +- server_handle:string name:string keyblock_var:varname +-get_principal [-struct] +- server_handle:string name:string princ_var:varname +-create_policy +- server_handle:string policy:policy_ent mask:policy_mask +-delete_policy +- server_handle:string name:string +-modify_policy +- server_handle:string policy:policy_ent mask:policy_mask +-get_policy [-struct] +- server_handle:string name:string policy_var:varname +-free_principal_ent +- server_handle:string handle:string +-free_policy_ent +- server_handle:string handle:string +-get_privs +- server_handle:string privs:priv_var +diff --git a/src/kadmin/testing/util/tcl_krb5_hash.c b/src/kadmin/testing/util/tcl_krb5_hash.c +deleted file mode 100644 +index 35c6bb0b3..000000000 +--- a/src/kadmin/testing/util/tcl_krb5_hash.c ++++ /dev/null +@@ -1,167 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* +- * All of the TCL krb5 functions which return (or place into output +- * variables) structures or pointers to structures that can't be +- * represented as tcl native types, do so by returning a handle for +- * the appropriate structure. The handle is a string of the form +- * "type$id", where "type" is the type of datum represented by the +- * handle and "id" is a unique identifier for it. This handle can +- * then be used later by the caller to refer to the object, and +- * internally to retrieve the actually datum from the appropriate hash +- * table. +- * +- * The functions in this file do four things: +- * +- * 1) Given a pointer to a datum and a string representing the type of +- * datum to which the pointer refers, create a new handle for the +- * datum, store the datum in the hash table using the new handle as +- * its key, and return the new handle. +- * +- * 2) Given a handle, locate and return the appropriate hash table +- * datum. +- * +- * 3) Given a handle, look through a table of types and unparse +- * functions to figure out what function to call to get a string +- * representation of the datum, call it with the appropriate pointer +- * (obtained from the hash table) as an argument, and return the +- * resulting string as the unparsed form of the datum. +- * +- * 4) Given a handle, remove that handle and its associated datum from +- * the hash table (but don't free it -- it's assumed to have already +- * been freed by the caller). +- */ +- +-#if HAVE_TCL_H +-#include +-#elif HAVE_TCL_TCL_H +-#include +-#endif +-#include +- +-#define SEP_STR "$" +- +-static char *memory_error = "out of memory"; +- +-/* +- * Right now, we're only using one hash table. However, at some point +- * in the future, we might decide to use a separate hash table for +- * every type. Therefore, I'm putting this function in as an +- * abstraction so it's the only thing we'll have to change if we +- * decide to do that. +- * +- * Also, this function allows us to put in just one place the code for +- * checking to make sure that the hash table exists and initializing +- * it if it doesn't. +- */ +- +-static TclHashTable *get_hash_table(Tcl_Interp *interp, +- char *type) +-{ +- static Tcl_HashTable *hash_table = 0; +- +- if (! hash_table) { +- if (! (hash_table = malloc(sizeof(*hash_table)))) { +- Tcl_SetResult(interp, memory_error, TCL_STATIC); +- return 0; +- } +- Tcl_InitHashTable(hash_table, TCL_STRING_KEYS); +- } +- return hash_table; +-} +- +-#define MAX_ID 999999999 +-#define ID_BUF_SIZE 10 +- +-static Tcl_HashEntry *get_new_handle(Tcl_Interp *interp, +- char *type) +-{ +- static unsigned long int id_counter = 0; +- Tcl_DString *handle; +- char int_buf[ID_BUF_SIZE]; +- +- if (! (handle = malloc(sizeof(*handle)))) { +- Tcl_SetResult(interp, memory_error, TCL_STATIC); +- return 0; +- } +- Tcl_DStringInit(handle); +- +- assert(id_counter <= MAX_ID); +- +- sprintf(int_buf, "%d", id_counter++); +- +- Tcl_DStringAppend(handle, type, -1); +- Tcl_DStringAppend(handle, SEP_STR, -1); +- Tcl_DStringAppend(handle, int_buf, -1); +- +- return handle; +-} +- +- +-Tcl_DString *tcl_krb5_create_object(Tcl_Interp *interp, +- char *type, +- ClientData datum) +-{ +- Tcl_HashTable *table; +- Tcl_DString *handle; +- Tcl_HashEntry *entry; +- int entry_created = 0; +- +- if (! (table = get_hash_table(interp, type))) { +- return 0; +- } +- +- if (! (handle = get_new_handle(interp, type))) { +- return 0; +- } +- +- if (! (entry = Tcl_CreateHashEntry(table, handle, &entry_created))) { +- Tcl_SetResult(interp, "error creating hash entry", TCL_STATIC); +- Tcl_DStringFree(handle); +- return TCL_ERROR; +- } +- +- assert(entry_created); +- +- Tcl_SetHashValue(entry, datum); +- +- return handle; +-} +- +-ClientData tcl_krb5_get_object(Tcl_Interp *interp, +- char *handle) +-{ +- char *myhandle, *id_ptr; +- Tcl_HashTable *table; +- Tcl_HashEntry *entry; +- +- if (! (myhandle = strdup(handle))) { +- Tcl_SetResult(interp, memory_error, TCL_STATIC); +- return 0; +- } +- +- if (! (id_ptr = index(myhandle, *SEP_STR))) { +- free(myhandle); +- Tcl_ResetResult(interp); +- Tcl_AppendResult(interp, "malformatted handle \"", handle, +- "\"", 0); +- return 0; +- } +- +- *id_ptr = '\0'; +- +- if (! (table = get_hash_table(interp, myhandle))) { +- free(myhandle); +- return 0; +- } +- +- free(myhandle); +- +- if (! (entry = Tcl_FindHashEntry(table, handle))) { +- Tcl_ResetResult(interp); +- Tcl_AppendResult(interp, "no object corresponding to handle \"", +- handle, "\"", 0); +- return 0; +- } +- +- return(Tcl_GetHashValue(entry)); +-} +diff --git a/src/kadmin/testing/util/test.c b/src/kadmin/testing/util/test.c +deleted file mode 100644 +index 37e49d680..000000000 +--- a/src/kadmin/testing/util/test.c ++++ /dev/null +@@ -1,38 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include "autoconf.h" +-#if HAVE_TCL_H +-#include +-#elif HAVE_TCL_TCL_H +-#include +-#endif +-#include "tcl_kadm5.h" +- +-#define _TCL_MAIN ((TCL_MAJOR_VERSION * 100 + TCL_MINOR_VERSION) >= 704) +- +-#if _TCL_MAIN +-int +-main(argc, argv) +- int argc; /* Number of command-line arguments. */ +- char **argv; /* Values of command-line arguments. */ +-{ +- Tcl_Main(argc, argv, Tcl_AppInit); +- return 0; /* Needed only to prevent compiler warning. */ +-} +-#else +-/* +- * The following variable is a special hack that allows applications +- * to be linked using the procedure "main" from the Tcl library. The +- * variable generates a reference to "main", which causes main to +- * be brought in from the library (and all of Tcl with it). +- */ +- +-extern int main(); +-int *tclDummyMainPtr = (int *) main; +-#endif +- +-int Tcl_AppInit(Tcl_Interp *interp) +-{ +- Tcl_kadm5_init(interp); +- +- return(TCL_OK); +-} +diff --git a/src/lib/kadm5/Makefile.in b/src/lib/kadm5/Makefile.in +index f94c0a7da..3ff71c42b 100644 +--- a/src/lib/kadm5/Makefile.in ++++ b/src/lib/kadm5/Makefile.in +@@ -1,6 +1,6 @@ + mydir=lib$(S)kadm5 + BUILDTOP=$(REL)..$(S).. +-SUBDIRS = clnt srv unit-test ++SUBDIRS = clnt srv + + ##DOSBUILDTOP = ..\.. + +@@ -98,6 +98,7 @@ generate-files-mac-prerecurse: includes + check-windows: + + clean-unix:: clean-libobjs ++ $(RM) t_kadm5clnt t_kadm5srv t_kadm5.o + + clean-windows:: + +diff --git a/src/lib/kadm5/unit-test/Makefile.in b/src/lib/kadm5/unit-test/Makefile.in +deleted file mode 100644 +index 68fa097ff..000000000 +--- a/src/lib/kadm5/unit-test/Makefile.in ++++ /dev/null +@@ -1,143 +0,0 @@ +-mydir=lib$(S)kadm5$(S)unit-test +-BUILDTOP=$(REL)..$(S)..$(S).. +-KDB_DEP_LIB=$(DL_LIB) $(THREAD_LINKOPTS) +- +-SRCS= init-test.c destroy-test.c handle-test.c iter-test.c setkey-test.c \ +- randkey-test.c lock-test.c +- +-# +-# The client-side test programs. +-# +- +-init-test: init-test.o $(KADMCLNT_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o init-test init-test.o \ +- $(KADMCLNT_LIBS) $(KRB5_BASE_LIBS) +- +-destroy-test: destroy-test.o $(KADMCLNT_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o destroy-test destroy-test.o \ +- $(KADMCLNT_LIBS) $(KRB5_BASE_LIBS) +- +-client-handle-test: client-handle-test.o $(KADMCLNT_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o client-handle-test client-handle-test.o \ +- $(KADMCLNT_LIBS) $(KRB5_BASE_LIBS) +- +-client-handle-test.o: handle-test.c +- $(CC) $(ALL_CFLAGS) -DCLIENT_TEST -o client-handle-test.o -c $(srcdir)/handle-test.c +- +-client-iter-test: iter-test.o $(KADMLCNT_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o client-iter-test iter-test.o \ +- $(KADMCLNT_LIBS) $(KRB5_BASE_LIBS) +- +-client-setkey-test: setkey-test.o $(KADMCLNT_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o client-setkey-test setkey-test.o \ +- $(KADMCLNT_LIBS) $(KRB5_BASE_LIBS) +- +-# +-# The server-side test programs. +-# +- +-randkey-test: randkey-test.o $(KADMSRV_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o randkey-test randkey-test.o \ +- $(KADMSRV_LIBS) $(KDB_DEP_LIB) $(KRB5_BASE_LIBS) +- +-server-handle-test: handle-test.o $(KADMSRV_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o server-handle-test handle-test.o \ +- $(KADMSRV_LIBS) $(KDB_DEP_LIB) $(KRB5_BASE_LIBS) +- +-lock-test: lock-test.o $(KADMSRV_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o lock-test lock-test.o \ +- $(KADMSRV_LIBS) $(KDB_DEP_LIB) $(KRB5_BASE_LIBS) +- +-server-iter-test: iter-test.o $(KADMSRV_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o server-iter-test iter-test.o \ +- $(KADMSRV_LIBS) $(KDB_DEP_LIB) $(KRB5_BASE_LIBS) +- +-server-setkey-test: setkey-test.o $(KADMSRV_DEPLIBS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o server-setkey-test setkey-test.o \ +- $(KADMSRV_LIBS) $(KDB_DEP_LIB) $(KRB5_BASE_LIBS) +- +-runenv.exp: Makefile +- $(RUN_SETUP); for i in $(RUN_VARS); do \ +- eval echo "set env\($$i\) \$$$$i"; done > runenv.exp +- +-# +-# The unit-test targets +-# +- +-check: check-@DO_TEST@ +- +-check-: +- @echo "+++" +- @echo "+++ WARNING: lib/kadm5 unit tests not run." +- @echo "+++ Either tcl, runtest, or Perl is unavailable." +- @echo "+++" +- +-check-ok unit-test: unit-test-client unit-test-server +- +-unit-test-client: unit-test-client-setup unit-test-client-body \ +- unit-test-client-cleanup +- +-unit-test-server: unit-test-server-setup unit-test-server-body \ +- unit-test-server-cleanup +- +-test-randkey: randkey-test +- $(ENV_SETUP) $(VALGRIND) ./randkey-test +- +-test-handle-server: server-handle-test +- $(ENV_SETUP) $(VALGRIND) ./server-handle-test +- +-test-handle-client: client-handle-test +- $(ENV_SETUP) $(VALGRIND) ./client-handle-test +- +-test-noauth: init-test +- $(ENV_SETUP) $(VALGRIND) ./init-test +- +-test-destroy: destroy-test +- $(ENV_SETUP) $(VALGRIND) ./destroy-test +- +-test-setkey-client: client-setkey-test +- $(ENV_SETUP) $(VALGRIND) ./client-setkey-test testkeys admin admin +- +-unit-test-client-setup: runenv.sh +- $(ENV_SETUP) $(VALGRIND) $(START_SERVERS) +- +-unit-test-client-cleanup: +- $(ENV_SETUP) $(STOP_SERVERS) +- +-unit-test-server-setup: runenv.sh +- $(ENV_SETUP) $(VALGRIND) $(START_SERVERS_LOCAL) +- +-unit-test-server-cleanup: +- $(ENV_SETUP) $(STOP_SERVERS_LOCAL) +- +-unit-test-client-body: site.exp test-noauth test-destroy test-handle-client \ +- test-setkey-client runenv.exp +- $(ENV_SETUP) $(RUNTEST) --tool api RPC=1 API=$(CLNTTCL) \ +- KINIT=$(BUILDTOP)/clients/kinit/kinit \ +- KDESTROY=$(BUILDTOP)/clients/kdestroy/kdestroy \ +- KADMIN_LOCAL=$(BUILDTOP)/kadmin/cli/kadmin.local \ +- PRIOCNTL_HACK=@PRIOCNTL_HACK@ VALGRIND="$(VALGRIND)" \ +- $(RUNTESTFLAGS) +- -mv api.log capi.log +- -mv api.sum capi.sum +- +-unit-test-server-body: site.exp test-handle-server lock-test +- $(ENV_SETUP) $(RUNTEST) --tool api RPC=0 API=$(SRVTCL) \ +- LOCKTEST=./lock-test \ +- KADMIN_LOCAL=$(BUILDTOP)/kadmin/cli/kadmin.local \ +- PRIOCNTL_HACK=@PRIOCNTL_HACK@ VALGRIND="$(VALGRIND)" \ +- $(RUNTESTFLAGS) +- -mv api.log sapi.log +- -mv api.sum sapi.sum +- +-clean: +- $(RM) init-test client_init.o init-test.o +- $(RM) destroy-test destroy-test.o +- $(RM) client-handle-test handle-test.o client-handle-test.o +- $(RM) client-iter-test iter-test.o +- $(RM) randkey-test randkey-test.o +- $(RM) server-handle-test handle-test.o +- $(RM) lock-test lock-test.o +- $(RM) server-iter-test iter-test.o +- $(RM) server-setkey-test client-setkey-test setkey-test.o +- $(RM) *.log *.plog *.sum *.psum unit-test-log.* runenv.exp +diff --git a/src/lib/kadm5/unit-test/api.2/crte-policy.exp b/src/lib/kadm5/unit-test/api.2/crte-policy.exp +deleted file mode 100644 +index 4902ea59f..000000000 +--- a/src/lib/kadm5/unit-test/api.2/crte-policy.exp ++++ /dev/null +@@ -1,927 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-# Description: (1) Fails for mask with undefined bit set. +-# 01/24/94: pshuang: untried. +-test "create-policy 1" +-proc test1 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete policy \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- 0xF01000 +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test1 +- +-# Description: (2) Fails if caller connected with CHANGEPW_SERVICE. +-test "create-policy 2" +-proc test2 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy"; +- return +- } +-} +-if {$RPC} { test2 } +- +-# Description: (3) Fails for mask without POLICY bit set. +-# 01/24/94: pshuang: untried. +-test "create-policy 3" +-proc test3 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete policy \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- 0x000000 +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test3 +- +-# Description: (5) Fails for invalid policy name. +-# 01/24/94: pshuang: untried. +-test "create-policy 5" +-proc test5 {} { +- global test +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/"] \ +- {KADM5_POLICY} +- } $test] "BAD_POLICY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test5 +- +-# Description: (6) Fails for existing policy name. +-test "create-policy 6" +-proc test6 {} { +- global test +-# set prms_id 777 +-# setup_xfail {*-*-*} $prms_id +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_policy $server_handle [simple_policy test-pol] \ +- {KADM5_POLICY} +- } "DUP" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test6 +- +-# Description: (7) Fails for null policy name. +-# 01/24/94: pshuang: untried. +-test "create-policy 7" +-proc test7 {} { +- global test +-# set prms_id 1977 +-# setup_xfail {*-*-*} $prms_id +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_policy $server_handle [simple_policy null] \ +- {KADM5_POLICY} +- } "EINVAL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test7 +- +-# Description: (8) Fails for empty-string policy name. +-test "create-policy 8" +-proc test8 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_policy $server_handle [simple_policy ""] \ +- {KADM5_POLICY} +- } "BAD_POLICY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test8 +- +-# Description: (9) Accepts 0 for pw_min_life. +-test "create-policy 9" +-proc test9 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_MIN_LIFE} +- } $test]]} { +- fail "$test: create failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 1\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test9 +- +-# Description: (10) Accepts non-zero for pw_min_life. +-test "create-policy 10" +-proc test10 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 32 0 0 0 0 0 } \ +- {KADM5_POLICY KADM5_PW_MIN_LIFE} +- } $test]]} { +- fail "$test" +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 1\n" +- expect { +- -re "32\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test10 +- +-# Description: (11) Accepts 0 for pw_max_life. +-test "create-policy 11" +-proc test11 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_MAX_LIFE} +- } $test]]} { +- fail "$test" +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 2\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test11 +- +-# Description: (12) Accepts non-zero for pw_max_life. +-test "create-policy 12" +-proc test12 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 32 0 0 0 0 } \ +- {KADM5_POLICY KADM5_PW_MAX_LIFE} +- } $test]]} { +- fail "$test" +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 2\n" +- expect { +- -re "32\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test12 +- +-# Description: (13) Rejects 0 for pw_min_length. +-test "create-policy 13" +-proc test13 {} { +- global test +- global prompt +- +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_MIN_LENGTH} +- } $test] "BAD_LENGTH" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test13 +- +-# Description: (14) Accepts non-zero for pw_min_length. +-test "create-policy 14" +-proc test14 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 8 0 0 0 } \ +- {KADM5_POLICY KADM5_PW_MIN_LENGTH} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 3\n" +- expect { +- -re "8\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test14 +- +-# Description: (15) Rejects 0 for pw_min_classes. +-test "create-policy 15" +-proc test15 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_MIN_CLASSES} +- } $test] "BAD_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test15 +- +-# Description: (16) Accepts 1 for pw_min_classes. +-test "create-policy 16" +-proc test16 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 1 0 0 } \ +- {KADM5_POLICY KADM5_PW_MIN_CLASSES} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 4\n" +- expect { +- -re "1\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test16 +- +-# Description: (17) Accepts 4 for pw_min_classes. +-test "create-policy 17" +-proc test17 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 5 0 0} \ +- {KADM5_POLICY KADM5_PW_MIN_CLASSES} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 4\n" +- expect { +- -re "5\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test17 +- +-# Description: (18) Rejects 5 for pw_min_classes. +-test "create-policy 18" +-proc test18 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 6 0 0} \ +- {KADM5_POLICY KADM5_PW_MIN_CLASSES} +- } $test] "BAD_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test18 +- +-# Description: (19) Rejects 0 for pw_history_num. +-test "create-policy 19" +-proc test19 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_HISTORY_NUM} +- } $test] "BAD_HISTORY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test19 +- +-# Description: (20) Accepts 1 for pw_history_num. +-test "create-policy 20" +-proc test20 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 0 1 0} \ +- {KADM5_POLICY KADM5_PW_HISTORY_NUM} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 5\n" +- expect { +- -re "1\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test20 +- +-# Description: (21) Accepts 10 for pw_history_num. +-test "create-policy 21" +-proc test21 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 0 10 0} \ +- {KADM5_POLICY KADM5_PW_HISTORY_NUM} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 5\n" +- expect { +- -re "10\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test21 +- +-# Description: (22) Fails for user with no access bits. +-test "create-policy 22" +-proc test22 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test22 +- +-# Description: (23) Fails for user with "get" but not "add". +-test "create-policy 23" +-proc test23 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test23 +- +-# Description: (24) Fails for user with "modify" but not "add". +-# 01/24/94: pshuang: untried. +-test "create-policy 24" +-proc test24 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test24 +- +-# Description: (25) Fails for user with "delete" but not "add". +-# 01/24/94: pshuang: untried. +-test "create-policy 25" +-proc test25 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test25 +- +-# Description: Succeeds for user with "add". +-test "create-policy 26" +-proc test26 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test26 +- +-# Description: Succeeds for user with "get" and "add". +-# 01/24/94: pshuang: untried. +-test "create-policy 27" +-proc test27 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/get-add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test27 +- +-# Description: (28) Rejects null policy argument. +-# 01/24/94: pshuang: untried. +-test "create-policy 28" +-proc test28 {} { +- global test +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_policy $server_handle null {KADM5_POLICY} +- } "EINVAL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test28 +- +-test "create-policy 30" +-proc test30 {} { +- global test +- one_line_fail_test [format { +- kadm5_create_policy null [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "BAD_SERVER_HANDLE" +-} +-test30 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.2/get-policy.exp b/src/lib/kadm5/unit-test/api.2/get-policy.exp +deleted file mode 100644 +index 83aef80e8..000000000 +--- a/src/lib/kadm5/unit-test/api.2/get-policy.exp ++++ /dev/null +@@ -1,199 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "get-policy 3" +-proc test3 {} { +- global test +-# set prms_id 744 +-# setup_xfail {*-*-*} $prms_id +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test {kadm5_get_policy $server_handle "" p} "BAD_POLICY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test3 +- +-test "get-policy 6" +-proc test6 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test {kadm5_get_policy $server_handle test-pol p} \ +- "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } test6 +- +-test "get-policy 7" +-proc test7 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test {kadm5_get_policy $server_handle test-pol p} \ +- "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } test7 +- +-test "get-policy 11" +-proc test11 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/get-pol StupidAdmin $KADM5_ADMIN_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_get_policy $server_handle test-pol p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test11 +- +-test "get-policy 12" +-proc test12 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/get-pol StupidAdmin \ +- $KADM5_CHANGEPW_SERVICE null $KADM5_STRUCT_VERSION \ +- $KADM5_API_VERSION_2 server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_policy $server_handle test-pol-nopw p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test12 +- +-test "get-policy 15" +-proc test15 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/pol StupidAdmin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_policy $server_handle test-pol-nopw p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test15 +- +-test "get-policy 16" +-proc test16 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/pol StupidAdmin $KADM5_CHANGEPW_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_policy $server_handle test-pol-nopw p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test16 +- +-test "get-policy 17" +-proc test17 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_get_policy $server_handle test-pol p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test17 +- +-test "get-policy 18" +-proc test18 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test {kadm5_get_policy $server_handle test-pol p} \ +- "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } test18 +- +-test "get-policy 21" +-proc test21 {} { +- global test +- +- one_line_fail_test {kadm5_get_policy null "pol1" p} "BAD_SERVER_HANDLE" +-} +-test21 +diff --git a/src/lib/kadm5/unit-test/api.2/mod-policy.exp b/src/lib/kadm5/unit-test/api.2/mod-policy.exp +deleted file mode 100644 +index 904edca8a..000000000 +--- a/src/lib/kadm5/unit-test/api.2/mod-policy.exp ++++ /dev/null +@@ -1,675 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "modify-policy 2" +-proc test2 {} { +- global test +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] "AUTH_MODIFY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test2 } +- +-test "modify-policy 8" +-proc test8 {} { +- global test +-# set prms_id 744 +-# setup_xfail {*-*-*} $prms_id +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_modify_policy $server_handle [simple_policy ""] \ +- {KADM5_PW_MAX_LIFE} +- } "BAD_POLICY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test8 +- +-test "modify-policy 9" +-proc test9 {} { +- global test +- global prompt +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MIN_LIFE} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 1\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test9 +- +-test "modify-policy 10" +-proc test10 {} { +- global test +- global prompt +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 32 0 0 0 0 0} \ +- {KADM5_PW_MIN_LIFE} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 1\n" +- expect { +- -re "32\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test10 +- +- +-test "modify-policy 11" +-proc test11 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 2\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test11 +- +-test "modify-policy 12" +-proc test12 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 32 0 0 0 0} \ +- {KADM5_PW_MAX_LIFE} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 2\n" +- expect { +- -re "32\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test12 +- +-test "modify-policy 13" +-proc test13 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MIN_LENGTH} +- } $test] "BAD_LENGTH" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test13 +- +-test "modify-policy 14" +-proc test14 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 8 0 0 0} \ +- {KADM5_PW_MIN_LENGTH} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 3\n" +- expect { +- -re "8\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test14 +- +-test "modify-policy 15" +-proc test15 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MIN_CLASSES} +- } $test] "BAD_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test15 +- +-test "modify-policy 16" +-proc test16 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 1 0 0} \ +- {KADM5_PW_MIN_CLASSES} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 4\n" +- expect { +- -re "1\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test16 +- +-test "modify-policy 17" +-proc test17 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 5 0 0} \ +- {KADM5_PW_MIN_CLASSES} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 4\n" +- expect { +- -re "5\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test17 +- +-test "modify-policy 18" +-proc test18 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 6 0 0} \ +- {KADM5_PW_MIN_CLASSES} +- } $test] "BAD_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test18 +- +-test "modify-policy 19" +-proc test19 {} { +- global test +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_HISTORY_NUM} +- } $test] "BAD_HISTORY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test19 +- +-test "modify-policy 20" +-proc test20 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 0 1 0} \ +- {KADM5_PW_HISTORY_NUM} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 5\n" +- expect { +- -re "1\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test20 +- +-test "modify-policy 21" +-proc test21 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 0 10 0} \ +- {KADM5_PW_HISTORY_NUM} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 5\n" +- expect { +- -re "10\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test21 +- +-test "modify-policy 22" +-proc test22 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] "AUTH_MODIFY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test22 +- +-test "modify-policy 23" +-proc test23 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] "AUTH_MODIFY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test23 +- +-test "modify-policy 26" +-proc test26 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_2 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test26 +- +-test "modify-policy 30" +-proc test30 {} { +- global test +- +- one_line_fail_test [format { +- kadm5_modify_policy null [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] "BAD_SERVER_HANDLE" +-} +-test30 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/chpass-principal-v2.exp b/src/lib/kadm5/unit-test/api.current/chpass-principal-v2.exp +deleted file mode 100644 +index 740425c69..000000000 +--- a/src/lib/kadm5/unit-test/api.current/chpass-principal-v2.exp ++++ /dev/null +@@ -1,68 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "chpass-principal 200" +-proc test200 {} { +- global test prompt +- +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal "$test/a"]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- # I'd like to specify a long list of keysalt tuples and make sure +- # that chpass does the right thing, but we can only use those +- # enctypes that krbtgt has a key for: the AES enctypes, according to +- # the prototype kdc.conf. +- if {! [cmd [format { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_chpass_principal $server_handle "%s/a" newpassword +- } $test]]} { +- perror "$test: unexpected failure in chpass_principal" +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" p \ +- {KADM5_PRINCIPAL_NORMAL_MASK KADM5_KEY_DATA} +- } $test]]} { +- perror "$test: unexpected failure in get_principal" +- } +- send "lindex \$p 16\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" { set num_keys $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting num_keys" +- return +- } +- eof { +- error_and_restart "$test: eof getting num_keys" +- return +- } +- } +- +- # XXX Perhaps I should actually check the key type returned. +- if {$num_keys == 5} { +- pass "$test" +- } else { +- fail "$test: $num_keys keys, should be 5" +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test200 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/chpass-principal.exp b/src/lib/kadm5/unit-test/api.current/chpass-principal.exp +deleted file mode 100644 +index 47a19dc20..000000000 +--- a/src/lib/kadm5/unit-test/api.current/chpass-principal.exp ++++ /dev/null +@@ -1,176 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "chpass-principal 180" +-proc test180 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal_pol "$test/a" once-a-min]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_chpass_principal $server_handle "%s/a" FoobarBax +- } $test] +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } { test180 } +- +-test "chpass-principal 180.5" +-proc test1805 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal_pol "$test/a" once-a-min]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_chpass_principal $server_handle "%s/a" FoobarBax +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } { test1805 } +- +-# +-# admin with changepw service tickets try to change other principals +-# password, fails with AUTH error +-test "chpass-principal 180.625" +-proc test180625 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_chpass_principal $server_handle "%s/a" password +- } $test] "AUTH" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test180625 } +- +-test "chpass-principal 180.75" +-proc test18075 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal_pol "$test/a" once-a-min]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_chpass_principal $server_handle "%s/a" Foobar +- } $test] "AUTH_CHANGEPW" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } { test18075 } +- +-test "chpass-principal 182" +-proc test182 {} { +- global test +- +- if { ! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_chpass_principal $server_handle kadmin/history password +- } "PROTECT" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test182 +- +-test "chpass-principal 183" +-proc test183 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if { ! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_chpass_principal null "%s/a" password +- } $test] "BAD_SERVER_HANDLE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test183 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/crte-policy.exp b/src/lib/kadm5/unit-test/api.current/crte-policy.exp +deleted file mode 100644 +index 7e1eda63f..000000000 +--- a/src/lib/kadm5/unit-test/api.current/crte-policy.exp ++++ /dev/null +@@ -1,927 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-# Description: (1) Fails for mask with undefined bit set. +-# 01/24/94: pshuang: untried. +-test "create-policy 1" +-proc test1 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete policy \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- 0xF01000 +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test1 +- +-# Description: (2) Fails if caller connected with CHANGEPW_SERVICE. +-test "create-policy 2" +-proc test2 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy"; +- return +- } +-} +-if {$RPC} { test2 } +- +-# Description: (3) Fails for mask without POLICY bit set. +-# 01/24/94: pshuang: untried. +-test "create-policy 3" +-proc test3 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete policy \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- 0x000000 +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test3 +- +-# Description: (5) Fails for invalid policy name. +-# 01/24/94: pshuang: untried. +-test "create-policy 5" +-proc test5 {} { +- global test +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/"] \ +- {KADM5_POLICY} +- } $test] "BAD_POLICY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test5 +- +-# Description: (6) Fails for existing policy name. +-test "create-policy 6" +-proc test6 {} { +- global test +-# set prms_id 777 +-# setup_xfail {*-*-*} $prms_id +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_policy $server_handle [simple_policy test-pol] \ +- {KADM5_POLICY} +- } "DUP" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test6 +- +-# Description: (7) Fails for null policy name. +-# 01/24/94: pshuang: untried. +-test "create-policy 7" +-proc test7 {} { +- global test +-# set prms_id 1977 +-# setup_xfail {*-*-*} $prms_id +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_policy $server_handle [simple_policy null] \ +- {KADM5_POLICY} +- } "EINVAL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test7 +- +-# Description: (8) Fails for empty-string policy name. +-test "create-policy 8" +-proc test8 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_policy $server_handle [simple_policy ""] \ +- {KADM5_POLICY} +- } "BAD_POLICY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test8 +- +-# Description: (9) Accepts 0 for pw_min_life. +-test "create-policy 9" +-proc test9 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_MIN_LIFE} +- } $test]]} { +- fail "$test: create failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 1\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test9 +- +-# Description: (10) Accepts non-zero for pw_min_life. +-test "create-policy 10" +-proc test10 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 32 0 0 0 0 0 } \ +- {KADM5_POLICY KADM5_PW_MIN_LIFE} +- } $test]]} { +- fail "$test" +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 1\n" +- expect { +- -re "32\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test10 +- +-# Description: (11) Accepts 0 for pw_max_life. +-test "create-policy 11" +-proc test11 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_MAX_LIFE} +- } $test]]} { +- fail "$test" +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 2\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test11 +- +-# Description: (12) Accepts non-zero for pw_max_life. +-test "create-policy 12" +-proc test12 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 32 0 0 0 0 } \ +- {KADM5_POLICY KADM5_PW_MAX_LIFE} +- } $test]]} { +- fail "$test" +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 2\n" +- expect { +- -re "32\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test12 +- +-# Description: (13) Rejects 0 for pw_min_length. +-test "create-policy 13" +-proc test13 {} { +- global test +- global prompt +- +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_MIN_LENGTH} +- } $test] "BAD_LENGTH" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test13 +- +-# Description: (14) Accepts non-zero for pw_min_length. +-test "create-policy 14" +-proc test14 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 8 0 0 0 } \ +- {KADM5_POLICY KADM5_PW_MIN_LENGTH} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 3\n" +- expect { +- -re "8\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test14 +- +-# Description: (15) Rejects 0 for pw_min_classes. +-test "create-policy 15" +-proc test15 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_MIN_CLASSES} +- } $test] "BAD_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test15 +- +-# Description: (16) Accepts 1 for pw_min_classes. +-test "create-policy 16" +-proc test16 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 1 0 0 } \ +- {KADM5_POLICY KADM5_PW_MIN_CLASSES} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 4\n" +- expect { +- -re "1\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test16 +- +-# Description: (17) Accepts 4 for pw_min_classes. +-test "create-policy 17" +-proc test17 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 5 0 0} \ +- {KADM5_POLICY KADM5_PW_MIN_CLASSES} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 4\n" +- expect { +- -re "5\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test17 +- +-# Description: (18) Rejects 5 for pw_min_classes. +-test "create-policy 18" +-proc test18 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 6 0 0} \ +- {KADM5_POLICY KADM5_PW_MIN_CLASSES} +- } $test] "BAD_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test18 +- +-# Description: (19) Rejects 0 for pw_history_num. +-test "create-policy 19" +-proc test19 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY KADM5_PW_HISTORY_NUM} +- } $test] "BAD_HISTORY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test19 +- +-# Description: (20) Accepts 1 for pw_history_num. +-test "create-policy 20" +-proc test20 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 0 1 0} \ +- {KADM5_POLICY KADM5_PW_HISTORY_NUM} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retreuve policy" +- return +- } +- send "lindex \$policy 5\n" +- expect { +- -re "1\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test20 +- +-# Description: (21) Accepts 10 for pw_history_num. +-test "create-policy 21" +-proc test21 {} { +- global test +- global prompt +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_policy $server_handle {"%s/a" 0 0 0 0 10 0} \ +- {KADM5_POLICY KADM5_PW_HISTORY_NUM} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 5\n" +- expect { +- -re "10\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test21 +- +-# Description: (22) Fails for user with no access bits. +-test "create-policy 22" +-proc test22 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test22 +- +-# Description: (23) Fails for user with "get" but not "add". +-test "create-policy 23" +-proc test23 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test23 +- +-# Description: (24) Fails for user with "modify" but not "add". +-# 01/24/94: pshuang: untried. +-test "create-policy 24" +-proc test24 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test24 +- +-# Description: (25) Fails for user with "delete" but not "add". +-# 01/24/94: pshuang: untried. +-test "create-policy 25" +-proc test25 {} { +- global test +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test25 +- +-# Description: Succeeds for user with "add". +-test "create-policy 26" +-proc test26 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test26 +- +-# Description: Succeeds for user with "get" and "add". +-# 01/24/94: pshuang: untried. +-test "create-policy 27" +-proc test27 {} { +- global test +- +- if {! (( ! [policy_exists "$test/a"]) || +- [delete_policy "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/get-add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_create_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test27 +- +-# Description: (28) Rejects null policy argument. +-# 01/24/94: pshuang: untried. +-test "create-policy 28" +-proc test28 {} { +- global test +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_policy $server_handle null {KADM5_POLICY} +- } "EINVAL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test28 +- +-test "create-policy 30" +-proc test30 {} { +- global test +- one_line_fail_test [format { +- kadm5_create_policy null [simple_policy "%s/a"] \ +- {KADM5_POLICY} +- } $test] "BAD_SERVER_HANDLE" +-} +-test30 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/crte-principal.exp b/src/lib/kadm5/unit-test/api.current/crte-principal.exp +deleted file mode 100644 +index d6d6809ec..000000000 +--- a/src/lib/kadm5/unit-test/api.current/crte-principal.exp ++++ /dev/null +@@ -1,1336 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-#test "create-principal 1" +-# +-#proc test1 {} { +-# global test +-# begin_dump +-# one_line_fail_test [format { +-# kadm5_create_principal $server_handle \ +-# [simple_principal "%s/a"] {KADM5_PRINCIPAL} "%s/a" +-# } $test $test] "NOT_INIT" +-# end_dump_compare "no-diffs" +-#} +-#test1 +- +-# v2 create-principal 3 test, to avoid name conflict +-test "create-principal 1" +-proc test1 {} { +- global test +-# set prms_id 777 +-# setup_xfail {*-*-*} $prms_id +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} null +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test1 +- +-test "create-principal 2" +- +-proc test2 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_create_principal $server_handle null \ +- {KADM5_PRINCIPAL} testpass +- } "EINVAL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test2 +- +-test "create-principal 4" +-proc test4 {} { +- global test +- +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} "" +- } $test] "_Q_TOOSHORT" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test4 +- +-test "create-principal 5" +-proc test5 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle \ +- [simple_principal "%s/a"] {0x100001} "%s/a" +- } $test $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test5 +- +-test "create-principal 6" +-proc test6 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_LAST_PWD_CHANGE} "%s/a" +- } $test $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test6 +- +-test "create-principal 7" +-proc test7 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_MOD_TIME} "%s/a" +- } $test $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test7 +- +-test "create-principal 8" +-proc test8 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_MOD_NAME} "%s/a" +- } $test $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test8 +- +-test "create-principal 9" +-proc test9 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_MKVNO} "%s/a" +- } $test $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test9 +- +-test "create-principal 10" +-proc test10 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_AUX_ATTRIBUTES} "%s/a" +- } $test $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test10 +- +-test "create-principal 11" +-proc test11 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_POLICY_CLR} "%s/a" +- } $test $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test11 +- +-test "create-principal 12" +-proc test12 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +- +-} +-if {$RPC} { test12 } +- +-test "create-principal 13" +-proc test13 {} { +- global test +- begin_dump +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-if {$RPC} { test13 } +- +-test "create-principal 14" +-proc test14 {} { +- global test +- begin_dump +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-if {$RPC} { test14 } +- +-test "create-principal 15" +-proc test15 {} { +- global test +- begin_dump +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-if {$RPC} { test15 } +- +-test "create-principal 16" +-proc test16 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test] "AUTH_ADD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-if {$RPC} { test16 } +- +-test "create-principal 17" +-proc test17 {} { +- global test +- +- begin_dump +- if {! (( [principal_exists "$test/a"]) || [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test] "DUP" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test17 +- +-test "create-principal 18" +-proc test18 {} { +- global test +- +- begin_dump +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle \ +- [princ_w_pol "%s/a" test-pol] \ +- {KADM5_PRINCIPAL KADM5_POLICY} tP +- } $test] "_Q_TOOSHORT" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test18 +- +-test "create-principal 19" +-proc test19 {} { +- global test +- +- begin_dump +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle \ +- [princ_w_pol "%s/a" test-pol] \ +- {KADM5_PRINCIPAL KADM5_POLICY} testpassword +- } $test] "_Q_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test19 +- +-test "create-principal 20" +-proc test20 {} { +- global test +- +- begin_dump +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_create_principal $server_handle \ +- [princ_w_pol "%s/a" test-pol] \ +- {KADM5_PRINCIPAL KADM5_POLICY} Abyssinia +- } $test] "_Q_DICT" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test20 +- +-test "create-principal 21" +-proc test21 {} { +- global test +- +- begin_dump +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_create_principal $server_handle \ +- [princ_w_pol "%s/a" non-existant-pol] \ +- {KADM5_PRINCIPAL KADM5_POLICY} NotinTheDictionary +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- end_dump_compare "no-diffs" +-} +-test21 +- +-test "create-principal 23" +-proc test23 {} { +- global test +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- one_line_succeed_test \ +- [format {kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK} $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test23 +- +-test "create-principal 24" +-proc test24 {} { +- global test +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/rename admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- one_line_succeed_test \ +- [format {kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK} $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test24 } +- +- +-test "create-principal 28" +-proc test28 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- +- if {! [cmd [format { +- kadm5_create_principal $server_handle \ +- [princ_w_pol "%s/a" test-pol] \ +- {KADM5_PRINCIPAL KADM5_POLICY} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return +- } +- send "lindex \$principal 10\n" +- expect { +- -re "test-pol.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test28 +- +-test "create-principal 29" +-proc test29 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL KADM5_PRINC_EXPIRE_TIME} \ +- inTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 1\n" +- expect { +- -re "0.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test29 +- +-test "create-principal 30" +-proc test30 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL KADM5_PW_EXPIRATION} \ +- NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 3\n" +- expect { +- -re "0.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test30 +- +-test "create-principal 31" +-proc test31 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle \ +- [princ_w_pol "%s/a" test-pol-nopw] \ +- {KADM5_PRINCIPAL KADM5_POLICY \ +- KADM5_PW_EXPIRATION} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 3\n" +- expect { +- -re "0.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test31 +- +-test "create-principal 32" +-proc test32 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle \ +- [princ_w_pol "%s/a" test-pol] \ +- {KADM5_PRINCIPAL KADM5_POLICY \ +- KADM5_PW_EXPIRATION} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- if { ! [cmd {kadm5_get_policy $server_handle test-pol policy}]} { +- error_and_restart "$test: cannot retrieve policy" +- return +- } +- +- send "lindex \$principal 6\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set mod_date $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting mod_date" +- return +- } +- eof { +- error_and_restart "$test: eof getting mod_date" +- return +- } +- } +- +- send "lindex \$principal 3\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_expire $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_expire" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_expire" +- return +- } +- } +- +- send "lindex \$policy 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_max_life $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_max_life" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_max_life" +- return +- } +- } +- if { $pw_expire != 0 } { +- fail "$test: pw_expire $pw_expire should be 0" +- return +- } else { +- pass "$test" +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test32 +- +-test "create-principal 33" +-proc test33 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle \ +- {"%s/a" 0 0 1234 0 null 0 0 0 0 null 0} \ +- {KADM5_PRINCIPAL KADM5_PW_EXPIRATION} \ +- NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 3\n" +- expect { +- -re "1234.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test33 +- +-test "create-principal 34" +-proc test34 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle \ +- { "%s/a" 0 0 1234 0 null 0 0 0 0 test-pol-nopw 0} \ +- {KADM5_PRINCIPAL KADM5_POLICY \ +- KADM5_PW_EXPIRATION} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 3\n" +- expect { +- -re "1234.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test34 +- +-test "create-principal 35" +-proc test35 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle \ +- {"%s/a" 0 0 1234 0 null 0 0 0 0 test-pol 0} \ +- {KADM5_PRINCIPAL KADM5_POLICY \ +- KADM5_PW_EXPIRATION} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 3\n" +- expect { +- -re "1234.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test35 +- +-test "create-principal 36" +-proc test36 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle \ +- {"%s/a" 0 0 999999999 0 null 0 0 0 0 test-pol 0} \ +- {KADM5_PRINCIPAL KADM5_POLICY \ +- KADM5_PW_EXPIRATION} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- if { ! [cmd {kadm5_get_policy $server_handle test-pol policy} ]} { +- error_and_restart "$test: cannot retrieve policy" +- return +- } +- +- send "lindex \$principal 6\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set mod_date $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting mod_date" +- return +- } +- eof { +- error_and_restart "$test: eof getting mod_date" +- return +- } +- } +- +- send "lindex \$principal 3\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_expire $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_expire" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_expire" +- return +- } +- } +- +- send "lindex \$policy 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_max_life $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_max_life" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_max_life" +- return +- } +- } +- if { $pw_expire != 999999999 } { +- fail "$test: pw_expire is wrong" +- return +- } else { +- pass "$test" +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test36 +- +-test "create-principal 37" +-proc test37 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 3\n" +- expect { +- -re "0.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test37 +- +-test "create-principal 38" +-proc test38 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [princ_w_pol "%s/a" \ +- test-pol-nopw] {KADM5_PRINCIPAL KADM5_POLICY} \ +- NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 3\n" +- expect { +- -re "0.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test38 +- +-test "create-principal 39" +-proc test39 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [princ_w_pol "%s/a" \ +- test-pol] {KADM5_PRINCIPAL KADM5_POLICY} \ +- NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if { ! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: cannot not retrieve principal" +- return +- } +- if { ! [cmd {kadm5_get_policy $server_handle test-pol policy}]} { +- error_and_restart "$test: cannot retrieve policy" +- return +- } +- send "lindex \$principal 6\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set mod_date $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting mod_date" +- return +- } +- eof { +- error_and_restart "$test: eof getting mod_date" +- return +- } +- } +- +- send "lindex \$principal 3\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_expire $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_expire" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_expire" +- return +- } +- } +- +- send "lindex \$policy 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_max_life $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_max_life" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_max_life" +- return +- } +- } +- if { [expr "$mod_date + $pw_max_life - $pw_expire"] > 5 } { +- fail "$test: pw_expire is wrong" +- return +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test39 +- +-test "create-principal 40" +-proc test40 {} { +- global test +- global prompt +- +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL KADM5_PW_EXPIRATION} \ +- NotinTheDictionary +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- fail "$test: can not retrieve principal" +- return; +- } +- send "lindex \$principal 4\n" +- expect { +- -re "0.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test40 +- +-test "create-principal 43" +-proc test43 {} { +- global test +- one_line_fail_test [format { +- kadm5_create_principal null \ +- [simple_principal "%s/a"] {KADM5_PRINCIPAL} "%s/a" +- } $test $test] "BAD_SERVER_HANDLE" +-} +-test43 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/destroy.exp b/src/lib/kadm5/unit-test/api.current/destroy.exp +deleted file mode 100644 +index a3e2bfc59..000000000 +--- a/src/lib/kadm5/unit-test/api.current/destroy.exp ++++ /dev/null +@@ -1,203 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "destroy 1" +- +-proc test1 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_destroy $server_handle} +- end_dump_compare "no-diffs" +-} +-test1 +- +-#test "destroy 2" +-# +-#proc test2 {} { +-# global test +-# begin_dump +-# if {! [cmd { +-# kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# }]} { +-# perror "$test: unexpected failure on init" +-# return +-# } +-# if {! [cmd {kadm5_destroy $server_handle}]} { +-# error_and_restart "$test: couldn't close database" +-# return +-# } +-# one_line_fail_test \ +-# {kadm5_get_principal $server_handle admin principal} \ +-# "NOT_INIT" +-# end_dump_compare "no-diffs" +-#} +-#test2 +- +-#test "destroy 3" +-#proc test3 {} { +-# global test +-# +-# begin_dump +-# if {! (( ! [principal_exists "$test/a"]) || [delete_principal "$test/a"])} { +-# error_and_restart "$test couldn't delete principal \"$test/a\"" +-# return +-# } +-# if {! [cmd { +-# kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# }]} { +-# perror "$test: unexpected failure on init" +-# return +-# } +-# if {! [cmd {kadm5_destroy $server_handle}]} { +-# error_and_restart "$test: couldn't close database" +-# return +-# } +-# one_line_fail_test [format { +-# kadm5_create_principal $server_handle \ +-# [simple_principal "%s/a"] {KADM5_PRINCIPAL} "%s/a" +-# } $test $test] "NOT_INIT" +-# end_dump_compare "no-diffs" +-#} +-#test3 +- +-#test "destroy 4" +-#proc test4 {} { +-# global test prompt +-# +-# if {! (([principal_exists "$test/a"]) || [create_principal "$test/a"])} { +-# error_and_restart "$test: couldn't create principal \"$test/a\"" +-# return +-# } +-# begin_dump +-# if {! ([cmd { +-# kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# }] && +-# [cmd [format { +-# kadm5_get_principal $server_handle "%s/a" principal +-# } $test]])} { +-# error_and_restart "$test: error getting principal" +-# return; +-# } +-# if {! [cmd {kadm5_destroy $server_handle}]} { +-# error_and_restart "$test: couldn't close database" +-# return +-# } +-# one_line_fail_test [format { +-# kadm5_modify_principal $server_handle \ +-# {"%s/a" 0 0 0 0 0 0 0 %d 0 0 0} {KADM5_KVNO} +-# } $test "77"] "NOT_INIT" +-# end_dump_compare "no-diffs" +-#} +-#test4 +- +-#test "destroy 5" +-# +-#proc test5 {} { +-# global test +-# +-# if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} { +-# error_and_restart "$test: couldn't create principal \"$test/a\"" +-# return +-# } +-# begin_dump +-# if {! [cmd { +-# kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# }]} { +-# perror "$test: unexpected failure on init" +-# return +-# } +-# if {! [cmd {kadm5_destroy $server_handle}]} { +-# error_and_restart "$test: couldn't close database" +-# return +-# } +-# one_line_fail_test [format { +-# kadm5_delete_principal $server_handle "%s/a" +-# } $test] "NOT_INIT" +-# end_dump_compare "no-diffs" +-#} +-#test5 +- +-#test "destroy 6" +-# +-#proc test6 {} { +-# global test +-# begin_dump +-# one_line_fail_test {kadm5_destroy $server_handle} "NOT_INIT" +-# end_dump_compare "no-diffs" +-#} +-#test6 +- +- +-#test "destroy 7" +-# +-#proc test7 {} { +-# global test +-# begin_dump +-# if {! [cmd { +-# kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# }]} { +-# perror "$test: unexpected failure in init" +-# return +-# } +-# if {! [cmd {kadm5_destroy $server_handle}]} { +-# error_and_restart "$test: couldn't close database" +-# } +-# one_line_fail_test {kadm5_destroy $server_handle} "NOT_INIT" +-# end_dump_compare "no-diffs" +-#} +-#test7 +- +-test "destroy 8" +-proc test8 {} { +- global test +- begin_dump +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +- one_line_succeed_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +- end_dump_compare "no-diffs" +-} +-test8 +- +-test "destroy 9" +-proc test9 {} { +- global test +- one_line_fail_test {kadm5_destroy null} "BAD_SERVER_HANDLE" +-} +-test9 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/dlte-policy.exp b/src/lib/kadm5/unit-test/api.current/dlte-policy.exp +deleted file mode 100644 +index ad2863d0f..000000000 +--- a/src/lib/kadm5/unit-test/api.current/dlte-policy.exp ++++ /dev/null +@@ -1,208 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "delete-policy 2" +-proc test2 {} { +- global test +-# set prms_id 744 +-# setup_xfail {*-*-*} $prms_id +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test \ +- {kadm5_delete_policy $server_handle ""} "BAD_POL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test2 +- +-test "delete-policy 5" +-proc test5 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_policy $server_handle "%s/a" +- } $test] "AUTH_DELETE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if ${RPC} test5 +- +-test "delete-policy 6" +-proc test6 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_policy $server_handle "%s/a" +- } $test] "AUTH_DELETE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if ${RPC} test6 +- +-test "delete-policy 7" +-proc test7 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_policy $server_handle "%s/a" +- } $test] "AUTH_DELETE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test7 +- +-test "delete-policy 10" +-proc test10 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_delete_policy $server_handle "%s/a" +- } $test]]} { +- fail "$test" +- return +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- if { [policy_exists "$test/a"]} { +- fail "$test" +- return +- } +-} +-test10 +- +-test "delete-policy 12" +-proc test12 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [princ_w_pol "%s/a" \ +- "%s/a"] {KADM5_PRINCIPAL KADM5_POLICY} \ +- NotinTheDictionary +- } $test $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_delete_policy $server_handle "%s/a" +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test12 +- +-test "delete-policy 13" +-proc test13 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_policy null "%s/a" +- } $test] "BAD_SERVER_HANDLE" +-} +-test13 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/dlte-principal.exp b/src/lib/kadm5/unit-test/api.current/dlte-principal.exp +deleted file mode 100644 +index 660468534..000000000 +--- a/src/lib/kadm5/unit-test/api.current/dlte-principal.exp ++++ /dev/null +@@ -1,253 +0,0 @@ +-load_lib lib.t +- +-api_exit +-api_start +- +-#test "delete-principal 1" +-#proc test1 {} { +-# global test +-# one_line_fail_test [format { +-# kadm5_delete_principal $server_handle "%s/a" +-# } $test] "NOT_INIT" +-#} +-#test1 +- +-test "delete-principal 2" +-proc test2 {} { +- global test +- +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test \ +- {kadm5_delete_principal $server_handle null} "EINVAL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: unexpected failure in destroy" +- return +- } +-} +-test2 +- +-test "delete-principal 5" +-proc test5 {} { +- global test +- +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_principal $server_handle "%s/a" +- } $test] "UNK_PRINC" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test5 +- +-test "delete-principal 6" +-proc test6 {} { +- global test +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal_pol "$test/a" test-pol])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_principal $server_handle "%s/a" +- } $test] "AUTH_DELETE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test6 } +- +- +-test "delete-principal 7" +-proc test7 {} { +- global test +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_principal $server_handle "%s/a" +- } $test] "AUTH_DELETE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test7 } +- +- +-test "delete-principal 8" +-proc test8 {} { +- global test +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_principal $server_handle "%s/a" +- } $test] "AUTH_DELETE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test8 } +- +-test "delete-principal 9" +-proc test9 {} { +- global test +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_principal $server_handle "%s/a" +- } $test] "AUTH_DELETE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test9 } +- +-test "delete-principal 10" +-proc test10 {} { +- global test +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_delete_principal $server_handle "%s/a" +- } $test] "AUTH_DELETE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test10 } +- +-test "delete-principal 11" +-proc test11 {} { +- global test +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_delete_principal $server_handle "%s/a" +- } $test]]} { +- fail "$test: delete failed" +- return; +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- if { [principal_exists "$test/a"] } { +- fail "$test" +- return +- } +-} +-test11 +- +-test "delete-principal 13" +-proc test13 {} { +- global test +- one_line_fail_test [format { +- kadm5_delete_principal null "%s/a" +- } $test] "BAD_SERVER_HANDLE" +-} +-test13 +- +-return "" +- +- +- +- +- +diff --git a/src/lib/kadm5/unit-test/api.current/get-policy.exp b/src/lib/kadm5/unit-test/api.current/get-policy.exp +deleted file mode 100644 +index c15ef0ca2..000000000 +--- a/src/lib/kadm5/unit-test/api.current/get-policy.exp ++++ /dev/null +@@ -1,199 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "get-policy 3" +-proc test3 {} { +- global test +-# set prms_id 744 +-# setup_xfail {*-*-*} $prms_id +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test {kadm5_get_policy $server_handle "" p} "BAD_POLICY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test3 +- +-test "get-policy 6" +-proc test6 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test {kadm5_get_policy $server_handle test-pol p} \ +- "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } test6 +- +-test "get-policy 7" +-proc test7 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test {kadm5_get_policy $server_handle test-pol p} \ +- "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } test7 +- +-test "get-policy 11" +-proc test11 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/get-pol StupidAdmin $KADM5_ADMIN_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_get_policy $server_handle test-pol p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test11 +- +-test "get-policy 12" +-proc test12 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/get-pol StupidAdmin \ +- $KADM5_CHANGEPW_SERVICE null $KADM5_STRUCT_VERSION \ +- $KADM5_API_VERSION_3 server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_policy $server_handle test-pol-nopw p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test12 +- +-test "get-policy 15" +-proc test15 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/pol StupidAdmin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_policy $server_handle test-pol-nopw p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test15 +- +-test "get-policy 16" +-proc test16 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/pol StupidAdmin $KADM5_CHANGEPW_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_policy $server_handle test-pol-nopw p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test16 +- +-test "get-policy 17" +-proc test17 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_get_policy $server_handle test-pol p} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test17 +- +-test "get-policy 18" +-proc test18 {} { +- global test +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test {kadm5_get_policy $server_handle test-pol p} \ +- "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } test18 +- +-test "get-policy 21" +-proc test21 {} { +- global test +- +- one_line_fail_test {kadm5_get_policy null "pol1" p} "BAD_SERVER_HANDLE" +-} +-test21 +diff --git a/src/lib/kadm5/unit-test/api.current/get-principal-v2.exp b/src/lib/kadm5/unit-test/api.current/get-principal-v2.exp +deleted file mode 100644 +index 3ea1ba29b..000000000 +--- a/src/lib/kadm5/unit-test/api.current/get-principal-v2.exp ++++ /dev/null +@@ -1,250 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "get-principal 100" +-proc test100 {} { +- global test prompt +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd { +- kadm5_get_principal $server_handle testuser p \ +- {KADM5_PRINCIPAL_NORMAL_MASK} +- }]} { +- perror "$test: unexpected failure in get_principal" +- } +- send "lindex \$p 16\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" { set num_keys $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting num_keys" +- return +- } +- eof { +- error_and_restart "$test: eof getting num_keys" +- return +- } +- } +- send "lindex \$p 17\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" { set num_tl $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting num_tl" +- return +- } +- eof { +- error_and_restart "$test: eof getting num_tl" +- return +- } +- } +- send "lindex \$p 18\n" +- expect { +- -re "({.*})\n$prompt" {set key_data $expect_out(1,string) } +- -re "\n$prompt" { set key_data {} } +- timeout { +- error_and_restart "$test: timeout getting key_data" +- return +- } +- eof { +- error_and_restart "$test: eof getting key_data" +- return +- } +- } +- send "lindex \$p 19\n" +- expect { +- -re "({.*})\n$prompt" {set tl_data $expect_out(1,string) } +- -re "\n$prompt" { set tl_data {} } +- timeout { +- error_and_restart "$test: timeout getting tl_data" +- return +- } +- eof { +- error_and_restart "$test: eof getting tl_data" +- return +- } +- } +- +- set failed 0 +- if {$num_keys != 0} { +- fail "$test: num_keys $num_keys should be 0" +- set failed 1 +- } +- if {$num_tl != 0} { +- fail "$test: num_tl $num_tl should be 0" +- set failed 1 +- } +- if {$key_data != {}} { +- fail "$test: key_data $key_data should be {}" +- set failed 1 +- } +- if {$tl_data != "{}"} { +- fail "$test: tl_data $tl_data should be empty" +- set failed 1 +- } +- if {$failed == 0} { +- pass "$test" +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test100 +- +-proc test101_102 {rpc} { +- global test prompt +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd { +- kadm5_get_principal $server_handle testuser p \ +- {KADM5_PRINCIPAL_NORMAL_MASK KADM5_KEY_DATA} +- }]} { +- perror "$test: unexpected failure in get_principal" +- } +- send "lindex \$p 16\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" { set num_keys $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting num_keys" +- return +- } +- eof { +- error_and_restart "$test: eof getting num_keys" +- return +- } +- } +- send "lindex \$p 18\n" +- expect { +- -re "({.*})\n$prompt" {set key_data $expect_out(1,string) } +- -re "\n$prompt" { set key_data {} } +- timeout { +- error_and_restart "$test: timeout getting key_data" +- return +- } +- eof { +- error_and_restart "$test: eof getting key_data" +- return +- } +- } +- +- set failed 0 +- if {$num_keys != 5} { +- fail "$test: num_keys $num_keys should be 5" +- set failed 1 +- } +- for {set i 0} {$i < $num_keys} {incr i} { +- set key "[lindex [lindex $key_data $i] 2]" +- if {($rpc && [string compare $key ""] != 0) || +- ((! $rpc) && [string compare $key ""] == 0)} { +- fail "$test: key_data $key is wrong" +- set failed 1 +- +- } +- } +- if {$failed == 0} { pass "$test" } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test "get-principal 101" +-if {$RPC} {test101_102 $RPC} +-test "get-principal 102" +-if {! $RPC} {test101_102 $RPC} +- +-test "get-principal 103" +-proc test103 {} { +- global test prompt +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle \ +- "{%s/a} 0 0 0 0 {%s/a} 0 0 0 0 null 0 0 0 0 0 0 1 {} {{999 6 foobar}}" \ +- {KADM5_TL_DATA} +- } $test $test]]} { +- fail "$test: cannot set TL_DATA" +- return +- } +- +- if {! [cmd [format { +- kadm5_get_principal $server_handle {%s/a} p \ +- {KADM5_PRINCIPAL_NORMAL_MASK KADM5_TL_DATA} +- } $test]]} { +- perror "$test: unexpected failure in get_principal" +- } +- send "lindex \$p 17\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" { set num_tl $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting num_tl" +- return +- } +- eof { +- error_and_restart "$test: eof getting num_tl" +- return +- } +- } +- send "lindex \$p 19\n" +- expect { +- -re "({.*})\n$prompt" {set tl_data $expect_out(1,string) } +- -re "\n$prompt" { set tl_data {} } +- timeout { +- error_and_restart "$test: timeout getting tl_data" +- return +- } +- eof { +- error_and_restart "$test: eof getting tl_data" +- return +- } +- } +- +- if {$num_tl == 0} { +- fail "$test: num_tl $num_tl should not be 0" +- } elseif {$tl_data == "{{999 6 foobar}}"} { +- pass "$test" +- } else { +- fail "$test: tl_data $tl_data should be {{999 6 foobar}}" +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test103 +- +-return "" +- +- +- +- +diff --git a/src/lib/kadm5/unit-test/api.current/get-principal.exp b/src/lib/kadm5/unit-test/api.current/get-principal.exp +deleted file mode 100644 +index a33fdfe8c..000000000 +--- a/src/lib/kadm5/unit-test/api.current/get-principal.exp ++++ /dev/null +@@ -1,346 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "get-principal 1" +-proc test1 {} { +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test \ +- {kadm5_get_principal $server_handle null p KADM5_PRINCIPAL_NORMAL_MASK} "EINVAL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test1 +- +-test "get-principal 2" +-proc test2 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK +- } $test] "UNK_PRINC" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test2 +- +-test "get-principal 3" +-proc test3 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK +- } $test] "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test3 } +- +-test "get-principal 4" +-proc test4 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK +- } $test] "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test4 } +- +-test "get-principal 5" +-proc test5 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK +- } $test] "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test5 } +- +-test "get-principal 6" +-proc test6 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK +- } $test] "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test6 } +- +-test "get-principal 7" +-proc test7 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK +- } $test] "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test7 } +- +- +-test "get-principal 8" +-proc test8 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_get_principal $server_handle "%s/a" p KADM5_PRINCIPAL_NORMAL_MASK +- } $test] "AUTH_GET" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test8 } +- +- +-test "get-principal 9" +-proc test9 {} { +- global test +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_principal $server_handle admin/none p KADM5_PRINCIPAL_NORMAL_MASK} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test9 +- +-test "get-principal 10" +-proc test10 {} { +- global test +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_principal $server_handle admin/none p KADM5_PRINCIPAL_NORMAL_MASK} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test10 +- +-test "get-principal 11" +-proc test11 {} { +- global test +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_get_principal $server_handle admin/get p KADM5_PRINCIPAL_NORMAL_MASK} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test11 +- +-test "get-principal 12" +-proc test12 {} { +- global test +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_get_principal $server_handle admin/get p KADM5_PRINCIPAL_NORMAL_MASK} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test12 +- +-test "get-principal 13" +-proc test13 {} { +- global test +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_get_principal $server_handle admin/add p KADM5_PRINCIPAL_NORMAL_MASK} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test13 +- +-test "get-principal 14" +-proc test14 {} { +- global test +- if {! [cmd { +- kadm5_init admin/get-mod admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test {kadm5_get_principal $server_handle admin/add p KADM5_PRINCIPAL_NORMAL_MASK} +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test14 +- +-test "get-principal 15" +-proc test15 {} { +- one_line_fail_test \ +- {kadm5_get_principal null "admin" p KADM5_PRINCIPAL_NORMAL_MASK} "BAD_SERVER_HANDLE" +-} +-test15 +- +-return "" +- +- +- +- +diff --git a/src/lib/kadm5/unit-test/api.current/init-v2.exp b/src/lib/kadm5/unit-test/api.current/init-v2.exp +deleted file mode 100644 +index 47764c212..000000000 +--- a/src/lib/kadm5/unit-test/api.current/init-v2.exp ++++ /dev/null +@@ -1,506 +0,0 @@ +-load_lib lib.t +- +-api_exit +-api_start +- +-proc get_hostname { } { +- global hostname +- +- if {[info exists hostname]} { +- return 1 +- } +- +- catch "exec hostname >myname" exec_output +- if ![string match "" $exec_output] { +- send_log "$exec_output\n" +- verbose $exec_output +- send_error "ERROR: can't get hostname\n" +- return 0 +- } +- set file [open myname r] +- if { [ gets $file hostname ] == -1 } { +- send_error "ERROR: no output from hostname\n" +- return 0 +- } +- close $file +- catch "exec rm -f myname" exec_output +- +- set hostname [string tolower $hostname] +- verbose "hostname: $hostname" +- +- return 1 +-} +- +- +-test "init 101" +-proc test101 {} { +- global test +- global hostname +- +- get_hostname +- tcl_cmd "set hostname $hostname" +- +- # XXX Fix to work with a remote TEST_SERVER. For now, make sure +- # it fails in that case. +- one_line_succeed_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_ADMIN_SERVER KADM5_CONFIG_KADMIND_PORT} [list $hostname 1751]] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_ADMIN_SERVER KADM5_CONFIG_KADMIND_PORT} [list $hostname 4]] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } "RPC_ERROR" +-} +-if {$RPC} test101 +- +-test "init 102" +-proc test102 {} { +- global test +- +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_ADMIN_SERVER} does.not.exist] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } "CANT_RESOLVE" +-} +-if {$RPC} test102 +- +-test "init 103" +-proc test103 {} { +- global test +- +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_DBNAME} /does-not-exist] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } "ENOENT" +-} +-#if {! $RPC} test103 +-if {! $RPC} { +- send_user "UNTESTED: test103: test needs updating for DAL changes (see MIT RT ticket 3202)\n" +- untested "test103: test needs updating for DAL changes (see MIT RT ticket 3202)" +-} +- +- +-test "init 106" +-proc test106 {} { +- global test prompt +- +- set prompting 0 +- send [string trim { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_MKEY_FROM_KBD} 1] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }] +- send "\n" +- expect { +- -re "\n\[^\n\]+:\[^\n\]*$" { set prompting 1} +- -re "\nOK .*$prompt$" { fail "$test: premature success" } +- -re "\nERROR .*$prompt$" { fail "$test: premature failure" } +- timeout { fail "$test: timeout" } +- eof { fail "$test: eof" } +- } +- if {$prompting} { +- one_line_succeed_test mrroot +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-if {! $RPC} test106 +- +-test "init 107" +-proc test107 {} { +- global test +- +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_STASH_FILE} /does-not-exist] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } "KDB_CANTREAD_STORED" +-} +-if {! $RPC} test107 +- +-test "init 108" +-proc test108 {} { +- global test +- +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_MKEY_NAME} does/not/exist] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } "KRB5_KDB_CANTREAD_STORED" +-} +-if {! $RPC} test108 +- +-test "init 109-113" +-proc test109 {} { +- global test prompt +- +- delete_principal "$test/a" +- +- # I'd like to specify flags explicitly and check them, as in the +- # following config_params, but tcl gets mighty confused if I do and +- # I have no idea why. +-# [config_params {KADM5_CONFIG_MAX_LIFE KADM5_CONFIG_MAX_RLIFE KADM5_CONFIG_EXPIRATION KADM5_CONFIG_FLAGS KADM5_CONFIG_ENCTYPES} {10 20 30 KRB5_KDB_DISALLOW_TGT_BASED {}} ] +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_MAX_LIFE KADM5_CONFIG_MAX_RLIFE KADM5_CONFIG_EXPIRATION KADM5_CONFIG_ENCTYPES} {10 20 30 {}} ] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- fail "$test: cannot init with max_life" +- return +- } +- if {! [cmd [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test]]} { +- fail "$test: can not create principal" +- return; +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" p \ +- {KADM5_PRINCIPAL_NORMAL_MASK KADM5_KEY_DATA} +- } $test]]} { +- fail "$test: can not get principal" +- return; +- } +- send "puts \$p\n" +- expect { +- -re "$prompt" { } +- timeout { +- error_and_restart "$test: timeout getting prompt" +- return +- } +- eof { +- error_and_restart "$test: eof getting prompt" +- return +- } +- } +- send "lindex \$p 4\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set max_life $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting max_life" +- return +- } +- eof { +- error_and_restart "$test: eof getting max_life" +- return +- } +- } +- send "lindex \$p 12\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set max_rlife $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting max_rlife" +- return +- } +- eof { +- error_and_restart "$test: eof getting max_rlife" +- return +- } +- } +- send "lindex \$p 1\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set expiration $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting expiration" +- return +- } +- eof { +- error_and_restart "$test: eof getting expiration" +- return +- } +- } +- send "lindex \$p 7\n" +- expect { +- -re "(\[A-Z_\]*)\n$prompt" {set flags $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting flags" +- return +- } +- eof { +- error_and_restart "$test: eof getting flags" +- return +- } +- } +- # This sorta worries me. Since the test is setting ENCTYPES to +- # nothing, the principal has no keys. That means that nothing is +- # printed for the keys in the correct case; but it feels too +- # likely that nothing will be printed in the case of some problem. +- send "lindex \$p 18\n" +- expect { +- -re "({.*})\n$prompt" {set key_data $expect_out(1,string) } +- -re "\n$prompt" { set key_data {} } +- timeout { +- error_and_restart "$test: timeout getting flags" +- return +- } +- eof { +- error_and_restart "$test: eof getting flags" +- return +- } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +- if {$max_life == 10} { +- pass "$test" +- } else { +- fail "$test: $max_life is not 10" +- } +- if {$max_rlife == 20} { +- pass "$test" +- } else { +- fail "$test: $max_rlife is not 20" +- } +- if {$expiration == 30} { +- pass "$test" +- } else { +- fail "$test: $expiration is not 30" +- } +- if {$flags == ""} { +- pass "$test" +- } else { +- fail "$test: flags $flags are wrong" +- } +- if {$key_data == {}} { +- pass "$test" +- } else { +- fail "$test: key_data $key_data is wrong" +- } +-} +-if {! $RPC} test109 +- +-test "init 116" +-proc test116 {} { +- global test +- +- delete_principal "$test/a" +- +- if {! [cmd {kadm5_init admin/get-add admin $KADM5_ADMIN_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- get_add_handle}]} { +- error_and_restart "$test: couldn't init with admin/get-add" +- } +- +- if {! [cmd {kadm5_init admin/mod-delete admin $KADM5_ADMIN_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- mod_delete_handle}]} { +- error_and_restart "$test: couldn't init with admin/get-add" +- } +- +- one_line_succeed_test { +- kadm5_get_principal $get_add_handle testuser p \ +- KADM5_PRINCIPAL_NORMAL_MASK +- } +- one_line_succeed_test [format { +- kadm5_create_principal $get_add_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test] +- one_line_fail_test { +- kadm5_modify_principal $get_add_handle [simple_principal testuser] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } "AUTH_MODIFY" +- one_line_fail_test { +- kadm5_delete_principal $get_add_handle testuser +- } "AUTH_DELETE" +- +- one_line_fail_test { +- kadm5_get_principal $mod_delete_handle testuser p \ +- KADM5_PRINCIPAL_NORMAL_MASK +- } "AUTH_GET" +- one_line_fail_test [format { +- kadm5_create_principal $mod_delete_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} testpass +- } $test] "AUTH_ADD" +- one_line_succeed_test { +- kadm5_modify_principal $mod_delete_handle [simple_principal testuser] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } +- one_line_succeed_test [format { +- kadm5_delete_principal $mod_delete_handle "%s/a" +- } $test] +- +- if {! [cmd {kadm5_destroy $get_add_handle}]} { +- error_and_restart "$test: couldn't close get_add_handle" +- } +- if {! [cmd {kadm5_destroy $mod_delete_handle}]} { +- error_and_restart "$test: couldn't close mod_delete_handle" +- } +-} +-if {$RPC} test116 +- +-test "init 117" +-proc test117 {} { +- global test env prompt +- +- if {[catch "exec grep max_life $env(KRB5_KDC_PROFILE)"] != 1} { +- warning \ +- "$test: max_life in $env(KRB5_KDC_PROFILE), cannot perform test" +- return +- } +- +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- fail "$test: unexpected failure in init" +- return +- } +- +- if {! [cmd [format { +- kadm5_create_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} "%s/a" +- } $test $test]]} { +- perror "$test: unexpected failure creating principal" +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_MAX_LIFE +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 4\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set max_life $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting max_life" +- return +- } +- eof { +- error_and_restart "$test: eof getting max_life" +- return +- } +- } +- +- if {$max_life == 86400} { +- pass "$test" +- } else { +- fail "$test: max_life $max_life should be 86400" +- } +- +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close server_handle" +- } +-} +-test117 +- +-send "puts \$KADM5_ADMIN_SERVICE\n" +-expect { +- -re "(\[a-zA-Z/@\]+)\n$prompt" { +- set KADM5_ADMIN_SERVICE $expect_out(1,string) +- } +- default { +- error_and_restart "$test: timeout/eof getting admin_service" +- return +- } +-} +- +-send "puts \$KADM5_CHANGEPW_SERVICE\n" +-expect { +- -re "(\[a-zA-Z/@\]+)\n$prompt" { +- set KADM5_CHANGEPW_SERVICE $expect_out(1,string) +- } +- default { +- error_and_restart "$test: timeout/eof getting changepw_service" +- return +- } +-} +- +-test "init 150" +-proc test150 {} { +- global test KADM5_ADMIN_SERVICE +- +- kdestroy +- kinit testuser notathena "-S $KADM5_ADMIN_SERVICE" +- one_line_succeed_test { +- kadm5_init_with_creds testuser null $KADM5_ADMIN_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- kdestroy +-} +-if {$RPC} test150 +- +-test "init 151" +-proc test151 {} { +- global test KADM5_CHANGEPW_SERVICE +- +- kdestroy +- kinit testuser notathena "-S $KADM5_CHANGEPW_SERVICE" +- one_line_succeed_test { +- kadm5_init_with_creds testuser null $KADM5_CHANGEPW_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- kdestroy +-} +-if {$RPC} test151 +- +-test "init 152" +-proc test152 {} { +- global test KADM5_ADMIN_SERVICE +- +- kdestroy +- one_line_fail_test { +- kadm5_init_with_creds testuser null $KADM5_ADMIN_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } "KRB5_FCC_NOFILE" +-} +-if {$RPC} test152 +- +-test "init 153" +-proc test153 {} { +- global test KADM5_ADMIN_SERVICE +- +- kinit testuser notathena +- one_line_fail_test { +- kadm5_init_with_creds testuser null $KADM5_ADMIN_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } "KRB5_CC_NOTFOUND" +-} +-if {$RPC} test153 +- +-test "init 154" +-proc test154 {} { +- global test env +- +- set orig $env(KRB5_KDC_PROFILE) +- set env(KRB5_KDC_PROFILE) /does-not-exist +- api_exit; api_start +- set env(KRB5_KDC_PROFILE) $orig +- +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } "ENOENT" +- +- api_exit; lib_start_api +-} +-if {0 && ! $RPC} test154 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/init.exp b/src/lib/kadm5/unit-test/api.current/init.exp +deleted file mode 100644 +index 8390b9cfa..000000000 +--- a/src/lib/kadm5/unit-test/api.current/init.exp ++++ /dev/null +@@ -1,699 +0,0 @@ +-load_lib lib.t +- +-# Assumptions: +-# +-# Principal "admin" exists, with "get", "add", "modify" and "delete" +-# access bits and password "admin". +-# The string "not-the-password" isn't the password of any user in the database. +-# Database master password is "mrroot". +- +-api_exit +-api_start +-test "init 1" +- +-one_line_fail_test_nochk \ +- {kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_REALM} {""}] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 server_handle} +- +-test "init 2" +- +-one_line_fail_test_nochk \ +- {kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_REALM} {@}] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 server_handle} +- +-test "init 2.5" +- +-one_line_fail_test_nochk \ +- {kadm5_init admin admin $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_REALM} {BAD.REALM}] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 server_handle} +- +-test "init 3" +- +-proc test3 {} { +- global test +- if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- one_line_fail_test_nochk [format { +- kadm5_init admin admin "%s/a" null $KADM5_STRUCT_VERSION \ +- $KADM5_API_VERSION_3 server_handle +- } $test] +-} +-if {$RPC} { test3 } +- +-test "init 4" +- +-proc test4 {} { +- global test +- if {! ((! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- +- one_line_fail_test_nochk [format { +- kadm5_init admin admin "%s/a" null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } $test] +-} +-if {$RPC} { test4 } +- +-test "init 5" +- +-if {$RPC} { +- one_line_fail_test_nochk { +- kadm5_init admin admin admin null $KADM5_STRUCT_VERSION \ +- $KADM5_API_VERSION_3 server_handle +- } +-} +- +-test "init 6" +- +-proc test6 {} { +- global test +- +- send "kadm5_init admin null \$KADM5_ADMIN_SERVICE null \$KADM5_STRUCT_VERSION \$KADM5_API_VERSION_3 server_handle\n" +- +- expect { +- -re "assword\[^\r\n\]*:" { } +- eof { +- fail "$test: eof instead of password prompt" +- api_exit +- api_start +- return +- } +- timeout { +- fail "$test: timeout instead of password prompt" +- return +- } +- } +- one_line_succeed_test "admin" +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-if { $RPC } { test6 } +- +-test "init 8" +- +-proc test8 {} { +- global test +- if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- one_line_fail_test_nochk [format { +- kadm5_init "%s/a" admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } $test] +-} +-if {$RPC} { test8 } +- +-test "init 9" +- +-if {$RPC} { +- global test +- one_line_fail_test_nochk { +- kadm5_init admin not-the-password $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +-} +- +-test "init 10" +- +-proc test10 {} { +- global test +-# set prms_id 562 +-# setup_xfail {*-*-*} $prms_id +- one_line_fail_test_nochk { +- kadm5_init null admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +-} +-test10 +- +-#test "init 11" +-# +-#proc test11 {} { +-# global test +-# set prms_id 563 +-# setup_xfail {*-*-*} $prms_id +-# one_line_fail_test_nochk { +-# kadm5_init "" admin $KADM5_ADMIN_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# } +-#} +-#test11 +- +-test "init 12" +- +-proc test12 {} { +- global test +- one_line_fail_test_nochk [format { +- kadm5_init "%s/a" admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } $test] +-} +-if {$RPC} { test12 } +- +-test "init 13" +- +-proc test13 {} { +- global test +- one_line_fail_test_nochk [format { +- kadm5_init "%s/a@SECURE-TEST.OV.COM" admin \ +- $KADM5_ADMIN_SERVICE null $KADM5_STRUCT_VERSION \ +- $KADM5_API_VERSION_3 server_handle +- } $test] +-} +-if {$RPC} { test13 } +- +-test "init 14" +- +-proc test14 {} { +- global test +- one_line_fail_test_nochk [format { +- kadm5_init "%s/a@BAD.REALM" admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } $test] +-} +-if {$RPC} { test14 } +- +-test "init 15" +- +-if {$RPC} { +- one_line_fail_test_nochk { +- kadm5_init admin@BAD.REALM admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +-} +- +-test "init 16" +- +-proc test16 {} { +- global test +- one_line_succeed_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-test16 +- +-test "init 17" +- +-proc test17 {} { +- global test +- one_line_succeed_test { +- kadm5_init admin@SECURE-TEST.OV.COM admin \ +- $KADM5_ADMIN_SERVICE null $KADM5_STRUCT_VERSION \ +- $KADM5_API_VERSION_3 server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-test17 +- +-test "init 18" +- +-proc test18 {} { +- global test +- one_line_succeed_test { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-test18 +- +-test "init 19" +- +-proc test19 {} { +- global test +- one_line_succeed_test { +- kadm5_init admin@SECURE-TEST.OV.COM admin \ +- $KADM5_ADMIN_SERVICE \ +- [config_params {KADM5_CONFIG_REALM} {SECURE-TEST.OV.COM}] \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-test19 +- +-test "init 20" +- +-proc test20 {} { +- global test +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- error_and_restart "$test: couldn't init database" +- return +- } +- one_line_succeed_test \ +- {kadm5_get_principal $server_handle admin principal KADM5_PRINCIPAL_NORMAL_MASK} +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-test20 +- +-#test "init 21" +-# +-#proc test21 {} { +-# global test +-# if {! [cmd { +-# kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# }]} { +-# error_and_restart "$test: couldn't init database" +-# return +-# } +-# one_line_fail_test_nochk { +-# kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# } +-# if {! [cmd {kadm5_destroy $server_handle}]} { +-# error_and_restart "$test: couldn't close database" +-# } +-#} +-#test21 +- +- +-# proc test22 {} { +-# global test prompt +-# set prompting 0 +-# send [string trim { +-# kadm5_init admin null null null $KADM5_STRUCT_VERSION \ +-# $KADM5_API_VERSION_3 server_handle +-# }] +-# send "\n" +-# expect { +-# -re ":$" { set prompting 1} +-# -re "\nOK .*$prompt$" { fail "$test: premature success" } +-# -re "\nERROR .*$prompt$" { fail "$test: premature failure" } +-# timeout { fail "$test: timeout" } +-# eof { fail "$test: eof" } +-# } +-# if {$prompting} { +-# one_line_succeed_test mrroot +-# } +-# if {! [cmd {kadm5_destroy $server_handle}]} { +-# error_and_restart "$test: couldn't close database" +-# } +-# } +-# if {! $RPC} { test22 } +-# +-# test "init 22.5" +-# proc test225 {} { +-# global test prompt +-# set prompting 0 +-# send [string trim { +-# kadm5_init admin null null null $KADM5_STRUCT_VERSION \ +-# $KADM5_API_VERSION_3 server_handle +-# }] +-# send "\n" +-# expect { +-# -re ":$" { set prompting 1} +-# -re "\nOK .*$prompt$" { fail "$test: premature success" } +-# -re "\nERROR .*$prompt$" { fail "$test: premature failure" } +-# timeout { fail "$test: timeout" } +-# eof { fail "$test: eof" } +-# } +-# if {$prompting} { +-# one_line_succeed_test mrroot +-# } +-# if {! [cmd {kadm5_destroy $server_handle}]} { +-# error_and_restart "$test: couldn't close database" +-# } +-# } +-# if {! $RPC} { test225 } +- +-test "init 23" +- +-proc test23 {} { +- global test +- one_line_succeed_test { +- kadm5_init admin not-the-password $KADM5_ADMIN_SERVICE \ +- null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-if {! $RPC} { test23 } +- +-test "init 24" +- +-proc test24 {} { +- global test +- one_line_succeed_test { +- kadm5_init admin admin null null $KADM5_STRUCT_VERSION \ +- $KADM5_API_VERSION_3 server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-if {! $RPC} { test24 } +- +-test "init 25" +- +-proc test25 {} { +- global test +- one_line_succeed_test { +- kadm5_init admin admin foobar null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-if {! $RPC} { test25 } +- +-test "init 26" +- +-#proc test26 {} { +-# global test +-# +-# api_exit +-# api_start +-# one_line_fail_test_nochk { +-# kadm5_get_principal $server_handle admin principal +-# } +-#} +-#test26 +- +-#test "init 27" +-# +-#proc test27 {} { +-# global test +-# +-# if {! ((! [principal_exists "$test/a"]) || [delete_principal "$test/a"])} { +-# error_and_restart "$test: couldn't delete principal \"$test/a\"" +-# return +-# } +-# begin_dump +-# if {[cmd [format { +-# kadm5_create_principal $server_handle [simple_principal \ +-# "%s/a"] {KADM5_PRINCIPAL} "%s/a" +-# } $test $test]]} { +-# fail "$test: unexpected success in add" +-# return +-# } +-# end_dump_compare "no-diffs" +-#} +-#test27 +- +-#test "init 28" +-# +-#proc test28 {} { +-# global test prompt +-# +-# if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} { +-# error_and_restart "$test: couldn't create principal \"$test/a\"" +-# return +-# } +-# begin_dump +-# if {! ([cmd { +-# kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +-# $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +-# server_handle +-# }] && [cmd [format { +-# kadm5_get_principal $server_handle "%s/a" principal +-# } $test]])} { +-# error_and_restart "$test: error getting principal" +-# return; +-# } +-# send "lindex \$principal 8\n" +-# expect { +-# -re "\n(\[0-9\]+).*$prompt$" {set kvno $expect_out(1,string) } +-# timeout { +-# error_and_restart "$test: timeout getting principal kvno" +-# return +-# } +-# eof { +-# error_and_restart "$test: eof getting principal kvno" +-# return +-# } +-# } +-# api_exit +-# api_start +-# set new_kvno [expr "$kvno + 1"] +-# if {[cmd [format { +-# kadm5_modify_principal $server_handle \ +-# {"%s/a" 0 0 0 0 0 0 0 %d 0 0 0} {KADM5_KVNO} +-# } $test $new_kvno]]} { +-# fail "$test: unexpected success in modify" +-# return; +-# } +-# end_dump_compare "no-diffs" +-#} +-#test28 +- +-#test "init 29" +-# +-#proc test29 {} { +-# global test +-# +-# if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} { +-# error_and_restart "$test: couldn't create principal \"$test/a\"" +-# return +-# } +-# begin_dump +-# if {[cmd [format { +-# kadm5_delete_principal $server_handle "%s/a" +-# } $test]]} { +-# fail "$test: unexpected success in delete" +-# return +-# } +-# end_dump_compare "no-diffs" +-#} +-#test29 +- +-test "init 30" +-proc test30 {} { +- global test +- if {[cmd { +- kadm5_init admin foobar $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- error_and_restart "$test: unexpected success" +- return +- } +- one_line_succeed_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-if ${RPC} { test30 } +- +-test "init 31" +-proc test31 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $bad_struct_version_mask $KADM5_API_VERSION_3 \ +- server_handle +- } "BAD_STRUCT_VERSION" +-} +-test31 +- +-test "init 32" +-proc test32 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $no_struct_version_mask $KADM5_API_VERSION_3 \ +- server_handle +- } "BAD_STRUCT_VERSION" +-} +-test32 +- +-test "init 33" +-proc test33 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $old_struct_version $KADM5_API_VERSION_3 \ +- server_handle +- } "OLD_STRUCT_VERSION" +-} +-test33 +- +-test "init 34" +-proc test34 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $new_struct_version $KADM5_API_VERSION_3 \ +- server_handle +- } "NEW_STRUCT_VERSION" +-} +-test34 +- +-test "init 35" +-proc test35 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $bad_api_version_mask \ +- server_handle +- } "BAD_API_VERSION" +-} +-test35 +- +-test "init 36" +-proc test36 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $no_api_version_mask \ +- server_handle +- } "BAD_API_VERSION" +-} +-test36 +- +-test "init 37" +-proc test37 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $old_api_version \ +- server_handle +- } "OLD_LIB_API_VERSION" +-} +-if { $RPC } test37 +- +-test "init 38" +-proc test38 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $old_api_version \ +- server_handle +- } "OLD_SERVER_API_VERSION" +-} +-if { ! $RPC } test38 +- +-test "init 39" +-proc test39 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $new_api_version \ +- server_handle +- } "NEW_LIB_API_VERSION" +-} +-if { $RPC } test39 +- +-test "init 40" +-proc test40 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $new_api_version \ +- server_handle +- } "NEW_SERVER_API_VERSION" +-} +-if { ! $RPC } test40 +- +-test "init 41" +-proc test41 {} { +- global test +- one_line_fail_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_API_VERSION_3 $KADM5_STRUCT_VERSION \ +- server_handle +- } "BAD_" +-} +-test41 +- +-test "init 42" +-proc test42 {} { +- global test +- one_line_succeed_test { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } +- if {! [cmd {kadm5_destroy $server_handle}]} { +- error_and_restart "$test: couldn't close database" +- } +-} +-test42 +- +- +-proc test45_46 {service} { +- global test kadmin_local env +- +- spawn $kadmin_local -q "delprinc -force $service" +- expect { +- -re "Principal .* deleted." {} +- default { +- perror "kadmin.local delprinc failed\n"; +- } +- } +- expect eof +- wait +- +- one_line_fail_test [concat {kadm5_init admin admin } \ +- $service \ +- { null $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle}] "SECURE_PRINC_MISSING" +- +- # this leaves the keytab with an incorrect entry +- spawn $kadmin_local -q "ank -randkey $service" +- expect eof +- wait +- +- # restart the api so it gets a new ccache +- api_exit +- api_start +-} +- +-if {$RPC} { +- test "init 45" +- +- test45_46 kadmin/admin +- +- test "init 46" +- +- test45_46 kadmin/changepw +-} +- +-return "" +- +diff --git a/src/lib/kadm5/unit-test/api.current/mod-policy.exp b/src/lib/kadm5/unit-test/api.current/mod-policy.exp +deleted file mode 100644 +index 1bf00b524..000000000 +--- a/src/lib/kadm5/unit-test/api.current/mod-policy.exp ++++ /dev/null +@@ -1,711 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "modify-policy 2" +-proc test2 {} { +- global test +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] "AUTH_MODIFY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test2 } +- +-test "modify-policy 8" +-proc test8 {} { +- global test +-# set prms_id 744 +-# setup_xfail {*-*-*} $prms_id +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_modify_policy $server_handle [simple_policy ""] \ +- {KADM5_PW_MAX_LIFE} +- } "BAD_POLICY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test8 +- +-test "modify-policy 9" +-proc test9 {} { +- global test +- global prompt +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MIN_LIFE} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 1\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test9 +- +-test "modify-policy 10" +-proc test10 {} { +- global test +- global prompt +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 32 0 0 0 0 0 0 0 0} \ +- {KADM5_PW_MIN_LIFE} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 1\n" +- expect { +- -re "32\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test10 +- +- +-test "modify-policy 11" +-proc test11 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 2\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test11 +- +-test "modify-policy 12" +-proc test12 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 32 0 0 0 0 0 0 0} \ +- {KADM5_PW_MAX_LIFE} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 2\n" +- expect { +- -re "32\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test12 +- +-test "modify-policy 13" +-proc test13 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MIN_LENGTH} +- } $test] "BAD_LENGTH" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test13 +- +-test "modify-policy 14" +-proc test14 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 8 0 0 0 0 0 0} \ +- {KADM5_PW_MIN_LENGTH} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 3\n" +- expect { +- -re "8\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test14 +- +-test "modify-policy 15" +-proc test15 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MIN_CLASSES} +- } $test] "BAD_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test15 +- +-test "modify-policy 16" +-proc test16 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 1 0 0 0 0 0} \ +- {KADM5_PW_MIN_CLASSES} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 4\n" +- expect { +- -re "1\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test16 +- +-test "modify-policy 17" +-proc test17 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a"])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 5 0 0 0 0 0} \ +- {KADM5_PW_MIN_CLASSES} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 4\n" +- expect { +- -re "5\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test17 +- +-test "modify-policy 18" +-proc test18 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 6 0 0 0 0 0} \ +- {KADM5_PW_MIN_CLASSES} +- } $test] "BAD_CLASS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test18 +- +-test "modify-policy 19" +-proc test19 {} { +- global test +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_HISTORY_NUM} +- } $test] "BAD_HISTORY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test19 +- +-test "modify-policy 20" +-proc test20 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 0 1 0 0 0 0} \ +- {KADM5_PW_HISTORY_NUM} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 5\n" +- expect { +- -re "1\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test20 +- +-test "modify-policy 21" +-proc test21 {} { +- global test +- global prompt +- +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 0 10 0 0 0 0} \ +- {KADM5_PW_HISTORY_NUM} +- } $test]]} { +- fail $test +- return +- } +- if {! [cmd [format { +- kadm5_get_policy $server_handle "%s/a" policy +- } $test]]} { +- fail "$test: can not retrieve policy" +- return +- } +- send "lindex \$policy 5\n" +- expect { +- -re "10\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test21 +- +-test "modify-policy 22" +-proc test22 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] "AUTH_MODIFY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test22 +- +-test "modify-policy 23" +-proc test23 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] "AUTH_MODIFY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} test23 +- +-test "modify-policy 26" +-proc test26 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_modify_policy $server_handle [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test26 +- +-test "modify-policy 30" +-proc test30 {} { +- global test +- +- one_line_fail_test [format { +- kadm5_modify_policy null [simple_policy "%s/a"] \ +- {KADM5_PW_MAX_LIFE} +- } $test] "BAD_SERVER_HANDLE" +-} +-test30 +- +-test "modify-policy 31" +-proc test31 {} { +- global test +- if {! (( [policy_exists "$test/a"]) || +- [create_policy "$test/a" ])} { +- error_and_restart "$test: couldn't create policy \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 0 0 0 2 0 0} \ +- {KADM5_PW_MAX_FAILURE} +- } $test] +- one_line_succeed_test [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 1 0 0 0 90 0} \ +- {KADM5_PW_FAILURE_COUNT_INTERVAL} +- } $test] +- one_line_succeed_test [format { +- kadm5_modify_policy $server_handle {"%s/a" 0 0 0 1 0 0 0 0 180} \ +- {KADM5_PW_LOCKOUT_DURATION} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test31 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/mod-principal-v2.exp b/src/lib/kadm5/unit-test/api.current/mod-principal-v2.exp +deleted file mode 100644 +index 4abbeb52d..000000000 +--- a/src/lib/kadm5/unit-test/api.current/mod-principal-v2.exp ++++ /dev/null +@@ -1,115 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "modify-principal 100-105" +-proc test100_104 {} { +- global test +- global prompt +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- +- set origtest "$test" +- +- test "modify-principal 100" +- one_line_succeed_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_MAX_RLIFE} +- } $origtest] +- +- test "modify-principal 101" +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_LAST_SUCCESS} +- } $origtest] "BAD_MASK" +- +- test "modify-principal 102" +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_LAST_FAILED} +- } $origtest] "BAD_MASK" +- +-# This is now permitted to reset lockout count +-# test "modify-principal 103" +-# one_line_fail_test [format { +-# kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +-# {KADM5_FAIL_AUTH_COUNT} +-# } $origtest] "BAD_MASK" +- +- test "modify-principal 103.5" +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_KEY_DATA} +- } $origtest] "BAD_MASK" +- +- test "modify-principal 105" +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle \ +- "{%s/a} 0 0 0 0 {%s/a} 0 0 0 0 null 0 0 0 0 0 0 1 {} {{1 1 x}}" \ +- {KADM5_TL_DATA} +- } $origtest $origtest] "BAD_TL_TYPE" +- +- test "modify-principal 100,104" +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle \ +- "{%s/a} 0 0 0 0 {%s/a} 0 0 0 0 null 0 88 0 0 0 0 1 {} {{990 6 foobar}}" \ +- {KADM5_MAX_RLIFE KADM5_TL_DATA} +- } $origtest $origtest]]} { +- fail "$test: cannot set MAX_RLIFE or TL_DATA" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal {KADM5_PRINCIPAL_NORMAL_MASK KADM5_TL_DATA} +- } $origtest]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 12\n" +- expect { +- -re "(\[0-9\]+)\n$prompt$" {set rlife $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting rlife" +- return +- } +- eof { +- error_and_restart "$test: eof getting rlife" +- return +- } +- } +- send "lindex \$principal 19\n" +- expect { +- -re "\(\{.*\}\)\n$prompt$" {set tl $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting tl_data" +- return +- } +- eof { +- error_and_restart "$test: eof getting tl_data" +- return +- } +- } +- if {($rlife == 88) && ($tl == "{{990 6 foobar}}")} { +- pass "$test" +- } else { +- fail "$test: $rlife should be 88, $tl should be {{990 6 foobar}}" +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test100_104 +diff --git a/src/lib/kadm5/unit-test/api.current/mod-principal.exp b/src/lib/kadm5/unit-test/api.current/mod-principal.exp +deleted file mode 100644 +index ac9f96845..000000000 +--- a/src/lib/kadm5/unit-test/api.current/mod-principal.exp ++++ /dev/null +@@ -1,1606 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-#test "modify-principal 1" +-#proc test1 {} { +-# global test +-# one_line_fail_test [format { +-# kadm5_modify_principal $server_handle [simple_principal \ +-# "%s/a"] {KADM5_PW_EXPIRATION} +-# } $test] "NOT_INIT" +-#} +-#test1 +- +-test "modify-principal 2" +-proc test2 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test] "AUTH_MODIFY" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test2 } +- +-test "modify-principal 4" +-proc test4 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINCIPAL} +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test4 +- +- +-test "modify-principal 5" +-proc test5 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_LAST_PWD_CHANGE} +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test5 +- +-test "modify-principal 6" +-proc test6 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_MOD_TIME} +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test6 +- +-test "modify-principal 7" +-proc test7 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_MOD_NAME} +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test7 +- +-test "modify-principal 8" +-proc test8 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_MKVNO} +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test8 +- +-test "modify-principal 9" +-proc test9 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_AUX_ATTRIBUTES} +- } $test] "BAD_MASK" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test9 +- +-test "modify-principal 10" +-proc test10 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test] "UNK_PRINC" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test10 +- +-test "modify-principal 11" +-proc test11 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/none admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test] "AUTH_MOD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } { test11 } +- +-test "modify-principal 12" +-proc test12 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/get admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test] "AUTH_MOD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } { test12 } +- +-test "modify-principal 13" +-proc test13 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/add admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test] "AUTH_MOD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } { test13 } +- +-test "modify-principal 14" +-proc test14 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/delete admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test] "AUTH_MOD" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } { test14 } +- +-test "modify-principal 15" +-proc test15 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test15 +- +-test "modify-principal 17" +-proc test17 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_modify_principal $server_handle [princ_w_pol "%s/a" \ +- no-policy] {KADM5_POLICY} +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test17 +- +-test "modify-principal 21.5" +-proc test21.5 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if { !( [create_principal_pol "$test/a" "test-pol"])} { +- error_and_restart "$test: could not create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd {kadm5_get_policy $server_handle test-pol old_p1}]} { +- perror "$test: unexpected failure on get policy" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle [princ_w_pol "%s/a" \ +- test-pol] {KADM5_POLICY} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$old_p1 6\n" +- expect { +- -re "(\[0-9\]+)\n$prompt$" {set old_p1_ref $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting principal kvno (second time)" +- return +- } +- eof { +- error_and_restart "$test: eof getting principal kvno (second time)" +- return +- } +- } +- +- if { ! [cmd {kadm5_get_policy $server_handle test-pol new_p1}]} { +- perror "$test: unexpected failure on get policy" +- return +- } +- +- send "lindex \$new_p1 6\n" +- expect { +- -re "(\[0-9\]+)\n$prompt$" {set new_p1_ref $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting principal kvno (second time)" +- return +- } +- eof { +- error_and_restart "$test: eof getting principal kvno (second time)" +- return +- } +- } +- +- if {$old_p1_ref != $new_p1_ref} { +- fail "$test: policy reference count changed ($old_p1_ref to $new_p1_ref)" +- return +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test21.5 +- +-test "modify-principal 22" +-proc test22 {} { +- global test +- global prompt +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PW_EXPIRATION} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 3\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test22 +- +-test "modify-principal 23" +-proc test23 {} { +- global test +- global prompt +- if {! (( [principal_exists "$test/a"]) || +- [create_principal_pol "$test/a" test-pol-nopw])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PW_EXPIRATION} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 3\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test23 +- +-test "modify-principal 24" +-proc test24 {} { +- global test +- global prompt +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal_pol "$test/a" "test-pol" ])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- error_and_restart "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PW_EXPIRATION} +- } $test]]} { +- fail "$test: could not modify principal" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- if { ! [cmd [format { +- kadm5_get_policy $server_handle %s policy +- } test-pol]]} { +- error_and_restart "$test: cannot retrieve policy" +- return +- } +- send "lindex \$principal 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_mod_date $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting mod_date" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_mod_date" +- return +- } +- } +- +- send "lindex \$principal 3\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_expire $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_expire" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_expire" +- return +- } +- } +- +- send "lindex \$policy 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_max_life $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_max_life" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_max_life" +- return +- } +- } +- if { $pw_expire != 0 } { +- fail "$test: pw_expire $pw_expire should be 0" +- return +- } else { +- pass "$test" +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test24 +- +-test "modify-principal 25" +-proc test25 {} { +- global test +- global prompt +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 1234 0 0 0 0 0 0 0 0} {KADM5_PW_EXPIRATION} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 3\n" +- expect { +- -re "1234\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test25 +- +-test "modify-principal 26" +-proc test26 {} { +- global test +- global prompt +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal_pol "$test/a" "test-pol-nopw" ])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 1234 0 0 0 0 0 0 0 0} {KADM5_PW_EXPIRATION} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 3\n" +- expect { +- -re "1234\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test26 +- +-test "modify-principal 27" +-proc test27 {} { +- global test +- global prompt +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal_pol "$test/a" "test-pol" ])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 1234 0 0 0 0 0 0 0 0} {KADM5_PW_EXPIRATION} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 3\n" +- expect { +- -re "1234\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test27 +- +-test "modify-principal 28" +-proc test28 {} { +- global test +- global prompt +-# set prms_id 1358 +-# setup_xfail {*-*-*} $prms_id +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal_pol "$test/a" "test-pol" ])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 999999999 0 0 0 0 0 0 0 0} {KADM5_PW_EXPIRATION} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- if { ! [cmd {kadm5_get_policy $server_handle test-pol policy}]} { +- error_and_restart "$test: cannot retrieve policy" +- return +- } +- send "lindex \$principal 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_mod_date $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_mod_date" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_mod_date" +- return +- } +- } +- +- send "lindex \$principal 3\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_expire $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_expire" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_expire" +- return +- } +- } +- send "lindex \$policy 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_max_life $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_max_life" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_max_life" +- return +- } +- } +- if { $pw_expire != 999999999 } { +- fail "$test: pw_expire $pw_expire should be 999999999" +- return +- } +- pass "$test" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test28 +- +-test "modify-principal 29" +-proc test29 {} { +- global test +- global prompt +- +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if { ! ([create_principal_pol "$test/a" test-pol])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_POLICY_CLR} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 3\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test29 +- +-test "modify-principal 30" +-proc test30 {} { +- global test +- global prompt +- +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal_pol "$test/a" test-pol])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle [princ_w_pol "%s/a" \ +- test-pol-nopw] {KADM5_POLICY} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 3\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test30 +- +-test "modify-principal 31" +-proc test31 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle [princ_w_pol "%s/a" \ +- test-pol] {KADM5_POLICY} +- } $test]]} { +- fail "modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- if { ! [cmd {kadm5_get_policy $server_handle test-pol policy}]} { +- error_and_restart "$test: cannot retrieve policy" +- return +- } +- send "lindex \$principal 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_mod_date $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_mod_date" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_mod_date" +- return +- } +- } +- +- send "lindex \$principal 3\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_expire $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_expire" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_expire" +- return +- } +- } +- +- send "lindex \$policy 2\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" {set pw_max_life $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting pw_max_life" +- return +- } +- eof { +- error_and_restart "$test: eof getting pw_max_life" +- return +- } +- } +- if { [expr "$pw_mod_date + $pw_max_life"] != $pw_expire } { +- fail "$test: pw_expire is wrong" +- return +- } +- +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test31 +- +-test "modify-principal 32" +-proc test32 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 1234 0 0 0 0 0 0 0 0 0 0} \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 1\n" +- expect { +- -re "1234\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test32 +- +-test "modify-principal 33" +-proc test33 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 0 0 0 0 KRB5_KDB_DISALLOW_ALL_TIX 0 0 0 0} \ +- {KADM5_ATTRIBUTES} +- } $test]]} { +- fail "$test: modified fail" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 7\n" +- expect { +- -re "KRB5_KDB_DISALLOW_ALL_TIX.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test33 +- +-test "modify-principal 33.25" +-proc test3325 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 0 0 0 0 KRB5_KDB_REQUIRES_PWCHANGE 0 0 0 0} \ +- {KADM5_ATTRIBUTES} +- } $test]]} { +- fail "$test: modified fail" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 7\n" +- expect { +- -re "KRB5_KDB_REQUIRES_PWCHANGE.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test3325 +- +-test "modify-principal 33.5" +-proc test335 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 0 0 0 0 KRB5_KDB_DISALLOW_TGT_BASED 0 0 0 0} \ +- {KADM5_ATTRIBUTES} +- } $test]]} { +- fail "$test: modified fail" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 7\n" +- expect { +- -re "KRB5_KDB_DISALLOW_TGT_BASED.*$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test335 +- +- +-test "modify-principal 34" +-proc test34 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 0 3456 0 0 0 0 0 0 0} {KADM5_MAX_LIFE} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 4\n" +- expect { +- -re "3456\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test34 +- +-test "modify-principal 35" +-proc test35 {} { +- global prompt +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 0 0 0 0 0 7 0 0 0} {KADM5_KVNO} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 8\n" +- expect { +- -re "7\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test35 +- +-test "modify-principal 36" +-proc test36 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if { !( [create_principal_pol "$test/a" "test-pol"])} { +- error_and_restart "$test: could not create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if { ! [cmd {kadm5_get_policy $server_handle test-pol pol}]} { +- perror "$test: unexpected failure on get policy" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle [princ_w_pol "%s/a" \ +- test-pol] {KADM5_POLICY} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 10\n" +- expect { +- -re "test-pol\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- send "lindex \$pol 6\n" +- expect { +- -re "(\[0-9\]+)\n$prompt$" {set oldref $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting principal kvno (second time)" +- return +- } +- eof { +- error_and_restart "$test: eof getting principal kvno (second time)" +- return +- } +- } +- if { ! [cmd {kadm5_get_policy $server_handle test-pol pol2}]} { +- perror "$test: unexpected failure on get policy" +- return +- } +- send "lindex \$pol2 6\n" +- expect { +- -re "(\[0-9\]+)\n$prompt$" {set newref $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting principal kvno (second time)" +- return +- } +- eof { +- error_and_restart "$test: eof getting principal kvno (second time)" +- return +- } +- } +- if { $oldref != $newref } { +- fail "$test: policy reference count is wrong" +- return; +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test36 +- +-test "modify-principal 37" +-proc test37 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if { !( [create_principal "$test/a"])} { +- error_and_restart "$test: could not create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_POLICY_CLR} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test37 +- +-test "modify-principal 38" +-proc test38 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_PRINC_EXPIRE_TIME} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 1\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test38 +- +-test "modify-principal 39" +-proc test39 {} { +- global test +- global prompt +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! ([create_principal "$test/a"])} { +- perror "$test: unexpected failure in creating principal" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle [simple_principal "%s/a"] \ +- {KADM5_MAX_LIFE} +- } $test]]} { +- fail "$test: modify failed" +- return +- } +- if {! [cmd [format { +- kadm5_get_principal $server_handle "%s/a" principal KADM5_PRINCIPAL_NORMAL_MASK +- } $test]]} { +- error_and_restart "$test: could not retrieve principal" +- return +- } +- send "lindex \$principal 4\n" +- expect { +- -re "0\n$prompt$" { pass "$test" } +- timeout { fail "$test" } +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test39 +- +-test "modify-principal 40" +-proc test40 {} { +- global test +- global prompt +- +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test { +- kadm5_modify_principal $server_handle null \ +- {KADM5_PRINC_EXPIRE_TIME} +- } "EINVAL" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test40 +- +-test "modify-principal 43" +-proc test43 {} { +- global test +- one_line_fail_test [format { +- kadm5_modify_principal null [simple_principal \ +- "%s/a"] {KADM5_PW_EXPIRATION} +- } $test] "BAD_SERVER_HANDLE" +-} +-test43 +- +-test "modify-principal 44" +-proc test44 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- # setting fail auth count to a non-zero value must fail +- one_line_fail_test [format { +- kadm5_modify_principal $server_handle \ +- {"%s/a" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1234 0 0 {} {}} {KADM5_FAIL_AUTH_COUNT} +- } $test] "BAD_SERVER_PARAMS" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test44 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/randkey-principal-v2.exp b/src/lib/kadm5/unit-test/api.current/randkey-principal-v2.exp +deleted file mode 100644 +index 2925c1c43..000000000 +--- a/src/lib/kadm5/unit-test/api.current/randkey-principal-v2.exp ++++ /dev/null +@@ -1,61 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "randkey-principal 100" +-proc test100 {} { +- global test prompt +- +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal "$test/a"]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- # I'd like to specify a long list of keysalt tuples and make sure that +- # randkey does the right thing, but we can only use those enctypes that +- # krbtgt has a key for: 3DES and AES, according to the prototype kdc.conf. +- if {! [cmd [format { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test]]} { +- perror "$test: unexpected failure in randkey_principal" +- } +- send "puts \$num_keys\n" +- expect { +- -re "(\[0-9\]+)\n$prompt" { set num_keys $expect_out(1,string) } +- timeout { +- error_and_restart "$test: timeout getting num_keys" +- return +- } +- eof { +- error_and_restart "$test: eof getting num_keys" +- return +- } +- } +- +- # XXX Perhaps I should actually check the key type returned. +- if {$num_keys == 5} { +- pass "$test" +- } else { +- fail "$test: $num_keys keys, should be 5" +- } +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test100 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/api.current/randkey-principal.exp b/src/lib/kadm5/unit-test/api.current/randkey-principal.exp +deleted file mode 100644 +index 1484901fa..000000000 +--- a/src/lib/kadm5/unit-test/api.current/randkey-principal.exp ++++ /dev/null +@@ -1,297 +0,0 @@ +-load_lib lib.t +-api_exit +-api_start +- +-test "randkey-principal 1" +-proc test1 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal_pol "$test/a" once-a-min]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- if {! [cmd [format { +- kadm5_init "%s/a" "%s/a" $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } $test $test]]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] "PASS_TOOSOON" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test1 } +- +-test "randkey-principal 3" +-proc test3 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal_pol "$test/a" once-a-min]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- if {! [cmd [format { +- kadm5_init "%s/a" "%s/a" $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } $test $test]]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] "PASS_TOOSOON" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if ${RPC} { test3 } +- +-test "randkey-principal 13" +-proc test13 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- if {! [cmd [format { +- kadm5_modify_principal $server_handle [princ_w_pol "%s/a" \ +- once-a-min] KADM5_POLICY +- } $test]]} { +- perror "$test: failed modify" +- return +- } +- one_line_succeed_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test13 +- +-test "randkey-principal 15" +-proc test15 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal_pol "$test/a" once-a-min]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] "AUTH_CHANGEPW" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if { $RPC } { test15 } +- +-test "randkey-principal 28" +-proc test28 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test28 +- +-test "randkey-principal 28.25" +-proc test2825 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin admin $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] "AUTH" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-if {$RPC} { test2825 } +- +-test "randkey-principal 28.5" +-proc test285 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [cmd { +- kadm5_init admin/modify admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test285 +- +-test "randkey-principal 30" +-proc test30 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't delete principal \"$test/a\"" +- return +- } +- if {! [create_principal "$test/a"]} { +- error_and_restart "$test: creating principal" +- return +- } +- if {! [cmd [format { +- kadm5_init "%s/a" "%s/a" $KADM5_CHANGEPW_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } $test $test]]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test30 +- +-test "randkey-principal 31" +-proc test31 {} { +- global test +- if {! (( ! [principal_exists "$test/a"]) || +- [delete_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if {! [create_principal "$test/a"]} { +- error_and_restart "$test: creating principal" +- return +- } +- +- if {! [cmd [format { +- kadm5_init "%s/a" "%s/a" $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- } $test $test]]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_succeed_test [format { +- kadm5_randkey_principal $server_handle "%s/a" keys num_keys +- } $test] +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +-test31 +- +-test "randkey-principal 33" +-proc test33 {} { +- global test +- if {! (( [principal_exists "$test/a"]) || +- [create_principal "$test/a"])} { +- error_and_restart "$test: couldn't create principal \"$test/a\"" +- return +- } +- if { ! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- server_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- one_line_fail_test [format { +- kadm5_randkey_principal null "%s/a" keys num_keys +- } $test] "BAD_SERVER_HANDLE" +- if { ! [cmd {kadm5_destroy $server_handle}]} { +- perror "$test: unexpected failure in destroy" +- return +- } +-} +- +-test33 +- +-return "" +diff --git a/src/lib/kadm5/unit-test/config/unix.exp b/src/lib/kadm5/unit-test/config/unix.exp +deleted file mode 100644 +index d7706ec53..000000000 +--- a/src/lib/kadm5/unit-test/config/unix.exp ++++ /dev/null +@@ -1,222 +0,0 @@ +-source runenv.exp +- +-set prompt "% " +-set stty_init {-onlcr -opost intr \^C kill \^U} +-set kadmin_local $KADMIN_LOCAL +- +-# Backward compatibility until we're using expect 5 everywhere +-if {[info exists exp_version_4]} { +- global wait_error_index wait_errno_index wait_status_index +- set wait_error_index 0 +- set wait_errno_index 1 +- set wait_status_index 1 +-} else { +- set wait_error_index 2 +- set wait_errno_index 3 +- set wait_status_index 3 +-} +- +-if { [string length $VALGRIND] } { +- rename spawn valgrind_aux_spawn +- proc spawn { args } { +- global VALGRIND +- upvar 1 spawn_id spawn_id +- set newargs {} +- set inflags 1 +- set eatnext 0 +- foreach arg $args { +- if { $arg == "-ignore" \ +- || $arg == "-open" \ +- || $arg == "-leaveopen" } { +- lappend newargs $arg +- set eatnext 1 +- continue +- } +- if [string match "-*" $arg] { +- lappend newargs $arg +- continue +- } +- if { $eatnext } { +- set eatnext 0 +- lappend newargs $arg +- continue +- } +- if { $inflags } { +- set inflags 0 +- # Only run valgrind for local programs, not +- # system ones. +-#&&![string match "/bin/sh" $arg] sh is used to start kadmind! +- if [string match "/" [string index $arg 0]]&&![string match "/bin/ls" $arg]&&![regexp {/kshd$} $arg] { +- set newargs [concat $newargs $VALGRIND] +- } +- } +- lappend newargs $arg +- } +- set pid [eval valgrind_aux_spawn $newargs] +- return $pid +- } +-} +- +-# Hack around Solaris 9 kernel race condition that causes last output +-# from a pty to get dropped. +-if { $PRIOCNTL_HACK } { +- catch {exec priocntl -s -c FX -m 30 -p 30 -i pid [getpid]} +- rename spawn oldspawn +- proc spawn { args } { +- upvar 1 spawn_id spawn_id +- set newargs {} +- set inflags 1 +- set eatnext 0 +- foreach arg $args { +- if { $arg == "-ignore" \ +- || $arg == "-open" \ +- || $arg == "-leaveopen" } { +- lappend newargs $arg +- set eatnext 1 +- continue +- } +- if [string match "-*" $arg] { +- lappend newargs $arg +- continue +- } +- if { $eatnext } { +- set eatnext 0 +- lappend newargs $arg +- continue +- } +- if { $inflags } { +- set inflags 0 +- set newargs [concat $newargs {priocntl -e -c FX -p 0}] +- } +- lappend newargs $arg +- } +- set pid [eval oldspawn $newargs] +- return $pid +- } +-} +- +-# Variables for keeping track of api process state +-set api_pid "0" +- +-proc api_exit {} { +- global spawn_id +- global api_pid +- +-# puts stdout "Starting api_exit (spawn_id $spawn_id)." +- catch {close} errMsg +- catch {wait} errMsg +-# puts stdout "Finishing api_exit for $api_pid." +- set api_pid "0" +-} +- +-proc api_isrunning {pid} { +- global api_pid +- +-# puts stdout "testing $pid, api_pid is $api_pid" +- if {$pid == $api_pid} { +- return 1; +- } else { +- return 0; +- } +-} +- +-proc api_version {} { +-} +- +-proc api_start {} { +- global API +- global env +- global spawn_id +- global prompt +- global api_pid +- +- set pid [spawn $API] +- expect { +- -re "$prompt$" {} +- eof { perror "EOF starting API" } +- timeout { perror "Timeout starting API" } +- } +- if {! [info exists env(TCLUTIL)]} { +- perror "TCLUTIL environment variable isn't set" +- } +- # tcl 8.4 for some reason screws up autodetection of output +- # EOL translation. Work around it for now. +- send "if { \[info commands fconfigure\] ne \"\" } { fconfigure stdout -translation lf }\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF starting API" } +- timeout { perror "Timeout starting API" } +- } +- send "source $env(TCLUTIL)\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF starting API" } +- timeout { perror "Timeout starting API" } +- } +- send "set current_struct_version \[expr \$KADM5_STRUCT_VERSION &~ \$KADM5_STRUCT_VERSION_MASK\]\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set current_api_version \[expr \$KADM5_API_VERSION_3 &~ \$KADM5_API_VERSION_MASK\]\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set bad_struct_version_mask \[expr 0x65432100 | \$current_struct_version\]\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set bad_api_version_mask \[expr 0x65432100 | \$current_api_version\]\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set no_api_version_mask \$current_api_version\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set no_struct_version_mask \$current_struct_version\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set old_api_version \[expr \$KADM5_API_VERSION_MASK | 0x00\]\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set old_struct_version \[expr \$KADM5_STRUCT_VERSION_MASK | 0x00\]\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set new_api_version \[expr \$KADM5_API_VERSION_MASK | 0xca\]\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- send "set new_struct_version \[expr \$KADM5_STRUCT_VERSION_MASK | 0xca\]\n" +- expect { +- -re "$prompt$" {} +- eof { perror "EOF setting API variables"} +- timeout { perror "timeout setting API variables"} +- } +- +- set api_pid $pid +-# puts stdout "Finishing api_start (spawn_id $spawn_id, pid $api_pid)." +- return $pid +-} +-api_start +- +diff --git a/src/lib/kadm5/unit-test/deps b/src/lib/kadm5/unit-test/deps +deleted file mode 100644 +index cf54f475b..000000000 +--- a/src/lib/kadm5/unit-test/deps ++++ /dev/null +@@ -1,86 +0,0 @@ +-# +-# Generated makefile dependencies follow. +-# +-$(OUTPRE)init-test.$(OBJEXT): $(BUILDTOP)/include/gssapi/gssapi.h \ +- $(BUILDTOP)/include/gssrpc/types.h $(BUILDTOP)/include/kadm5/admin.h \ +- $(BUILDTOP)/include/kadm5/chpass_util_strings.h $(BUILDTOP)/include/kadm5/kadm_err.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(COM_ERR_DEPS) $(top_srcdir)/include/gssrpc/auth.h \ +- $(top_srcdir)/include/gssrpc/auth_gss.h $(top_srcdir)/include/gssrpc/auth_unix.h \ +- $(top_srcdir)/include/gssrpc/clnt.h $(top_srcdir)/include/gssrpc/rename.h \ +- $(top_srcdir)/include/gssrpc/rpc.h $(top_srcdir)/include/gssrpc/rpc_msg.h \ +- $(top_srcdir)/include/gssrpc/svc.h $(top_srcdir)/include/gssrpc/svc_auth.h \ +- $(top_srcdir)/include/gssrpc/xdr.h $(top_srcdir)/include/kdb.h \ +- $(top_srcdir)/include/krb5.h init-test.c +-$(OUTPRE)destroy-test.$(OBJEXT): $(BUILDTOP)/include/gssapi/gssapi.h \ +- $(BUILDTOP)/include/gssrpc/types.h $(BUILDTOP)/include/kadm5/admin.h \ +- $(BUILDTOP)/include/kadm5/admin_internal.h $(BUILDTOP)/include/kadm5/chpass_util_strings.h \ +- $(BUILDTOP)/include/kadm5/client_internal.h $(BUILDTOP)/include/kadm5/kadm_err.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(COM_ERR_DEPS) $(top_srcdir)/include/gssrpc/auth.h \ +- $(top_srcdir)/include/gssrpc/auth_gss.h $(top_srcdir)/include/gssrpc/auth_unix.h \ +- $(top_srcdir)/include/gssrpc/clnt.h $(top_srcdir)/include/gssrpc/rename.h \ +- $(top_srcdir)/include/gssrpc/rpc.h $(top_srcdir)/include/gssrpc/rpc_msg.h \ +- $(top_srcdir)/include/gssrpc/svc.h $(top_srcdir)/include/gssrpc/svc_auth.h \ +- $(top_srcdir)/include/gssrpc/xdr.h $(top_srcdir)/include/kdb.h \ +- $(top_srcdir)/include/krb5.h destroy-test.c +-$(OUTPRE)handle-test.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/gssapi/gssapi.h $(BUILDTOP)/include/gssrpc/types.h \ +- $(BUILDTOP)/include/kadm5/admin.h $(BUILDTOP)/include/kadm5/admin_internal.h \ +- $(BUILDTOP)/include/kadm5/chpass_util_strings.h $(BUILDTOP)/include/kadm5/kadm_err.h \ +- $(BUILDTOP)/include/kadm5/server_internal.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(COM_ERR_DEPS) $(top_srcdir)/include/gssrpc/auth.h \ +- $(top_srcdir)/include/gssrpc/auth_gss.h $(top_srcdir)/include/gssrpc/auth_unix.h \ +- $(top_srcdir)/include/gssrpc/clnt.h $(top_srcdir)/include/gssrpc/rename.h \ +- $(top_srcdir)/include/gssrpc/rpc.h $(top_srcdir)/include/gssrpc/rpc_msg.h \ +- $(top_srcdir)/include/gssrpc/svc.h $(top_srcdir)/include/gssrpc/svc_auth.h \ +- $(top_srcdir)/include/gssrpc/xdr.h $(top_srcdir)/include/kdb.h \ +- $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/plugin.h \ +- handle-test.c +-$(OUTPRE)iter-test.$(OBJEXT): $(BUILDTOP)/include/gssapi/gssapi.h \ +- $(BUILDTOP)/include/gssrpc/types.h $(BUILDTOP)/include/kadm5/admin.h \ +- $(BUILDTOP)/include/kadm5/chpass_util_strings.h $(BUILDTOP)/include/kadm5/kadm_err.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(COM_ERR_DEPS) $(top_srcdir)/include/gssrpc/auth.h \ +- $(top_srcdir)/include/gssrpc/auth_gss.h $(top_srcdir)/include/gssrpc/auth_unix.h \ +- $(top_srcdir)/include/gssrpc/clnt.h $(top_srcdir)/include/gssrpc/rename.h \ +- $(top_srcdir)/include/gssrpc/rpc.h $(top_srcdir)/include/gssrpc/rpc_msg.h \ +- $(top_srcdir)/include/gssrpc/svc.h $(top_srcdir)/include/gssrpc/svc_auth.h \ +- $(top_srcdir)/include/gssrpc/xdr.h $(top_srcdir)/include/kdb.h \ +- $(top_srcdir)/include/krb5.h iter-test.c +-$(OUTPRE)setkey-test.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/gssapi/gssapi.h $(BUILDTOP)/include/gssrpc/types.h \ +- $(BUILDTOP)/include/kadm5/admin.h $(BUILDTOP)/include/kadm5/chpass_util_strings.h \ +- $(BUILDTOP)/include/kadm5/kadm_err.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(top_srcdir)/include/gssrpc/auth.h \ +- $(top_srcdir)/include/gssrpc/auth_gss.h $(top_srcdir)/include/gssrpc/auth_unix.h \ +- $(top_srcdir)/include/gssrpc/clnt.h $(top_srcdir)/include/gssrpc/rename.h \ +- $(top_srcdir)/include/gssrpc/rpc.h $(top_srcdir)/include/gssrpc/rpc_msg.h \ +- $(top_srcdir)/include/gssrpc/svc.h $(top_srcdir)/include/gssrpc/svc_auth.h \ +- $(top_srcdir)/include/gssrpc/xdr.h $(top_srcdir)/include/k5-buf.h \ +- $(top_srcdir)/include/k5-err.h $(top_srcdir)/include/k5-gmt_mktime.h \ +- $(top_srcdir)/include/k5-int-pkinit.h $(top_srcdir)/include/k5-int.h \ +- $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-plugin.h \ +- $(top_srcdir)/include/k5-thread.h $(top_srcdir)/include/k5-trace.h \ +- $(top_srcdir)/include/kdb.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- setkey-test.c +-$(OUTPRE)randkey-test.$(OBJEXT): $(BUILDTOP)/include/gssapi/gssapi.h \ +- $(BUILDTOP)/include/gssrpc/types.h $(BUILDTOP)/include/kadm5/admin.h \ +- $(BUILDTOP)/include/kadm5/chpass_util_strings.h $(BUILDTOP)/include/kadm5/kadm_err.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(COM_ERR_DEPS) $(top_srcdir)/include/gssrpc/auth.h \ +- $(top_srcdir)/include/gssrpc/auth_gss.h $(top_srcdir)/include/gssrpc/auth_unix.h \ +- $(top_srcdir)/include/gssrpc/clnt.h $(top_srcdir)/include/gssrpc/rename.h \ +- $(top_srcdir)/include/gssrpc/rpc.h $(top_srcdir)/include/gssrpc/rpc_msg.h \ +- $(top_srcdir)/include/gssrpc/svc.h $(top_srcdir)/include/gssrpc/svc_auth.h \ +- $(top_srcdir)/include/gssrpc/xdr.h $(top_srcdir)/include/kdb.h \ +- $(top_srcdir)/include/krb5.h randkey-test.c +-$(OUTPRE)lock-test.$(OBJEXT): $(BUILDTOP)/include/gssapi/gssapi.h \ +- $(BUILDTOP)/include/gssrpc/types.h $(BUILDTOP)/include/kadm5/admin.h \ +- $(BUILDTOP)/include/kadm5/chpass_util_strings.h $(BUILDTOP)/include/kadm5/kadm_err.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(COM_ERR_DEPS) $(top_srcdir)/include/gssrpc/auth.h \ +- $(top_srcdir)/include/gssrpc/auth_gss.h $(top_srcdir)/include/gssrpc/auth_unix.h \ +- $(top_srcdir)/include/gssrpc/clnt.h $(top_srcdir)/include/gssrpc/rename.h \ +- $(top_srcdir)/include/gssrpc/rpc.h $(top_srcdir)/include/gssrpc/rpc_msg.h \ +- $(top_srcdir)/include/gssrpc/svc.h $(top_srcdir)/include/gssrpc/svc_auth.h \ +- $(top_srcdir)/include/gssrpc/xdr.h $(top_srcdir)/include/kdb.h \ +- $(top_srcdir)/include/krb5.h lock-test.c +diff --git a/src/lib/kadm5/unit-test/destroy-test.c b/src/lib/kadm5/unit-test/destroy-test.c +deleted file mode 100644 +index 738cfeb86..000000000 +--- a/src/lib/kadm5/unit-test/destroy-test.c ++++ /dev/null +@@ -1,48 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +-#define TEST_NUM 25 +- +-int main() +-{ +- kadm5_ret_t ret; +- char *cp; +- int x; +- void *server_handle; +- kadm5_server_handle_t handle; +- krb5_context context; +- +- ret = kadm5_init_krb5_context(&context); +- if (ret != 0) { +- com_err("test", ret, "context init"); +- exit(2); +- } +- for(x = 0; x < TEST_NUM; x++) { +- ret = kadm5_init(context, "admin", "admin", KADM5_ADMIN_SERVICE, 0, +- KADM5_STRUCT_VERSION, KADM5_API_VERSION_4, NULL, +- &server_handle); +- if(ret != KADM5_OK) { +- com_err("test", ret, "init"); +- exit(2); +- } +- handle = (kadm5_server_handle_t) server_handle; +- cp = strdup(strchr(handle->cache_name, ':') + 1); +- kadm5_destroy(server_handle); +- if(access(cp, F_OK) == 0) { +- puts("ticket cache not destroyed"); +- exit(2); +- } +- free(cp); +- } +- krb5_free_context(context); +- exit(0); +-} +diff --git a/src/lib/kadm5/unit-test/diff-files/destroy-1 b/src/lib/kadm5/unit-test/diff-files/destroy-1 +deleted file mode 100644 +index 593d67320..000000000 +--- a/src/lib/kadm5/unit-test/diff-files/destroy-1 ++++ /dev/null +@@ -1,2 +0,0 @@ +-##! nochanges +- +diff --git a/src/lib/kadm5/unit-test/diff-files/no-diffs b/src/lib/kadm5/unit-test/diff-files/no-diffs +deleted file mode 100644 +index 593d67320..000000000 +--- a/src/lib/kadm5/unit-test/diff-files/no-diffs ++++ /dev/null +@@ -1,2 +0,0 @@ +-##! nochanges +- +diff --git a/src/lib/kadm5/unit-test/handle-test.c b/src/lib/kadm5/unit-test/handle-test.c +deleted file mode 100644 +index 29bd2c9a1..000000000 +--- a/src/lib/kadm5/unit-test/handle-test.c ++++ /dev/null +@@ -1,140 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#ifdef CLIENT_TEST +-#include +-#else +-#include +-#include +-#endif +- +-int main(int argc, char *argv[]) +-{ +- kadm5_ret_t ret; +- void *server_handle; +- kadm5_server_handle_t handle; +- kadm5_server_handle_rec orig_handle; +- kadm5_policy_ent_rec pol; +- kadm5_principal_ent_t princ; +- kadm5_principal_ent_rec kprinc; +- krb5_keyblock *key; +- krb5_principal tprinc; +- krb5_context context; +- +- +- kadm5_init_krb5_context(&context); +- +- ret = kadm5_init(context, "admin/none", "admin", KADM5_ADMIN_SERVICE, NULL, +- KADM5_STRUCT_VERSION, KADM5_API_VERSION_4, NULL, +- &server_handle); +- if(ret != KADM5_OK) { +- com_err("test", ret, "init"); +- exit(2); +- } +- handle = (kadm5_server_handle_t) server_handle; +- orig_handle = *handle; +- handle->magic_number = KADM5_STRUCT_VERSION; +- krb5_parse_name(context, "testuser", &tprinc); +- ret = kadm5_get_principal(server_handle, tprinc, &kprinc, +- KADM5_PRINCIPAL_NORMAL_MASK); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "get-principal", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_get_policy(server_handle, "pol1", &pol); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "get-policy", +- error_message(ret)); +- exit(1); +- } +- +- princ = &kprinc; +- ret = kadm5_create_principal(server_handle, princ, KADM5_PRINCIPAL, "pass"); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "create-principal", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_create_policy(server_handle, &pol, KADM5_POLICY); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "create-policy", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_modify_principal(server_handle, princ, KADM5_PW_EXPIRATION); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "modify-principal", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_modify_policy(server_handle, &pol, KADM5_PW_MAX_LIFE); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "modify-policy", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_delete_principal(server_handle, tprinc); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "delete-principal", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_delete_policy(server_handle, "pol1"); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "delete-policy", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_chpass_principal(server_handle, tprinc, "FooBar"); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "chpass", +- error_message(ret)); +- exit(1); +- } +- ret = kadm5_randkey_principal(server_handle, tprinc, &key, NULL); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "randkey", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_rename_principal(server_handle, tprinc, tprinc); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "rename", +- error_message(ret)); +- exit(1); +- } +- +- ret = kadm5_destroy(server_handle); +- if(ret != KADM5_BAD_SERVER_HANDLE) { +- fprintf(stderr, "%s -- returned -- %s\n", "destroy", +- error_message(ret)); +- exit(1); +- } +- +- *handle = orig_handle; +- ret = kadm5_destroy(server_handle); +- if (ret != KADM5_OK) { +- fprintf(stderr, "valid %s -- returned -- %s\n", "destroy", +- error_message(ret)); +- exit(1); +- } +- +- krb5_free_principal(context, tprinc); +- krb5_free_context(context); +- exit(0); +-} +diff --git a/src/lib/kadm5/unit-test/init-test.c b/src/lib/kadm5/unit-test/init-test.c +deleted file mode 100644 +index 9f06621e8..000000000 +--- a/src/lib/kadm5/unit-test/init-test.c ++++ /dev/null +@@ -1,39 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include +-#include +-#include +-#include +-#include +-#include +- +-int main() +-{ +- kadm5_ret_t ret; +- void *server_handle; +- kadm5_config_params params; +- krb5_context context; +- +- memset(¶ms, 0, sizeof(params)); +- params.mask |= KADM5_CONFIG_NO_AUTH; +- ret = kadm5_init_krb5_context(&context); +- if (ret != 0) { +- com_err("init-test", ret, "while initializing krb5 context"); +- exit(1); +- } +- ret = kadm5_init(context, "admin", "admin", NULL, ¶ms, +- KADM5_STRUCT_VERSION, KADM5_API_VERSION_4, NULL, +- &server_handle); +- if (!ret) +- (void)kadm5_destroy(server_handle); +- krb5_free_context(context); +- if (ret == KADM5_RPC_ERROR) { +- exit(0); +- } +- else if (ret != 0) { +- com_err("init-test", ret, "while initializing without auth"); +- exit(1); +- } else { +- fprintf(stderr, "Unexpected success while initializing without auth!\n"); +- exit(1); +- } +-} +diff --git a/src/lib/kadm5/unit-test/iter-test.c b/src/lib/kadm5/unit-test/iter-test.c +deleted file mode 100644 +index cd85ebe4d..000000000 +--- a/src/lib/kadm5/unit-test/iter-test.c ++++ /dev/null +@@ -1,51 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include +-#include +-#include +- +-int main(int argc, char **argv) +-{ +- kadm5_ret_t ret; +- void *server_handle; +- char **names; +- int count, princ, i; +- krb5_context context; +- +- if (argc != 3) { +- fprintf(stderr, "Usage: %s [-princ|-pol] exp\n", argv[0]); +- exit(1); +- } +- princ = (strcmp(argv[1], "-princ") == 0); +- +- ret = kadm5_init_krb5_context(&context); +- if (ret != KADM5_OK) { +- com_err("iter-test", ret, "while initializing context"); +- exit(1); +- } +- ret = kadm5_init("admin", "admin", KADM5_ADMIN_SERVICE, 0, +- KADM5_STRUCT_VERSION, KADM5_API_VERSION_4, NULL, +- &server_handle); +- if (ret != KADM5_OK) { +- com_err("iter-test", ret, "while initializing"); +- exit(1); +- } +- +- if (princ) +- ret = kadm5_get_principals(server_handle, argv[2], &names, &count); +- else +- ret = kadm5_get_policies(server_handle, argv[2], &names, &count); +- +- if (ret != KADM5_OK) { +- com_err("iter-test", ret, "while retrieving list"); +- exit(1); +- } +- +- for (i = 0; i < count; i++) +- printf("%d: %s\n", i, names[i]); +- +- kadm5_free_name_list(server_handle, names, count); +- +- (void) kadm5_destroy(server_handle); +- +- return 0; +-} +diff --git a/src/lib/kadm5/unit-test/lib/lib.t b/src/lib/kadm5/unit-test/lib/lib.t +deleted file mode 100644 +index 3444775cf..000000000 +--- a/src/lib/kadm5/unit-test/lib/lib.t ++++ /dev/null +@@ -1,306 +0,0 @@ +-global timeout +-set timeout 60 +- +-set lib_pid 0 +- +-# +-# The functions in this library used to be responsible for bazillions +-# of wasted api_starts. Now, they all just use their own library +-# handle so they are not interrupted when the main tests call init or +-# destroy. They have to keep track of when the api exists and +-# restarts, though, since the lib_handle needs to be re-opened in that +-# case. +-# +-proc lib_start_api {} { +- global spawn_id lib_pid test +- +- if {! [api_isrunning $lib_pid]} { +- api_exit +- set lib_pid [api_start] +- if {! [cmd { +- kadm5_init admin admin $KADM5_ADMIN_SERVICE null \ +- $KADM5_STRUCT_VERSION $KADM5_API_VERSION_3 \ +- lib_handle +- }]} { +- perror "$test: unexpected failure in init" +- return +- } +- verbose "+++ restarted api ($lib_pid) for lib" +- } else { +- verbose "+++ api $lib_pid already running for lib" +- } +-} +- +-proc cmd {command} { +- global prompt +- global spawn_id +- global test +- +- send "[string trim $command]\n" +- expect { +- -re "OK .*$prompt$" { return 1 } +- -re "ERROR .*$prompt$" { return 0 } +- "wrong # args" { perror "$test: wrong number args"; return 0 } +- timeout { fail "$test: timeout"; return 0 } +- eof { fail "$test: eof"; api_exit; lib_start_api; return 0 } +- } +-} +- +-proc tcl_cmd {command} { +- global prompt spawn_id test +- +- send "[string trim $command]\n" +- expect { +- -re "$prompt$" { return 1} +- "wrong # args" { perror "$test: wrong number args"; return 0 } +- timeout { error_and_restart "timeout" } +- eof { api_exit; lib_start_api; return 0 } +- } +-} +- +-proc one_line_succeed_test {command} { +- global prompt +- global spawn_id +- global test +- +- send "[string trim $command]\n" +- expect { +- -re "OK .*$prompt$" { pass "$test"; return 1 } +- -re "ERROR .*$prompt$" { +- fail "$test: $expect_out(buffer)"; return 0 +- } +- "wrong # args" { perror "$test: wrong number args"; return 0 } +- timeout { fail "$test: timeout"; return 0 } +- eof { fail "$test: eof"; api_exit; lib_start_api; return 0 } +- } +-} +- +-proc one_line_fail_test {command code} { +- global prompt +- global spawn_id +- global test +- +- send "[string trim $command]\n" +- expect { +- -re "ERROR .*$code.*$prompt$" { pass "$test"; return 1 } +- -re "ERROR .*$prompt$" { fail "$test: bad failure"; return 0 } +- -re "OK .*$prompt$" { fail "$test: bad success"; return 0 } +- "wrong # args" { perror "$test: wrong number args"; return 0 } +- timeout { fail "$test: timeout"; return 0 } +- eof { fail "$test: eof"; api_exit; lib_start_api; return 0 } +- } +-} +- +-proc one_line_fail_test_nochk {command} { +- global prompt +- global spawn_id +- global test +- +- send "[string trim $command]\n" +- expect { +- -re "ERROR .*$prompt$" { pass "$test:"; return 1 } +- -re "OK .*$prompt$" { fail "$test: bad success"; return 0 } +- "wrong # args" { perror "$test: wrong number args"; return 0 } +- timeout { fail "$test: timeout"; return 0 } +- eof { fail "$test: eof"; api_exit; lib_start_api; return 0 } +- } +-} +- +-proc resync {} { +- global prompt spawn_id test +- +- expect { +- -re "$prompt$" {} +- "wrong # args" { perror "$test: wrong number args"; return 0 } +- eof { api_exit; lib_start_api } +- } +-} +- +-proc create_principal {name} { +- lib_start_api +- +- set ret [cmd [format { +- kadm5_create_principal $lib_handle [simple_principal \ +- "%s"] {KADM5_PRINCIPAL} "%s" +- } $name $name]] +- +- return $ret +-} +- +-proc create_policy {name} { +- lib_start_api +- +- set ret [cmd [format { +- kadm5_create_policy $lib_handle [simple_policy "%s"] \ +- {KADM5_POLICY} +- } $name $name]] +- +- return $ret +-} +- +-proc create_principal_pol {name policy} { +- lib_start_api +- +- set ret [cmd [format { +- kadm5_create_principal $lib_handle [princ_w_pol "%s" \ +- "%s"] {KADM5_PRINCIPAL KADM5_POLICY} "%s" +- } $name $policy $name]] +- +- return $ret +-} +- +-proc delete_principal {name} { +- lib_start_api +- +- set ret [cmd [format { +- kadm5_delete_principal $lib_handle "%s" +- } $name]] +- +- return $ret +-} +- +-proc delete_policy {name} { +- lib_start_api +- +- set ret [cmd [format {kadm5_delete_policy $lib_handle "%s"} $name]] +- +- return $ret +-} +- +-proc principal_exists {name} { +-# puts stdout "Starting principal_exists." +- +- lib_start_api +- +- set ret [cmd [format { +- kadm5_get_principal $lib_handle "%s" principal \ +- KADM5_PRINCIPAL_NORMAL_MASK +- } $name]] +- +-# puts stdout "Finishing principal_exists." +- +- return $ret +-} +- +-proc policy_exists {name} { +- lib_start_api +- +-# puts stdout "Starting policy_exists." +- +- set ret [cmd [format { +- kadm5_get_policy $lib_handle "%s" policy +- } $name]] +- +-# puts stdout "Finishing policy_exists." +- +- return $ret +-} +- +-proc error_and_restart {error} { +- api_exit +- api_start +- perror $error +-} +- +-proc test {name} { +- global test verbose +- +- set test $name +- if {$verbose >= 1} { +- puts stdout "At $test" +- } +-} +- +-proc begin_dump {} { +- global TOP +- global RPC +- +- if { ! $RPC } { +-# exec $env(SIMPLE_DUMP) > /tmp/dump.before +- } +-} +- +-proc end_dump_compare {name} { +- global file +- global TOP +- global RPC +- +- if { ! $RPC } { +-# set file $TOP/admin/lib/unit-test/diff-files/$name +-# exec $env(SIMPLE_DUMP) > /tmp/dump.after +-# exec $env(COMPARE_DUMP) /tmp/dump.before /tmp/dump.after $file +- } +-} +- +-proc kinit { princ pass {opts ""} } { +- global env; +- global KINIT +- +- eval spawn $KINIT -5 $opts $princ +- expect { +- -re {Password for .*: $} +- {send "$pass\n"} +- timeout {puts "Timeout waiting for prompt" ; close } +- } +- +- # this necessary so close(1) in the child will not sleep waiting for +- # the parent, which is us, to read pending data. +- +- expect { +- "when initializing cache" { perror "kinit failed: $expect_out(buffer)" } +- eof {} +- } +- wait +-} +- +-proc kdestroy {} { +- global KDESTROY +- global errorCode errorInfo +- global env +- +- if {[info exists errorCode]} { +- set saveErrorCode $errorCode +- } +- if {[info exists errorInfo]} { +- set saveErrorInfo $errorInfo +- } +- catch "exec $KDESTROY -5 2>/dev/null" +- if {[info exists saveErrorCode]} { +- set errorCode $saveErrorCode +- } elseif {[info exists errorCode]} { +- unset errorCode +- } +- if {[info exists saveErrorInfo]} { +- set errorInfo $saveErrorInfo +- } elseif {[info exists errorInfo]} { +- unset errorInfo +- } +-} +- +-proc create_principal_with_keysalts {name keysalts} { +- global kadmin_local +- +- spawn $kadmin_local -e "$keysalts" +- expect { +- "kadmin.local:" {} +- default { perror "waiting for kadmin.local prompt"; return 1} +- } +- send "ank -pw \"$name\" \"$name\"\n" +- expect { +- -re "Principal \"$name.*\" created." {} +- "kadmin.local:" { +- perror "expecting principal created message"; +- return 1 +- } +- default { perror "waiting for principal created message"; return 1 } +- } +- expect { +- "kadmin.local:" {} +- default { perror "waiting for kadmin.local prompt"; return 1 } +- } +- close +- wait +- return 0 +-} +- +- +diff --git a/src/lib/kadm5/unit-test/lock-test.c b/src/lib/kadm5/unit-test/lock-test.c +deleted file mode 100644 +index 59f9d2609..000000000 +--- a/src/lib/kadm5/unit-test/lock-test.c ++++ /dev/null +@@ -1,105 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include +-#include +-#include +-#include +-#include +- +-char *whoami; +- +-static void usage() +-{ +- fprintf(stderr, +- "Usage: %s {shared|exclusive|permanent|release|" +- "get name|wait} ...\n", whoami); +- exit(1); +-} +- +-int main(int argc, char **argv) +-{ +- krb5_error_code ret; +- osa_policy_ent_t entry; +- krb5_context context; +- kadm5_config_params params; +- krb5_error_code kret; +- +- whoami = argv[0]; +- +- kret = kadm5_init_krb5_context(&context); +- if (kret) { +- com_err(whoami, kret, "while initializing krb5"); +- exit(1); +- } +- +- params.mask = 0; +- ret = kadm5_get_config_params(context, 1, ¶ms, ¶ms); +- if (ret) { +- com_err(whoami, ret, "while retrieving configuration parameters"); +- exit(1); +- } +- if (! (params.mask & KADM5_CONFIG_ADBNAME)) { +- com_err(whoami, KADM5_BAD_SERVER_PARAMS, +- "while retrieving configuration parameters"); +- exit(1); +- } +- +- ret = krb5_db_open( context, NULL, KRB5_KDB_OPEN_RW); +- if (ret) { +- com_err(whoami, ret, "while opening database"); +- exit(1); +- } +- +- argc--; argv++; +- while (argc) { +- if (strcmp(*argv, "shared") == 0) { +- ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_SHARED); +- if (ret) +- com_err(whoami, ret, "while getting shared lock"); +- else +- printf("shared\n"); +- } else if (strcmp(*argv, "exclusive") == 0) { +- ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_EXCLUSIVE ); +- if (ret) +- com_err(whoami, ret, "while getting exclusive lock"); +- else +- printf("exclusive\n"); +- } else if (strcmp(*argv, "permanent") == 0) { +- ret = krb5_db_lock(context, KRB5_DB_LOCKMODE_EXCLUSIVE ); +- if (ret) +- com_err(whoami, ret, "while getting permanent lock"); +- else +- printf("permanent\n"); +- } else if (strcmp(*argv, "release") == 0) { +- ret = krb5_db_unlock(context); +- if (ret) +- com_err(whoami, ret, "while releasing lock"); +- else +- printf("released\n"); +- } else if (strcmp(*argv, "get") == 0) { +- argc--; argv++; +- if (!argc) usage(); +- if ((ret = krb5_db_get_policy(context, *argv, &entry))) { +- com_err(whoami, ret, "while getting policy"); +- } else { +- printf("retrieved\n"); +- krb5_db_free_policy(context, entry); +- } +- } else if (strcmp(*argv, "wait") == 0) { +- getchar(); +- } else { +- fprintf(stderr, "%s: Invalid argument \"%s\"\n", +- whoami, *argv); +- usage(); +- } +- +- argc--; argv++; +- } +- +- ret = krb5_db_fini(context); +- if (ret) { +- com_err(whoami, ret, "while closing database"); +- exit(1); +- } +- +- return 0; +-} +diff --git a/src/lib/kadm5/unit-test/randkey-test.c b/src/lib/kadm5/unit-test/randkey-test.c +deleted file mode 100644 +index dbef88ac8..000000000 +--- a/src/lib/kadm5/unit-test/randkey-test.c ++++ /dev/null +@@ -1,42 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +-#define TEST_NUM 1000 +- +-int main() +-{ +- kadm5_ret_t ret; +- krb5_keyblock *keys[TEST_NUM]; +- krb5_principal tprinc; +- krb5_keyblock *newkey; +- krb5_context context; +- void *server_handle; +- +- int x, i; +- +- kadm5_init_krb5_context(&context); +- +- krb5_parse_name(context, "testuser", &tprinc); +- ret = kadm5_init(context, "admin", "admin", KADM5_ADMIN_SERVICE, NULL, +- KADM5_STRUCT_VERSION, KADM5_API_VERSION_4, NULL, +- &server_handle); +- if(ret != KADM5_OK) { +- com_err("test", ret, "init"); +- exit(2); +- } +- for(x = 0; x < TEST_NUM; x++) { +- kadm5_randkey_principal(server_handle, tprinc, &keys[x], NULL); +- for(i = 0; i < x; i++) { +- if (!memcmp(newkey->contents, keys[i]->contents, newkey->length)) +- puts("match found"); +- } +- } +- kadm5_destroy(server_handle); +- exit(0); +-} +diff --git a/src/lib/kadm5/unit-test/setkey-test.c b/src/lib/kadm5/unit-test/setkey-test.c +deleted file mode 100644 +index 8e7df96e9..000000000 +--- a/src/lib/kadm5/unit-test/setkey-test.c ++++ /dev/null +@@ -1,246 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-#include +-#include +- +-#if HAVE_SRAND48 +-#define RAND() lrand48() +-#define SRAND(a) srand48(a) +-#define RAND_TYPE long +-#elif HAVE_SRAND +-#define RAND() rand() +-#define SRAND(a) srand(a) +-#define RAND_TYPE int +-#elif HAVE_SRANDOM +-#define RAND() random() +-#define SRAND(a) srandom(a) +-#define RAND_TYPE long +-#else /* no random */ +-need a random number generator +-#endif /* no random */ +- +-krb5_keyblock test1[] = { +- {0, ENCTYPE_AES128_CTS_HMAC_SHA1_96, 0, 0}, +- {-1}, +-}; +-krb5_keyblock test2[] = { +- {0, ENCTYPE_AES128_CTS_HMAC_SHA1_96, 0, 0}, +- {-1}, +-}; +-krb5_keyblock test3[] = { +- {0, ENCTYPE_AES128_CTS_HMAC_SHA1_96, 0, 0}, +- {-1}, +-}; +- +-krb5_keyblock *tests[] = { +- test1, test2, test3, NULL +-}; +- +-krb5_data tgtname = { +- 0, +- KRB5_TGS_NAME_SIZE, +- KRB5_TGS_NAME +-}; +- +-krb5_enctype ktypes[] = { 0, 0 }; +- +-extern krb5_kt_ops krb5_ktf_writable_ops; +- +-int +-main(int argc, char **argv) +-{ +- krb5_context context; +- krb5_keytab kt; +- krb5_keytab_entry ktent; +- krb5_encrypt_block eblock; +- krb5_creds my_creds; +- krb5_get_init_creds_opt *opt; +- kadm5_principal_ent_rec princ_ent; +- krb5_principal princ, server; +- char pw[16]; +- char *whoami, *principal, *authprinc, *authpwd; +- krb5_data pwdata; +- void *handle; +- int ret, test, encnum; +- unsigned int i; +- +- whoami = argv[0]; +- +- if (argc < 2 || argc > 4) { +- fprintf(stderr, "Usage: %s principal [authuser] [authpwd]\n", whoami); +- exit(1); +- } +- principal = argv[1]; +- authprinc = (argc > 2) ? argv[2] : argv[0]; +- authpwd = (argc > 3) ? argv[3] : NULL; +- +- /* +- * Setup. Initialize data structures, open keytab, open connection +- * to kadm5 server. +- */ +- +- memset(&context, 0, sizeof(context)); +- kadm5_init_krb5_context(&context); +- +- ret = krb5_parse_name(context, principal, &princ); +- if (ret) { +- com_err(whoami, ret, "while parsing principal name %s", principal); +- exit(1); +- } +- +- if((ret = krb5_build_principal_ext(context, &server, +- krb5_princ_realm(kcontext, princ)->length, +- krb5_princ_realm(kcontext, princ)->data, +- tgtname.length, tgtname.data, +- krb5_princ_realm(kcontext, princ)->length, +- krb5_princ_realm(kcontext, princ)->data, +- 0))) { +- com_err(whoami, ret, "while building server name"); +- exit(1); +- } +- +- ret = krb5_kt_default(context, &kt); +- if (ret) { +- com_err(whoami, ret, "while opening keytab"); +- exit(1); +- } +- +- ret = kadm5_init(context, authprinc, authpwd, KADM5_ADMIN_SERVICE, NULL, +- KADM5_STRUCT_VERSION, KADM5_API_VERSION_4, NULL, +- &handle); +- if (ret) { +- com_err(whoami, ret, "while initializing connection"); +- exit(1); +- } +- +- /* these pw's don't need to be secure, just different every time */ +- SRAND((RAND_TYPE)time((void *) NULL)); +- pwdata.data = pw; +- pwdata.length = sizeof(pw); +- +- /* +- * For each test: +- * +- * For each enctype in the test, construct a random password/key. +- * Assign all keys to principal with kadm5_setkey_principal. Add +- * each key to the keytab, and acquire an initial ticket with the +- * keytab (XXX can I specify the kvno explicitly?). If +- * krb5_get_init_creds_keytab succeeds, then the keys were set +- * successfully. +- */ +- for (test = 0; tests[test] != NULL; test++) { +- krb5_keyblock *testp = tests[test]; +- kadm5_key_data *extracted; +- int n_extracted, match; +- printf("+ Test %d:\n", test); +- +- for (encnum = 0; testp[encnum].magic != -1; encnum++) { +- for (i = 0; i < sizeof(pw); i++) +- pw[i] = (RAND() % 26) + '0'; /* XXX */ +- +- krb5_use_enctype(context, &eblock, testp[encnum].enctype); +- ret = krb5_string_to_key(context, &eblock, &testp[encnum], +- &pwdata, NULL); +- if (ret) { +- com_err(whoami, ret, "while converting string to key"); +- exit(1); +- } +- } +- +- /* now, encnum == # of keyblocks in testp */ +- ret = kadm5_setkey_principal(handle, princ, testp, encnum); +- if (ret) { +- com_err(whoami, ret, "while setting keys"); +- exit(1); +- } +- +- ret = kadm5_get_principal(handle, princ, &princ_ent, KADM5_KVNO); +- if (ret) { +- com_err(whoami, ret, "while retrieving principal"); +- exit(1); +- } +- +- ret = kadm5_get_principal_keys(handle, princ, 0, &extracted, +- &n_extracted); +- if (ret) { +- com_err(whoami, ret, "while extracting keys"); +- exit(1); +- } +- +- for (encnum = 0; testp[encnum].magic != -1; encnum++) { +- printf("+ enctype %d\n", testp[encnum].enctype); +- +- for (match = 0; match < n_extracted; match++) { +- if (extracted[match].key.enctype == testp[encnum].enctype) +- break; +- } +- if (match >= n_extracted) { +- com_err(whoami, KRB5_WRONG_ETYPE, "while matching enctypes"); +- exit(1); +- } +- if (extracted[match].key.length != testp[encnum].length || +- memcmp(extracted[match].key.contents, testp[encnum].contents, +- testp[encnum].length) != 0) { +- com_err(whoami, KRB5_KDB_NO_MATCHING_KEY, "verifying keys"); +- exit(1); +- } +- +- memset(&ktent, 0, sizeof(ktent)); +- ktent.principal = princ; +- ktent.key = testp[encnum]; +- ktent.vno = princ_ent.kvno; +- +- ret = krb5_kt_add_entry(context, kt, &ktent); +- if (ret) { +- com_err(whoami, ret, "while adding keytab entry"); +- exit(1); +- } +- +- memset(&my_creds, 0, sizeof(my_creds)); +- my_creds.client = princ; +- my_creds.server = server; +- +- ktypes[0] = testp[encnum].enctype; +- ret = krb5_get_init_creds_opt_alloc(context, &opt); +- if (ret) { +- com_err(whoami, ret, "while allocating gic opts"); +- exit(1); +- } +- krb5_get_init_creds_opt_set_etype_list(opt, ktypes, 1); +- ret = krb5_get_init_creds_keytab(context, &my_creds, princ, +- kt, 0, NULL /* in_tkt_service */, +- opt); +- krb5_get_init_creds_opt_free(context, opt); +- if (ret) { +- com_err(whoami, ret, "while acquiring initial ticket"); +- exit(1); +- } +- krb5_free_cred_contents(context, &my_creds); +- +- /* since I can't specify enctype explicitly ... */ +- ret = krb5_kt_remove_entry(context, kt, &ktent); +- if (ret) { +- com_err(whoami, ret, "while removing keytab entry"); +- exit(1); +- } +- } +- +- (void)kadm5_free_kadm5_key_data(context, n_extracted, extracted); +- } +- +- ret = krb5_kt_close(context, kt); +- if (ret) { +- com_err(whoami, ret, "while closing keytab"); +- exit(1); +- } +- +- ret = kadm5_destroy(handle); +- if (ret) { +- com_err(whoami, ret, "while closing kadmin connection"); +- exit(1); +- } +- +- krb5_free_principal(context, princ); +- krb5_free_principal(context, server); +- krb5_free_context(context); +- return 0; +-} +diff --git a/src/lib/kadm5/unit-test/site.exp b/src/lib/kadm5/unit-test/site.exp +deleted file mode 100644 +index 7fe397463..000000000 +--- a/src/lib/kadm5/unit-test/site.exp ++++ /dev/null +@@ -1,2 +0,0 @@ +-set tool kadm5_srv_tcl +-set prompt "% " +-- +2.31.1 + diff --git a/Remove-deprecated-OpenSSL-calls-from-softpkcs11.patch b/Remove-deprecated-OpenSSL-calls-from-softpkcs11.patch new file mode 100644 index 0000000..3c90b97 --- /dev/null +++ b/Remove-deprecated-OpenSSL-calls-from-softpkcs11.patch @@ -0,0 +1,150 @@ +From c99ecf1bb49e2fbd0bf30a7b357cf06407b9588a Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Sat, 15 May 2021 18:04:58 -0400 +Subject: [PATCH] Remove deprecated OpenSSL calls from softpkcs11 + +Rewrite add_pubkey_info() in terms of the EVP_PKEY interface. In this +process, fix its unchecked allocations and fail fast for non-RSA keys. + +(cherry picked from commit d6bf42279675100e3e4fe7c6e08eef74d49624cb) +(cherry picked from commit 5072bfdfaddae762680d0f9d97afa6dbf8274760) +--- + src/configure.ac | 1 + + src/tests/softpkcs11/main.c | 106 ++++++++++++++++++++++++------------ + 2 files changed, 72 insertions(+), 35 deletions(-) + +diff --git a/src/configure.ac b/src/configure.ac +index 3e1052db7..eb6307468 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -1114,6 +1114,7 @@ int i = 1; + ])], k5_cv_openssl_version_okay=yes, k5_cv_openssl_version_okay=no)]) + old_LIBS="$LIBS" + AC_CHECK_LIB(crypto, PKCS7_get_signer_info) ++ AC_CHECK_FUNCS(EVP_PKEY_get_bn_param) + LIBS="$old_LIBS" + fi + if test "$k5_cv_openssl_version_okay" = yes && (test "$enable_pkinit" = yes || test "$enable_pkinit" = try); then +diff --git a/src/tests/softpkcs11/main.c b/src/tests/softpkcs11/main.c +index caa537b68..86b4ef711 100644 +--- a/src/tests/softpkcs11/main.c ++++ b/src/tests/softpkcs11/main.c +@@ -413,47 +413,83 @@ add_object_attribute(struct st_object *o, + return CKR_OK; + } + ++#ifdef HAVE_EVP_PKEY_GET_BN_PARAM ++ ++/* Declare owner pointers since EVP_PKEY_get_bn_param() gives us copies. */ ++#define DECLARE_BIGNUM(name) BIGNUM *name = NULL ++#define RELEASE_BIGNUM(bn) BN_clear_free(bn) + static CK_RV +-add_pubkey_info(struct st_object *o, CK_KEY_TYPE key_type, EVP_PKEY *key) ++get_bignums(EVP_PKEY *key, BIGNUM **n, BIGNUM **e) + { +- switch (key_type) { +- case CKK_RSA: { +- CK_BYTE *modulus = NULL; +- size_t modulus_len = 0; +- CK_ULONG modulus_bits = 0; +- CK_BYTE *exponent = NULL; +- size_t exponent_len = 0; +- const RSA *rsa; +- const BIGNUM *n, *e; ++ if (EVP_PKEY_get_bn_param(key, "n", n) == 0 || ++ EVP_PKEY_get_bn_param(key, "e", e) == 0) ++ return CKR_DEVICE_ERROR; + +- rsa = EVP_PKEY_get0_RSA(key); +- RSA_get0_key(rsa, &n, &e, NULL); +- modulus_bits = BN_num_bits(n); +- +- modulus_len = BN_num_bytes(n); +- modulus = malloc(modulus_len); +- BN_bn2bin(n, modulus); +- +- exponent_len = BN_num_bytes(e); +- exponent = malloc(exponent_len); +- BN_bn2bin(e, exponent); +- +- add_object_attribute(o, 0, CKA_MODULUS, modulus, modulus_len); +- add_object_attribute(o, 0, CKA_MODULUS_BITS, +- &modulus_bits, sizeof(modulus_bits)); +- add_object_attribute(o, 0, CKA_PUBLIC_EXPONENT, +- exponent, exponent_len); +- +- free(modulus); +- free(exponent); +- } +- default: +- /* XXX */ +- break; +- } + return CKR_OK; + } + ++#else ++ ++/* Declare const pointers since the old API gives us aliases. */ ++#define DECLARE_BIGNUM(name) const BIGNUM *name ++#define RELEASE_BIGNUM(bn) ++static CK_RV ++get_bignums(EVP_PKEY *key, const BIGNUM **n, const BIGNUM **e) ++{ ++ const RSA *rsa; ++ ++ rsa = EVP_PKEY_get0_RSA(key); ++ RSA_get0_key(rsa, n, e, NULL); ++ ++ return CKR_OK; ++} ++ ++#endif ++ ++static CK_RV ++add_pubkey_info(struct st_object *o, CK_KEY_TYPE key_type, EVP_PKEY *key) ++{ ++ CK_BYTE *modulus = NULL, *exponent = 0; ++ size_t modulus_len = 0, exponent_len = 0; ++ CK_ULONG modulus_bits = 0; ++ CK_RV ret; ++ DECLARE_BIGNUM(n); ++ DECLARE_BIGNUM(e); ++ ++ if (key_type != CKK_RSA) ++ abort(); ++ ++ ret = get_bignums(key, &n, &e); ++ if (ret != CKR_OK) ++ goto done; ++ ++ modulus_bits = BN_num_bits(n); ++ modulus_len = BN_num_bytes(n); ++ exponent_len = BN_num_bytes(e); ++ ++ modulus = malloc(modulus_len); ++ exponent = malloc(exponent_len); ++ if (modulus == NULL || exponent == NULL) { ++ ret = CKR_DEVICE_MEMORY; ++ goto done; ++ } ++ ++ BN_bn2bin(n, modulus); ++ BN_bn2bin(e, exponent); ++ ++ add_object_attribute(o, 0, CKA_MODULUS, modulus, modulus_len); ++ add_object_attribute(o, 0, CKA_MODULUS_BITS, &modulus_bits, ++ sizeof(modulus_bits)); ++ add_object_attribute(o, 0, CKA_PUBLIC_EXPONENT, exponent, exponent_len); ++ ++ ret = CKR_OK; ++done: ++ free(modulus); ++ free(exponent); ++ RELEASE_BIGNUM(n); ++ RELEASE_BIGNUM(e); ++ return ret; ++} + + static int + pem_callback(char *buf, int num, int w, void *key) diff --git a/Support-host-based-GSS-initiator-names.patch b/Support-host-based-GSS-initiator-names.patch new file mode 100644 index 0000000..cd7450c --- /dev/null +++ b/Support-host-based-GSS-initiator-names.patch @@ -0,0 +1,578 @@ +From 818a777822658d44ce647fe975011a5ea25e8250 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Fri, 15 Jan 2021 13:51:34 -0500 +Subject: [PATCH] Support host-based GSS initiator names + +When checking if we can get initial credentials in the GSS krb5 mech, +use krb5_kt_have_match() to support fallback iteration. When scanning +the ccache or getting initial credentials, rewrite cred->name->princ +to the canonical client name. When a name check is necessary (such as +when the caller specifies both a name and ccache), use a new internal +API k5_sname_compare() to support fallback iteration. Add fallback +iteration to krb5_cc_cache_match() to allow host-based names to be +canonicalized against the cache collection. + +Create and store the matching principal for acceptor names in +acquire_accept_cred() so that it isn't affected by changes in +cred->name->princ during acquire_init_cred(). + +ticket: 8978 (new) +(cherry picked from commit c374ab40dd059a5938ffc0440d87457ac5da3a46) +--- + src/include/k5-int.h | 9 +++ + src/include/k5-trace.h | 3 + + src/lib/gssapi/krb5/accept_sec_context.c | 15 +--- + src/lib/gssapi/krb5/acquire_cred.c | 89 ++++++++++++++---------- + src/lib/gssapi/krb5/gssapiP_krb5.h | 1 + + src/lib/gssapi/krb5/rel_cred.c | 1 + + src/lib/krb5/ccache/cccursor.c | 57 +++++++++++---- + src/lib/krb5/libkrb5.exports | 1 + + src/lib/krb5/os/sn2princ.c | 23 +++++- + src/lib/krb5_32.def | 1 + + src/tests/gssapi/t_client_keytab.py | 44 ++++++++++++ + src/tests/gssapi/t_credstore.py | 32 +++++++++ + 12 files changed, 214 insertions(+), 62 deletions(-) + +diff --git a/src/include/k5-int.h b/src/include/k5-int.h +index efb523689..46f2ce2d3 100644 +--- a/src/include/k5-int.h ++++ b/src/include/k5-int.h +@@ -2411,4 +2411,13 @@ void k5_change_error_message_code(krb5_context ctx, krb5_error_code oldcode, + #define k5_prependmsg krb5_prepend_error_message + #define k5_wrapmsg krb5_wrap_error_message + ++/* ++ * Like krb5_principal_compare(), but with canonicalization of sname if ++ * fallback is enabled. This function should be avoided if multiple matches ++ * are required, since repeated canonicalization is inefficient. ++ */ ++krb5_boolean ++k5_sname_compare(krb5_context context, krb5_const_principal sname, ++ krb5_const_principal princ); ++ + #endif /* _KRB5_INT_H */ +diff --git a/src/include/k5-trace.h b/src/include/k5-trace.h +index b3e039dc8..79b5a7a85 100644 +--- a/src/include/k5-trace.h ++++ b/src/include/k5-trace.h +@@ -105,6 +105,9 @@ void krb5int_trace(krb5_context context, const char *fmt, ...); + + #endif /* DISABLE_TRACING */ + ++#define TRACE_CC_CACHE_MATCH(c, princ, ret) \ ++ TRACE(c, "Matching {princ} in collection with result: {kerr}", \ ++ princ, ret) + #define TRACE_CC_DESTROY(c, cache) \ + TRACE(c, "Destroying ccache {ccache}", cache) + #define TRACE_CC_GEN_NEW(c, cache) \ +diff --git a/src/lib/gssapi/krb5/accept_sec_context.c b/src/lib/gssapi/krb5/accept_sec_context.c +index fcf2c2152..a1d7e0d96 100644 +--- a/src/lib/gssapi/krb5/accept_sec_context.c ++++ b/src/lib/gssapi/krb5/accept_sec_context.c +@@ -683,7 +683,6 @@ kg_accept_krb5(minor_status, context_handle, + krb5_flags ap_req_options = 0; + krb5_enctype negotiated_etype; + krb5_authdata_context ad_context = NULL; +- krb5_principal accprinc = NULL; + krb5_ap_req *request = NULL; + + code = krb5int_accessor (&kaccess, KRB5INT_ACCESS_VERSION); +@@ -849,17 +848,9 @@ kg_accept_krb5(minor_status, context_handle, + } + } + +- if (!cred->default_identity) { +- if ((code = kg_acceptor_princ(context, cred->name, &accprinc))) { +- major_status = GSS_S_FAILURE; +- goto fail; +- } +- } +- +- code = krb5_rd_req_decoded(context, &auth_context, request, accprinc, +- cred->keytab, &ap_req_options, NULL); +- +- krb5_free_principal(context, accprinc); ++ code = krb5_rd_req_decoded(context, &auth_context, request, ++ cred->acceptor_mprinc, cred->keytab, ++ &ap_req_options, NULL); + if (code) { + major_status = GSS_S_FAILURE; + goto fail; +diff --git a/src/lib/gssapi/krb5/acquire_cred.c b/src/lib/gssapi/krb5/acquire_cred.c +index 632ee7def..e226a0269 100644 +--- a/src/lib/gssapi/krb5/acquire_cred.c ++++ b/src/lib/gssapi/krb5/acquire_cred.c +@@ -123,11 +123,11 @@ gss_krb5int_register_acceptor_identity(OM_uint32 *minor_status, + /* Try to verify that keytab contains at least one entry for name. Return 0 if + * it does, KRB5_KT_NOTFOUND if it doesn't, or another error as appropriate. */ + static krb5_error_code +-check_keytab(krb5_context context, krb5_keytab kt, krb5_gss_name_t name) ++check_keytab(krb5_context context, krb5_keytab kt, krb5_gss_name_t name, ++ krb5_principal mprinc) + { + krb5_error_code code; + krb5_keytab_entry ent; +- krb5_principal accprinc = NULL; + char *princname; + + if (name->service == NULL) { +@@ -141,21 +141,15 @@ check_keytab(krb5_context context, krb5_keytab kt, krb5_gss_name_t name) + if (kt->ops->start_seq_get == NULL) + return 0; + +- /* Get the partial principal for the acceptor name. */ +- code = kg_acceptor_princ(context, name, &accprinc); +- if (code) +- return code; +- +- /* Scan the keytab for host-based entries matching accprinc. */ +- code = k5_kt_have_match(context, kt, accprinc); ++ /* Scan the keytab for host-based entries matching mprinc. */ ++ code = k5_kt_have_match(context, kt, mprinc); + if (code == KRB5_KT_NOTFOUND) { +- if (krb5_unparse_name(context, accprinc, &princname) == 0) { ++ if (krb5_unparse_name(context, mprinc, &princname) == 0) { + k5_setmsg(context, code, _("No key table entry found matching %s"), + princname); + free(princname); + } + } +- krb5_free_principal(context, accprinc); + return code; + } + +@@ -202,8 +196,14 @@ acquire_accept_cred(krb5_context context, OM_uint32 *minor_status, + } + + if (cred->name != NULL) { ++ code = kg_acceptor_princ(context, cred->name, &cred->acceptor_mprinc); ++ if (code) { ++ major = GSS_S_FAILURE; ++ goto cleanup; ++ } ++ + /* Make sure we have keys matching the desired name in the keytab. */ +- code = check_keytab(context, kt, cred->name); ++ code = check_keytab(context, kt, cred->name, cred->acceptor_mprinc); + if (code) { + if (code == KRB5_KT_NOTFOUND) { + k5_change_error_message_code(context, code, KG_KEYTAB_NOMATCH); +@@ -324,7 +324,6 @@ static krb5_boolean + can_get_initial_creds(krb5_context context, krb5_gss_cred_id_rec *cred) + { + krb5_error_code code; +- krb5_keytab_entry entry; + + if (cred->password != NULL) + return TRUE; +@@ -336,20 +335,21 @@ can_get_initial_creds(krb5_context context, krb5_gss_cred_id_rec *cred) + if (cred->name == NULL) + return !krb5_kt_have_content(context, cred->client_keytab); + +- /* Check if we have a keytab key for the client principal. */ +- code = krb5_kt_get_entry(context, cred->client_keytab, cred->name->princ, +- 0, 0, &entry); +- if (code) { +- krb5_clear_error_message(context); +- return FALSE; +- } +- krb5_free_keytab_entry_contents(context, &entry); +- return TRUE; ++ /* ++ * Check if we have a keytab key for the client principal. This is a bit ++ * more permissive than we really want because krb5_kt_have_match() ++ * supports wildcarding and obeys ignore_acceptor_hostname, but that should ++ * generally be harmless. ++ */ ++ code = k5_kt_have_match(context, cred->client_keytab, cred->name->princ); ++ return code == 0; + } + +-/* Scan cred->ccache for name, expiry time, impersonator, refresh time. */ ++/* Scan cred->ccache for name, expiry time, impersonator, refresh time. If ++ * check_name is true, verify the cache name against the credential name. */ + static krb5_error_code +-scan_ccache(krb5_context context, krb5_gss_cred_id_rec *cred) ++scan_ccache(krb5_context context, krb5_gss_cred_id_rec *cred, ++ krb5_boolean check_name) + { + krb5_error_code code; + krb5_ccache ccache = cred->ccache; +@@ -365,23 +365,31 @@ scan_ccache(krb5_context context, krb5_gss_cred_id_rec *cred) + if (code) + return code; + +- /* Credentials cache principal must match the initiator name. */ + code = krb5_cc_get_principal(context, ccache, &ccache_princ); + if (code != 0) + goto cleanup; +- if (cred->name != NULL && +- !krb5_principal_compare(context, ccache_princ, cred->name->princ)) { +- code = KG_CCACHE_NOMATCH; +- goto cleanup; +- } + +- /* Save the ccache principal as the credential name if not already set. */ +- if (!cred->name) { ++ if (cred->name == NULL) { ++ /* Save the ccache principal as the credential name. */ + code = kg_init_name(context, ccache_princ, NULL, NULL, NULL, + KG_INIT_NAME_NO_COPY, &cred->name); + if (code) + goto cleanup; + ccache_princ = NULL; ++ } else { ++ /* Check against the desired name if needed. */ ++ if (check_name) { ++ if (!k5_sname_compare(context, cred->name->princ, ccache_princ)) { ++ code = KG_CCACHE_NOMATCH; ++ goto cleanup; ++ } ++ } ++ ++ /* Replace the credential name principal with the canonical client ++ * principal, retaining acceptor_mprinc if set. */ ++ krb5_free_principal(context, cred->name->princ); ++ cred->name->princ = ccache_princ; ++ ccache_princ = NULL; + } + + assert(cred->name->princ != NULL); +@@ -447,7 +455,7 @@ get_cache_for_name(krb5_context context, krb5_gss_cred_id_rec *cred) + assert(cred->name != NULL && cred->ccache == NULL); + #ifdef USE_LEASH + code = get_ccache_leash(context, cred->name->princ, &cred->ccache); +- return code ? code : scan_ccache(context, cred); ++ return code ? code : scan_ccache(context, cred, TRUE); + #else + /* Check first whether we can acquire tickets, to avoid overwriting the + * extended error message from krb5_cc_cache_match. */ +@@ -456,7 +464,7 @@ get_cache_for_name(krb5_context context, krb5_gss_cred_id_rec *cred) + /* Look for an existing cache for the client principal. */ + code = krb5_cc_cache_match(context, cred->name->princ, &cred->ccache); + if (code == 0) +- return scan_ccache(context, cred); ++ return scan_ccache(context, cred, FALSE); + if (code != KRB5_CC_NOTFOUND || !can_get) + return code; + krb5_clear_error_message(context); +@@ -633,6 +641,13 @@ get_initial_cred(krb5_context context, const struct verify_params *verify, + kg_cred_set_initial_refresh(context, cred, &creds.times); + cred->have_tgt = TRUE; + cred->expire = creds.times.endtime; ++ ++ /* Steal the canonical client principal name from creds and save it in the ++ * credential name, retaining acceptor_mprinc if set. */ ++ krb5_free_principal(context, cred->name->princ); ++ cred->name->princ = creds.client; ++ creds.client = NULL; ++ + krb5_free_cred_contents(context, &creds); + cleanup: + krb5_get_init_creds_opt_free(context, opt); +@@ -721,7 +736,7 @@ acquire_init_cred(krb5_context context, OM_uint32 *minor_status, + + if (cred->ccache != NULL) { + /* The caller specified a ccache; check what's in it. */ +- code = scan_ccache(context, cred); ++ code = scan_ccache(context, cred, TRUE); + if (code == KRB5_FCC_NOFILE) { + /* See if we can get initial creds. If the caller didn't specify + * a name, pick one from the client keytab. */ +@@ -984,7 +999,7 @@ kg_cred_resolve(OM_uint32 *minor_status, krb5_context context, + } + } + if (cred->ccache != NULL) { +- code = scan_ccache(context, cred); ++ code = scan_ccache(context, cred, FALSE); + if (code) + goto kerr; + } +@@ -996,7 +1011,7 @@ kg_cred_resolve(OM_uint32 *minor_status, krb5_context context, + code = krb5int_cc_default(context, &cred->ccache); + if (code) + goto kerr; +- code = scan_ccache(context, cred); ++ code = scan_ccache(context, cred, FALSE); + if (code == KRB5_FCC_NOFILE) { + /* Default ccache doesn't exist; fall through to client keytab. */ + krb5_cc_close(context, cred->ccache); +diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h +index 3bacdcd35..fd7abbd77 100644 +--- a/src/lib/gssapi/krb5/gssapiP_krb5.h ++++ b/src/lib/gssapi/krb5/gssapiP_krb5.h +@@ -175,6 +175,7 @@ typedef struct _krb5_gss_cred_id_rec { + /* name/type of credential */ + gss_cred_usage_t usage; + krb5_gss_name_t name; ++ krb5_principal acceptor_mprinc; + krb5_principal impersonator; + unsigned int default_identity : 1; + unsigned int iakerb_mech : 1; +diff --git a/src/lib/gssapi/krb5/rel_cred.c b/src/lib/gssapi/krb5/rel_cred.c +index a9515daf7..0da6c1b95 100644 +--- a/src/lib/gssapi/krb5/rel_cred.c ++++ b/src/lib/gssapi/krb5/rel_cred.c +@@ -72,6 +72,7 @@ krb5_gss_release_cred(minor_status, cred_handle) + if (cred->name) + kg_release_name(context, &cred->name); + ++ krb5_free_principal(context, cred->acceptor_mprinc); + krb5_free_principal(context, cred->impersonator); + + if (cred->req_enctypes) +diff --git a/src/lib/krb5/ccache/cccursor.c b/src/lib/krb5/ccache/cccursor.c +index 8f5872116..760216d05 100644 +--- a/src/lib/krb5/ccache/cccursor.c ++++ b/src/lib/krb5/ccache/cccursor.c +@@ -30,6 +30,7 @@ + + #include "cc-int.h" + #include "../krb/int-proto.h" ++#include "../os/os-proto.h" + + #include + +@@ -141,18 +142,18 @@ krb5_cccol_cursor_free(krb5_context context, + return 0; + } + +-krb5_error_code KRB5_CALLCONV +-krb5_cc_cache_match(krb5_context context, krb5_principal client, +- krb5_ccache *cache_out) ++static krb5_error_code ++match_caches(krb5_context context, krb5_const_principal client, ++ krb5_ccache *cache_out) + { + krb5_error_code ret; + krb5_cccol_cursor cursor; + krb5_ccache cache = NULL; + krb5_principal princ; +- char *name; + krb5_boolean eq; + + *cache_out = NULL; ++ + ret = krb5_cccol_cursor_new(context, &cursor); + if (ret) + return ret; +@@ -169,20 +170,52 @@ krb5_cc_cache_match(krb5_context context, krb5_principal client, + krb5_cc_close(context, cache); + } + krb5_cccol_cursor_free(context, &cursor); ++ + if (ret) + return ret; +- if (cache == NULL) { +- ret = krb5_unparse_name(context, client, &name); +- if (ret == 0) { +- k5_setmsg(context, KRB5_CC_NOTFOUND, ++ if (cache == NULL) ++ return KRB5_CC_NOTFOUND; ++ ++ *cache_out = cache; ++ return 0; ++} ++ ++krb5_error_code KRB5_CALLCONV ++krb5_cc_cache_match(krb5_context context, krb5_principal client, ++ krb5_ccache *cache_out) ++{ ++ krb5_error_code ret; ++ struct canonprinc iter = { client, .subst_defrealm = TRUE }; ++ krb5_const_principal canonprinc = NULL; ++ krb5_ccache cache = NULL; ++ char *name; ++ ++ *cache_out = NULL; ++ ++ while ((ret = k5_canonprinc(context, &iter, &canonprinc)) == 0 && ++ canonprinc != NULL) { ++ ret = match_caches(context, canonprinc, &cache); ++ if (ret != KRB5_CC_NOTFOUND) ++ break; ++ } ++ free_canonprinc(&iter); ++ ++ if (ret == 0 && canonprinc == NULL) { ++ ret = KRB5_CC_NOTFOUND; ++ if (krb5_unparse_name(context, client, &name) == 0) { ++ k5_setmsg(context, ret, + _("Can't find client principal %s in cache collection"), + name); + krb5_free_unparsed_name(context, name); + } +- ret = KRB5_CC_NOTFOUND; +- } else +- *cache_out = cache; +- return ret; ++ } ++ ++ TRACE_CC_CACHE_MATCH(context, client, ret); ++ if (ret) ++ return ret; ++ ++ *cache_out = cache; ++ return 0; + } + + /* Store the error state for code from context into errsave, but only if code +diff --git a/src/lib/krb5/libkrb5.exports b/src/lib/krb5/libkrb5.exports +index adbfa332b..df6e2ffbe 100644 +--- a/src/lib/krb5/libkrb5.exports ++++ b/src/lib/krb5/libkrb5.exports +@@ -181,6 +181,7 @@ k5_size_authdata_context + k5_size_context + k5_size_keyblock + k5_size_principal ++k5_sname_compare + k5_unmarshal_cred + k5_unmarshal_princ + k5_unwrap_cammac_svc +diff --git a/src/lib/krb5/os/sn2princ.c b/src/lib/krb5/os/sn2princ.c +index 8b7214189..c99b7da17 100644 +--- a/src/lib/krb5/os/sn2princ.c ++++ b/src/lib/krb5/os/sn2princ.c +@@ -277,7 +277,8 @@ k5_canonprinc(krb5_context context, struct canonprinc *iter, + + /* If we're not doing fallback, the input principal is canonical. */ + if (context->dns_canonicalize_hostname != CANONHOST_FALLBACK || +- iter->princ->type != KRB5_NT_SRV_HST || iter->princ->length != 2) { ++ iter->princ->type != KRB5_NT_SRV_HST || iter->princ->length != 2 || ++ iter->princ->data[1].length == 0) { + *princ_out = (step == 1) ? iter->princ : NULL; + return 0; + } +@@ -288,6 +289,26 @@ k5_canonprinc(krb5_context context, struct canonprinc *iter, + return canonicalize_princ(context, iter, step == 2, princ_out); + } + ++krb5_boolean ++k5_sname_compare(krb5_context context, krb5_const_principal sname, ++ krb5_const_principal princ) ++{ ++ krb5_error_code ret; ++ struct canonprinc iter = { sname, .subst_defrealm = TRUE }; ++ krb5_const_principal canonprinc = NULL; ++ krb5_boolean match = FALSE; ++ ++ while ((ret = k5_canonprinc(context, &iter, &canonprinc)) == 0 && ++ canonprinc != NULL) { ++ if (krb5_principal_compare(context, canonprinc, princ)) { ++ match = TRUE; ++ break; ++ } ++ } ++ free_canonprinc(&iter); ++ return match; ++} ++ + krb5_error_code KRB5_CALLCONV + krb5_sname_to_principal(krb5_context context, const char *hostname, + const char *sname, krb5_int32 type, +diff --git a/src/lib/krb5_32.def b/src/lib/krb5_32.def +index 60b8dd311..cf690dbe4 100644 +--- a/src/lib/krb5_32.def ++++ b/src/lib/krb5_32.def +@@ -507,3 +507,4 @@ EXPORTS + ; new in 1.20 + krb5_marshal_credentials @472 + krb5_unmarshal_credentials @473 ++ k5_sname_compare @474 ; PRIVATE GSSAPI +diff --git a/src/tests/gssapi/t_client_keytab.py b/src/tests/gssapi/t_client_keytab.py +index 7847b3ecd..9a61d53b8 100755 +--- a/src/tests/gssapi/t_client_keytab.py ++++ b/src/tests/gssapi/t_client_keytab.py +@@ -141,5 +141,49 @@ msgs = ('Getting initial credentials for user/admin@KRBTEST.COM', + '/Matching credential not found') + realm.run(['./t_ccselect', phost], expected_code=1, + expected_msg='Ticket expired', expected_trace=msgs) ++realm.run([kdestroy, '-A']) ++ ++# Test 19: host-based initiator name ++mark('host-based initiator name') ++hsvc = 'h:svc@' + hostname ++svcprinc = 'svc/%s@%s' % (hostname, realm.realm) ++realm.addprinc(svcprinc) ++realm.extract_keytab(svcprinc, realm.client_keytab) ++# On the first run we match against the keytab while getting tickets, ++# substituting the default realm. ++msgs = ('/Can\'t find client principal svc/%s@ in' % hostname, ++ 'Getting initial credentials for svc/%s@' % hostname, ++ 'Found entries for %s in keytab' % svcprinc, ++ 'Retrieving %s from FILE:%s' % (svcprinc, realm.client_keytab), ++ 'Storing %s -> %s in' % (svcprinc, realm.krbtgt_princ), ++ 'Retrieving %s -> %s from' % (svcprinc, realm.krbtgt_princ), ++ 'authenticator for %s -> %s' % (svcprinc, realm.host_princ)) ++realm.run(['./t_ccselect', phost, hsvc], expected_trace=msgs) ++# On the second run we match against the collection. ++msgs = ('Matching svc/%s@ in collection with result: 0' % hostname, ++ 'Getting credentials %s -> %s' % (svcprinc, realm.host_princ), ++ 'authenticator for %s -> %s' % (svcprinc, realm.host_princ)) ++realm.run(['./t_ccselect', phost, hsvc], expected_trace=msgs) ++realm.run([kdestroy, '-A']) ++ ++# Test 20: host-based initiator name with fallback ++mark('host-based fallback initiator name') ++canonname = canonicalize_hostname(hostname) ++if canonname != hostname: ++ hfsvc = 'h:fsvc@' + hostname ++ canonprinc = 'fsvc/%s@%s' % (canonname, realm.realm) ++ realm.addprinc(canonprinc) ++ realm.extract_keytab(canonprinc, realm.client_keytab) ++ msgs = ('/Can\'t find client principal fsvc/%s@ in' % hostname, ++ 'Found entries for %s in keytab' % canonprinc, ++ 'authenticator for %s -> %s' % (canonprinc, realm.host_princ)) ++ realm.run(['./t_ccselect', phost, hfsvc], expected_trace=msgs) ++ msgs = ('Matching fsvc/%s@ in collection with result: 0' % hostname, ++ 'Getting credentials %s -> %s' % (canonprinc, realm.host_princ)) ++ realm.run(['./t_ccselect', phost, hfsvc], expected_trace=msgs) ++ realm.run([kdestroy, '-A']) ++else: ++ skipped('GSS initiator name fallback test', ++ '%s does not canonicalize to a different name' % hostname) + + success('Client keytab tests') +diff --git a/src/tests/gssapi/t_credstore.py b/src/tests/gssapi/t_credstore.py +index c11975bf5..9be57bb82 100644 +--- a/src/tests/gssapi/t_credstore.py ++++ b/src/tests/gssapi/t_credstore.py +@@ -15,6 +15,38 @@ msgs = ('Storing %s -> %s in %s' % (service_cs, realm.krbtgt_princ, + realm.run(['./t_credstore', '-s', 'p:' + service_cs, 'ccache', storagecache, + 'keytab', servicekeytab], expected_trace=msgs) + ++mark('matching') ++scc = 'FILE:' + os.path.join(realm.testdir, 'service_cache') ++realm.kinit(realm.host_princ, flags=['-k', '-c', scc]) ++realm.run(['./t_credstore', '-i', 'p:' + realm.host_princ, 'ccache', scc]) ++realm.run(['./t_credstore', '-i', 'h:host', 'ccache', scc]) ++realm.run(['./t_credstore', '-i', 'h:host@' + hostname, 'ccache', scc]) ++realm.run(['./t_credstore', '-i', 'p:wrong', 'ccache', scc], ++ expected_code=1, expected_msg='does not match desired name') ++realm.run(['./t_credstore', '-i', 'h:host@-nomatch-', 'ccache', scc], ++ expected_code=1, expected_msg='does not match desired name') ++realm.run(['./t_credstore', '-i', 'h:svc', 'ccache', scc], ++ expected_code=1, expected_msg='does not match desired name') ++ ++mark('matching (fallback)') ++canonname = canonicalize_hostname(hostname) ++if canonname != hostname: ++ canonprinc = 'host/%s@%s' % (canonname, realm.realm) ++ realm.addprinc(canonprinc) ++ realm.extract_keytab(canonprinc, realm.keytab) ++ realm.kinit(canonprinc, flags=['-k', '-c', scc]) ++ realm.run(['./t_credstore', '-i', 'h:host', 'ccache', scc]) ++ realm.run(['./t_credstore', '-i', 'h:host@' + hostname, 'ccache', scc]) ++ realm.run(['./t_credstore', '-i', 'h:host@' + canonname, 'ccache', scc]) ++ realm.run(['./t_credstore', '-i', 'p:' + canonprinc, 'ccache', scc]) ++ realm.run(['./t_credstore', '-i', 'p:' + realm.host_princ, 'ccache', scc], ++ expected_code=1, expected_msg='does not match desired name') ++ realm.run(['./t_credstore', '-i', 'h:host@-nomatch-', 'ccache', scc], ++ expected_code=1, expected_msg='does not match desired name') ++else: ++ skipped('fallback matching test', ++ '%s does not canonicalize to a different name' % hostname) ++ + mark('rcache') + # t_credstore -r should produce a replay error normally, but not with + # rcache set to "none:". diff --git a/Use-KCM_OP_RETRIEVE-in-KCM-client.patch b/Use-KCM_OP_RETRIEVE-in-KCM-client.patch new file mode 100644 index 0000000..2af5676 --- /dev/null +++ b/Use-KCM_OP_RETRIEVE-in-KCM-client.patch @@ -0,0 +1,235 @@ +From 336f744403baa5dfaffcc5bd226fdd8f14a0200b Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Fri, 26 Mar 2021 23:38:54 -0400 +Subject: [PATCH] Use KCM_OP_RETRIEVE in KCM client + +In kcm_retrieve(), try KCM_OP_RETRIEVE. Fall back to iteration if the +server doesn't implement it, or if we can an answer incompatible with +KRB5_TC_SUPPORTED_KTYPES. + +In kcmserver.py, implement partial decoding for creds and cred tags so +that we can do a basic principal name match. + +ticket: 8997 (new) +(cherry picked from commit 795ebba8c039be172ab93cd41105c73ffdba0fdb) +--- + src/include/kcm.h | 2 +- + src/lib/krb5/ccache/cc_kcm.c | 52 +++++++++++++++++++++++++++++++++--- + src/tests/kcmserver.py | 44 +++++++++++++++++++++++++++--- + src/tests/t_ccache.py | 11 +++++--- + 4 files changed, 99 insertions(+), 10 deletions(-) + +diff --git a/src/include/kcm.h b/src/include/kcm.h +index 9b66f1cbd..85c20d345 100644 +--- a/src/include/kcm.h ++++ b/src/include/kcm.h +@@ -87,7 +87,7 @@ typedef enum kcm_opcode { + KCM_OP_INITIALIZE, /* (name, princ) -> () */ + KCM_OP_DESTROY, /* (name) -> () */ + KCM_OP_STORE, /* (name, cred) -> () */ +- KCM_OP_RETRIEVE, ++ KCM_OP_RETRIEVE, /* (name, flags, credtag) -> (cred) */ + KCM_OP_GET_PRINCIPAL, /* (name) -> (princ) */ + KCM_OP_GET_CRED_UUID_LIST, /* (name) -> (uuid, ...) */ + KCM_OP_GET_CRED_BY_UUID, /* (name, uuid) -> (cred) */ +diff --git a/src/lib/krb5/ccache/cc_kcm.c b/src/lib/krb5/ccache/cc_kcm.c +index 46705f1da..23fcf13ea 100644 +--- a/src/lib/krb5/ccache/cc_kcm.c ++++ b/src/lib/krb5/ccache/cc_kcm.c +@@ -826,9 +826,55 @@ static krb5_error_code KRB5_CALLCONV + kcm_retrieve(krb5_context context, krb5_ccache cache, krb5_flags flags, + krb5_creds *mcred, krb5_creds *cred_out) + { +- /* There is a KCM opcode for retrieving creds, but Heimdal's client doesn't +- * use it. It causes the KCM daemon to actually make a TGS request. */ +- return k5_cc_retrieve_cred_default(context, cache, flags, mcred, cred_out); ++ krb5_error_code ret; ++ struct kcmreq req = EMPTY_KCMREQ; ++ krb5_creds cred; ++ krb5_enctype *enctypes = NULL; ++ ++ memset(&cred, 0, sizeof(cred)); ++ ++ /* Include KCM_GC_CACHED in flags to prevent Heimdal's sssd from making a ++ * TGS request itself. */ ++ kcmreq_init(&req, KCM_OP_RETRIEVE, cache); ++ k5_buf_add_uint32_be(&req.reqbuf, map_tcflags(flags) | KCM_GC_CACHED); ++ k5_marshal_mcred(&req.reqbuf, mcred); ++ ret = cache_call(context, cache, &req); ++ ++ /* Fall back to iteration if the server does not support retrieval. */ ++ if (ret == KRB5_FCC_INTERNAL || ret == KRB5_CC_IO) { ++ ret = k5_cc_retrieve_cred_default(context, cache, flags, mcred, ++ cred_out); ++ goto cleanup; ++ } ++ if (ret) ++ goto cleanup; ++ ++ ret = k5_unmarshal_cred(req.reply.ptr, req.reply.len, 4, &cred); ++ if (ret) ++ goto cleanup; ++ ++ /* In rare cases we might retrieve a credential with a session key this ++ * context can't support, in which case we must retry using iteration. */ ++ if (flags & KRB5_TC_SUPPORTED_KTYPES) { ++ ret = krb5_get_tgs_ktypes(context, cred.server, &enctypes); ++ if (ret) ++ goto cleanup; ++ if (!k5_etypes_contains(enctypes, cred.keyblock.enctype)) { ++ ret = k5_cc_retrieve_cred_default(context, cache, flags, mcred, ++ cred_out); ++ goto cleanup; ++ } ++ } ++ ++ *cred_out = cred; ++ memset(&cred, 0, sizeof(cred)); ++ ++cleanup: ++ kcmreq_free(&req); ++ krb5_free_cred_contents(context, &cred); ++ free(enctypes); ++ /* Heimdal's KCM returns KRB5_CC_END if no cred is found. */ ++ return (ret == KRB5_CC_END) ? KRB5_CC_NOTFOUND : map_invalid(ret); + } + + static krb5_error_code KRB5_CALLCONV +diff --git a/src/tests/kcmserver.py b/src/tests/kcmserver.py +index 8c5e66ff1..25e6f2bbe 100644 +--- a/src/tests/kcmserver.py ++++ b/src/tests/kcmserver.py +@@ -40,6 +40,7 @@ class KCMOpcodes(object): + INITIALIZE = 4 + DESTROY = 5 + STORE = 6 ++ RETRIEVE = 7 + GET_PRINCIPAL = 8 + GET_CRED_UUID_LIST = 9 + GET_CRED_BY_UUID = 10 +@@ -54,6 +55,7 @@ class KCMOpcodes(object): + + + class KRB5Errors(object): ++ KRB5_CC_NOTFOUND = -1765328243 + KRB5_CC_END = -1765328242 + KRB5_CC_NOSUPP = -1765328137 + KRB5_FCC_NOFILE = -1765328189 +@@ -86,11 +88,29 @@ def get_cache(name): + return cache + + ++def unpack_data(argbytes): ++ dlen, = struct.unpack('>L', argbytes[:4]) ++ return argbytes[4:dlen+4], argbytes[dlen+4:] ++ ++ + def unmarshal_name(argbytes): + offset = argbytes.find(b'\0') + return argbytes[0:offset], argbytes[offset+1:] + + ++def unmarshal_princ(argbytes): ++ # Ignore the type at argbytes[0:4]. ++ ncomps, = struct.unpack('>L', argbytes[4:8]) ++ realm, rest = unpack_data(argbytes[8:]) ++ comps = [] ++ for i in range(ncomps): ++ comp, rest = unpack_data(rest) ++ comps.append(comp) ++ # Asssume no quoting is needed. ++ princ = b'/'.join(comps) + b'@' + realm ++ return princ, rest ++ ++ + def op_gen_new(argbytes): + # Does not actually check for uniqueness. + global next_unique +@@ -126,6 +146,22 @@ def op_store(argbytes): + return 0, b'' + + ++def op_retrieve(argbytes): ++ name, rest = unmarshal_name(argbytes) ++ # Ignore the flags at rest[0:4] and the header at rest[4:8]. ++ # Assume there are client and server creds in the tag and match ++ # only against them. ++ cprinc, rest = unmarshal_princ(rest[8:]) ++ sprinc, rest = unmarshal_princ(rest) ++ cache = get_cache(name) ++ for cred in (cache.creds[u] for u in cache.cred_uuids): ++ cred_cprinc, rest = unmarshal_princ(cred) ++ cred_sprinc, rest = unmarshal_princ(rest) ++ if cred_cprinc == cprinc and cred_sprinc == sprinc: ++ return 0, cred ++ return KRB5Errors.KRB5_CC_NOTFOUND, b'' ++ ++ + def op_get_principal(argbytes): + name, rest = unmarshal_name(argbytes) + cache = get_cache(name) +@@ -199,6 +235,7 @@ ophandlers = { + KCMOpcodes.INITIALIZE : op_initialize, + KCMOpcodes.DESTROY : op_destroy, + KCMOpcodes.STORE : op_store, ++ KCMOpcodes.RETRIEVE : op_retrieve, + KCMOpcodes.GET_PRINCIPAL : op_get_principal, + KCMOpcodes.GET_CRED_UUID_LIST : op_get_cred_uuid_list, + KCMOpcodes.GET_CRED_BY_UUID : op_get_cred_by_uuid, +@@ -243,10 +280,11 @@ def service_request(s): + return True + + parser = optparse.OptionParser() +-parser.add_option('-c', '--credlist', action='store_true', dest='credlist', +- default=False, help='Support KCM_OP_GET_CRED_LIST') ++parser.add_option('-f', '--fallback', action='store_true', dest='fallback', ++ default=False, help='Do not support RETRIEVE/GET_CRED_LIST') + (options, args) = parser.parse_args() +-if not options.credlist: ++if options.fallback: ++ del ophandlers[KCMOpcodes.RETRIEVE] + del ophandlers[KCMOpcodes.GET_CRED_LIST] + + server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) +diff --git a/src/tests/t_ccache.py b/src/tests/t_ccache.py +index 90040fb7b..6ea9fb969 100755 +--- a/src/tests/t_ccache.py ++++ b/src/tests/t_ccache.py +@@ -25,7 +25,7 @@ from k5test import * + kcm_socket_path = os.path.join(os.getcwd(), 'testdir', 'kcm') + conf = {'libdefaults': {'kcm_socket': kcm_socket_path, + 'kcm_mach_service': '-'}} +-realm = K5Realm(create_host=False, krb5_conf=conf) ++realm = K5Realm(krb5_conf=conf) + + keyctl = which('keyctl') + out = realm.run([klist, '-c', 'KEYRING:process:abcd'], expected_code=1) +@@ -71,6 +71,11 @@ def collection_test(realm, ccname): + realm.kinit('alice', password('alice')) + realm.run([klist], expected_msg='Default principal: alice@') + realm.run([klist, '-A', '-s']) ++ realm.run([kvno, realm.host_princ], expected_msg = 'kvno = 1') ++ realm.run([kvno, realm.host_princ], expected_msg = 'kvno = 1') ++ out = realm.run([klist]) ++ if out.count(realm.host_princ) != 1: ++ fail('Wrong number of service tickets in cache') + realm.run([kdestroy]) + output = realm.run([klist], expected_code=1) + if 'No credentials cache' not in output and 'not found' not in output: +@@ -126,14 +131,14 @@ def collection_test(realm, ccname): + + collection_test(realm, 'DIR:' + os.path.join(realm.testdir, 'cc')) + +-# Test KCM without and with GET_CRED_LIST support. ++# Test KCM with and without RETRIEVE and GET_CRED_LIST support. + kcmserver_path = os.path.join(srctop, 'tests', 'kcmserver.py') + kcmd = realm.start_server([sys.executable, kcmserver_path, kcm_socket_path], + 'starting...') + collection_test(realm, 'KCM:') + stop_daemon(kcmd) + os.remove(kcm_socket_path) +-realm.start_server([sys.executable, kcmserver_path, '-c', kcm_socket_path], ++realm.start_server([sys.executable, kcmserver_path, '-f', kcm_socket_path], + 'starting...') + collection_test(realm, 'KCM:') + diff --git a/Use-OpenSSL-s-KBKDF-and-KRB5KDF-for-deriving-long-te.patch b/Use-OpenSSL-s-KBKDF-and-KRB5KDF-for-deriving-long-te.patch new file mode 100644 index 0000000..927b506 --- /dev/null +++ b/Use-OpenSSL-s-KBKDF-and-KRB5KDF-for-deriving-long-te.patch @@ -0,0 +1,482 @@ +From 21e3b9a4463f1d1aeb71de8a27c298f1307d186b Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Fri, 4 Oct 2019 14:49:29 -0400 +Subject: [PATCH] Use OpenSSL's KBKDF and KRB5KDF for deriving long-term keys + +If supported, use OpenSSL-provided KBKDF (aes-sha2 and camellia) and +KRB5KDF (3des and aes-sha1). We already use OpenSSL's PBKDF2 where +appropriate. OpenSSL added support for these KDFs in 3.0. + +(cherry picked from commit ef8d11f6fb1232201c9efd2ae2ed567023fb85d2) +[rharwood@redhat.com: 3des removal] +--- + src/lib/crypto/krb/derive.c | 409 ++++++++++++++++++++++++++++-------- + 1 file changed, 324 insertions(+), 85 deletions(-) + +diff --git a/src/lib/crypto/krb/derive.c b/src/lib/crypto/krb/derive.c +index 6707a7308..8e474b38e 100644 +--- a/src/lib/crypto/krb/derive.c ++++ b/src/lib/crypto/krb/derive.c +@@ -27,6 +27,12 @@ + + #include "crypto_int.h" + ++#ifdef HAVE_EVP_KDF_FETCH ++#include ++#include ++#include ++#endif ++ + static krb5_key + find_cached_dkey(struct derived_key *list, const krb5_data *constant) + { +@@ -77,55 +83,251 @@ cleanup: + return ENOMEM; + } + ++#ifdef HAVE_EVP_KDF_FETCH + static krb5_error_code +-derive_random_rfc3961(const struct krb5_enc_provider *enc, +- krb5_key inkey, krb5_data *outrnd, +- const krb5_data *in_constant) ++openssl_kbdkf_counter_hmac(const struct krb5_hash_provider *hash, ++ krb5_key inkey, krb5_data *outrnd, ++ const krb5_data *label, const krb5_data *context) + { +- size_t blocksize, keybytes, n; + krb5_error_code ret; +- krb5_data block = empty_data(); ++ EVP_KDF *kdf = NULL; ++ EVP_KDF_CTX *kctx = NULL; ++ OSSL_PARAM params[6]; ++ size_t i = 0; ++ char *digest; + +- blocksize = enc->block_size; +- keybytes = enc->keybytes; ++ /* On NULL hash, preserve default behavior for pbkdf2_string_to_key(). */ ++ if (hash == NULL || !strcmp(hash->hash_name, "SHA1")) { ++ digest = "SHA1"; ++ } else if (!strcmp(hash->hash_name, "SHA-256")) { ++ digest = "SHA256"; ++ } else if (!strcmp(hash->hash_name, "SHA-384")) { ++ digest = "SHA384"; ++ } else { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } + +- if (blocksize == 1) +- return KRB5_BAD_ENCTYPE; +- if (inkey->keyblock.length != enc->keylength || outrnd->length != keybytes) ++ kdf = EVP_KDF_fetch(NULL, "KBKDF", NULL); ++ if (!kdf) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ kctx = EVP_KDF_CTX_new(kdf); ++ if (!kctx) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ params[i++] = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_DIGEST, ++ digest, 0); ++ params[i++] = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_MAC, ++ "HMAC", 0); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, ++ inkey->keyblock.contents, ++ inkey->keyblock.length); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_INFO, ++ context->data, ++ context->length); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_SALT, ++ label->data, ++ label->length); ++ params[i] = OSSL_PARAM_construct_end(); ++ if (EVP_KDF_derive(kctx, (unsigned char *)outrnd->data, outrnd->length, ++ params) <= 0) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ ret = 0; ++done: ++ if (ret) ++ zap(outrnd->data, outrnd->length); ++ EVP_KDF_free(kdf); ++ EVP_KDF_CTX_free(kctx); ++ return ret; ++} ++ ++static krb5_error_code ++openssl_kbkdf_feedback_cmac(const struct krb5_enc_provider *enc, ++ krb5_key inkey, krb5_data *outrnd, ++ const krb5_data *in_constant) ++{ ++ krb5_error_code ret; ++ EVP_KDF *kdf = NULL; ++ EVP_KDF_CTX *kctx = NULL; ++ OSSL_PARAM params[7]; ++ size_t i = 0; ++ char *cipher; ++ static unsigned char zeroes[16]; ++ ++ memset(zeroes, 0, sizeof(zeroes)); ++ ++ if (!memcmp(enc, &krb5int_enc_camellia128, sizeof(*enc))) { ++ cipher = "CAMELLIA-128-CBC"; ++ } else if (!memcmp(enc, &krb5int_enc_camellia256, sizeof(*enc))) { ++ cipher = "CAMELLIA-256-CBC"; ++ } else { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ kdf = EVP_KDF_fetch(NULL, "KBKDF", NULL); ++ if (!kdf) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ kctx = EVP_KDF_CTX_new(kdf); ++ if (!kctx) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ params[i++] = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_MODE, ++ "FEEDBACK", 0); ++ params[i++] = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_MAC, ++ "CMAC", 0); ++ params[i++] = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_CIPHER, ++ cipher, 0); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, ++ inkey->keyblock.contents, ++ inkey->keyblock.length); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_SALT, ++ in_constant->data, ++ in_constant->length); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_SEED, ++ zeroes, sizeof(zeroes)); ++ params[i] = OSSL_PARAM_construct_end(); ++ if (EVP_KDF_derive(kctx, (unsigned char *)outrnd->data, outrnd->length, ++ params) <= 0) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ ret = 0; ++done: ++ if (ret) ++ zap(outrnd->data, outrnd->length); ++ EVP_KDF_free(kdf); ++ EVP_KDF_CTX_free(kctx); ++ return ret; ++} ++ ++static krb5_error_code ++openssl_krb5kdf(const struct krb5_enc_provider *enc, krb5_key inkey, ++ krb5_data *outrnd, const krb5_data *in_constant) ++{ ++ krb5_error_code ret; ++ EVP_KDF *kdf = NULL; ++ EVP_KDF_CTX *kctx = NULL; ++ OSSL_PARAM params[4]; ++ size_t i = 0; ++ char *cipher; ++ ++ if (inkey->keyblock.length != enc->keylength || ++ outrnd->length != enc->keybytes) { ++ return KRB5_CRYPTO_INTERNAL; ++ } ++ ++ if (!memcmp(enc, &krb5int_enc_aes128, sizeof(*enc))) { ++ cipher = "AES-128-CBC"; ++ } else if (!memcmp(enc, &krb5int_enc_aes256, sizeof(*enc))) { ++ cipher = "AES-256-CBC"; ++ } else { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ kdf = EVP_KDF_fetch(NULL, "KRB5KDF", NULL); ++ if (kdf == NULL) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ kctx = EVP_KDF_CTX_new(kdf); ++ if (kctx == NULL) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ params[i++] = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_CIPHER, ++ cipher, 0); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, ++ inkey->keyblock.contents, ++ inkey->keyblock.length); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_CONSTANT, ++ in_constant->data, ++ in_constant->length); ++ params[i] = OSSL_PARAM_construct_end(); ++ if (EVP_KDF_derive(kctx, (unsigned char *)outrnd->data, outrnd->length, ++ params) <= 0) { ++ ret = KRB5_CRYPTO_INTERNAL; ++ goto done; ++ } ++ ++ ret = 0; ++done: ++ if (ret) ++ zap(outrnd->data, outrnd->length); ++ EVP_KDF_free(kdf); ++ EVP_KDF_CTX_free(kctx); ++ return ret; ++} ++ ++#else /* HAVE_EVP_KDF_FETCH */ ++ ++/* ++ * NIST SP800-108 KDF in counter mode (section 5.1). ++ * Parameters: ++ * - HMAC (with hash as the hash provider) is the PRF. ++ * - A block counter of four bytes is used. ++ * - Four bytes are used to encode the output length in the PRF input. ++ * ++ * There are no uses requiring more than a single PRF invocation. ++ */ ++static krb5_error_code ++builtin_sp800_108_counter_hmac(const struct krb5_hash_provider *hash, ++ krb5_key inkey, krb5_data *outrnd, ++ const krb5_data *label, ++ const krb5_data *context) ++{ ++ krb5_crypto_iov iov[5]; ++ krb5_error_code ret; ++ krb5_data prf; ++ unsigned char ibuf[4], lbuf[4]; ++ ++ if (hash == NULL || outrnd->length > hash->hashsize) + return KRB5_CRYPTO_INTERNAL; + + /* Allocate encryption data buffer. */ +- ret = alloc_data(&block, blocksize); ++ ret = alloc_data(&prf, hash->hashsize); + if (ret) + return ret; + +- /* Initialize the input block. */ +- if (in_constant->length == blocksize) { +- memcpy(block.data, in_constant->data, blocksize); +- } else { +- krb5int_nfold(in_constant->length * 8, +- (unsigned char *) in_constant->data, +- blocksize * 8, (unsigned char *) block.data); +- } ++ /* [i]2: four-byte big-endian binary string giving the block counter (1) */ ++ iov[0].flags = KRB5_CRYPTO_TYPE_DATA; ++ iov[0].data = make_data(ibuf, sizeof(ibuf)); ++ store_32_be(1, ibuf); ++ /* Label */ ++ iov[1].flags = KRB5_CRYPTO_TYPE_DATA; ++ iov[1].data = *label; ++ /* 0x00: separator byte */ ++ iov[2].flags = KRB5_CRYPTO_TYPE_DATA; ++ iov[2].data = make_data("", 1); ++ /* Context */ ++ iov[3].flags = KRB5_CRYPTO_TYPE_DATA; ++ iov[3].data = *context; ++ /* [L]2: four-byte big-endian binary string giving the output length */ ++ iov[4].flags = KRB5_CRYPTO_TYPE_DATA; ++ iov[4].data = make_data(lbuf, sizeof(lbuf)); ++ store_32_be(outrnd->length * 8, lbuf); + +- /* Loop encrypting the blocks until enough key bytes are generated. */ +- n = 0; +- while (n < keybytes) { +- ret = encrypt_block(enc, inkey, &block); +- if (ret) +- goto cleanup; +- +- if ((keybytes - n) <= blocksize) { +- memcpy(outrnd->data + n, block.data, (keybytes - n)); +- break; +- } +- +- memcpy(outrnd->data + n, block.data, blocksize); +- n += blocksize; +- } +- +-cleanup: +- zapfree(block.data, blocksize); ++ ret = krb5int_hmac(hash, inkey, iov, 5, &prf); ++ if (!ret) ++ memcpy(outrnd->data, prf.data, outrnd->length); ++ zapfree(prf.data, prf.length); + return ret; + } + +@@ -139,9 +341,9 @@ cleanup: + * - Four bytes are used to encode the output length in the PRF input. + */ + static krb5_error_code +-derive_random_sp800_108_feedback_cmac(const struct krb5_enc_provider *enc, +- krb5_key inkey, krb5_data *outrnd, +- const krb5_data *in_constant) ++builtin_sp800_108_feedback_cmac(const struct krb5_enc_provider *enc, ++ krb5_key inkey, krb5_data *outrnd, ++ const krb5_data *in_constant) + { + size_t blocksize, keybytes, n; + krb5_crypto_iov iov[6]; +@@ -204,56 +406,94 @@ cleanup: + return ret; + } + +-/* +- * NIST SP800-108 KDF in counter mode (section 5.1). +- * Parameters: +- * - HMAC (with hash as the hash provider) is the PRF. +- * - A block counter of four bytes is used. +- * - Four bytes are used to encode the output length in the PRF input. +- * +- * There are no uses requiring more than a single PRF invocation. +- */ ++static krb5_error_code ++builtin_derive_random_rfc3961(const struct krb5_enc_provider *enc, ++ krb5_key inkey, krb5_data *outrnd, ++ const krb5_data *in_constant) ++{ ++ size_t blocksize, keybytes, n; ++ krb5_error_code ret; ++ krb5_data block = empty_data(); ++ ++ blocksize = enc->block_size; ++ keybytes = enc->keybytes; ++ ++ if (blocksize == 1) ++ return KRB5_BAD_ENCTYPE; ++ if (inkey->keyblock.length != enc->keylength || outrnd->length != keybytes) ++ return KRB5_CRYPTO_INTERNAL; ++ ++ /* Allocate encryption data buffer. */ ++ ret = alloc_data(&block, blocksize); ++ if (ret) ++ return ret; ++ ++ /* Initialize the input block. */ ++ if (in_constant->length == blocksize) { ++ memcpy(block.data, in_constant->data, blocksize); ++ } else { ++ krb5int_nfold(in_constant->length * 8, ++ (unsigned char *) in_constant->data, ++ blocksize * 8, (unsigned char *) block.data); ++ } ++ ++ /* Loop encrypting the blocks until enough key bytes are generated. */ ++ n = 0; ++ while (n < keybytes) { ++ ret = encrypt_block(enc, inkey, &block); ++ if (ret) ++ goto cleanup; ++ ++ if ((keybytes - n) <= blocksize) { ++ memcpy(outrnd->data + n, block.data, (keybytes - n)); ++ break; ++ } ++ ++ memcpy(outrnd->data + n, block.data, blocksize); ++ n += blocksize; ++ } ++ ++cleanup: ++ zapfree(block.data, blocksize); ++ return ret; ++} ++#endif /* HAVE_EVP_KDF_FETCH */ ++ + krb5_error_code + k5_sp800_108_counter_hmac(const struct krb5_hash_provider *hash, + krb5_key inkey, krb5_data *outrnd, + const krb5_data *label, const krb5_data *context) + { +- krb5_crypto_iov iov[5]; +- krb5_error_code ret; +- krb5_data prf; +- unsigned char ibuf[4], lbuf[4]; ++#ifdef HAVE_EVP_KDF_FETCH ++ return openssl_kbdkf_counter_hmac(hash, inkey, outrnd, label, context); ++#else ++ return builtin_sp800_108_counter_hmac(hash, inkey, outrnd, label, ++ context); ++#endif ++} + +- if (hash == NULL || outrnd->length > hash->hashsize) +- return KRB5_CRYPTO_INTERNAL; ++static krb5_error_code ++sp800_108_feedback_cmac(const struct krb5_enc_provider *enc, ++ krb5_key inkey, krb5_data *outrnd, ++ const krb5_data *in_constant) ++{ ++#ifdef HAVE_EVP_KDF_FETCH ++ return openssl_kbkdf_feedback_cmac(enc, inkey, outrnd, in_constant); ++#else ++ return builtin_sp800_108_feedback_cmac(enc, inkey, outrnd, in_constant); ++#endif ++} + +- /* Allocate encryption data buffer. */ +- ret = alloc_data(&prf, hash->hashsize); +- if (ret) +- return ret; +- +- /* [i]2: four-byte big-endian binary string giving the block counter (1) */ +- iov[0].flags = KRB5_CRYPTO_TYPE_DATA; +- iov[0].data = make_data(ibuf, sizeof(ibuf)); +- store_32_be(1, ibuf); +- /* Label */ +- iov[1].flags = KRB5_CRYPTO_TYPE_DATA; +- iov[1].data = *label; +- /* 0x00: separator byte */ +- iov[2].flags = KRB5_CRYPTO_TYPE_DATA; +- iov[2].data = make_data("", 1); +- /* Context */ +- iov[3].flags = KRB5_CRYPTO_TYPE_DATA; +- iov[3].data = *context; +- /* [L]2: four-byte big-endian binary string giving the output length */ +- iov[4].flags = KRB5_CRYPTO_TYPE_DATA; +- iov[4].data = make_data(lbuf, sizeof(lbuf)); +- store_32_be(outrnd->length * 8, lbuf); +- +- ret = krb5int_hmac(hash, inkey, iov, 5, &prf); +- if (!ret) +- memcpy(outrnd->data, prf.data, outrnd->length); +- zapfree(prf.data, prf.length); +- return ret; ++static krb5_error_code ++derive_random_rfc3961(const struct krb5_enc_provider *enc, ++ krb5_key inkey, krb5_data *outrnd, ++ const krb5_data *in_constant) ++{ ++#ifdef HAVE_EVP_KDF_FETCH ++ return openssl_krb5kdf(enc, inkey, outrnd, in_constant); ++#else ++ return builtin_derive_random_rfc3961(enc, inkey, outrnd, in_constant); ++#endif + } + + krb5_error_code +@@ -268,8 +508,7 @@ krb5int_derive_random(const struct krb5_enc_provider *enc, + case DERIVE_RFC3961: + return derive_random_rfc3961(enc, inkey, outrnd, in_constant); + case DERIVE_SP800_108_CMAC: +- return derive_random_sp800_108_feedback_cmac(enc, inkey, outrnd, +- in_constant); ++ return sp800_108_feedback_cmac(enc, inkey, outrnd, in_constant); + case DERIVE_SP800_108_HMAC: + return k5_sp800_108_counter_hmac(hash, inkey, outrnd, in_constant, + &empty); diff --git a/Use-OpenSSL-s-SSKDF-in-PKINIT-when-available.patch b/Use-OpenSSL-s-SSKDF-in-PKINIT-when-available.patch new file mode 100644 index 0000000..0a9cde1 --- /dev/null +++ b/Use-OpenSSL-s-SSKDF-in-PKINIT-when-available.patch @@ -0,0 +1,408 @@ +From 8bbb492f2be1418e1e4bb2cf197414810dac9589 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Fri, 20 Sep 2019 17:20:59 -0400 +Subject: [PATCH] Use OpenSSL's SSKDF in PKINIT when available + +Starting in 3.0, OpenSSL implements SSKDF, which is the basis of our +id-pkinit-kdf (RFC 8636). Factor out common setup code around +other_info. Adjust code to comply to existing style. + +(cherry picked from commit 4376a22e41fb639be31daf81275a332d3f930996) +--- + .../preauth/pkinit/pkinit_crypto_openssl.c | 294 +++++++++++------- + 1 file changed, 181 insertions(+), 113 deletions(-) + +diff --git a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c +index e1153344e..350c2118a 100644 +--- a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c ++++ b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c +@@ -38,6 +38,12 @@ + #include + #include + ++#ifdef HAVE_EVP_KDF_FETCH ++#include ++#include ++#include ++#endif ++ + static krb5_error_code pkinit_init_pkinit_oids(pkinit_plg_crypto_context ); + static void pkinit_fini_pkinit_oids(pkinit_plg_crypto_context ); + +@@ -2294,15 +2300,16 @@ cleanup: + } + + +-/** ++/* + * Given an algorithm_identifier, this function returns the hash length + * and EVP function associated with that algorithm. ++ * ++ * RFC 8636 defines a SHA384 variant, but we don't use it. + */ + static krb5_error_code +-pkinit_alg_values(krb5_context context, +- const krb5_data *alg_id, +- size_t *hash_bytes, +- const EVP_MD *(**func)(void)) ++pkinit_alg_values(krb5_context context, const krb5_data *alg_id, ++ size_t *hash_bytes, const EVP_MD *(**func)(void), ++ char **hash_name) + { + *hash_bytes = 0; + *func = NULL; +@@ -2311,18 +2318,21 @@ pkinit_alg_values(krb5_context context, + krb5_pkinit_sha1_oid_len))) { + *hash_bytes = 20; + *func = &EVP_sha1; ++ *hash_name = strdup("SHA1"); + return 0; + } else if ((alg_id->length == krb5_pkinit_sha256_oid_len) && + (0 == memcmp(alg_id->data, krb5_pkinit_sha256_oid, + krb5_pkinit_sha256_oid_len))) { + *hash_bytes = 32; + *func = &EVP_sha256; ++ *hash_name = strdup("SHA256"); + return 0; + } else if ((alg_id->length == krb5_pkinit_sha512_oid_len) && + (0 == memcmp(alg_id->data, krb5_pkinit_sha512_oid, + krb5_pkinit_sha512_oid_len))) { + *hash_bytes = 64; + *func = &EVP_sha512; ++ *hash_name = strdup("SHA512"); + return 0; + } else { + krb5_set_error_message(context, KRB5_ERR_BAD_S2K_PARAMS, +@@ -2331,11 +2341,60 @@ pkinit_alg_values(krb5_context context, + } + } /* pkinit_alg_values() */ + ++#ifdef HAVE_EVP_KDF_FETCH ++static krb5_error_code ++openssl_sskdf(krb5_context context, size_t hash_bytes, krb5_data *key, ++ krb5_data *info, char *out, size_t out_len, char *digest) ++{ ++ krb5_error_code ret; ++ EVP_KDF *kdf = NULL; ++ EVP_KDF_CTX *kctx = NULL; ++ OSSL_PARAM params[4]; ++ size_t i = 0; + +-/* pkinit_alg_agility_kdf() -- +- * This function generates a key using the KDF described in +- * draft_ietf_krb_wg_pkinit_alg_agility-04.txt. The algorithm is +- * described as follows: ++ if (digest == NULL) { ++ ret = oerr(context, ENOMEM, ++ _("Failed to allocate space for digest algorithm name")); ++ goto done; ++ } ++ ++ kdf = EVP_KDF_fetch(NULL, "SSKDF", NULL); ++ if (kdf == NULL) { ++ ret = oerr(context, KRB5_CRYPTO_INTERNAL, _("Failed to fetch SSKDF")); ++ goto done; ++ } ++ ++ kctx = EVP_KDF_CTX_new(kdf); ++ if (!kctx) { ++ ret = oerr(context, KRB5_CRYPTO_INTERNAL, ++ _("Failed to instantiate SSKDF")); ++ goto done; ++ } ++ ++ params[i++] = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_DIGEST, ++ digest, 0); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, ++ key->data, key->length); ++ params[i++] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_INFO, ++ info->data, info->length); ++ params[i] = OSSL_PARAM_construct_end(); ++ if (EVP_KDF_derive(kctx, (unsigned char *)out, out_len, params) <= 0) { ++ ret = oerr(context, KRB5_CRYPTO_INTERNAL, ++ _("Failed to derive key using SSKDF")); ++ goto done; ++ } ++ ++ ret = 0; ++done: ++ EVP_KDF_free(kdf); ++ EVP_KDF_CTX_free(kctx); ++ return ret; ++} ++#else ++/* ++ * Generate a key using the KDF described in RFC 8636, also known as SSKDF ++ * (single-step kdf). Our caller precomputes `reps`, but otherwise the ++ * algorithm is as follows: + * + * 1. reps = keydatalen (K) / hash length (H) + * +@@ -2349,95 +2408,16 @@ pkinit_alg_values(krb5_context context, + * + * 4. Set key = Hash1 || Hash2 || ... so that length of key is K bytes. + */ +-krb5_error_code +-pkinit_alg_agility_kdf(krb5_context context, +- krb5_data *secret, +- krb5_data *alg_oid, +- krb5_const_principal party_u_info, +- krb5_const_principal party_v_info, +- krb5_enctype enctype, +- krb5_data *as_req, +- krb5_data *pk_as_rep, +- krb5_keyblock *key_block) ++static krb5_error_code ++builtin_sskdf(krb5_context context, unsigned int reps, size_t hash_len, ++ const EVP_MD *(*EVP_func)(void), krb5_data *secret, ++ krb5_data *other_info, char *out, size_t out_len) + { +- krb5_error_code retval = 0; ++ krb5_error_code ret = 0; + +- unsigned int reps = 0; +- uint32_t counter = 1; /* Does this type work on Windows? */ ++ uint32_t counter = 1; + size_t offset = 0; +- size_t hash_len = 0; +- size_t rand_len = 0; +- size_t key_len = 0; +- krb5_data random_data; +- krb5_sp80056a_other_info other_info_fields; +- krb5_pkinit_supp_pub_info supp_pub_info_fields; +- krb5_data *other_info = NULL; +- krb5_data *supp_pub_info = NULL; +- krb5_algorithm_identifier alg_id; + EVP_MD_CTX *ctx = NULL; +- const EVP_MD *(*EVP_func)(void); +- +- /* initialize random_data here to make clean-up safe */ +- random_data.length = 0; +- random_data.data = NULL; +- +- /* allocate and initialize the key block */ +- key_block->magic = 0; +- key_block->enctype = enctype; +- if (0 != (retval = krb5_c_keylengths(context, enctype, &rand_len, +- &key_len))) +- goto cleanup; +- +- random_data.length = rand_len; +- key_block->length = key_len; +- +- if (NULL == (key_block->contents = malloc(key_block->length))) { +- retval = ENOMEM; +- goto cleanup; +- } +- +- memset (key_block->contents, 0, key_block->length); +- +- /* If this is anonymous pkinit, use the anonymous principle for party_u_info */ +- if (party_u_info && krb5_principal_compare_any_realm(context, party_u_info, +- krb5_anonymous_principal())) +- party_u_info = (krb5_principal)krb5_anonymous_principal(); +- +- if (0 != (retval = pkinit_alg_values(context, alg_oid, &hash_len, &EVP_func))) +- goto cleanup; +- +- /* 1. reps = keydatalen (K) / hash length (H) */ +- reps = key_block->length/hash_len; +- +- /* ... and round up, if necessary */ +- if (key_block->length > (reps * hash_len)) +- reps++; +- +- /* Allocate enough space in the random data buffer to hash directly into +- * it, even if the last hash will make it bigger than the key length. */ +- if (NULL == (random_data.data = malloc(reps * hash_len))) { +- retval = ENOMEM; +- goto cleanup; +- } +- +- /* Encode the ASN.1 octet string for "SuppPubInfo" */ +- supp_pub_info_fields.enctype = enctype; +- supp_pub_info_fields.as_req = *as_req; +- supp_pub_info_fields.pk_as_rep = *pk_as_rep; +- if (0 != ((retval = encode_krb5_pkinit_supp_pub_info(&supp_pub_info_fields, +- &supp_pub_info)))) +- goto cleanup; +- +- /* Now encode the ASN.1 octet string for "OtherInfo" */ +- memset(&alg_id, 0, sizeof alg_id); +- alg_id.algorithm = *alg_oid; /*alias*/ +- +- other_info_fields.algorithm_identifier = alg_id; +- other_info_fields.party_u_info = (krb5_principal) party_u_info; +- other_info_fields.party_v_info = (krb5_principal) party_v_info; +- other_info_fields.supp_pub_info = *supp_pub_info; +- if (0 != (retval = encode_krb5_sp80056a_other_info(&other_info_fields, &other_info))) +- goto cleanup; + + /* 2. Initialize a 32-bit, big-endian bit string counter as 1. + * 3. For i = 1 to reps by 1, do the following: +@@ -2450,7 +2430,7 @@ pkinit_alg_agility_kdf(krb5_context context, + + ctx = EVP_MD_CTX_new(); + if (ctx == NULL) { +- retval = KRB5_CRYPTO_INTERNAL; ++ ret = KRB5_CRYPTO_INTERNAL; + goto cleanup; + } + +@@ -2458,7 +2438,7 @@ pkinit_alg_agility_kdf(krb5_context context, + if (!EVP_DigestInit(ctx, EVP_func())) { + krb5_set_error_message(context, KRB5_CRYPTO_INTERNAL, + "Call to OpenSSL EVP_DigestInit() returned an error."); +- retval = KRB5_CRYPTO_INTERNAL; ++ ret = KRB5_CRYPTO_INTERNAL; + goto cleanup; + } + +@@ -2467,15 +2447,16 @@ pkinit_alg_agility_kdf(krb5_context context, + !EVP_DigestUpdate(ctx, other_info->data, other_info->length)) { + krb5_set_error_message(context, KRB5_CRYPTO_INTERNAL, + "Call to OpenSSL EVP_DigestUpdate() returned an error."); +- retval = KRB5_CRYPTO_INTERNAL; ++ ret = KRB5_CRYPTO_INTERNAL; + goto cleanup; + } + +- /* 4. Set key = Hash1 || Hash2 || ... so that length of key is K bytes. */ +- if (!EVP_DigestFinal(ctx, (uint8_t *)random_data.data + offset, &s)) { ++ /* 4. Set key = Hash1 || Hash2 || ... so that length of key is K ++ * bytes. */ ++ if (!EVP_DigestFinal(ctx, (unsigned char *)out + offset, &s)) { + krb5_set_error_message(context, KRB5_CRYPTO_INTERNAL, + "Call to OpenSSL EVP_DigestUpdate() returned an error."); +- retval = KRB5_CRYPTO_INTERNAL; ++ ret = KRB5_CRYPTO_INTERNAL; + goto cleanup; + } + offset += s; +@@ -2484,26 +2465,113 @@ pkinit_alg_agility_kdf(krb5_context context, + EVP_MD_CTX_free(ctx); + ctx = NULL; + } +- +- retval = krb5_c_random_to_key(context, enctype, &random_data, +- key_block); +- + cleanup: + EVP_MD_CTX_free(ctx); ++ return ret; ++} /* builtin_sskdf() */ ++#endif /* HAVE_EVP_KDF_FETCH */ + +- /* If this has been an error, free the allocated key_block, if any */ +- if (retval) { +- krb5_free_keyblock_contents(context, key_block); ++/* id-pkinit-kdf family, as specified by RFC 8636. */ ++krb5_error_code ++pkinit_alg_agility_kdf(krb5_context context, krb5_data *secret, ++ krb5_data *alg_oid, krb5_const_principal party_u_info, ++ krb5_const_principal party_v_info, ++ krb5_enctype enctype, krb5_data *as_req, ++ krb5_data *pk_as_rep, krb5_keyblock *key_block) ++{ ++ krb5_error_code ret; ++ size_t hash_len = 0, rand_len = 0, key_len = 0; ++ const EVP_MD *(*EVP_func)(void); ++ krb5_sp80056a_other_info other_info_fields; ++ krb5_pkinit_supp_pub_info supp_pub_info_fields; ++ krb5_data *other_info = NULL, *supp_pub_info = NULL; ++ krb5_data random_data = empty_data(); ++ krb5_algorithm_identifier alg_id; ++ unsigned int reps; ++ char *hash_name = NULL; ++ ++ /* Allocate and initialize the key block. */ ++ key_block->magic = 0; ++ key_block->enctype = enctype; ++ ++ /* Use separate variables to avoid alignment restriction problems. */ ++ ret = krb5_c_keylengths(context, enctype, &rand_len, &key_len); ++ if (ret) ++ goto cleanup; ++ random_data.length = rand_len; ++ key_block->length = key_len; ++ ++ key_block->contents = k5calloc(key_block->length, 1, &ret); ++ if (key_block->contents == NULL) ++ goto cleanup; ++ ++ /* If this is anonymous pkinit, use the anonymous principle for ++ * party_u_info. */ ++ if (party_u_info && ++ krb5_principal_compare_any_realm(context, party_u_info, ++ krb5_anonymous_principal())) { ++ party_u_info = (krb5_principal)krb5_anonymous_principal(); + } + +- /* free other allocated resources, either way */ +- if (random_data.data) +- free(random_data.data); ++ ret = pkinit_alg_values(context, alg_oid, &hash_len, &EVP_func, ++ &hash_name); ++ if (ret) ++ goto cleanup; ++ ++ /* 1. reps = keydatalen (K) / hash length (H) */ ++ reps = key_block->length / hash_len; ++ ++ /* ... and round up, if necessary. */ ++ if (key_block->length > (reps * hash_len)) ++ reps++; ++ ++ /* Allocate enough space in the random data buffer to hash directly into ++ * it, even if the last hash will make it bigger than the key length. */ ++ random_data.data = k5alloc(reps * hash_len, &ret); ++ if (random_data.data == NULL) ++ goto cleanup; ++ ++ /* Encode the ASN.1 octet string for "SuppPubInfo". */ ++ supp_pub_info_fields.enctype = enctype; ++ supp_pub_info_fields.as_req = *as_req; ++ supp_pub_info_fields.pk_as_rep = *pk_as_rep; ++ ret = encode_krb5_pkinit_supp_pub_info(&supp_pub_info_fields, ++ &supp_pub_info); ++ if (ret) ++ goto cleanup; ++ ++ /* Now encode the ASN.1 octet string for "OtherInfo". */ ++ memset(&alg_id, 0, sizeof(alg_id)); ++ alg_id.algorithm = *alg_oid; ++ other_info_fields.algorithm_identifier = alg_id; ++ other_info_fields.party_u_info = (krb5_principal)party_u_info; ++ other_info_fields.party_v_info = (krb5_principal)party_v_info; ++ other_info_fields.supp_pub_info = *supp_pub_info; ++ ret = encode_krb5_sp80056a_other_info(&other_info_fields, &other_info); ++ if (ret) ++ goto cleanup; ++ ++#ifdef HAVE_EVP_KDF_FETCH ++ ret = openssl_sskdf(context, hash_len, secret, other_info, ++ random_data.data, key_block->length, hash_name); ++#else ++ ret = builtin_sskdf(context, reps, hash_len, EVP_func, secret, ++ other_info, random_data.data, key_block->length); ++#endif ++ if (ret) ++ goto cleanup; ++ ++ ret = krb5_c_random_to_key(context, enctype, &random_data, key_block); ++cleanup: ++ if (ret) ++ krb5_free_keyblock_contents(context, key_block); ++ ++ free(hash_name); ++ zapfree(random_data.data, random_data.length); + krb5_free_data(context, other_info); + krb5_free_data(context, supp_pub_info); +- +- return retval; +-} /*pkinit_alg_agility_kdf() */ ++ return ret; ++} + + /* Call DH_compute_key() and ensure that we left-pad short results instead of + * leaving junk bytes at the end of the buffer. */ diff --git a/Use-asan-in-one-of-the-CI-builds.patch b/Use-asan-in-one-of-the-CI-builds.patch new file mode 100644 index 0000000..4964d2f --- /dev/null +++ b/Use-asan-in-one-of-the-CI-builds.patch @@ -0,0 +1,22 @@ +From 37e1fe755c6e976253a7f40ec7a9e740e4329789 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Mon, 21 Jun 2021 19:15:26 -0400 +Subject: [PATCH] Use asan in one of the CI builds + +(cherry picked from commit 7368354bcd0b58480a88b1fb81e63bd6aae7edf2) +--- + .github/workflows/build.yml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml +index 8d1042b7b..06a35b7b9 100644 +--- a/.github/workflows/build.yml ++++ b/.github/workflows/build.yml +@@ -17,6 +17,7 @@ jobs: + os: ubuntu-18.04 + compiler: clang + makevars: CPPFLAGS=-Werror ++ configureopts: --enable-asan + - name: linux-clang-openssl + os: ubuntu-18.04 + compiler: clang diff --git a/downstream-FIPS-with-PRNG-and-RADIUS-and-MD4.patch b/downstream-FIPS-with-PRNG-and-RADIUS-and-MD4.patch new file mode 100644 index 0000000..553dec9 --- /dev/null +++ b/downstream-FIPS-with-PRNG-and-RADIUS-and-MD4.patch @@ -0,0 +1,604 @@ +From 91e1d43858d90f59f5d9f45987cfca02c3175feb Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Fri, 9 Nov 2018 15:12:21 -0500 +Subject: [PATCH] [downstream] FIPS with PRNG and RADIUS and MD4 + +NB: Use openssl's PRNG in FIPS mode and taint within krad. + +A lot of the FIPS error conditions from OpenSSL are incredibly +mysterious (at best, things return NULL unexpectedly; at worst, +internal assertions are tripped; most of the time, you just get +ENOMEM). In order to cope with this, we need to have some level of +awareness of what we can and can't safely call. + +This will slow down some calls slightly (FIPS_mode() takes multiple +locks), but not for any ciphers we care about - which is to say that +AES is fine. Shame about SPAKE though. + +post6 restores MD4 (and therefore keygen-only RC4). + +post7 restores MD5 and adds radius_md5_fips_override. + +post8 silences a static analyzer warning. + +Last-updated: krb5-1.17 +--- + doc/admin/conf_files/krb5_conf.rst | 6 +++ + src/lib/crypto/krb/prng.c | 11 ++++- + .../crypto/openssl/enc_provider/camellia.c | 6 +++ + src/lib/crypto/openssl/enc_provider/rc4.c | 13 +++++- + .../crypto/openssl/hash_provider/hash_evp.c | 12 +++++ + src/lib/crypto/openssl/hmac.c | 6 ++- + src/lib/krad/attr.c | 46 ++++++++++++++----- + src/lib/krad/attrset.c | 5 +- + src/lib/krad/internal.h | 28 ++++++++++- + src/lib/krad/packet.c | 22 +++++---- + src/lib/krad/remote.c | 10 +++- + src/lib/krad/t_attr.c | 3 +- + src/lib/krad/t_attrset.c | 4 +- + src/plugins/preauth/spake/spake_client.c | 6 +++ + src/plugins/preauth/spake/spake_kdc.c | 6 +++ + 15 files changed, 151 insertions(+), 33 deletions(-) + +diff --git a/doc/admin/conf_files/krb5_conf.rst b/doc/admin/conf_files/krb5_conf.rst +index 675175955..adba8238d 100644 +--- a/doc/admin/conf_files/krb5_conf.rst ++++ b/doc/admin/conf_files/krb5_conf.rst +@@ -330,6 +330,12 @@ The libdefaults section may contain any of the following relations: + qualification of shortnames, set this relation to the empty string + with ``qualify_shortname = ""``. (New in release 1.18.) + ++**radius_md5_fips_override** ++ Downstream-only option to enable use of MD5 in RADIUS ++ communication (libkrad). This allows for local (or protected ++ tunnel) communication with a RADIUS server that doesn't use krad ++ (e.g., freeradius) while in FIPS mode. ++ + **rdns** + If this flag is true, reverse name lookup will be used in addition + to forward name lookup to canonicalizing hostnames for use in +diff --git a/src/lib/crypto/krb/prng.c b/src/lib/crypto/krb/prng.c +index cb9ca9b98..f0e9984ca 100644 +--- a/src/lib/crypto/krb/prng.c ++++ b/src/lib/crypto/krb/prng.c +@@ -26,6 +26,8 @@ + + #include "crypto_int.h" + ++#include ++ + krb5_error_code KRB5_CALLCONV + krb5_c_random_seed(krb5_context context, krb5_data *data) + { +@@ -99,9 +101,16 @@ krb5_boolean + k5_get_os_entropy(unsigned char *buf, size_t len, int strong) + { + const char *device; +-#if defined(__linux__) && defined(SYS_getrandom) + int r; + ++ /* A wild FIPS mode appeared! */ ++ if (FIPS_mode()) { ++ /* The return codes on this API are not good */ ++ r = RAND_bytes(buf, len); ++ return r == 1; ++ } ++ ++#if defined(__linux__) && defined(SYS_getrandom) + while (len > 0) { + /* + * Pull from the /dev/urandom pool, but require it to have been seeded. +diff --git a/src/lib/crypto/openssl/enc_provider/camellia.c b/src/lib/crypto/openssl/enc_provider/camellia.c +index 2da691329..f79679a0b 100644 +--- a/src/lib/crypto/openssl/enc_provider/camellia.c ++++ b/src/lib/crypto/openssl/enc_provider/camellia.c +@@ -304,6 +304,9 @@ krb5int_camellia_cbc_mac(krb5_key key, const krb5_crypto_iov *data, + unsigned char blockY[CAMELLIA_BLOCK_SIZE], blockB[CAMELLIA_BLOCK_SIZE]; + struct iov_cursor cursor; + ++ if (FIPS_mode()) ++ return KRB5_CRYPTO_INTERNAL; ++ + if (output->length < CAMELLIA_BLOCK_SIZE) + return KRB5_BAD_MSIZE; + +@@ -331,6 +334,9 @@ static krb5_error_code + krb5int_camellia_init_state (const krb5_keyblock *key, krb5_keyusage usage, + krb5_data *state) + { ++ if (FIPS_mode()) ++ return KRB5_CRYPTO_INTERNAL; ++ + state->length = 16; + state->data = (void *) malloc(16); + if (state->data == NULL) +diff --git a/src/lib/crypto/openssl/enc_provider/rc4.c b/src/lib/crypto/openssl/enc_provider/rc4.c +index bc87c6f42..9bf407899 100644 +--- a/src/lib/crypto/openssl/enc_provider/rc4.c ++++ b/src/lib/crypto/openssl/enc_provider/rc4.c +@@ -66,6 +66,9 @@ k5_arcfour_docrypt(krb5_key key, const krb5_data *state, krb5_crypto_iov *data, + EVP_CIPHER_CTX *ctx = NULL; + struct arcfour_state *arcstate; + ++ if (FIPS_mode()) ++ return KRB5_CRYPTO_INTERNAL; ++ + arcstate = (state != NULL) ? (void *)state->data : NULL; + if (arcstate != NULL) { + ctx = arcstate->ctx; +@@ -113,7 +116,12 @@ k5_arcfour_docrypt(krb5_key key, const krb5_data *state, krb5_crypto_iov *data, + static void + k5_arcfour_free_state(krb5_data *state) + { +- struct arcfour_state *arcstate = (void *)state->data; ++ struct arcfour_state *arcstate; ++ ++ if (FIPS_mode()) ++ return; ++ ++ arcstate = (void *) state->data; + + EVP_CIPHER_CTX_free(arcstate->ctx); + free(arcstate); +@@ -125,6 +133,9 @@ k5_arcfour_init_state(const krb5_keyblock *key, + { + struct arcfour_state *arcstate; + ++ if (FIPS_mode()) ++ return KRB5_CRYPTO_INTERNAL; ++ + /* + * The cipher state here is a saved pointer to a struct arcfour_state + * object, rather than a flat byte array as in most enc providers. The +diff --git a/src/lib/crypto/openssl/hash_provider/hash_evp.c b/src/lib/crypto/openssl/hash_provider/hash_evp.c +index 1e0fb8fc3..2eb5139c0 100644 +--- a/src/lib/crypto/openssl/hash_provider/hash_evp.c ++++ b/src/lib/crypto/openssl/hash_provider/hash_evp.c +@@ -49,6 +49,11 @@ hash_evp(const EVP_MD *type, const krb5_crypto_iov *data, size_t num_data, + if (ctx == NULL) + return ENOMEM; + ++ if (type == EVP_md4() || type == EVP_md5()) { ++ /* See comments below in hash_md4() and hash_md5(). */ ++ EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); ++ } ++ + ok = EVP_DigestInit_ex(ctx, type, NULL); + for (i = 0; i < num_data; i++) { + if (!SIGN_IOV(&data[i])) +@@ -64,12 +69,19 @@ hash_evp(const EVP_MD *type, const krb5_crypto_iov *data, size_t num_data, + static krb5_error_code + hash_md4(const krb5_crypto_iov *data, size_t num_data, krb5_data *output) + { ++ /* ++ * MD4 is needed in FIPS mode to perform key generation for RC4 keys used ++ * by IPA. These keys are only used along a (separately) secured channel ++ * for legacy reasons when performing trusts to Active Directory. ++ */ + return hash_evp(EVP_md4(), data, num_data, output); + } + + static krb5_error_code + hash_md5(const krb5_crypto_iov *data, size_t num_data, krb5_data *output) + { ++ /* MD5 is needed in FIPS mode for communication with RADIUS servers. This ++ * is gated in libkrad by libdefaults->radius_md5_fips_override. */ + return hash_evp(EVP_md5(), data, num_data, output); + } + +diff --git a/src/lib/crypto/openssl/hmac.c b/src/lib/crypto/openssl/hmac.c +index 7dc59dcc0..769a50c00 100644 +--- a/src/lib/crypto/openssl/hmac.c ++++ b/src/lib/crypto/openssl/hmac.c +@@ -103,7 +103,11 @@ map_digest(const struct krb5_hash_provider *hash) + return EVP_sha256(); + else if (!strncmp(hash->hash_name, "SHA-384",7)) + return EVP_sha384(); +- else if (!strncmp(hash->hash_name, "MD5", 3)) ++ ++ if (FIPS_mode()) ++ return NULL; ++ ++ if (!strncmp(hash->hash_name, "MD5", 3)) + return EVP_md5(); + else if (!strncmp(hash->hash_name, "MD4", 3)) + return EVP_md4(); +diff --git a/src/lib/krad/attr.c b/src/lib/krad/attr.c +index 9c13d9d75..42d354a3b 100644 +--- a/src/lib/krad/attr.c ++++ b/src/lib/krad/attr.c +@@ -38,7 +38,8 @@ + typedef krb5_error_code + (*attribute_transform_fn)(krb5_context ctx, const char *secret, + const unsigned char *auth, const krb5_data *in, +- unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen); ++ unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen, ++ krb5_boolean *is_fips); + + typedef struct { + const char *name; +@@ -51,12 +52,14 @@ typedef struct { + static krb5_error_code + user_password_encode(krb5_context ctx, const char *secret, + const unsigned char *auth, const krb5_data *in, +- unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen); ++ unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen, ++ krb5_boolean *is_fips); + + static krb5_error_code + user_password_decode(krb5_context ctx, const char *secret, + const unsigned char *auth, const krb5_data *in, +- unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen); ++ unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen, ++ krb5_boolean *ignored); + + static const attribute_record attributes[UCHAR_MAX] = { + {"User-Name", 1, MAX_ATTRSIZE, NULL, NULL}, +@@ -128,7 +131,8 @@ static const attribute_record attributes[UCHAR_MAX] = { + static krb5_error_code + user_password_encode(krb5_context ctx, const char *secret, + const unsigned char *auth, const krb5_data *in, +- unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen) ++ unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen, ++ krb5_boolean *is_fips) + { + const unsigned char *indx; + krb5_error_code retval; +@@ -154,8 +158,15 @@ user_password_encode(krb5_context ctx, const char *secret, + for (blck = 0, indx = auth; blck * BLOCKSIZE < len; blck++) { + memcpy(tmp.data + seclen, indx, BLOCKSIZE); + +- retval = krb5_c_make_checksum(ctx, CKSUMTYPE_RSA_MD5, NULL, 0, &tmp, +- &sum); ++ if (kr_use_fips(ctx)) { ++ /* Skip encryption here. Taint so that we won't pass it out of ++ * the machine by accident. */ ++ *is_fips = TRUE; ++ sum.contents = calloc(1, BLOCKSIZE); ++ } else { ++ retval = krb5_c_make_checksum(ctx, CKSUMTYPE_RSA_MD5, NULL, 0, &tmp, ++ &sum); ++ } + if (retval != 0) { + zap(tmp.data, tmp.length); + zap(outbuf, len); +@@ -180,7 +191,8 @@ user_password_encode(krb5_context ctx, const char *secret, + static krb5_error_code + user_password_decode(krb5_context ctx, const char *secret, + const unsigned char *auth, const krb5_data *in, +- unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen) ++ unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen, ++ krb5_boolean *is_fips) + { + const unsigned char *indx; + krb5_error_code retval; +@@ -204,8 +216,15 @@ user_password_decode(krb5_context ctx, const char *secret, + for (blck = 0, indx = auth; blck * BLOCKSIZE < in->length; blck++) { + memcpy(tmp.data + seclen, indx, BLOCKSIZE); + +- retval = krb5_c_make_checksum(ctx, CKSUMTYPE_RSA_MD5, NULL, 0, +- &tmp, &sum); ++ if (kr_use_fips(ctx)) { ++ /* Skip encryption here. Taint so that we won't pass it out of ++ * the machine by accident. */ ++ *is_fips = TRUE; ++ sum.contents = calloc(1, BLOCKSIZE); ++ } else { ++ retval = krb5_c_make_checksum(ctx, CKSUMTYPE_RSA_MD5, NULL, 0, ++ &tmp, &sum); ++ } + if (retval != 0) { + zap(tmp.data, tmp.length); + zap(outbuf, in->length); +@@ -248,7 +267,7 @@ krb5_error_code + kr_attr_encode(krb5_context ctx, const char *secret, + const unsigned char *auth, krad_attr type, + const krb5_data *in, unsigned char outbuf[MAX_ATTRSIZE], +- size_t *outlen) ++ size_t *outlen, krb5_boolean *is_fips) + { + krb5_error_code retval; + +@@ -265,7 +284,8 @@ kr_attr_encode(krb5_context ctx, const char *secret, + return 0; + } + +- return attributes[type - 1].encode(ctx, secret, auth, in, outbuf, outlen); ++ return attributes[type - 1].encode(ctx, secret, auth, in, outbuf, outlen, ++ is_fips); + } + + krb5_error_code +@@ -274,6 +294,7 @@ kr_attr_decode(krb5_context ctx, const char *secret, const unsigned char *auth, + unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen) + { + krb5_error_code retval; ++ krb5_boolean ignored; + + retval = kr_attr_valid(type, in); + if (retval != 0) +@@ -288,7 +309,8 @@ kr_attr_decode(krb5_context ctx, const char *secret, const unsigned char *auth, + return 0; + } + +- return attributes[type - 1].decode(ctx, secret, auth, in, outbuf, outlen); ++ return attributes[type - 1].decode(ctx, secret, auth, in, outbuf, outlen, ++ &ignored); + } + + krad_attr +diff --git a/src/lib/krad/attrset.c b/src/lib/krad/attrset.c +index 03c613716..d89982a13 100644 +--- a/src/lib/krad/attrset.c ++++ b/src/lib/krad/attrset.c +@@ -167,7 +167,8 @@ krad_attrset_copy(const krad_attrset *set, krad_attrset **copy) + krb5_error_code + kr_attrset_encode(const krad_attrset *set, const char *secret, + const unsigned char *auth, +- unsigned char outbuf[MAX_ATTRSETSIZE], size_t *outlen) ++ unsigned char outbuf[MAX_ATTRSETSIZE], size_t *outlen, ++ krb5_boolean *is_fips) + { + unsigned char buffer[MAX_ATTRSIZE]; + krb5_error_code retval; +@@ -181,7 +182,7 @@ kr_attrset_encode(const krad_attrset *set, const char *secret, + + K5_TAILQ_FOREACH(a, &set->list, list) { + retval = kr_attr_encode(set->ctx, secret, auth, a->type, &a->attr, +- buffer, &attrlen); ++ buffer, &attrlen, is_fips); + if (retval != 0) + return retval; + +diff --git a/src/lib/krad/internal.h b/src/lib/krad/internal.h +index 0143d155a..57672982f 100644 +--- a/src/lib/krad/internal.h ++++ b/src/lib/krad/internal.h +@@ -39,6 +39,8 @@ + #include + #include + ++#include ++ + #ifndef UCHAR_MAX + #define UCHAR_MAX 255 + #endif +@@ -49,6 +51,13 @@ + + typedef struct krad_remote_st krad_remote; + ++struct krad_packet_st { ++ char buffer[KRAD_PACKET_SIZE_MAX]; ++ krad_attrset *attrset; ++ krb5_data pkt; ++ krb5_boolean is_fips; ++}; ++ + /* Validate constraints of an attribute. */ + krb5_error_code + kr_attr_valid(krad_attr type, const krb5_data *data); +@@ -57,7 +66,8 @@ kr_attr_valid(krad_attr type, const krb5_data *data); + krb5_error_code + kr_attr_encode(krb5_context ctx, const char *secret, const unsigned char *auth, + krad_attr type, const krb5_data *in, +- unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen); ++ unsigned char outbuf[MAX_ATTRSIZE], size_t *outlen, ++ krb5_boolean *is_fips); + + /* Decode an attribute. */ + krb5_error_code +@@ -69,7 +79,8 @@ kr_attr_decode(krb5_context ctx, const char *secret, const unsigned char *auth, + krb5_error_code + kr_attrset_encode(const krad_attrset *set, const char *secret, + const unsigned char *auth, +- unsigned char outbuf[MAX_ATTRSETSIZE], size_t *outlen); ++ unsigned char outbuf[MAX_ATTRSETSIZE], size_t *outlen, ++ krb5_boolean *is_fips); + + /* Decode attributes from a buffer. */ + krb5_error_code +@@ -152,4 +163,17 @@ gai_error_code(int err) + } + } + ++static inline krb5_boolean ++kr_use_fips(krb5_context ctx) ++{ ++ int val = 0; ++ ++ if (!FIPS_mode()) ++ return 0; ++ ++ (void)profile_get_boolean(ctx->profile, "libdefaults", ++ "radius_md5_fips_override", NULL, 0, &val); ++ return !val; ++} ++ + #endif /* INTERNAL_H_ */ +diff --git a/src/lib/krad/packet.c b/src/lib/krad/packet.c +index c597174b6..fc2d24800 100644 +--- a/src/lib/krad/packet.c ++++ b/src/lib/krad/packet.c +@@ -53,12 +53,6 @@ typedef unsigned char uchar; + #define pkt_auth(p) ((uchar *)offset(&(p)->pkt, OFFSET_AUTH)) + #define pkt_attr(p) ((unsigned char *)offset(&(p)->pkt, OFFSET_ATTR)) + +-struct krad_packet_st { +- char buffer[KRAD_PACKET_SIZE_MAX]; +- krad_attrset *attrset; +- krb5_data pkt; +-}; +- + typedef struct { + uchar x[(UCHAR_MAX + 1) / 8]; + } idmap; +@@ -187,8 +181,14 @@ auth_generate_response(krb5_context ctx, const char *secret, + memcpy(data.data + response->pkt.length, secret, strlen(secret)); + + /* Hash it. */ +- retval = krb5_c_make_checksum(ctx, CKSUMTYPE_RSA_MD5, NULL, 0, &data, +- &hash); ++ if (kr_use_fips(ctx)) { ++ /* This checksum does very little security-wise anyway, so don't ++ * taint. */ ++ hash.contents = calloc(1, AUTH_FIELD_SIZE); ++ } else { ++ retval = krb5_c_make_checksum(ctx, CKSUMTYPE_RSA_MD5, NULL, 0, &data, ++ &hash); ++ } + free(data.data); + if (retval != 0) + return retval; +@@ -276,7 +276,7 @@ krad_packet_new_request(krb5_context ctx, const char *secret, krad_code code, + + /* Encode the attributes. */ + retval = kr_attrset_encode(set, secret, pkt_auth(pkt), pkt_attr(pkt), +- &attrset_len); ++ &attrset_len, &pkt->is_fips); + if (retval != 0) + goto error; + +@@ -314,7 +314,7 @@ krad_packet_new_response(krb5_context ctx, const char *secret, krad_code code, + + /* Encode the attributes. */ + retval = kr_attrset_encode(set, secret, pkt_auth(request), pkt_attr(pkt), +- &attrset_len); ++ &attrset_len, &pkt->is_fips); + if (retval != 0) + goto error; + +@@ -451,6 +451,8 @@ krad_packet_decode_response(krb5_context ctx, const char *secret, + const krb5_data * + krad_packet_encode(const krad_packet *pkt) + { ++ if (pkt->is_fips) ++ return NULL; + return &pkt->pkt; + } + +diff --git a/src/lib/krad/remote.c b/src/lib/krad/remote.c +index a938665f6..7b5804b1d 100644 +--- a/src/lib/krad/remote.c ++++ b/src/lib/krad/remote.c +@@ -263,7 +263,7 @@ on_io_write(krad_remote *rr) + request *r; + + K5_TAILQ_FOREACH(r, &rr->list, list) { +- tmp = krad_packet_encode(r->request); ++ tmp = &r->request->pkt; + + /* If the packet has already been sent, do nothing. */ + if (r->sent == tmp->length) +@@ -359,7 +359,7 @@ on_io_read(krad_remote *rr) + if (req != NULL) { + K5_TAILQ_FOREACH(r, &rr->list, list) { + if (r->request == req && +- r->sent == krad_packet_encode(req)->length) { ++ r->sent == req->pkt.length) { + request_finish(r, 0, rsp); + break; + } +@@ -455,6 +455,12 @@ kr_remote_send(krad_remote *rr, krad_code code, krad_attrset *attrs, + (krad_packet_iter_cb)iterator, &r, &tmp); + if (retval != 0) + goto error; ++ else if (tmp->is_fips && rr->info->ai_family != AF_LOCAL && ++ rr->info->ai_family != AF_UNIX) { ++ /* This would expose cleartext passwords, so abort. */ ++ retval = ESOCKTNOSUPPORT; ++ goto error; ++ } + + K5_TAILQ_FOREACH(r, &rr->list, list) { + if (r->request == tmp) { +diff --git a/src/lib/krad/t_attr.c b/src/lib/krad/t_attr.c +index eb2a780c8..4d285ad9d 100644 +--- a/src/lib/krad/t_attr.c ++++ b/src/lib/krad/t_attr.c +@@ -50,6 +50,7 @@ main() + const char *tmp; + krb5_data in; + size_t len; ++ krb5_boolean is_fips = FALSE; + + noerror(krb5_init_context(&ctx)); + +@@ -73,7 +74,7 @@ main() + in = string2data((char *)decoded); + retval = kr_attr_encode(ctx, secret, auth, + krad_attr_name2num("User-Password"), +- &in, outbuf, &len); ++ &in, outbuf, &len, &is_fips); + insist(retval == 0); + insist(len == sizeof(encoded)); + insist(memcmp(outbuf, encoded, len) == 0); +diff --git a/src/lib/krad/t_attrset.c b/src/lib/krad/t_attrset.c +index 7928335ca..0f9576253 100644 +--- a/src/lib/krad/t_attrset.c ++++ b/src/lib/krad/t_attrset.c +@@ -49,6 +49,7 @@ main() + krb5_context ctx; + size_t len = 0, encode_len; + krb5_data tmp; ++ krb5_boolean is_fips = FALSE; + + noerror(krb5_init_context(&ctx)); + noerror(krad_attrset_new(ctx, &set)); +@@ -62,7 +63,8 @@ main() + noerror(krad_attrset_add(set, krad_attr_name2num("User-Password"), &tmp)); + + /* Encode attrset. */ +- noerror(kr_attrset_encode(set, "foo", auth, buffer, &encode_len)); ++ noerror(kr_attrset_encode(set, "foo", auth, buffer, &encode_len, ++ &is_fips)); + krad_attrset_free(set); + + /* Manually encode User-Name. */ +diff --git a/src/plugins/preauth/spake/spake_client.c b/src/plugins/preauth/spake/spake_client.c +index 00734a13b..a3ce22b70 100644 +--- a/src/plugins/preauth/spake/spake_client.c ++++ b/src/plugins/preauth/spake/spake_client.c +@@ -38,6 +38,8 @@ + #include "groups.h" + #include + ++#include ++ + typedef struct reqstate_st { + krb5_pa_spake *msg; /* set in prep_questions, used in process */ + krb5_keyblock *initial_key; +@@ -375,6 +377,10 @@ clpreauth_spake_initvt(krb5_context context, int maj_ver, int min_ver, + + if (maj_ver != 1) + return KRB5_PLUGIN_VER_NOTSUPP; ++ ++ if (FIPS_mode()) ++ return KRB5_CRYPTO_INTERNAL; ++ + vt = (krb5_clpreauth_vtable)vtable; + vt->name = "spake"; + vt->pa_type_list = pa_types; +diff --git a/src/plugins/preauth/spake/spake_kdc.c b/src/plugins/preauth/spake/spake_kdc.c +index 88c964ce1..c7df0392f 100644 +--- a/src/plugins/preauth/spake/spake_kdc.c ++++ b/src/plugins/preauth/spake/spake_kdc.c +@@ -41,6 +41,8 @@ + + #include + ++#include ++ + /* + * The SPAKE kdcpreauth module uses a secure cookie containing the following + * concatenated fields (all integer fields are big-endian): +@@ -571,6 +573,10 @@ kdcpreauth_spake_initvt(krb5_context context, int maj_ver, int min_ver, + + if (maj_ver != 1) + return KRB5_PLUGIN_VER_NOTSUPP; ++ ++ if (FIPS_mode()) ++ return KRB5_CRYPTO_INTERNAL; ++ + vt = (krb5_kdcpreauth_vtable)vtable; + vt->name = "spake"; + vt->pa_type_list = pa_types; diff --git a/downstream-Remove-3des-support.patch b/downstream-Remove-3des-support.patch new file mode 100644 index 0000000..3d351eb --- /dev/null +++ b/downstream-Remove-3des-support.patch @@ -0,0 +1,6397 @@ +From defa8816e26ab9f5a8f0b61e7bebad67175c433e Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Tue, 26 Mar 2019 18:51:10 -0400 +Subject: [PATCH] [downstream] Remove 3des support + +Completely remove support for all DES3 enctypes (des3-cbc-raw, +des3-hmac-sha1, des3-cbc-sha1-kd). Update all tests and documentation +to user other enctypes. Mark the 3DES enctypes UNSUPPORTED and retain +their constants. + +Last-updated: 1.19-beta1 +[antorres@redhat.com: remove diffs for: + - src/kdamin/testing/proto/kdc.conf.proto + - src/lib/kadm5/unit-test/api.current/chpass-principal-v2.exp + - src/lib/kadm5/unit-test/api.current/get-principal-v2.exp + - src/lib/kadm5/unit-test/api.current/randkey-principal-v2.exp + since they were removed by Remove-TCL-based-libkadm5-API-tests.patch] +--- + doc/admin/advanced/retiring-des.rst | 11 + + doc/admin/conf_files/kdc_conf.rst | 7 +- + doc/admin/enctypes.rst | 10 +- + doc/admin/troubleshoot.rst | 9 +- + doc/appdev/refs/macros/index.rst | 1 - + doc/conf.py | 2 +- + doc/mitK5features.rst | 2 +- + src/Makefile.in | 4 +- + src/configure.ac | 1 - + src/include/krb5/krb5.hin | 10 +- + src/kadmin/testing/proto/kdc.conf.proto | 4 +- + src/kdc/kdc_util.c | 4 - + src/lib/crypto/Makefile.in | 8 +- + src/lib/crypto/builtin/Makefile.in | 6 +- + src/lib/crypto/builtin/des/ISSUES | 13 - + src/lib/crypto/builtin/des/Makefile.in | 80 ---- + src/lib/crypto/builtin/des/d3_aead.c | 133 ------ + src/lib/crypto/builtin/des/d3_kysched.c | 51 --- + src/lib/crypto/builtin/des/deps | 150 ------- + src/lib/crypto/builtin/des/des_int.h | 285 ------------- + src/lib/crypto/builtin/des/des_keys.c | 40 -- + src/lib/crypto/builtin/des/destest.c | 240 ----------- + src/lib/crypto/builtin/des/doc/libdes.doc | 208 --------- + src/lib/crypto/builtin/des/f_aead.c | 173 -------- + src/lib/crypto/builtin/des/f_cbc.c | 256 ------------ + src/lib/crypto/builtin/des/f_cksum.c | 136 ------ + src/lib/crypto/builtin/des/f_parity.c | 56 --- + src/lib/crypto/builtin/des/f_sched.c | 359 ---------------- + src/lib/crypto/builtin/des/f_tables.c | 370 ---------------- + src/lib/crypto/builtin/des/f_tables.h | 285 ------------- + src/lib/crypto/builtin/des/key_sched.c | 62 --- + src/lib/crypto/builtin/des/keytest.data | 171 -------- + src/lib/crypto/builtin/des/t_verify.c | 395 ------------------ + src/lib/crypto/builtin/des/weak_key.c | 86 ---- + .../crypto/builtin/enc_provider/Makefile.in | 6 +- + src/lib/crypto/builtin/enc_provider/deps | 13 - + src/lib/crypto/builtin/enc_provider/des3.c | 105 ----- + src/lib/crypto/crypto_tests/t_cf2.expected | 1 - + src/lib/crypto/crypto_tests/t_cf2.in | 5 - + src/lib/crypto/crypto_tests/t_cksums.c | 10 - + src/lib/crypto/crypto_tests/t_decrypt.c | 57 --- + src/lib/crypto/crypto_tests/t_derive.c | 36 -- + src/lib/crypto/crypto_tests/t_encrypt.c | 1 - + src/lib/crypto/crypto_tests/t_short.c | 1 - + src/lib/crypto/crypto_tests/t_str2key.c | 52 --- + src/lib/crypto/krb/Makefile.in | 3 - + src/lib/crypto/krb/cksumtypes.c | 6 - + src/lib/crypto/krb/crypto_int.h | 16 - + src/lib/crypto/krb/default_state.c | 10 - + src/lib/crypto/krb/enctype_util.c | 3 + + src/lib/crypto/krb/etypes.c | 21 - + src/lib/crypto/krb/prf_des.c | 47 --- + src/lib/crypto/krb/random_to_key.c | 45 -- + src/lib/crypto/libk5crypto.exports | 1 - + src/lib/crypto/openssl/Makefile.in | 8 +- + src/lib/crypto/openssl/des/Makefile.in | 20 - + src/lib/crypto/openssl/des/deps | 15 - + src/lib/crypto/openssl/des/des_keys.c | 40 -- + .../crypto/openssl/enc_provider/Makefile.in | 3 - + src/lib/crypto/openssl/enc_provider/deps | 11 - + src/lib/crypto/openssl/enc_provider/des3.c | 184 -------- + src/lib/gssapi/krb5/accept_sec_context.c | 1 - + src/lib/gssapi/krb5/gssapiP_krb5.h | 6 +- + src/lib/gssapi/krb5/k5seal.c | 35 +- + src/lib/gssapi/krb5/k5sealiov.c | 27 +- + src/lib/gssapi/krb5/k5unseal.c | 102 ++--- + src/lib/gssapi/krb5/k5unsealiov.c | 38 +- + src/lib/gssapi/krb5/util_crypt.c | 11 - + .../api.current/chpass-principal-v2.exp | 4 +- + .../api.current/get-principal-v2.exp | 4 +- + .../api.current/randkey-principal-v2.exp | 4 +- + src/lib/krb5/krb/init_ctx.c | 3 - + src/lib/krb5/krb/s4u_creds.c | 2 - + src/lib/krb5/krb/t_etypes.c | 48 +-- + src/lib/krb5/os/t_trace.c | 4 +- + src/lib/krb5/os/t_trace.ref | 2 +- + src/plugins/preauth/pkinit/pkcs11.h | 6 +- + src/plugins/preauth/pkinit/pkinit_clnt.c | 8 - + src/plugins/preauth/pkinit/pkinit_crypto.h | 12 - + .../preauth/pkinit/pkinit_crypto_openssl.c | 38 -- + src/plugins/preauth/pkinit/pkinit_kdf_test.c | 31 -- + src/plugins/preauth/spake/t_vectors.c | 25 -- + src/tests/dejagnu/config/default.exp | 78 ---- + src/tests/dejagnu/krb-standalone/kprop.exp | 2 +- + src/tests/gssapi/t_enctypes.py | 33 +- + src/tests/gssapi/t_invalid.c | 12 - + src/tests/gssapi/t_pcontok.c | 16 +- + src/tests/gssapi/t_prf.c | 7 - + src/tests/t_authdata.py | 2 +- + src/tests/t_etype_info.py | 18 +- + src/tests/t_keyrollover.py | 8 +- + src/tests/t_mkey.py | 35 -- + src/tests/t_salt.py | 5 +- + src/util/k5test.py | 7 - + .../leash/htmlhelp/html/Encryption_Types.htm | 13 - + 95 files changed, 160 insertions(+), 4835 deletions(-) + delete mode 100644 src/lib/crypto/builtin/des/ISSUES + delete mode 100644 src/lib/crypto/builtin/des/Makefile.in + delete mode 100644 src/lib/crypto/builtin/des/d3_aead.c + delete mode 100644 src/lib/crypto/builtin/des/d3_kysched.c + delete mode 100644 src/lib/crypto/builtin/des/deps + delete mode 100644 src/lib/crypto/builtin/des/des_int.h + delete mode 100644 src/lib/crypto/builtin/des/des_keys.c + delete mode 100644 src/lib/crypto/builtin/des/destest.c + delete mode 100644 src/lib/crypto/builtin/des/doc/libdes.doc + delete mode 100644 src/lib/crypto/builtin/des/f_aead.c + delete mode 100644 src/lib/crypto/builtin/des/f_cbc.c + delete mode 100644 src/lib/crypto/builtin/des/f_cksum.c + delete mode 100644 src/lib/crypto/builtin/des/f_parity.c + delete mode 100644 src/lib/crypto/builtin/des/f_sched.c + delete mode 100644 src/lib/crypto/builtin/des/f_tables.c + delete mode 100644 src/lib/crypto/builtin/des/f_tables.h + delete mode 100644 src/lib/crypto/builtin/des/key_sched.c + delete mode 100644 src/lib/crypto/builtin/des/keytest.data + delete mode 100644 src/lib/crypto/builtin/des/t_verify.c + delete mode 100644 src/lib/crypto/builtin/des/weak_key.c + delete mode 100644 src/lib/crypto/builtin/enc_provider/des3.c + delete mode 100644 src/lib/crypto/krb/prf_des.c + delete mode 100644 src/lib/crypto/openssl/des/Makefile.in + delete mode 100644 src/lib/crypto/openssl/des/deps + delete mode 100644 src/lib/crypto/openssl/des/des_keys.c + delete mode 100644 src/lib/crypto/openssl/enc_provider/des3.c + +diff --git a/doc/admin/advanced/retiring-des.rst b/doc/admin/advanced/retiring-des.rst +index 38f76d3f4..d5e3c30c0 100644 +--- a/doc/admin/advanced/retiring-des.rst ++++ b/doc/admin/advanced/retiring-des.rst +@@ -10,6 +10,13 @@ ability have rendered DES vulnerable to brute force attacks on its 56-bit + keyspace. As such, it is now considered insecure and should not be + used (:rfc:`6649`). + ++In 1999, MIT krb5 added support for Triple-DES (3DES) encryption types. ++However, due to weakenings of DES and other security concerns, it is now also ++considered insecure and should not be used (:rfc:`8429`). AES encryption ++types were added to MIT in 2003, meaning that the number of deployments with ++3DES as the strongest encryption type is hopefully small. The rotation ++procedure described herein works for both DES and 3DES. ++ + History + ------- + +@@ -27,6 +34,10 @@ and removed DES (single-DES) support in release 1.18. As a + consequence, a release prior to 1.18 is required to perform these + migrations. + ++3DES (a flagged deprecated encryption type) was also removed downstream by ++rharwood@redhat.com starting in 1.18; likewise, a pre-1.18 release is required ++to perform these migrations. ++ + Types of keys + ------------- + +diff --git a/doc/admin/conf_files/kdc_conf.rst b/doc/admin/conf_files/kdc_conf.rst +index 1dc958d62..3a72aabef 100644 +--- a/doc/admin/conf_files/kdc_conf.rst ++++ b/doc/admin/conf_files/kdc_conf.rst +@@ -848,8 +848,6 @@ Encryption types marked as "weak" and "deprecated" are available for + compatibility but not recommended for use. + + ==================================================== ========================================================= +-des3-cbc-raw Triple DES cbc mode raw (weak) +-des3-cbc-sha1 des3-hmac-sha1 des3-cbc-sha1-kd Triple DES cbc mode with HMAC/sha1 (deprecated) + aes256-cts-hmac-sha1-96 aes256-cts aes256-sha1 AES-256 CTS mode with 96-bit SHA-1 HMAC + aes128-cts-hmac-sha1-96 aes128-cts aes128-sha1 AES-128 CTS mode with 96-bit SHA-1 HMAC + aes256-cts-hmac-sha384-192 aes256-sha2 AES-256 CTS mode with 192-bit SHA-384 HMAC +@@ -858,7 +856,6 @@ arcfour-hmac rc4-hmac arcfour-hmac-md5 RC4 with HMAC/MD5 (deprecat + arcfour-hmac-exp rc4-hmac-exp arcfour-hmac-md5-exp Exportable RC4 with HMAC/MD5 (weak) + camellia256-cts-cmac camellia256-cts Camellia-256 CTS mode with CMAC + camellia128-cts-cmac camellia128-cts Camellia-128 CTS mode with CMAC +-des3 The triple DES family: des3-cbc-sha1 + aes The AES family: aes256-cts-hmac-sha1-96, aes128-cts-hmac-sha1-96, aes256-cts-hmac-sha384-192, and aes128-cts-hmac-sha256-128 + rc4 The RC4 family: arcfour-hmac + camellia The Camellia family: camellia256-cts-cmac and camellia128-cts-cmac +@@ -870,8 +867,8 @@ from the current list by prefixing them with a minus sign ("-"). + Types or families can be prefixed with a plus sign ("+") for symmetry; + it has the same meaning as just listing the type or family. For + example, "``DEFAULT -rc4``" would be the default set of encryption +-types with RC4 types removed, and "``des3 DEFAULT``" would be the +-default set of encryption types with triple DES types moved to the ++types with RC4 types removed, and "``aes128-sha2 DEFAULT``" would be ++the default set of encryption types with aes128-sha2 moved to the + front. + + While **aes128-cts** and **aes256-cts** are supported for all Kerberos +diff --git a/doc/admin/enctypes.rst b/doc/admin/enctypes.rst +index 694922c0d..c4d5499d3 100644 +--- a/doc/admin/enctypes.rst ++++ b/doc/admin/enctypes.rst +@@ -129,7 +129,7 @@ enctype weak? krb5 Windows + des-cbc-crc weak <1.18 >=2000 + des-cbc-md4 weak <1.18 ? + des-cbc-md5 weak <1.18 >=2000 +-des3-cbc-sha1 deprecated >=1.1 none ++des3-cbc-sha1 deprecated <1.18 none + arcfour-hmac deprecated >=1.3 >=2000 + arcfour-hmac-exp weak >=1.3 >=2000 + aes128-cts-hmac-sha1-96 >=1.3 >=Vista +@@ -148,9 +148,11 @@ default. + krb5 releases 1.17 and later flag deprecated encryption types + (including ``des3-cbc-sha1`` and ``arcfour-hmac``) in KDC logs and + kadmin output. krb5 release 1.19 issues a warning during initial +-authentication if ``des3-cbc-sha1`` is used. Future releases will +-disable ``des3-cbc-sha1`` by default and eventually remove support for +-it. ++authentication if ``des3-cbc-sha1`` is used. ++ ++krb5 releases 1.18 and later remove single-DES and 3DES ++(downstream-only patch) enctype support. Microsoft Windows never ++supported 3DES. + + + Migrating away from older encryption types +diff --git a/doc/admin/troubleshoot.rst b/doc/admin/troubleshoot.rst +index ade5e1f87..e4dc54f7e 100644 +--- a/doc/admin/troubleshoot.rst ++++ b/doc/admin/troubleshoot.rst +@@ -73,11 +73,10 @@ credential verification failed: KDC has no support for encryption type + ...................................................................... + + This most commonly happens when trying to use a principal with only +-DES keys, in a release (MIT krb5 1.7 or later) which disables DES by +-default. DES encryption is considered weak due to its inadequate key +-size. If you cannot migrate away from its use, you can re-enable DES +-by adding ``allow_weak_crypto = true`` to the :ref:`libdefaults` +-section of :ref:`krb5.conf(5)`. ++DES/3DES keys, in a release (MIT krb5 1.7 or later) which disables DES ++by default. DES encryption is considered weak due to its inadequate ++key size and has been removed upstream; 3DES is not recommended, and ++has been removed downstream by rharwood@redhat.com. + + + .. _err_cert_chain_cert_expired: +diff --git a/doc/appdev/refs/macros/index.rst b/doc/appdev/refs/macros/index.rst +index 5542d9850..0cb2e81bd 100644 +--- a/doc/appdev/refs/macros/index.rst ++++ b/doc/appdev/refs/macros/index.rst +@@ -36,7 +36,6 @@ Public + CKSUMTYPE_HMAC_SHA1_96_AES256.rst + CKSUMTYPE_HMAC_SHA256_128_AES128.rst + CKSUMTYPE_HMAC_SHA384_192_AES256.rst +- CKSUMTYPE_HMAC_SHA1_DES3.rst + CKSUMTYPE_MD5_HMAC_ARCFOUR.rst + CKSUMTYPE_NIST_SHA.rst + CKSUMTYPE_RSA_MD4.rst +diff --git a/doc/conf.py b/doc/conf.py +index 14158ae81..a876fd633 100644 +--- a/doc/conf.py ++++ b/doc/conf.py +@@ -278,7 +278,7 @@ else: + rst_epilog += ''' + .. |krb5conf| replace:: ``/etc/krb5.conf`` + .. |defkeysalts| replace:: ``aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal`` +-.. |defetypes| replace:: ``aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 aes128-cts-hmac-sha256-128 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac`` ++.. |defetypes| replace:: ``aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 aes128-cts-hmac-sha256-128 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac`` + .. |defmkey| replace:: ``aes256-cts-hmac-sha1-96`` + .. |copy| unicode:: U+000A9 + ''' +diff --git a/doc/mitK5features.rst b/doc/mitK5features.rst +index 4954bb3aa..92ce2a772 100644 +--- a/doc/mitK5features.rst ++++ b/doc/mitK5features.rst +@@ -37,7 +37,7 @@ Database backends: LDAP, DB2, LMDB + + krb4 support: Kerberos 5 release < 1.8 + +-DES support: Kerberos 5 release < 1.18 (See :ref:`retiring-des`) ++DES/3DES support: Kerberos 5 release < 1.18 (See :ref:`retiring-des`) + + Interoperability + ---------------- +diff --git a/src/Makefile.in b/src/Makefile.in +index 7d2507ef8..c16715ac7 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -130,7 +130,7 @@ WINMAKEFILES=Makefile \ + lib\Makefile lib\crypto\Makefile lib\crypto\krb\Makefile \ + lib\crypto\builtin\Makefile lib\crypto\builtin\aes\Makefile \ + lib\crypto\builtin\enc_provider\Makefile \ +- lib\crypto\builtin\des\Makefile lib\crypto\builtin\md5\Makefile \ ++ lib\crypto\builtin\md5\Makefile \ + lib\crypto\builtin\camellia\Makefile lib\crypto\builtin\md4\Makefile \ + lib\crypto\builtin\hash_provider\Makefile \ + lib\crypto\builtin\sha2\Makefile lib\crypto\builtin\sha1\Makefile \ +@@ -202,8 +202,6 @@ WINMAKEFILES=Makefile \ + ##DOS## $(WCONFIG) config < $@.in > $@ + ##DOS##lib\crypto\builtin\enc_provider\Makefile: lib\crypto\builtin\enc_provider\Makefile.in $(MKFDEP) + ##DOS## $(WCONFIG) config < $@.in > $@ +-##DOS##lib\crypto\builtin\des\Makefile: lib\crypto\builtin\des\Makefile.in $(MKFDEP) +-##DOS## $(WCONFIG) config < $@.in > $@ + ##DOS##lib\crypto\builtin\md5\Makefile: lib\crypto\builtin\md5\Makefile.in $(MKFDEP) + ##DOS## $(WCONFIG) config < $@.in > $@ + ##DOS##lib\crypto\builtin\camellia\Makefile: lib\crypto\builtin\camellia\Makefile.in $(MKFDEP) +diff --git a/src/configure.ac b/src/configure.ac +index dd2cad3ee..3e1052db7 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -1480,7 +1480,6 @@ V5_AC_OUTPUT_MAKEFILE(. + lib/crypto lib/crypto/krb lib/crypto/$CRYPTO_IMPL + lib/crypto/$CRYPTO_IMPL/enc_provider + lib/crypto/$CRYPTO_IMPL/hash_provider +- lib/crypto/$CRYPTO_IMPL/des + lib/crypto/$CRYPTO_IMPL/md4 lib/crypto/$CRYPTO_IMPL/md5 + lib/crypto/$CRYPTO_IMPL/sha1 lib/crypto/$CRYPTO_IMPL/sha2 + lib/crypto/$CRYPTO_IMPL/aes lib/crypto/$CRYPTO_IMPL/camellia +diff --git a/src/include/krb5/krb5.hin b/src/include/krb5/krb5.hin +index db80063eb..63e67a2ba 100644 +--- a/src/include/krb5/krb5.hin ++++ b/src/include/krb5/krb5.hin +@@ -426,8 +426,8 @@ typedef struct _krb5_crypto_iov { + #define ENCTYPE_DES_CBC_MD4 0x0002 /**< @deprecated no longer supported */ + #define ENCTYPE_DES_CBC_MD5 0x0003 /**< @deprecated no longer supported */ + #define ENCTYPE_DES_CBC_RAW 0x0004 /**< @deprecated no longer supported */ +-#define ENCTYPE_DES3_CBC_SHA 0x0005 /**< @deprecated DES-3 cbc with SHA1 */ +-#define ENCTYPE_DES3_CBC_RAW 0x0006 /**< @deprecated DES-3 cbc mode raw */ ++#define ENCTYPE_DES3_CBC_SHA 0x0005 /**< @deprecated no longer supported */ ++#define ENCTYPE_DES3_CBC_RAW 0x0006 /**< @deprecated no longer supported */ + #define ENCTYPE_DES_HMAC_SHA1 0x0008 /**< @deprecated no longer supported */ + /* PKINIT */ + #define ENCTYPE_DSA_SHA1_CMS 0x0009 /**< DSA with SHA1, CMS signature */ +@@ -436,9 +436,9 @@ typedef struct _krb5_crypto_iov { + #define ENCTYPE_RC2_CBC_ENV 0x000c /**< RC2 cbc mode, CMS enveloped data */ + #define ENCTYPE_RSA_ENV 0x000d /**< RSA encryption, CMS enveloped data */ + #define ENCTYPE_RSA_ES_OAEP_ENV 0x000e /**< RSA w/OEAP encryption, CMS enveloped data */ +-#define ENCTYPE_DES3_CBC_ENV 0x000f /**< DES-3 cbc mode, CMS enveloped data */ ++#define ENCTYPE_DES3_CBC_ENV 0x000f /**< @deprecated no longer supported */ + +-#define ENCTYPE_DES3_CBC_SHA1 0x0010 ++#define ENCTYPE_DES3_CBC_SHA1 0x0010 /**< @deprecated removed */ + #define ENCTYPE_AES128_CTS_HMAC_SHA1_96 0x0011 /**< RFC 3962 */ + #define ENCTYPE_AES256_CTS_HMAC_SHA1_96 0x0012 /**< RFC 3962 */ + #define ENCTYPE_AES128_CTS_HMAC_SHA256_128 0x0013 /**< RFC 8009 */ +@@ -458,7 +458,7 @@ typedef struct _krb5_crypto_iov { + #define CKSUMTYPE_RSA_MD5 0x0007 + #define CKSUMTYPE_RSA_MD5_DES 0x0008 + #define CKSUMTYPE_NIST_SHA 0x0009 +-#define CKSUMTYPE_HMAC_SHA1_DES3 0x000c ++#define CKSUMTYPE_HMAC_SHA1_DES3 0x000c /* @deprecated removed */ + #define CKSUMTYPE_HMAC_SHA1_96_AES128 0x000f /**< RFC 3962. Used with + ENCTYPE_AES128_CTS_HMAC_SHA1_96 */ + #define CKSUMTYPE_HMAC_SHA1_96_AES256 0x0010 /**< RFC 3962. Used with +diff --git a/src/kdc/kdc_util.c b/src/kdc/kdc_util.c +index 60f30c4f4..c65375aef 100644 +--- a/src/kdc/kdc_util.c ++++ b/src/kdc/kdc_util.c +@@ -1017,8 +1017,6 @@ enctype_name(krb5_enctype ktype, char *buf, size_t buflen) + name = "rsaEncryption-EnvOID"; + else if (ktype == ENCTYPE_RSA_ES_OAEP_ENV) + name = "id-RSAES-OAEP-EnvOID"; +- else if (ktype == ENCTYPE_DES3_CBC_ENV) +- name = "des-ede3-cbc-EnvOID"; + else + return krb5_enctype_to_name(ktype, FALSE, buf, buflen); + +@@ -1605,8 +1603,6 @@ krb5_boolean + enctype_requires_etype_info_2(krb5_enctype enctype) + { + switch(enctype) { +- case ENCTYPE_DES3_CBC_SHA1: +- case ENCTYPE_DES3_CBC_RAW: + case ENCTYPE_ARCFOUR_HMAC: + case ENCTYPE_ARCFOUR_HMAC_EXP : + return 0; +diff --git a/src/lib/crypto/Makefile.in b/src/lib/crypto/Makefile.in +index c3fcfd7e8..890d54adf 100644 +--- a/src/lib/crypto/Makefile.in ++++ b/src/lib/crypto/Makefile.in +@@ -13,7 +13,7 @@ STOBJLISTS=$(CRYPTO_IMPL)/enc_provider/OBJS.ST \ + $(CRYPTO_IMPL)/hash_provider/OBJS.ST \ + $(CRYPTO_IMPL)/md4/OBJS.ST $(CRYPTO_IMPL)/md5/OBJS.ST \ + $(CRYPTO_IMPL)/sha1/OBJS.ST $(CRYPTO_IMPL)/sha2/OBJS.ST \ +- $(CRYPTO_IMPL)/aes/OBJS.ST $(CRYPTO_IMPL)/des/OBJS.ST \ ++ $(CRYPTO_IMPL)/aes/OBJS.ST \ + $(CRYPTO_IMPL)/camellia/OBJS.ST krb/OBJS.ST \ + $(CRYPTO_IMPL)/OBJS.ST + +@@ -21,7 +21,7 @@ SUBDIROBJLISTS=$(CRYPTO_IMPL)/enc_provider/OBJS.ST \ + $(CRYPTO_IMPL)/hash_provider/OBJS.ST \ + $(CRYPTO_IMPL)/md4/OBJS.ST $(CRYPTO_IMPL)/md5/OBJS.ST \ + $(CRYPTO_IMPL)/sha1/OBJS.ST $(CRYPTO_IMPL)/sha2/OBJS.ST \ +- $(CRYPTO_IMPL)/aes/OBJS.ST $(CRYPTO_IMPL)/des/OBJS.ST \ ++ $(CRYPTO_IMPL)/aes/OBJS.ST \ + $(CRYPTO_IMPL)/camellia/OBJS.ST krb/OBJS.ST \ + $(CRYPTO_IMPL)/OBJS.ST + +@@ -34,8 +34,8 @@ SHLIB_EXPDEPLIBS= $(SUPPORT_DEPLIB) + SHLIB_LDFLAGS= $(LDFLAGS) @SHLIB_RPATH_DIRS@ + + ##DOS##LIBNAME=$(OUTPRE)crypto.lib +-##DOS##OBJFILEDEP=$(OUTPRE)krb.lst $(OUTPRE)aes.lst $(OUTPRE)enc_provider.lst $(OUTPRE)des.lst $(OUTPRE)md5.lst $(OUTPRE)camellia.lst $(OUTPRE)md4.lst $(OUTPRE)hash_provider.lst $(OUTPRE)sha2.lst $(OUTPRE)sha1.lst $(OUTPRE)builtin.lst +-##DOS##OBJFILELIST=@$(OUTPRE)krb.lst @$(OUTPRE)aes.lst @$(OUTPRE)enc_provider.lst @$(OUTPRE)des.lst @$(OUTPRE)md5.lst @$(OUTPRE)camellia.lst @$(OUTPRE)md4.lst @$(OUTPRE)hash_provider.lst @$(OUTPRE)sha2.lst @$(OUTPRE)sha1.lst @$(OUTPRE)builtin.lst ++##DOS##OBJFILEDEP=$(OUTPRE)krb.lst $(OUTPRE)aes.lst $(OUTPRE)enc_provider.lst $(OUTPRE)md5.lst $(OUTPRE)camellia.lst $(OUTPRE)md4.lst $(OUTPRE)hash_provider.lst $(OUTPRE)sha2.lst $(OUTPRE)sha1.lst $(OUTPRE)builtin.lst ++##DOS##OBJFILELIST=@$(OUTPRE)krb.lst @$(OUTPRE)aes.lst @$(OUTPRE)enc_provider.lst @$(OUTPRE)md5.lst @$(OUTPRE)camellia.lst @$(OUTPRE)md4.lst @$(OUTPRE)hash_provider.lst @$(OUTPRE)sha2.lst @$(OUTPRE)sha1.lst @$(OUTPRE)builtin.lst + + all-unix: all-liblinks + install-unix: install-libs +diff --git a/src/lib/crypto/builtin/Makefile.in b/src/lib/crypto/builtin/Makefile.in +index baf5d974f..82adf1dec 100644 +--- a/src/lib/crypto/builtin/Makefile.in ++++ b/src/lib/crypto/builtin/Makefile.in +@@ -1,6 +1,6 @@ + mydir=lib$(S)crypto$(S)builtin + BUILDTOP=$(REL)..$(S)..$(S).. +-SUBDIRS=camellia des aes md4 md5 sha1 sha2 enc_provider hash_provider ++SUBDIRS=camellia aes md4 md5 sha1 sha2 enc_provider hash_provider + LOCALINCLUDES = -I$(srcdir)/../krb -I$(srcdir) + + ##DOS##BUILDTOP = ..\..\.. +@@ -22,7 +22,7 @@ SRCS=\ + $(srcdir)/init.c \ + $(srcdir)/pbkdf2.c + +-STOBJLISTS= des/OBJS.ST md4/OBJS.ST \ ++STOBJLISTS= md4/OBJS.ST \ + md5/OBJS.ST sha1/OBJS.ST sha2/OBJS.ST \ + enc_provider/OBJS.ST \ + hash_provider/OBJS.ST \ +@@ -30,7 +30,7 @@ STOBJLISTS= des/OBJS.ST md4/OBJS.ST \ + camellia/OBJS.ST \ + OBJS.ST + +-SUBDIROBJLISTS= des/OBJS.ST md4/OBJS.ST \ ++SUBDIROBJLISTS= md4/OBJS.ST \ + md5/OBJS.ST sha1/OBJS.ST sha2/OBJS.ST \ + enc_provider/OBJS.ST \ + hash_provider/OBJS.ST \ +diff --git a/src/lib/crypto/builtin/des/ISSUES b/src/lib/crypto/builtin/des/ISSUES +deleted file mode 100644 +index 157891103..000000000 +--- a/src/lib/crypto/builtin/des/ISSUES ++++ /dev/null +@@ -1,13 +0,0 @@ +-Issues to be addressed for src/lib/crypto/des: -*- text -*- +- +- +-"const" could be used in more places +- +- +-Array types are used in calling interfaces. Under ANSI C, a value of +-type "arraytype *" cannot be assigned to a variable of type "const +-arraytype *", so we get compilation warnings. +- +-Possible fix: Rewrite internal interfaces to not use arrays this way. +-Provide external routines compatible with old API, but not using +-const? +diff --git a/src/lib/crypto/builtin/des/Makefile.in b/src/lib/crypto/builtin/des/Makefile.in +deleted file mode 100644 +index 54b329d0f..000000000 +--- a/src/lib/crypto/builtin/des/Makefile.in ++++ /dev/null +@@ -1,80 +0,0 @@ +-mydir=lib$(S)crypto$(S)builtin$(S)des +-BUILDTOP=$(REL)..$(S)..$(S)..$(S).. +-LOCALINCLUDES = -I$(srcdir)/.. -I$(srcdir)/../../krb +- +-##DOS##BUILDTOP = ..\..\..\.. +-##DOS##PREFIXDIR = builtin\des +-##DOS##OBJFILE = ..\..\$(OUTPRE)des.lst +- +-STLIBOBJS=\ +- d3_aead.o \ +- d3_kysched.o \ +- des_keys.o \ +- f_aead.o \ +- f_cksum.o \ +- f_parity.o \ +- f_sched.o \ +- f_tables.o \ +- key_sched.o \ +- weak_key.o +- +-OBJS= $(OUTPRE)d3_aead.$(OBJEXT) \ +- $(OUTPRE)d3_kysched.$(OBJEXT) \ +- $(OUTPRE)des_keys.$(OBJEXT) \ +- $(OUTPRE)f_aead.$(OBJEXT) \ +- $(OUTPRE)f_cksum.$(OBJEXT) \ +- $(OUTPRE)f_parity.$(OBJEXT) \ +- $(OUTPRE)f_sched.$(OBJEXT) \ +- $(OUTPRE)f_tables.$(OBJEXT) \ +- $(OUTPRE)key_sched.$(OBJEXT) \ +- $(OUTPRE)weak_key.$(OBJEXT) +- +-SRCS= $(srcdir)/d3_aead.c \ +- $(srcdir)/d3_kysched.c \ +- $(srcdir)/des_keys.c \ +- $(srcdir)/f_aead.c \ +- $(srcdir)/f_cksum.c \ +- $(srcdir)/f_parity.c \ +- $(srcdir)/f_sched.c \ +- $(srcdir)/f_tables.c \ +- $(srcdir)/key_sched.c \ +- $(srcdir)/weak_key.c +- +-EXTRADEPSRCS = $(srcdir)/destest.c $(srcdir)/f_cbc.c $(srcdir)/t_verify.c +- +-##DOS##LIBOBJS = $(OBJS) +- +-TOBJS = $(OUTPRE)key_sched.$(OBJEXT) $(OUTPRE)f_sched.$(OBJEXT) \ +- $(OUTPRE)f_cbc.$(OBJEXT) $(OUTPRE)f_tables.$(OBJEXT) \ +- $(OUTPRE)f_cksum.$(OBJEXT) +- +-verify$(EXEEXT): t_verify.$(OBJEXT) $(TOBJS) f_parity.$(OBJEXT) \ +- $(COM_ERR_DEPLIB) $(SUPPORT_DEPLIB) +- $(CC_LINK) -o $@ t_verify.$(OBJEXT) $(TOBJS) f_parity.$(OBJEXT) \ +- $(COM_ERR_LIB) $(SUPPORT_LIB) +- +-destest$(EXEEXT): destest.$(OBJEXT) $(TOBJS) $(SUPPORT_DEPLIB) +- $(CC_LINK) -o $@ destest.$(OBJEXT) $(TOBJS) $(SUPPORT_LIB) +- +-all-unix: all-libobjs +- +-check-unix: verify destest +- $(RUN_TEST) ./verify -z +- $(RUN_TEST) ./verify -m +- $(RUN_TEST) ./verify +- $(RUN_TEST) ./destest < $(srcdir)/keytest.data +- +-includes: depend +- +-depend: $(SRCS) +- +-check-windows: +- +-clean: +- $(RM) destest.$(OBJEXT) destest$(EXEEXT) verify$(EXEEXT) \ +- t_verify.$(OBJEXT) $(TOBJS) +- +-clean-unix:: clean-libobjs +- +-@libobj_frag@ +- +diff --git a/src/lib/crypto/builtin/des/d3_aead.c b/src/lib/crypto/builtin/des/d3_aead.c +deleted file mode 100644 +index bddf75a47..000000000 +--- a/src/lib/crypto/builtin/des/d3_aead.c ++++ /dev/null +@@ -1,133 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* +- * Copyright (C) 2008 by the Massachusetts Institute of Technology. +- * Copyright 1995 by Richard P. Basch. All Rights Reserved. +- * Copyright 1995 by Lehman Brothers, Inc. All Rights Reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of Richard P. Basch, Lehman Brothers and M.I.T. not be used +- * in advertising or publicity pertaining to distribution of the software +- * without specific, written prior permission. Richard P. Basch, +- * Lehman Brothers and M.I.T. make no representations about the suitability +- * of this software for any purpose. It is provided "as is" without +- * express or implied warranty. +- */ +- +-#include "crypto_int.h" +-#include "des_int.h" +-#include "f_tables.h" +- +-void +-krb5int_des3_cbc_encrypt(krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule ks1, +- const mit_des_key_schedule ks2, +- const mit_des_key_schedule ks3, +- mit_des_cblock ivec) +-{ +- unsigned DES_INT32 left, right; +- const unsigned DES_INT32 *kp1, *kp2, *kp3; +- const unsigned char *ip; +- struct iov_cursor cursor; +- unsigned char block[MIT_DES_BLOCK_LENGTH]; +- +- /* Get key pointers here. These won't need to be reinitialized. */ +- kp1 = (const unsigned DES_INT32 *)ks1; +- kp2 = (const unsigned DES_INT32 *)ks2; +- kp3 = (const unsigned DES_INT32 *)ks3; +- +- /* Initialize left and right with the contents of the initial vector. */ +- ip = (ivec != NULL) ? ivec : mit_des_zeroblock; +- left = load_32_be(ip); +- right = load_32_be(ip + 4); +- +- k5_iov_cursor_init(&cursor, data, num_data, MIT_DES_BLOCK_LENGTH, FALSE); +- while (k5_iov_cursor_get(&cursor, block)) { +- /* xor this block with the previous ciphertext. */ +- left ^= load_32_be(block); +- right ^= load_32_be(block + 4); +- +- /* Encrypt what we have and store it back into block. */ +- DES_DO_ENCRYPT(left, right, kp1); +- DES_DO_DECRYPT(left, right, kp2); +- DES_DO_ENCRYPT(left, right, kp3); +- store_32_be(left, block); +- store_32_be(right, block + 4); +- +- k5_iov_cursor_put(&cursor, block); +- } +- +- if (ivec != NULL) { +- store_32_be(left, ivec); +- store_32_be(right, ivec + 4); +- } +-} +- +-void +-krb5int_des3_cbc_decrypt(krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule ks1, +- const mit_des_key_schedule ks2, +- const mit_des_key_schedule ks3, +- mit_des_cblock ivec) +-{ +- unsigned DES_INT32 left, right; +- const unsigned DES_INT32 *kp1, *kp2, *kp3; +- const unsigned char *ip; +- unsigned DES_INT32 ocipherl, ocipherr; +- unsigned DES_INT32 cipherl, cipherr; +- struct iov_cursor cursor; +- unsigned char block[MIT_DES_BLOCK_LENGTH]; +- +- /* Get key pointers here. These won't need to be reinitialized. */ +- kp1 = (const unsigned DES_INT32 *)ks1; +- kp2 = (const unsigned DES_INT32 *)ks2; +- kp3 = (const unsigned DES_INT32 *)ks3; +- +- /* +- * Decrypting is harder than encrypting because of +- * the necessity of remembering a lot more things. +- * Should think about this a little more... +- */ +- +- /* Prime the old cipher with ivec.*/ +- ip = (ivec != NULL) ? ivec : mit_des_zeroblock; +- ocipherl = load_32_be(ip); +- ocipherr = load_32_be(ip + 4); +- +- k5_iov_cursor_init(&cursor, data, num_data, MIT_DES_BLOCK_LENGTH, FALSE); +- while (k5_iov_cursor_get(&cursor, block)) { +- /* Split this block into left and right. */ +- cipherl = left = load_32_be(block); +- cipherr = right = load_32_be(block + 4); +- +- /* Decrypt and xor with the old cipher to get plain text. */ +- DES_DO_DECRYPT(left, right, kp3); +- DES_DO_ENCRYPT(left, right, kp2); +- DES_DO_DECRYPT(left, right, kp1); +- left ^= ocipherl; +- right ^= ocipherr; +- +- /* Store the encrypted halves back into block. */ +- store_32_be(left, block); +- store_32_be(right, block + 4); +- +- /* Save current cipher block halves. */ +- ocipherl = cipherl; +- ocipherr = cipherr; +- +- k5_iov_cursor_put(&cursor, block); +- } +- +- if (ivec != NULL) { +- store_32_be(ocipherl, ivec); +- store_32_be(ocipherr, ivec + 4); +- } +-} +diff --git a/src/lib/crypto/builtin/des/d3_kysched.c b/src/lib/crypto/builtin/des/d3_kysched.c +deleted file mode 100644 +index ebd1050b1..000000000 +--- a/src/lib/crypto/builtin/des/d3_kysched.c ++++ /dev/null +@@ -1,51 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* +- * Copyright 1995 by Richard P. Basch. All Rights Reserved. +- * Copyright 1995 by Lehman Brothers, Inc. All Rights Reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of Richard P. Basch, Lehman Brothers and M.I.T. not be used +- * in advertising or publicity pertaining to distribution of the software +- * without specific, written prior permission. Richard P. Basch, +- * Lehman Brothers and M.I.T. make no representations about the suitability +- * of this software for any purpose. It is provided "as is" without +- * express or implied warranty. +- */ +- +-#include "k5-int.h" +-#include "des_int.h" +- +-int +-mit_des3_key_sched(mit_des3_cblock k, mit_des3_key_schedule schedule) +-{ +- mit_des_make_key_sched(k[0],schedule[0]); +- mit_des_make_key_sched(k[1],schedule[1]); +- mit_des_make_key_sched(k[2],schedule[2]); +- +- if (!mit_des_check_key_parity(k[0])) /* bad parity --> return -1 */ +- return(-1); +- if (mit_des_is_weak_key(k[0])) +- return(-2); +- +- if (!mit_des_check_key_parity(k[1])) +- return(-1); +- if (mit_des_is_weak_key(k[1])) +- return(-2); +- +- if (!mit_des_check_key_parity(k[2])) +- return(-1); +- if (mit_des_is_weak_key(k[2])) +- return(-2); +- +- /* if key was good, return 0 */ +- return 0; +-} +diff --git a/src/lib/crypto/builtin/des/deps b/src/lib/crypto/builtin/des/deps +deleted file mode 100644 +index a1db1f36e..000000000 +--- a/src/lib/crypto/builtin/des/deps ++++ /dev/null +@@ -1,150 +0,0 @@ +-# +-# Generated makefile dependencies follow. +-# +-d3_aead.so d3_aead.po $(OUTPRE)d3_aead.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ +- $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(srcdir)/../../krb/crypto_int.h \ +- $(srcdir)/../aes/aes.h $(srcdir)/../aes/brg_types.h \ +- $(srcdir)/../crypto_mod.h $(srcdir)/../sha2/sha2.h \ +- $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- d3_aead.c des_int.h f_tables.h +-d3_kysched.so d3_kysched.po $(OUTPRE)d3_kysched.$(OBJEXT): \ +- $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- d3_kysched.c des_int.h +-des_keys.so des_keys.po $(OUTPRE)des_keys.$(OBJEXT): \ +- $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(srcdir)/../../krb/crypto_int.h $(srcdir)/../aes/aes.h \ +- $(srcdir)/../aes/brg_types.h $(srcdir)/../crypto_mod.h \ +- $(srcdir)/../sha2/sha2.h $(top_srcdir)/include/k5-buf.h \ +- $(top_srcdir)/include/k5-err.h $(top_srcdir)/include/k5-gmt_mktime.h \ +- $(top_srcdir)/include/k5-int-pkinit.h $(top_srcdir)/include/k5-int.h \ +- $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-plugin.h \ +- $(top_srcdir)/include/k5-thread.h $(top_srcdir)/include/k5-trace.h \ +- $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/authdata_plugin.h \ +- $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/port-sockets.h \ +- $(top_srcdir)/include/socket-utils.h des_int.h des_keys.c +-f_aead.so f_aead.po $(OUTPRE)f_aead.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ +- $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(srcdir)/../../krb/crypto_int.h \ +- $(srcdir)/../aes/aes.h $(srcdir)/../aes/brg_types.h \ +- $(srcdir)/../crypto_mod.h $(srcdir)/../sha2/sha2.h \ +- $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- des_int.h f_aead.c f_tables.h +-f_cksum.so f_cksum.po $(OUTPRE)f_cksum.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ +- $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h \ +- $(top_srcdir)/include/k5-err.h $(top_srcdir)/include/k5-gmt_mktime.h \ +- $(top_srcdir)/include/k5-int-pkinit.h $(top_srcdir)/include/k5-int.h \ +- $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-plugin.h \ +- $(top_srcdir)/include/k5-thread.h $(top_srcdir)/include/k5-trace.h \ +- $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/authdata_plugin.h \ +- $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/port-sockets.h \ +- $(top_srcdir)/include/socket-utils.h des_int.h f_cksum.c \ +- f_tables.h +-f_parity.so f_parity.po $(OUTPRE)f_parity.$(OBJEXT): \ +- $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- des_int.h f_parity.c +-f_sched.so f_sched.po $(OUTPRE)f_sched.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ +- $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h \ +- $(top_srcdir)/include/k5-err.h $(top_srcdir)/include/k5-gmt_mktime.h \ +- $(top_srcdir)/include/k5-int-pkinit.h $(top_srcdir)/include/k5-int.h \ +- $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-plugin.h \ +- $(top_srcdir)/include/k5-thread.h $(top_srcdir)/include/k5-trace.h \ +- $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/authdata_plugin.h \ +- $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/port-sockets.h \ +- $(top_srcdir)/include/socket-utils.h des_int.h f_sched.c +-f_tables.so f_tables.po $(OUTPRE)f_tables.$(OBJEXT): \ +- $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- des_int.h f_tables.c f_tables.h +-key_sched.so key_sched.po $(OUTPRE)key_sched.$(OBJEXT): \ +- $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- des_int.h key_sched.c +-weak_key.so weak_key.po $(OUTPRE)weak_key.$(OBJEXT): \ +- $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- des_int.h weak_key.c +-destest.so destest.po $(OUTPRE)destest.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ +- $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h \ +- $(top_srcdir)/include/k5-err.h $(top_srcdir)/include/k5-gmt_mktime.h \ +- $(top_srcdir)/include/k5-int-pkinit.h $(top_srcdir)/include/k5-int.h \ +- $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-plugin.h \ +- $(top_srcdir)/include/k5-thread.h $(top_srcdir)/include/k5-trace.h \ +- $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/authdata_plugin.h \ +- $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/port-sockets.h \ +- $(top_srcdir)/include/socket-utils.h des_int.h destest.c +-f_cbc.so f_cbc.po $(OUTPRE)f_cbc.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ +- $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h \ +- $(top_srcdir)/include/k5-err.h $(top_srcdir)/include/k5-gmt_mktime.h \ +- $(top_srcdir)/include/k5-int-pkinit.h $(top_srcdir)/include/k5-int.h \ +- $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-plugin.h \ +- $(top_srcdir)/include/k5-thread.h $(top_srcdir)/include/k5-trace.h \ +- $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/authdata_plugin.h \ +- $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/port-sockets.h \ +- $(top_srcdir)/include/socket-utils.h des_int.h f_cbc.c \ +- f_tables.h +-t_verify.so t_verify.po $(OUTPRE)t_verify.$(OBJEXT): \ +- $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- des_int.h t_verify.c +diff --git a/src/lib/crypto/builtin/des/des_int.h b/src/lib/crypto/builtin/des/des_int.h +deleted file mode 100644 +index f8dc6b296..000000000 +--- a/src/lib/crypto/builtin/des/des_int.h ++++ /dev/null +@@ -1,285 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/des_int.h */ +-/* +- * Copyright 1987, 1988, 1990, 2002 by the Massachusetts Institute of +- * Technology. All Rights Reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +-/* +- * Copyright (C) 1998 by the FundsXpress, INC. +- * +- * All rights reserved. +- * +- * Export of this software from the United States of America may require +- * a specific license from the United States Government. It is the +- * responsibility of any person or organization contemplating export to +- * obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of FundsXpress. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. FundsXpress makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- * +- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +- */ +- +-/* Private include file for the Data Encryption Standard library. */ +- +-/* only do the whole thing once */ +-#ifndef DES_INTERNAL_DEFS +-#define DES_INTERNAL_DEFS +- +-#include "k5-int.h" +-/* +- * Begin "mit-des.h" +- */ +-#ifndef KRB5_MIT_DES__ +-#define KRB5_MIT_DES__ +- +-#if defined(__MACH__) && defined(__APPLE__) +-#include +-#include +-#if TARGET_RT_MAC_CFM +-#error "Use KfM 4.0 SDK headers for CFM compilation." +-#endif +-#if defined(DEPRECATED_IN_MAC_OS_X_VERSION_10_5) && !defined(KRB5_SUPRESS_DEPRECATED_WARNINGS) +-#define KRB5INT_DES_DEPRECATED DEPRECATED_IN_MAC_OS_X_VERSION_10_5 +-#endif +-#endif /* defined(__MACH__) && defined(__APPLE__) */ +- +-/* Macro to add deprecated attribute to DES types and functions */ +-/* Currently only defined on macOS 10.5 and later. */ +-#ifndef KRB5INT_DES_DEPRECATED +-#define KRB5INT_DES_DEPRECATED +-#endif +- +-#include +- +-#if UINT_MAX >= 0xFFFFFFFFUL +-#define DES_INT32 int +-#define DES_UINT32 unsigned int +-#else +-#define DES_INT32 long +-#define DES_UINT32 unsigned long +-#endif +- +-typedef unsigned char des_cblock[8] /* crypto-block size */ +-KRB5INT_DES_DEPRECATED; +- +-/* +- * Key schedule. +- * +- * This used to be +- * +- * typedef struct des_ks_struct { +- * union { DES_INT32 pad; des_cblock _;} __; +- * } des_key_schedule[16]; +- * +- * but it would cause trouble if DES_INT32 were ever more than 4 +- * bytes. The reason is that all the encryption functions cast it to +- * (DES_INT32 *), and treat it as if it were DES_INT32[32]. If +- * 2*sizeof(DES_INT32) is ever more than sizeof(des_cblock), the +- * caller-allocated des_key_schedule will be overflowed by the key +- * scheduling functions. We can't assume that every platform will +- * have an exact 32-bit int, and nothing should be looking inside a +- * des_key_schedule anyway. +- */ +-typedef struct des_ks_struct { DES_INT32 _[2]; } des_key_schedule[16] +-KRB5INT_DES_DEPRECATED; +- +-typedef des_cblock mit_des_cblock; +-typedef des_key_schedule mit_des_key_schedule; +- +-/* Triple-DES structures */ +-typedef mit_des_cblock mit_des3_cblock[3]; +-typedef mit_des_key_schedule mit_des3_key_schedule[3]; +- +-#define MIT_DES_ENCRYPT 1 +-#define MIT_DES_DECRYPT 0 +- +-typedef struct mit_des_ran_key_seed { +- krb5_encrypt_block eblock; +- krb5_data sequence; +-} mit_des_random_state; +- +-/* the first byte of the key is already in the keyblock */ +- +-#define MIT_DES_BLOCK_LENGTH (8*sizeof(krb5_octet)) +-/* This used to be 8*sizeof(krb5_octet) */ +-#define MIT_DES_KEYSIZE 8 +- +-#define MIT_DES_CBC_CKSUM_LENGTH (4*sizeof(krb5_octet)) +- +-#endif /* KRB5_MIT_DES__ */ +-/* +- * End "mit-des.h" +- */ +- +-/* afsstring2key.c */ +-krb5_error_code mit_afs_string_to_key(krb5_keyblock *keyblock, +- const krb5_data *data, +- const krb5_data *salt); +-char *mit_afs_crypt(const char *pw, const char *salt, char *iobuf); +- +-/* f_cksum.c */ +-unsigned long mit_des_cbc_cksum(const krb5_octet *, krb5_octet *, +- unsigned long, const mit_des_key_schedule, +- const krb5_octet *); +- +-/* f_cbc.c (used by test programs) */ +-int +-mit_des_cbc_encrypt(const mit_des_cblock *in, mit_des_cblock *out, +- unsigned long length, const mit_des_key_schedule schedule, +- const mit_des_cblock ivec, int enc); +- +-#define mit_des_zeroblock krb5int_c_mit_des_zeroblock +-extern const mit_des_cblock mit_des_zeroblock; +- +-/* fin_rndkey.c */ +-krb5_error_code mit_des_finish_random_key(const krb5_encrypt_block *, +- krb5_pointer *); +- +-/* finish_key.c */ +-krb5_error_code mit_des_finish_key(krb5_encrypt_block *); +- +-/* init_rkey.c */ +-krb5_error_code mit_des_init_random_key(const krb5_encrypt_block *, +- const krb5_keyblock *, +- krb5_pointer *); +- +-/* key_parity.c */ +-void mit_des_fixup_key_parity(mit_des_cblock); +-int mit_des_check_key_parity(mit_des_cblock); +- +-/* key_sched.c */ +-int mit_des_key_sched(mit_des_cblock, mit_des_key_schedule); +- +-/* process_ky.c */ +-krb5_error_code mit_des_process_key(krb5_encrypt_block *, +- const krb5_keyblock *); +- +-/* random_key.c */ +-krb5_error_code mit_des_random_key(const krb5_encrypt_block *, +- krb5_pointer, krb5_keyblock **); +- +-/* string2key.c */ +-krb5_error_code mit_des_string_to_key(const krb5_encrypt_block *, +- krb5_keyblock *, const krb5_data *, +- const krb5_data *); +-krb5_error_code mit_des_string_to_key_int(krb5_keyblock *, const krb5_data *, +- const krb5_data *); +- +-/* weak_key.c */ +-int mit_des_is_weak_key(mit_des_cblock); +- +-/* cmb_keys.c */ +-krb5_error_code mit_des_combine_subkeys(const krb5_keyblock *, +- const krb5_keyblock *, +- krb5_keyblock **); +- +-/* f_pcbc.c */ +-int mit_des_pcbc_encrypt(); +- +-/* f_sched.c */ +-int mit_des_make_key_sched(mit_des_cblock, mit_des_key_schedule); +- +- +-/* misc.c */ +-extern void swap_bits(char *); +-extern unsigned long long_swap_bits(unsigned long); +-extern unsigned long swap_six_bits_to_ansi(unsigned long); +-extern unsigned long swap_four_bits_to_ansi(unsigned long); +-extern unsigned long swap_bit_pos_1(unsigned long); +-extern unsigned long swap_bit_pos_0(unsigned long); +-extern unsigned long swap_bit_pos_0_to_ansi(unsigned long); +-extern unsigned long rev_swap_bit_pos_0(unsigned long); +-extern unsigned long swap_byte_bits(unsigned long); +-extern unsigned long swap_long_bytes_bit_number(unsigned long); +-#ifdef FILE +-/* XXX depends on FILE being a #define! */ +-extern void test_set(FILE *, const char *, int, const char *, int); +-#endif +- +-void +-krb5int_des3_cbc_encrypt(krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule ks1, +- const mit_des_key_schedule ks2, +- const mit_des_key_schedule ks3, +- mit_des_cblock ivec); +- +-void +-krb5int_des3_cbc_decrypt(krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule ks1, +- const mit_des_key_schedule ks2, +- const mit_des_key_schedule ks3, +- mit_des_cblock ivec); +- +-void +-krb5int_des_cbc_encrypt(krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule schedule, +- mit_des_cblock ivec); +- +-void +-krb5int_des_cbc_decrypt(krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule schedule, +- mit_des_cblock ivec); +- +-void +-krb5int_des_cbc_mac(const krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule schedule, mit_des_cblock ivec, +- mit_des_cblock out); +- +-/* d3_procky.c */ +-krb5_error_code mit_des3_process_key(krb5_encrypt_block *eblock, +- const krb5_keyblock *keyblock); +- +-/* d3_kysched.c */ +-int mit_des3_key_sched(mit_des3_cblock key, mit_des3_key_schedule schedule); +- +-/* d3_str2ky.c */ +-krb5_error_code mit_des3_string_to_key(const krb5_encrypt_block *eblock, +- krb5_keyblock *keyblock, +- const krb5_data *data, +- const krb5_data *salt); +- +-/* u_nfold.c */ +-krb5_error_code mit_des_n_fold(const krb5_octet *input, const size_t in_len, +- krb5_octet *output, const size_t out_len); +- +-/* u_rn_key.c */ +-int mit_des_is_weak_keyblock(krb5_keyblock *keyblock); +- +-void mit_des_fixup_keyblock_parity(krb5_keyblock *keyblock); +- +-krb5_error_code mit_des_set_random_generator_seed(const krb5_data *seed, +- krb5_pointer random_state); +- +-krb5_error_code mit_des_set_random_sequence_number(const krb5_data *sequence, +- krb5_pointer random_state); +-#endif /*DES_INTERNAL_DEFS*/ +diff --git a/src/lib/crypto/builtin/des/des_keys.c b/src/lib/crypto/builtin/des/des_keys.c +deleted file mode 100644 +index 32b119aad..000000000 +--- a/src/lib/crypto/builtin/des/des_keys.c ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/des_keys.c - Key functions used by Kerberos code */ +-/* +- * Copyright (C) 2011 by the Massachusetts Institute of Technology. +- * All rights reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-#include "crypto_int.h" +-#include "des_int.h" +- +-void +-k5_des_fixup_key_parity(unsigned char *keybits) +-{ +- mit_des_fixup_key_parity(keybits); +-} +- +-krb5_boolean +-k5_des_is_weak_key(unsigned char *keybits) +-{ +- return mit_des_is_weak_key(keybits); +-} +diff --git a/src/lib/crypto/builtin/des/destest.c b/src/lib/crypto/builtin/des/destest.c +deleted file mode 100644 +index 52114304e..000000000 +--- a/src/lib/crypto/builtin/des/destest.c ++++ /dev/null +@@ -1,240 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/destest.c */ +-/* +- * Copyright 1990,1991 by the Massachusetts Institute of Technology. +- * All Rights Reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +-/* +- * Copyright (C) 1998 by the FundsXpress, INC. +- * +- * All rights reserved. +- * +- * Export of this software from the United States of America may require +- * a specific license from the United States Government. It is the +- * responsibility of any person or organization contemplating export to +- * obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of FundsXpress. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. FundsXpress makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- * +- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +- */ +- +-/* Test a DES implementation against known inputs & outputs. */ +- +-#include "des_int.h" +-#include +-#include +- +-void convert (char *, unsigned char []); +- +-void des_cblock_print_file (mit_des_cblock, FILE *); +- +-krb5_octet zeroblock[8] = {0,0,0,0,0,0,0,0}; +- +-int +-main(argc, argv) +- int argc; +- char *argv[]; +-{ +- char block1[17], block2[17], block3[17]; +- /* Force tests of unaligned accesses. */ +- union { unsigned char c[8*4+3]; long l; } u; +- unsigned char *ioblocks = u.c; +- unsigned char *input = ioblocks+1; +- unsigned char *output = ioblocks+10; +- unsigned char *output2 = ioblocks+19; +- unsigned char *key = ioblocks+27; +- mit_des_key_schedule sched; +- int num = 0; +- int retval; +- +- int error = 0; +- +- while (scanf("%16s %16s %16s", block1, block2, block3) == 3) { +- convert(block1, key); +- convert(block2, input); +- convert(block3, output); +- +- retval = mit_des_key_sched(key, sched); +- if (retval) { +- fprintf(stderr, "des test: can't process key: %d\n", retval); +- fprintf(stderr, "des test: %s %s %s\n", block1, block2, block3); +- exit(1); +- } +- mit_des_cbc_encrypt((const mit_des_cblock *) input, +- (mit_des_cblock *) output2, 8, +- sched, zeroblock, 1); +- +- if (memcmp((char *)output2, (char *)output, 8)) { +- fprintf(stderr, +- "DES ENCRYPT ERROR, key %s, text %s, real cipher %s, computed cyphertext %02X%02X%02X%02X%02X%02X%02X%02X\n", +- block1, block2, block3, +- output2[0],output2[1],output2[2],output2[3], +- output2[4],output2[5],output2[6],output2[7]); +- error++; +- } +- +- /* +- * Now try decrypting.... +- */ +- mit_des_cbc_encrypt((const mit_des_cblock *) output, +- (mit_des_cblock *) output2, 8, +- sched, zeroblock, 0); +- +- if (memcmp((char *)output2, (char *)input, 8)) { +- fprintf(stderr, +- "DES DECRYPT ERROR, key %s, text %s, real cipher %s, computed cleartext %02X%02X%02X%02X%02X%02X%02X%02X\n", +- block1, block2, block3, +- output2[0],output2[1],output2[2],output2[3], +- output2[4],output2[5],output2[6],output2[7]); +- error++; +- } +- +- num++; +- } +- +- if (error) +- printf("destest: failed to pass the test\n"); +- else +- printf("destest: %d tests passed successfully\n", num); +- +- exit( (error > 256 && error % 256) ? 1 : error); +-} +- +-int value[128] = { +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- 0, 1, 2, 3, 4, 5, 6, 7, +- 8, 9, -1, -1, -1, -1, -1, -1, +- -1, 10, 11, 12, 13, 14, 15, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +-}; +- +-void +-convert(text, cblock) +- char *text; +- unsigned char cblock[]; +-{ +- int i; +- for (i = 0; i < 8; i++) { +- if (!isascii((unsigned char)text[i * 2])) +- abort (); +- if (value[(int) text[i*2]] == -1 || value[(int) text[i*2+1]] == -1) { +- printf("Bad value byte %d in %s\n", i, text); +- exit(1); +- } +- cblock[i] = 16*value[(int) text[i*2]] + value[(int) text[i*2+1]]; +- } +- return; +-} +- +-/* +- * Fake out the DES library, for the purposes of testing. +- */ +- +-int +-mit_des_is_weak_key(key) +- mit_des_cblock key; +-{ +- return 0; /* fake it out for testing */ +-} +- +-void +-des_cblock_print_file(x, fp) +- mit_des_cblock x; +- FILE *fp; +-{ +- unsigned char *y = (unsigned char *) x; +- int i = 0; +- fprintf(fp," 0x { "); +- +- while (i++ < 8) { +- fprintf(fp,"%x",*y++); +- if (i < 8) +- fprintf(fp,", "); +- } +- fprintf(fp," }"); +-} +- +- +-#define smask(step) ((1<>step)&smask(step))) +-#define parity_char(x) pstep(pstep(pstep((x),4),2),1) +- +-/* +- * des_check_key_parity: returns true iff key has the correct des parity. +- * See des_fix_key_parity for the definition of +- * correct des parity. +- */ +-int +-mit_des_check_key_parity(key) +- mit_des_cblock key; +-{ +- unsigned int i; +- +- for (i=0; i decrypt, else encrypt */ +- Key_schedule schedule; /* addr of key schedule */ +- +-This is the low level routine that encrypts or decrypts a single 8-byte +-block in electronic code book mode. Always transforms the input +-data into the output data. +- +-If encrypt is non-zero, the input (cleartext) is encrypted into the +-output (ciphertext) using the specified key_schedule, pre-set via "des_set_key". +- +-If encrypt is zero, the input (now ciphertext) is decrypted into +-the output (now cleartext). +- +-Input and output may be the same space. +- +-Does not return any meaningful value. Void is not used for compatibility +-with other compilers. +- +-/* -------------------------------------------------------------- */ +- +-int +- cbc_encrypt(input,output,length,schedule,ivec,encrypt) +- +- C_Block *input; /* ptr to input data */ +- C_Block *output; /* ptr to output data */ +- int length; /* desired length, in bytes */ +- Key_schedule schedule; /* addr of precomputed schedule */ +- C_Block *ivec; /* pointer to 8 byte initialization +- * vector +- */ +- int encrypt /* 0 ==> decrypt; else encrypt*/ +- +- +- If encrypt is non-zero, the routine cipher-block-chain encrypts +- the INPUT (cleartext) into the OUTPUT (ciphertext) using the provided +- key schedule and initialization vector. If the length is not an integral +- multiple of eight bytes, the last block is copied to a temp and zero +- filled (highest addresses). The output is ALWAYS an integral multiple +- of eight bytes. +- +- If encrypt is zero, the routine cipher-block chain decrypts the INPUT +- (ciphertext) into the OUTPUT (cleartext) using the provided key schedule +- and initialization vector. Decryption ALWAYS operates on integral +- multiples of 8 bytes, so will round the length provided up to the +- appropriate multiple. Consequently, it will always produce the rounded-up +- number of bytes of output cleartext. The application must determine if +- the output cleartext was zero-padded due to cleartext lengths not integral +- multiples of 8. +- +- No errors or meaningful value are returned. Void is not used for +- compatibility with other compilers. +- +- +-/* cbc checksum (MAC) only routine ---------------------------------------- */ +-int +- cbc_cksum(input,output,length,schedule,ivec) +- +- C_Block *input; /* >= length bytes of inputtext */ +- C_Block *output; /* >= length bytes of outputtext */ +- int length; /* in bytes */ +- Key_schedule schedule; /* precomputed key schedule */ +- C_Block *ivec; /* 8 bytes of ivec */ +- +- +- Produces a cryptographic checksum, 8 bytes, by cipher-block-chain +- encrypting the input, discarding the ciphertext output, and only retaining +- the last ciphertext 8-byte block. Uses the provided key schedule and ivec. +- The input is effectively zero-padded to an integral multiple of +- eight bytes, though the original input is not modified. +- +- No meaningful value is returned. Void is not used for compatibility +- with other compilers. +- +- +-/* random_key ----------------------------------------*/ +-int +- random_key(key) +- +- C_Block *key; +- +- The start for the random number generated is set from the current time +- in microseconds, then the random number generator is invoked +- to create an eight byte output key (not a schedule). The key +- generated is set to odd parity per FIPS spec. +- +- The caller must supply space for the output key, pointed to +- by "*key", then after getting a new key, call the des_set_key() +- routine when needed. +- +- No meaningful value is returned. Void is not used for compatibility +- with other compilers. +- +- +-/* string_to_key --------------------------------------------*/ +- +-int +- string_to_key(str,key) +- char *str; +- C_Block *key; +- +- This routines converts an arbitrary length, null terminated string +- to an 8 byte DES key, with each byte parity set to odd, per FIPS spec. +- +- The algorithm is as follows: +- +-| Take the first 8 bytes and remove the parity (leaving 56 bits). +-| Do the same for the second 8 bytes, and the third, etc. Do this for +-| as many sets of 8 bytes as necessary, filling in the remainder of the +-| last set with nulls. Fold the second set back on the first (i.e. bit +-| 0 over bit 55, and bit 55 over bit 0). Fold the third over the second +-| (bit 0 of the third set is now over bit 0 of the first set). Repeat +-| until you have done this to all sets. Xor the folded sets. Break the +-| result into 8 7 bit bytes, and generate odd parity for each byte. You +-| now have 64 bits. Note that DES takes a 64 bit key, and uses only the +-| non parity bits. +- +- +-/* read_password -------------------------------------------*/ +- +-read_password(k,prompt,verify) +- C_Block *k; +- char *prompt; +- int verify; +- +-This routine issues the supplied prompt, turns off echo, if possible, and +-reads an input string. If verify is non-zero, it does it again, for use +-in applications such as changing a password. If verify is non-zero, both +-versions are compared, and the input is requested repeatedly until they +-match. Then, the input string is mapped into a valid DES key, internally +-using the string_to_key routine. The newly created key is copied to the +-area pointed to by parameter "k". +- +-No meaningful value is returned. If an error occurs trying to manipulate +-the terminal echo, the routine forces the process to exit. +- +-/* get_line ------------------------*/ +-long get_line(p,max) +- char *p; +- long max; +- +-Reads input characters from standard input until either a newline appears or +-else the max length is reached. The characters read are stuffed into +-the string pointed to, which will always be null terminated. The newline +-is not inserted in the string. The max parameter includes the byte needed +-for the null terminator, so allocate and pass one more than the maximum +-string length desired. +diff --git a/src/lib/crypto/builtin/des/f_aead.c b/src/lib/crypto/builtin/des/f_aead.c +deleted file mode 100644 +index 71b8dff4d..000000000 +--- a/src/lib/crypto/builtin/des/f_aead.c ++++ /dev/null +@@ -1,173 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* +- * Copyright (C) 2008 by the Massachusetts Institute of Technology. +- * Copyright 1995 by Richard P. Basch. All Rights Reserved. +- * Copyright 1995 by Lehman Brothers, Inc. All Rights Reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of Richard P. Basch, Lehman Brothers and M.I.T. not be used +- * in advertising or publicity pertaining to distribution of the software +- * without specific, written prior permission. Richard P. Basch, +- * Lehman Brothers and M.I.T. make no representations about the suitability +- * of this software for any purpose. It is provided "as is" without +- * express or implied warranty. +- */ +- +-#include "crypto_int.h" +-#include "des_int.h" +-#include "f_tables.h" +- +-const mit_des_cblock mit_des_zeroblock /* = all zero */; +- +-void +-krb5int_des_cbc_encrypt(krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule schedule, +- mit_des_cblock ivec) +-{ +- unsigned DES_INT32 left, right; +- const unsigned DES_INT32 *kp; +- const unsigned char *ip; +- struct iov_cursor cursor; +- unsigned char block[MIT_DES_BLOCK_LENGTH]; +- +- /* Get key pointer here. This won't need to be reinitialized. */ +- kp = (const unsigned DES_INT32 *)schedule; +- +- /* Initialize left and right with the contents of the initial vector. */ +- ip = (ivec != NULL) ? ivec : mit_des_zeroblock; +- left = load_32_be(ip); +- right = load_32_be(ip + 4); +- +- k5_iov_cursor_init(&cursor, data, num_data, MIT_DES_BLOCK_LENGTH, FALSE); +- while (k5_iov_cursor_get(&cursor, block)) { +- /* Decompose this block and xor it with the previous ciphertext. */ +- left ^= load_32_be(block); +- right ^= load_32_be(block + 4); +- +- /* Encrypt what we have and put back into block. */ +- DES_DO_ENCRYPT(left, right, kp); +- store_32_be(left, block); +- store_32_be(right, block + 4); +- +- k5_iov_cursor_put(&cursor, block); +- } +- +- if (ivec != NULL) { +- store_32_be(left, ivec); +- store_32_be(right, ivec + 4); +- } +-} +- +-void +-krb5int_des_cbc_decrypt(krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule schedule, +- mit_des_cblock ivec) +-{ +- unsigned DES_INT32 left, right; +- const unsigned DES_INT32 *kp; +- const unsigned char *ip; +- unsigned DES_INT32 ocipherl, ocipherr; +- unsigned DES_INT32 cipherl, cipherr; +- struct iov_cursor cursor; +- unsigned char block[MIT_DES_BLOCK_LENGTH]; +- +- /* Get key pointer here. This won't need to be reinitialized. */ +- kp = (const unsigned DES_INT32 *)schedule; +- +- /* +- * Decrypting is harder than encrypting because of +- * the necessity of remembering a lot more things. +- * Should think about this a little more... +- */ +- +- /* Prime the old cipher with ivec. */ +- ip = (ivec != NULL) ? ivec : mit_des_zeroblock; +- ocipherl = load_32_be(ip); +- ocipherr = load_32_be(ip + 4); +- +- k5_iov_cursor_init(&cursor, data, num_data, MIT_DES_BLOCK_LENGTH, FALSE); +- while (k5_iov_cursor_get(&cursor, block)) { +- /* Split this block into left and right. */ +- cipherl = left = load_32_be(block); +- cipherr = right = load_32_be(block + 4); +- +- /* Decrypt and xor with the old cipher to get plain text. */ +- DES_DO_DECRYPT(left, right, kp); +- left ^= ocipherl; +- right ^= ocipherr; +- +- /* Store the encrypted halves back into block. */ +- store_32_be(left, block); +- store_32_be(right, block + 4); +- +- /* Save current cipher block halves. */ +- ocipherl = cipherl; +- ocipherr = cipherr; +- +- k5_iov_cursor_put(&cursor, block); +- } +- +- if (ivec != NULL) { +- store_32_be(ocipherl, ivec); +- store_32_be(ocipherr, ivec + 4); +- } +-} +- +-void +-krb5int_des_cbc_mac(const krb5_crypto_iov *data, unsigned long num_data, +- const mit_des_key_schedule schedule, mit_des_cblock ivec, +- mit_des_cblock out) +-{ +- unsigned DES_INT32 left, right; +- const unsigned DES_INT32 *kp; +- const unsigned char *ip; +- struct iov_cursor cursor; +- unsigned char block[MIT_DES_BLOCK_LENGTH]; +- +- /* Get key pointer here. This won't need to be reinitialized. */ +- kp = (const unsigned DES_INT32 *)schedule; +- +- /* Initialize left and right with the contents of the initial vector. */ +- ip = (ivec != NULL) ? ivec : mit_des_zeroblock; +- left = load_32_be(ip); +- right = load_32_be(ip + 4); +- +- k5_iov_cursor_init(&cursor, data, num_data, MIT_DES_BLOCK_LENGTH, TRUE); +- while (k5_iov_cursor_get(&cursor, block)) { +- /* Decompose this block and xor it with the previous ciphertext. */ +- left ^= load_32_be(block); +- right ^= load_32_be(block + 4); +- +- /* Encrypt what we have. */ +- DES_DO_ENCRYPT(left, right, kp); +- } +- +- /* Output the final ciphertext block. */ +- store_32_be(left, out); +- store_32_be(right, out + 4); +-} +- +-#if defined(CONFIG_SMALL) && !defined(CONFIG_SMALL_NO_CRYPTO) +-void krb5int_des_do_encrypt_2 (unsigned DES_INT32 *left, +- unsigned DES_INT32 *right, +- const unsigned DES_INT32 *kp) +-{ +- DES_DO_ENCRYPT_1 (*left, *right, kp); +-} +- +-void krb5int_des_do_decrypt_2 (unsigned DES_INT32 *left, +- unsigned DES_INT32 *right, +- const unsigned DES_INT32 *kp) +-{ +- DES_DO_DECRYPT_1 (*left, *right, kp); +-} +-#endif +diff --git a/src/lib/crypto/builtin/des/f_cbc.c b/src/lib/crypto/builtin/des/f_cbc.c +deleted file mode 100644 +index 84d5382f2..000000000 +--- a/src/lib/crypto/builtin/des/f_cbc.c ++++ /dev/null +@@ -1,256 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/f_cbc.c */ +-/* +- * Copyright (C) 1990 by the Massachusetts Institute of Technology. +- * All rights reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-/* +- * CBC functions; used only by the test programs at this time. (krb5 uses the +- * functions in f_aead.c instead.) +- */ +- +-/* +- * des_cbc_encrypt.c - an implementation of the DES cipher function in cbc mode +- */ +-#include "des_int.h" +-#include "f_tables.h" +- +-/* +- * des_cbc_encrypt - {en,de}crypt a stream in CBC mode +- */ +- +-/* +- * This routine performs DES cipher-block-chaining operation, either +- * encrypting from cleartext to ciphertext, if encrypt != 0 or +- * decrypting from ciphertext to cleartext, if encrypt == 0. +- * +- * The key schedule is passed as an arg, as well as the cleartext or +- * ciphertext. The cleartext and ciphertext should be in host order. +- * +- * NOTE-- the output is ALWAYS an multiple of 8 bytes long. If not +- * enough space was provided, your program will get trashed. +- * +- * For encryption, the cleartext string is null padded, at the end, to +- * an integral multiple of eight bytes. +- * +- * For decryption, the ciphertext will be used in integral multiples +- * of 8 bytes, but only the first "length" bytes returned into the +- * cleartext. +- */ +- +-const mit_des_cblock mit_des_zeroblock /* = all zero */; +- +-static void +-des_cbc_encrypt(const mit_des_cblock *in, mit_des_cblock *out, +- unsigned long length, const mit_des_key_schedule schedule, +- const mit_des_cblock ivec) +-{ +- unsigned DES_INT32 left, right; +- const unsigned DES_INT32 *kp; +- const unsigned char *ip; +- unsigned char *op; +- +- /* +- * Get key pointer here. This won't need to be reinitialized +- */ +- kp = (const unsigned DES_INT32 *)schedule; +- +- /* +- * Initialize left and right with the contents of the initial +- * vector. +- */ +- ip = ivec; +- GET_HALF_BLOCK(left, ip); +- GET_HALF_BLOCK(right, ip); +- +- /* +- * Suitably initialized, now work the length down 8 bytes +- * at a time. +- */ +- ip = *in; +- op = *out; +- while (length > 0) { +- /* +- * Get more input, xor it in. If the length is +- * greater than or equal to 8 this is straight +- * forward. Otherwise we have to fart around. +- */ +- if (length >= 8) { +- unsigned DES_INT32 temp; +- GET_HALF_BLOCK(temp, ip); +- left ^= temp; +- GET_HALF_BLOCK(temp, ip); +- right ^= temp; +- length -= 8; +- } else { +- /* +- * Oh, shoot. We need to pad the +- * end with zeroes. Work backwards +- * to do this. +- */ +- ip += (int) length; +- switch(length) { +- case 7: +- right ^= (*(--ip) & FF_UINT32) << 8; +- case 6: +- right ^= (*(--ip) & FF_UINT32) << 16; +- case 5: +- right ^= (*(--ip) & FF_UINT32) << 24; +- case 4: +- left ^= *(--ip) & FF_UINT32; +- case 3: +- left ^= (*(--ip) & FF_UINT32) << 8; +- case 2: +- left ^= (*(--ip) & FF_UINT32) << 16; +- case 1: +- left ^= (*(--ip) & FF_UINT32) << 24; +- break; +- } +- length = 0; +- } +- +- /* +- * Encrypt what we have +- */ +- DES_DO_ENCRYPT(left, right, kp); +- +- /* +- * Copy the results out +- */ +- PUT_HALF_BLOCK(left, op); +- PUT_HALF_BLOCK(right, op); +- } +-} +- +-static void +-des_cbc_decrypt(const mit_des_cblock *in, mit_des_cblock *out, +- unsigned long length, const mit_des_key_schedule schedule, +- const mit_des_cblock ivec) +-{ +- unsigned DES_INT32 left, right; +- const unsigned DES_INT32 *kp; +- const unsigned char *ip; +- unsigned char *op; +- unsigned DES_INT32 ocipherl, ocipherr; +- unsigned DES_INT32 cipherl, cipherr; +- +- /* +- * Get key pointer here. This won't need to be reinitialized +- */ +- kp = (const unsigned DES_INT32 *)schedule; +- +- /* +- * Decrypting is harder than encrypting because of +- * the necessity of remembering a lot more things. +- * Should think about this a little more... +- */ +- +- if (length <= 0) +- return; +- +- /* +- * Prime the old cipher with ivec. +- */ +- ip = ivec; +- GET_HALF_BLOCK(ocipherl, ip); +- GET_HALF_BLOCK(ocipherr, ip); +- +- /* +- * Now do this in earnest until we run out of length. +- */ +- ip = *in; +- op = *out; +- for (;;) { /* check done inside loop */ +- /* +- * Read a block from the input into left and +- * right. Save this cipher block for later. +- */ +- GET_HALF_BLOCK(left, ip); +- GET_HALF_BLOCK(right, ip); +- cipherl = left; +- cipherr = right; +- +- /* +- * Decrypt this. +- */ +- DES_DO_DECRYPT(left, right, kp); +- +- /* +- * Xor with the old cipher to get plain +- * text. Output 8 or less bytes of this. +- */ +- left ^= ocipherl; +- right ^= ocipherr; +- if (length > 8) { +- length -= 8; +- PUT_HALF_BLOCK(left, op); +- PUT_HALF_BLOCK(right, op); +- /* +- * Save current cipher block here +- */ +- ocipherl = cipherl; +- ocipherr = cipherr; +- } else { +- /* +- * Trouble here. Start at end of output, +- * work backwards. +- */ +- op += (int) length; +- switch(length) { +- case 8: +- *(--op) = (unsigned char) (right & 0xff); +- case 7: +- *(--op) = (unsigned char) ((right >> 8) & 0xff); +- case 6: +- *(--op) = (unsigned char) ((right >> 16) & 0xff); +- case 5: +- *(--op) = (unsigned char) ((right >> 24) & 0xff); +- case 4: +- *(--op) = (unsigned char) (left & 0xff); +- case 3: +- *(--op) = (unsigned char) ((left >> 8) & 0xff); +- case 2: +- *(--op) = (unsigned char) ((left >> 16) & 0xff); +- case 1: +- *(--op) = (unsigned char) ((left >> 24) & 0xff); +- break; +- } +- break; /* we're done */ +- } +- } +-} +- +-int +-mit_des_cbc_encrypt(const mit_des_cblock *in, mit_des_cblock *out, +- unsigned long length, const mit_des_key_schedule schedule, +- const mit_des_cblock ivec, int enc) +-{ +- /* +- * Deal with encryption and decryption separately. +- */ +- if (enc) +- des_cbc_encrypt(in, out, length, schedule, ivec); +- else +- des_cbc_decrypt(in, out, length, schedule, ivec); +- return 0; +-} +diff --git a/src/lib/crypto/builtin/des/f_cksum.c b/src/lib/crypto/builtin/des/f_cksum.c +deleted file mode 100644 +index cb482b009..000000000 +--- a/src/lib/crypto/builtin/des/f_cksum.c ++++ /dev/null +@@ -1,136 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/f_cksum.c */ +-/* +- * Copyright (C) 1990 by the Massachusetts Institute of Technology. +- * All rights reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-/* DES implementation donated by Dennis Ferguson */ +- +-/* +- * des_cbc_cksum.c - compute an 8 byte checksum using DES in CBC mode +- */ +-#include "des_int.h" +-#include "f_tables.h" +- +-/* +- * This routine performs DES cipher-block-chaining checksum operation, +- * a.k.a. Message Authentication Code. It ALWAYS encrypts from input +- * to a single 64 bit output MAC checksum. +- * +- * The key schedule is passed as an arg, as well as the cleartext or +- * ciphertext. The cleartext and ciphertext should be in host order. +- * +- * NOTE-- the output is ALWAYS 8 bytes long. If not enough space was +- * provided, your program will get trashed. +- * +- * The input is null padded, at the end (highest addr), to an integral +- * multiple of eight bytes. +- */ +- +-unsigned long +-mit_des_cbc_cksum(const krb5_octet *in, krb5_octet *out, +- unsigned long length, const mit_des_key_schedule schedule, +- const krb5_octet *ivec) +-{ +- unsigned DES_INT32 left, right; +- const unsigned DES_INT32 *kp; +- const unsigned char *ip; +- unsigned char *op; +- DES_INT32 len; +- +- /* +- * Initialize left and right with the contents of the initial +- * vector. +- */ +- ip = ivec; +- GET_HALF_BLOCK(left, ip); +- GET_HALF_BLOCK(right, ip); +- +- /* +- * Suitably initialized, now work the length down 8 bytes +- * at a time. +- */ +- ip = in; +- len = length; +- while (len > 0) { +- /* +- * Get more input, xor it in. If the length is +- * greater than or equal to 8 this is straight +- * forward. Otherwise we have to fart around. +- */ +- if (len >= 8) { +- unsigned DES_INT32 temp; +- GET_HALF_BLOCK(temp, ip); +- left ^= temp; +- GET_HALF_BLOCK(temp, ip); +- right ^= temp; +- len -= 8; +- } else { +- /* +- * Oh, shoot. We need to pad the +- * end with zeroes. Work backwards +- * to do this. +- */ +- ip += (int) len; +- switch(len) { +- case 7: +- right ^= (*(--ip) & FF_UINT32) << 8; +- case 6: +- right ^= (*(--ip) & FF_UINT32) << 16; +- case 5: +- right ^= (*(--ip) & FF_UINT32) << 24; +- case 4: +- left ^= *(--ip) & FF_UINT32; +- case 3: +- left ^= (*(--ip) & FF_UINT32) << 8; +- case 2: +- left ^= (*(--ip) & FF_UINT32) << 16; +- case 1: +- left ^= (*(--ip) & FF_UINT32) << 24; +- break; +- } +- len = 0; +- } +- +- /* +- * Encrypt what we have +- */ +- kp = (const unsigned DES_INT32 *)schedule; +- DES_DO_ENCRYPT(left, right, kp); +- } +- +- /* +- * Done. Left and right have the checksum. Put it into +- * the output. +- */ +- op = out; +- PUT_HALF_BLOCK(left, op); +- PUT_HALF_BLOCK(right, op); +- +- /* +- * Return right. I'll bet the MIT code returns this +- * inconsistantly (with the low order byte of the checksum +- * not always in the low order byte of the DES_INT32). We won't. +- */ +- return right & 0xFFFFFFFFUL; +-} +diff --git a/src/lib/crypto/builtin/des/f_parity.c b/src/lib/crypto/builtin/des/f_parity.c +deleted file mode 100644 +index 460b5061b..000000000 +--- a/src/lib/crypto/builtin/des/f_parity.c ++++ /dev/null +@@ -1,56 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* +- * These routines check and fix parity of encryption keys for the DES +- * algorithm. +- * +- * They are a replacement for routines in key_parity.c, that don't require +- * the table building that they do. +- * +- * Mark Eichin -- Cygnus Support +- */ +- +- +-#include "des_int.h" +- +-/* +- * des_fixup_key_parity: Forces odd parity per byte; parity is bits +- * 8,16,...64 in des order, implies 0, 8, 16, ... +- * vax order. +- */ +-#define smask(step) ((1<>step)&smask(step))) +-#define parity_char(x) pstep(pstep(pstep((x),4),2),1) +- +-void +-mit_des_fixup_key_parity(mit_des_cblock key) +-{ +- unsigned int i; +- for (i=0; i> 29) & 0x7] +- | (PC1_CL[(tmp >> 21) & 0x7] << 1) +- | (PC1_CL[(tmp >> 13) & 0x7] << 2) +- | (PC1_CL[(tmp >> 5) & 0x7] << 3); +- d = PC1_DL[(tmp >> 25) & 0xf] +- | (PC1_DL[(tmp >> 17) & 0xf] << 1) +- | (PC1_DL[(tmp >> 9) & 0xf] << 2) +- | (PC1_DL[(tmp >> 1) & 0xf] << 3); +- +- tmp = load_32_be(k), k += 4; +- +- c |= PC1_CR[(tmp >> 28) & 0xf] +- | (PC1_CR[(tmp >> 20) & 0xf] << 1) +- | (PC1_CR[(tmp >> 12) & 0xf] << 2) +- | (PC1_CR[(tmp >> 4) & 0xf] << 3); +- d |= PC1_DR[(tmp >> 25) & 0x7] +- | (PC1_DR[(tmp >> 17) & 0x7] << 1) +- | (PC1_DR[(tmp >> 9) & 0x7] << 2) +- | (PC1_DR[(tmp >> 1) & 0x7] << 3); +- } +- +- { +- /* +- * Need several temporaries in here +- */ +- unsigned DES_INT32 ltmp, rtmp; +- unsigned DES_INT32 *k; +- int two_bit_shifts; +- int i; +- /* +- * Now iterate to compute the key schedule. Note that we +- * record the entire set of subkeys in 6 bit chunks since +- * they are used that way. At 6 bits/char, we need +- * 48/6 char's/subkey * 16 subkeys/encryption == 128 bytes. +- * The schedule must be this big. +- */ +- k = (unsigned DES_INT32 *)schedule; +- two_bit_shifts = TWO_BIT_SHIFTS; +- for (i = 16; i > 0; i--) { +- /* +- * Do the rotation. One bit and two bit rotations +- * are done separately. Note C and D are 28 bits. +- */ +- if (two_bit_shifts & 0x1) { +- c = ((c << 2) & 0xffffffc) | (c >> 26); +- d = ((d << 2) & 0xffffffc) | (d >> 26); +- } else { +- c = ((c << 1) & 0xffffffe) | (c >> 27); +- d = ((d << 1) & 0xffffffe) | (d >> 27); +- } +- two_bit_shifts >>= 1; +- +- /* +- * Apply permutted choice 2 to C to get the first +- * 24 bits worth of keys. Note that bits 9, 18, 22 +- * and 25 (using DES numbering) in C are unused. The +- * shift-mask stuff is done to delete these bits from +- * the indices, since this cuts the table size in half. +- * +- * The table is torqued, by the way. If the standard +- * byte order for this (high to low order) is 1234, +- * the table actually gives us 4132. +- */ +- ltmp = PC2_C[0][((c >> 22) & 0x3f)] +- | PC2_C[1][((c >> 15) & 0xf) | ((c >> 16) & 0x30)] +- | PC2_C[2][((c >> 4) & 0x3) | ((c >> 9) & 0x3c)] +- | PC2_C[3][((c ) & 0x7) | ((c >> 4) & 0x38)]; +- /* +- * Apply permutted choice 2 to D to get the other half. +- * Here, bits 7, 10, 15 and 26 go unused. The sqeezing +- * actually turns out to be cheaper here. +- * +- * This table is similarly torqued. If the standard +- * byte order is 5678, the table has the bytes permuted +- * to give us 7685. +- */ +- rtmp = PC2_D[0][((d >> 22) & 0x3f)] +- | PC2_D[1][((d >> 14) & 0xf) | ((d >> 15) & 0x30)] +- | PC2_D[2][((d >> 7) & 0x3f)] +- | PC2_D[3][((d ) & 0x3) | ((d >> 1) & 0x3c)]; +- +- /* +- * Make up two words of the key schedule, with a +- * byte order which is convenient for the DES +- * inner loop. The high order (first) word will +- * hold bytes 7135 (high to low order) while the +- * second holds bytes 4682. +- */ +- *k++ = (ltmp & 0x00ffff00) | (rtmp & 0xff0000ff); +- *k++ = (ltmp & 0xff0000ff) | (rtmp & 0x00ffff00); +- } +- } +- return (0); +-} +diff --git a/src/lib/crypto/builtin/des/f_tables.c b/src/lib/crypto/builtin/des/f_tables.c +deleted file mode 100644 +index 6308cb0d5..000000000 +--- a/src/lib/crypto/builtin/des/f_tables.c ++++ /dev/null +@@ -1,370 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/f_tables.c */ +-/* +- * Copyright (C) 1990 by the Massachusetts Institute of Technology. +- * All rights reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-/* DES implementation donated by Dennis Ferguson */ +- +-/* +- * des_tables.c - precomputed tables used for the DES cipher function +- */ +- +-/* +- * Include the header file so something will complain if the +- * declarations get out of sync +- */ +-#include "des_int.h" +-#include "f_tables.h" +- +-/* +- * These tables may be declared const if you want. Many compilers +- * don't support this, though. +- */ +- +-/* +- * The DES algorithm which uses these is intended to be fairly speedy +- * at the expense of some memory. All the standard hacks are used. +- * The S boxes and the P permutation are precomputed into one table. +- * The E box never actually appears explicitly since it is easy to apply +- * this algorithmically as needed. The initial permutation and final +- * (inverse initial) permutation are computed from tables designed to +- * permute one byte at a time. This should run pretty fast on machines +- * with 32 bit words and bit field/multiple bit shift instructions which +- * are fast. +- */ +- +-/* +- * The initial permutation array. This is used to compute both the +- * left and the right halves of the initial permutation using bytes +- * from words made from the following operations: +- * +- * ((left & 0x55555555) << 1) | (right & 0x55555555) for left half +- * (left & 0xaaaaaaaa) | ((right & 0xaaaaaaaa) >> 1) for right half +- * +- * The scheme is that we index into the table using each byte. The +- * result from the high order byte is or'd with the result from the +- * next byte shifted left once is or'd with the result from the next +- * byte shifted left twice if or'd with the result from the low order +- * byte shifted left by three. Clear? +- */ +- +-const unsigned DES_INT32 des_IP_table[256] = { +- 0x00000000, 0x00000010, 0x00000001, 0x00000011, +- 0x00001000, 0x00001010, 0x00001001, 0x00001011, +- 0x00000100, 0x00000110, 0x00000101, 0x00000111, +- 0x00001100, 0x00001110, 0x00001101, 0x00001111, +- 0x00100000, 0x00100010, 0x00100001, 0x00100011, +- 0x00101000, 0x00101010, 0x00101001, 0x00101011, +- 0x00100100, 0x00100110, 0x00100101, 0x00100111, +- 0x00101100, 0x00101110, 0x00101101, 0x00101111, +- 0x00010000, 0x00010010, 0x00010001, 0x00010011, +- 0x00011000, 0x00011010, 0x00011001, 0x00011011, +- 0x00010100, 0x00010110, 0x00010101, 0x00010111, +- 0x00011100, 0x00011110, 0x00011101, 0x00011111, +- 0x00110000, 0x00110010, 0x00110001, 0x00110011, +- 0x00111000, 0x00111010, 0x00111001, 0x00111011, +- 0x00110100, 0x00110110, 0x00110101, 0x00110111, +- 0x00111100, 0x00111110, 0x00111101, 0x00111111, +- 0x10000000, 0x10000010, 0x10000001, 0x10000011, +- 0x10001000, 0x10001010, 0x10001001, 0x10001011, +- 0x10000100, 0x10000110, 0x10000101, 0x10000111, +- 0x10001100, 0x10001110, 0x10001101, 0x10001111, +- 0x10100000, 0x10100010, 0x10100001, 0x10100011, +- 0x10101000, 0x10101010, 0x10101001, 0x10101011, +- 0x10100100, 0x10100110, 0x10100101, 0x10100111, +- 0x10101100, 0x10101110, 0x10101101, 0x10101111, +- 0x10010000, 0x10010010, 0x10010001, 0x10010011, +- 0x10011000, 0x10011010, 0x10011001, 0x10011011, +- 0x10010100, 0x10010110, 0x10010101, 0x10010111, +- 0x10011100, 0x10011110, 0x10011101, 0x10011111, +- 0x10110000, 0x10110010, 0x10110001, 0x10110011, +- 0x10111000, 0x10111010, 0x10111001, 0x10111011, +- 0x10110100, 0x10110110, 0x10110101, 0x10110111, +- 0x10111100, 0x10111110, 0x10111101, 0x10111111, +- 0x01000000, 0x01000010, 0x01000001, 0x01000011, +- 0x01001000, 0x01001010, 0x01001001, 0x01001011, +- 0x01000100, 0x01000110, 0x01000101, 0x01000111, +- 0x01001100, 0x01001110, 0x01001101, 0x01001111, +- 0x01100000, 0x01100010, 0x01100001, 0x01100011, +- 0x01101000, 0x01101010, 0x01101001, 0x01101011, +- 0x01100100, 0x01100110, 0x01100101, 0x01100111, +- 0x01101100, 0x01101110, 0x01101101, 0x01101111, +- 0x01010000, 0x01010010, 0x01010001, 0x01010011, +- 0x01011000, 0x01011010, 0x01011001, 0x01011011, +- 0x01010100, 0x01010110, 0x01010101, 0x01010111, +- 0x01011100, 0x01011110, 0x01011101, 0x01011111, +- 0x01110000, 0x01110010, 0x01110001, 0x01110011, +- 0x01111000, 0x01111010, 0x01111001, 0x01111011, +- 0x01110100, 0x01110110, 0x01110101, 0x01110111, +- 0x01111100, 0x01111110, 0x01111101, 0x01111111, +- 0x11000000, 0x11000010, 0x11000001, 0x11000011, +- 0x11001000, 0x11001010, 0x11001001, 0x11001011, +- 0x11000100, 0x11000110, 0x11000101, 0x11000111, +- 0x11001100, 0x11001110, 0x11001101, 0x11001111, +- 0x11100000, 0x11100010, 0x11100001, 0x11100011, +- 0x11101000, 0x11101010, 0x11101001, 0x11101011, +- 0x11100100, 0x11100110, 0x11100101, 0x11100111, +- 0x11101100, 0x11101110, 0x11101101, 0x11101111, +- 0x11010000, 0x11010010, 0x11010001, 0x11010011, +- 0x11011000, 0x11011010, 0x11011001, 0x11011011, +- 0x11010100, 0x11010110, 0x11010101, 0x11010111, +- 0x11011100, 0x11011110, 0x11011101, 0x11011111, +- 0x11110000, 0x11110010, 0x11110001, 0x11110011, +- 0x11111000, 0x11111010, 0x11111001, 0x11111011, +- 0x11110100, 0x11110110, 0x11110101, 0x11110111, +- 0x11111100, 0x11111110, 0x11111101, 0x11111111 +-}; +- +-/* +- * The final permutation array. Like the IP array, used +- * to compute both the left and right results from the bytes +- * of words computed from: +- * +- * ((left & 0x0f0f0f0f) << 4) | (right & 0x0f0f0f0f) for left result +- * (left & 0xf0f0f0f0) | ((right & 0xf0f0f0f0) >> 4) for right result +- * +- * The result from the high order byte is shifted left 6 bits and +- * or'd with the result from the next byte shifted left 4 bits, which +- * is or'd with the result from the next byte shifted left 2 bits, +- * which is or'd with the result from the low byte. +- */ +-const unsigned DES_INT32 des_FP_table[256] = { +- 0x00000000, 0x02000000, 0x00020000, 0x02020000, +- 0x00000200, 0x02000200, 0x00020200, 0x02020200, +- 0x00000002, 0x02000002, 0x00020002, 0x02020002, +- 0x00000202, 0x02000202, 0x00020202, 0x02020202, +- 0x01000000, 0x03000000, 0x01020000, 0x03020000, +- 0x01000200, 0x03000200, 0x01020200, 0x03020200, +- 0x01000002, 0x03000002, 0x01020002, 0x03020002, +- 0x01000202, 0x03000202, 0x01020202, 0x03020202, +- 0x00010000, 0x02010000, 0x00030000, 0x02030000, +- 0x00010200, 0x02010200, 0x00030200, 0x02030200, +- 0x00010002, 0x02010002, 0x00030002, 0x02030002, +- 0x00010202, 0x02010202, 0x00030202, 0x02030202, +- 0x01010000, 0x03010000, 0x01030000, 0x03030000, +- 0x01010200, 0x03010200, 0x01030200, 0x03030200, +- 0x01010002, 0x03010002, 0x01030002, 0x03030002, +- 0x01010202, 0x03010202, 0x01030202, 0x03030202, +- 0x00000100, 0x02000100, 0x00020100, 0x02020100, +- 0x00000300, 0x02000300, 0x00020300, 0x02020300, +- 0x00000102, 0x02000102, 0x00020102, 0x02020102, +- 0x00000302, 0x02000302, 0x00020302, 0x02020302, +- 0x01000100, 0x03000100, 0x01020100, 0x03020100, +- 0x01000300, 0x03000300, 0x01020300, 0x03020300, +- 0x01000102, 0x03000102, 0x01020102, 0x03020102, +- 0x01000302, 0x03000302, 0x01020302, 0x03020302, +- 0x00010100, 0x02010100, 0x00030100, 0x02030100, +- 0x00010300, 0x02010300, 0x00030300, 0x02030300, +- 0x00010102, 0x02010102, 0x00030102, 0x02030102, +- 0x00010302, 0x02010302, 0x00030302, 0x02030302, +- 0x01010100, 0x03010100, 0x01030100, 0x03030100, +- 0x01010300, 0x03010300, 0x01030300, 0x03030300, +- 0x01010102, 0x03010102, 0x01030102, 0x03030102, +- 0x01010302, 0x03010302, 0x01030302, 0x03030302, +- 0x00000001, 0x02000001, 0x00020001, 0x02020001, +- 0x00000201, 0x02000201, 0x00020201, 0x02020201, +- 0x00000003, 0x02000003, 0x00020003, 0x02020003, +- 0x00000203, 0x02000203, 0x00020203, 0x02020203, +- 0x01000001, 0x03000001, 0x01020001, 0x03020001, +- 0x01000201, 0x03000201, 0x01020201, 0x03020201, +- 0x01000003, 0x03000003, 0x01020003, 0x03020003, +- 0x01000203, 0x03000203, 0x01020203, 0x03020203, +- 0x00010001, 0x02010001, 0x00030001, 0x02030001, +- 0x00010201, 0x02010201, 0x00030201, 0x02030201, +- 0x00010003, 0x02010003, 0x00030003, 0x02030003, +- 0x00010203, 0x02010203, 0x00030203, 0x02030203, +- 0x01010001, 0x03010001, 0x01030001, 0x03030001, +- 0x01010201, 0x03010201, 0x01030201, 0x03030201, +- 0x01010003, 0x03010003, 0x01030003, 0x03030003, +- 0x01010203, 0x03010203, 0x01030203, 0x03030203, +- 0x00000101, 0x02000101, 0x00020101, 0x02020101, +- 0x00000301, 0x02000301, 0x00020301, 0x02020301, +- 0x00000103, 0x02000103, 0x00020103, 0x02020103, +- 0x00000303, 0x02000303, 0x00020303, 0x02020303, +- 0x01000101, 0x03000101, 0x01020101, 0x03020101, +- 0x01000301, 0x03000301, 0x01020301, 0x03020301, +- 0x01000103, 0x03000103, 0x01020103, 0x03020103, +- 0x01000303, 0x03000303, 0x01020303, 0x03020303, +- 0x00010101, 0x02010101, 0x00030101, 0x02030101, +- 0x00010301, 0x02010301, 0x00030301, 0x02030301, +- 0x00010103, 0x02010103, 0x00030103, 0x02030103, +- 0x00010303, 0x02010303, 0x00030303, 0x02030303, +- 0x01010101, 0x03010101, 0x01030101, 0x03030101, +- 0x01010301, 0x03010301, 0x01030301, 0x03030301, +- 0x01010103, 0x03010103, 0x01030103, 0x03030103, +- 0x01010303, 0x03010303, 0x01030303, 0x03030303 +-}; +- +- +-/* +- * The SP table is actually the S boxes and the P permutation +- * table combined. This table is actually reordered from the +- * spec, to match the order of key application we follow. +- */ +-const unsigned DES_INT32 des_SP_table[8][64] = { +- { +- 0x00100000, 0x02100001, 0x02000401, 0x00000000, /* 7 */ +- 0x00000400, 0x02000401, 0x00100401, 0x02100400, +- 0x02100401, 0x00100000, 0x00000000, 0x02000001, +- 0x00000001, 0x02000000, 0x02100001, 0x00000401, +- 0x02000400, 0x00100401, 0x00100001, 0x02000400, +- 0x02000001, 0x02100000, 0x02100400, 0x00100001, +- 0x02100000, 0x00000400, 0x00000401, 0x02100401, +- 0x00100400, 0x00000001, 0x02000000, 0x00100400, +- 0x02000000, 0x00100400, 0x00100000, 0x02000401, +- 0x02000401, 0x02100001, 0x02100001, 0x00000001, +- 0x00100001, 0x02000000, 0x02000400, 0x00100000, +- 0x02100400, 0x00000401, 0x00100401, 0x02100400, +- 0x00000401, 0x02000001, 0x02100401, 0x02100000, +- 0x00100400, 0x00000000, 0x00000001, 0x02100401, +- 0x00000000, 0x00100401, 0x02100000, 0x00000400, +- 0x02000001, 0x02000400, 0x00000400, 0x00100001, +- }, +- { +- 0x00808200, 0x00000000, 0x00008000, 0x00808202, /* 1 */ +- 0x00808002, 0x00008202, 0x00000002, 0x00008000, +- 0x00000200, 0x00808200, 0x00808202, 0x00000200, +- 0x00800202, 0x00808002, 0x00800000, 0x00000002, +- 0x00000202, 0x00800200, 0x00800200, 0x00008200, +- 0x00008200, 0x00808000, 0x00808000, 0x00800202, +- 0x00008002, 0x00800002, 0x00800002, 0x00008002, +- 0x00000000, 0x00000202, 0x00008202, 0x00800000, +- 0x00008000, 0x00808202, 0x00000002, 0x00808000, +- 0x00808200, 0x00800000, 0x00800000, 0x00000200, +- 0x00808002, 0x00008000, 0x00008200, 0x00800002, +- 0x00000200, 0x00000002, 0x00800202, 0x00008202, +- 0x00808202, 0x00008002, 0x00808000, 0x00800202, +- 0x00800002, 0x00000202, 0x00008202, 0x00808200, +- 0x00000202, 0x00800200, 0x00800200, 0x00000000, +- 0x00008002, 0x00008200, 0x00000000, 0x00808002, +- }, +- { +- 0x00000104, 0x04010100, 0x00000000, 0x04010004, /* 3 */ +- 0x04000100, 0x00000000, 0x00010104, 0x04000100, +- 0x00010004, 0x04000004, 0x04000004, 0x00010000, +- 0x04010104, 0x00010004, 0x04010000, 0x00000104, +- 0x04000000, 0x00000004, 0x04010100, 0x00000100, +- 0x00010100, 0x04010000, 0x04010004, 0x00010104, +- 0x04000104, 0x00010100, 0x00010000, 0x04000104, +- 0x00000004, 0x04010104, 0x00000100, 0x04000000, +- 0x04010100, 0x04000000, 0x00010004, 0x00000104, +- 0x00010000, 0x04010100, 0x04000100, 0x00000000, +- 0x00000100, 0x00010004, 0x04010104, 0x04000100, +- 0x04000004, 0x00000100, 0x00000000, 0x04010004, +- 0x04000104, 0x00010000, 0x04000000, 0x04010104, +- 0x00000004, 0x00010104, 0x00010100, 0x04000004, +- 0x04010000, 0x04000104, 0x00000104, 0x04010000, +- 0x00010104, 0x00000004, 0x04010004, 0x00010100, +- }, +- { +- 0x00000080, 0x01040080, 0x01040000, 0x21000080, /* 5 */ +- 0x00040000, 0x00000080, 0x20000000, 0x01040000, +- 0x20040080, 0x00040000, 0x01000080, 0x20040080, +- 0x21000080, 0x21040000, 0x00040080, 0x20000000, +- 0x01000000, 0x20040000, 0x20040000, 0x00000000, +- 0x20000080, 0x21040080, 0x21040080, 0x01000080, +- 0x21040000, 0x20000080, 0x00000000, 0x21000000, +- 0x01040080, 0x01000000, 0x21000000, 0x00040080, +- 0x00040000, 0x21000080, 0x00000080, 0x01000000, +- 0x20000000, 0x01040000, 0x21000080, 0x20040080, +- 0x01000080, 0x20000000, 0x21040000, 0x01040080, +- 0x20040080, 0x00000080, 0x01000000, 0x21040000, +- 0x21040080, 0x00040080, 0x21000000, 0x21040080, +- 0x01040000, 0x00000000, 0x20040000, 0x21000000, +- 0x00040080, 0x01000080, 0x20000080, 0x00040000, +- 0x00000000, 0x20040000, 0x01040080, 0x20000080, +- }, +- { +- 0x80401000, 0x80001040, 0x80001040, 0x00000040, /* 4 */ +- 0x00401040, 0x80400040, 0x80400000, 0x80001000, +- 0x00000000, 0x00401000, 0x00401000, 0x80401040, +- 0x80000040, 0x00000000, 0x00400040, 0x80400000, +- 0x80000000, 0x00001000, 0x00400000, 0x80401000, +- 0x00000040, 0x00400000, 0x80001000, 0x00001040, +- 0x80400040, 0x80000000, 0x00001040, 0x00400040, +- 0x00001000, 0x00401040, 0x80401040, 0x80000040, +- 0x00400040, 0x80400000, 0x00401000, 0x80401040, +- 0x80000040, 0x00000000, 0x00000000, 0x00401000, +- 0x00001040, 0x00400040, 0x80400040, 0x80000000, +- 0x80401000, 0x80001040, 0x80001040, 0x00000040, +- 0x80401040, 0x80000040, 0x80000000, 0x00001000, +- 0x80400000, 0x80001000, 0x00401040, 0x80400040, +- 0x80001000, 0x00001040, 0x00400000, 0x80401000, +- 0x00000040, 0x00400000, 0x00001000, 0x00401040, +- }, +- { +- 0x10000008, 0x10200000, 0x00002000, 0x10202008, /* 6 */ +- 0x10200000, 0x00000008, 0x10202008, 0x00200000, +- 0x10002000, 0x00202008, 0x00200000, 0x10000008, +- 0x00200008, 0x10002000, 0x10000000, 0x00002008, +- 0x00000000, 0x00200008, 0x10002008, 0x00002000, +- 0x00202000, 0x10002008, 0x00000008, 0x10200008, +- 0x10200008, 0x00000000, 0x00202008, 0x10202000, +- 0x00002008, 0x00202000, 0x10202000, 0x10000000, +- 0x10002000, 0x00000008, 0x10200008, 0x00202000, +- 0x10202008, 0x00200000, 0x00002008, 0x10000008, +- 0x00200000, 0x10002000, 0x10000000, 0x00002008, +- 0x10000008, 0x10202008, 0x00202000, 0x10200000, +- 0x00202008, 0x10202000, 0x00000000, 0x10200008, +- 0x00000008, 0x00002000, 0x10200000, 0x00202008, +- 0x00002000, 0x00200008, 0x10002008, 0x00000000, +- 0x10202000, 0x10000000, 0x00200008, 0x10002008, +- }, +- { +- 0x08000820, 0x00000800, 0x00020000, 0x08020820, /* 8 */ +- 0x08000000, 0x08000820, 0x00000020, 0x08000000, +- 0x00020020, 0x08020000, 0x08020820, 0x00020800, +- 0x08020800, 0x00020820, 0x00000800, 0x00000020, +- 0x08020000, 0x08000020, 0x08000800, 0x00000820, +- 0x00020800, 0x00020020, 0x08020020, 0x08020800, +- 0x00000820, 0x00000000, 0x00000000, 0x08020020, +- 0x08000020, 0x08000800, 0x00020820, 0x00020000, +- 0x00020820, 0x00020000, 0x08020800, 0x00000800, +- 0x00000020, 0x08020020, 0x00000800, 0x00020820, +- 0x08000800, 0x00000020, 0x08000020, 0x08020000, +- 0x08020020, 0x08000000, 0x00020000, 0x08000820, +- 0x00000000, 0x08020820, 0x00020020, 0x08000020, +- 0x08020000, 0x08000800, 0x08000820, 0x00000000, +- 0x08020820, 0x00020800, 0x00020800, 0x00000820, +- 0x00000820, 0x00020020, 0x08000000, 0x08020800, +- }, +- { +- 0x40084010, 0x40004000, 0x00004000, 0x00084010, /* 2 */ +- 0x00080000, 0x00000010, 0x40080010, 0x40004010, +- 0x40000010, 0x40084010, 0x40084000, 0x40000000, +- 0x40004000, 0x00080000, 0x00000010, 0x40080010, +- 0x00084000, 0x00080010, 0x40004010, 0x00000000, +- 0x40000000, 0x00004000, 0x00084010, 0x40080000, +- 0x00080010, 0x40000010, 0x00000000, 0x00084000, +- 0x00004010, 0x40084000, 0x40080000, 0x00004010, +- 0x00000000, 0x00084010, 0x40080010, 0x00080000, +- 0x40004010, 0x40080000, 0x40084000, 0x00004000, +- 0x40080000, 0x40004000, 0x00000010, 0x40084010, +- 0x00084010, 0x00000010, 0x00004000, 0x40000000, +- 0x00004010, 0x40084000, 0x00080000, 0x40000010, +- 0x00080010, 0x40004010, 0x40000010, 0x00080010, +- 0x00084000, 0x00000000, 0x40004000, 0x00004010, +- 0x40000000, 0x40080010, 0x40084010, 0x00084000 +- }, +-}; +diff --git a/src/lib/crypto/builtin/des/f_tables.h b/src/lib/crypto/builtin/des/f_tables.h +deleted file mode 100644 +index fc91b566c..000000000 +--- a/src/lib/crypto/builtin/des/f_tables.h ++++ /dev/null +@@ -1,285 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/f_tables.h */ +-/* +- * Copyright (C) 1990 by the Massachusetts Institute of Technology. +- * All rights reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-/* +- * DES implementation donated by Dennis Ferguson +- */ +- +-/* +- * des_tables.h - declarations to import the DES tables, used internally +- * by some of the library routines. +- */ +-#ifndef __DES_TABLES_H__ +-#define __DES_TABLES_H__ /* nothing */ +- +-#include "k5-platform.h" +-/* +- * These may be declared const if you wish. Be sure to change the +- * declarations in des_tables.c as well. +- */ +-extern const unsigned DES_INT32 des_IP_table[256]; +-extern const unsigned DES_INT32 des_FP_table[256]; +-extern const unsigned DES_INT32 des_SP_table[8][64]; +- +-/* +- * Use standard shortforms to reference these to save typing +- */ +-#define IP des_IP_table +-#define FP des_FP_table +-#define SP des_SP_table +- +-#ifdef DEBUG +-#define DEB(foofraw) printf foofraw +-#else +-#define DEB(foofraw) /* nothing */ +-#endif +- +-/* +- * Code to do a DES round using the tables. Note that the E expansion +- * is easy to compute algorithmically, especially if done out-of-order. +- * Take a look at its form and compare it to everything involving temp +- * below. Since SP[0-7] don't have any bits in common set it is okay +- * to do the successive xor's. +- * +- * Note too that the SP table has been reordered to match the order of +- * the keys (if the original order of SP was 12345678, the reordered +- * table is 71354682). This is unnecessary, but was done since some +- * compilers seem to like you going through the matrix from beginning +- * to end. +- * +- * There is a difference in the best way to do this depending on whether +- * one is encrypting or decrypting. If encrypting we move forward through +- * the keys and hence should move forward through the table. If decrypting +- * we go back. Part of the need for this comes from trying to emulate +- * existing software which generates a single key schedule and uses it +- * both for encrypting and decrypting. Generating separate encryption +- * and decryption key schedules would allow one to use the same code +- * for both. +- * +- * left, right and temp should be unsigned DES_INT32 values. left and right +- * should be the high and low order parts of the cipher block at the +- * current stage of processing (this makes sense if you read the spec). +- * kp should be an unsigned DES_INT32 pointer which points at the current +- * set of subkeys in the key schedule. It is advanced to the next set +- * (i.e. by 8 bytes) when this is done. +- * +- * This occurs in the innermost loop of the DES function. The four +- * variables should really be in registers. +- * +- * When using this, the inner loop of the DES function might look like: +- * +- * for (i = 0; i < 8; i++) { +- * DES_SP_{EN,DE}CRYPT_ROUND(left, right, temp, kp); +- * DES_SP_{EN,DE}CRYPT_ROUND(right, left, temp, kp); +- * } +- * +- * Note the trick above. You are supposed to do 16 rounds, swapping +- * left and right at the end of each round. By doing two rounds at +- * a time and swapping left and right in the code we can avoid the +- * swaps altogether. +- */ +-#define DES_SP_ENCRYPT_ROUND(left, right, temp, kp) do { \ +- (temp) = (((right) >> 11) | ((right) << 21)) ^ *(kp)++; \ +- (left) ^= SP[0][((temp) >> 24) & 0x3f] \ +- | SP[1][((temp) >> 16) & 0x3f] \ +- | SP[2][((temp) >> 8) & 0x3f] \ +- | SP[3][((temp) ) & 0x3f]; \ +- (temp) = (((right) >> 23) | ((right) << 9)) ^ *(kp)++; \ +- (left) ^= SP[4][((temp) >> 24) & 0x3f] \ +- | SP[5][((temp) >> 16) & 0x3f] \ +- | SP[6][((temp) >> 8) & 0x3f] \ +- | SP[7][((temp) ) & 0x3f]; \ +- } while(0); +- +-#define DES_SP_DECRYPT_ROUND(left, right, temp, kp) do { \ +- (temp) = (((right) >> 23) | ((right) << 9)) ^ *(--(kp)); \ +- (left) ^= SP[7][((temp) ) & 0x3f] \ +- | SP[6][((temp) >> 8) & 0x3f] \ +- | SP[5][((temp) >> 16) & 0x3f] \ +- | SP[4][((temp) >> 24) & 0x3f]; \ +- (temp) = (((right) >> 11) | ((right) << 21)) ^ *(--(kp)); \ +- (left) ^= SP[3][((temp) ) & 0x3f] \ +- | SP[2][((temp) >> 8) & 0x3f] \ +- | SP[1][((temp) >> 16) & 0x3f] \ +- | SP[0][((temp) >> 24) & 0x3f]; \ +- } while (0); +- +-/* +- * Macros to help deal with the initial permutation table. Note +- * the IP table only deals with 32 bits at a time, allowing us to +- * collect the bits we need to deal with each half into an unsigned +- * DES_INT32. By carefully selecting how the bits are ordered we also +- * take advantages of symmetries in the table so that we can use a +- * single table to compute the permutation of all bytes. This sounds +- * complicated, but if you go through the process of designing the +- * table you'll find the symmetries fall right out. +- * +- * The follow macros compute the set of bits used to index the +- * table for produce the left and right permuted result. +- * +- * The inserted cast to unsigned DES_INT32 circumvents a bug in +- * the Macintosh MPW 3.2 C compiler which loses the unsignedness and +- * propagates the high-order bit in the shift. +- */ +-#define DES_IP_LEFT_BITS(left, right) \ +- ((((left) & 0x55555555) << 1) | ((right) & 0x55555555)) +-#define DES_IP_RIGHT_BITS(left, right) \ +- (((left) & 0xaaaaaaaa) | \ +- ( ( (unsigned DES_INT32) ((right) & 0xaaaaaaaa) ) >> 1)) +- +-/* +- * The following macro does an in-place initial permutation given +- * the current left and right parts of the block and a single +- * temporary. Use this more as a guide for rolling your own, though. +- * The best way to do the IP depends on the form of the data you +- * are dealing with. If you use this, though, try to make left, +- * right and temp unsigned DES_INT32s. +- */ +-#define DES_INITIAL_PERM(left, right, temp) do { \ +- (temp) = DES_IP_RIGHT_BITS((left), (right)); \ +- (right) = DES_IP_LEFT_BITS((left), (right)); \ +- (left) = IP[((right) >> 24) & 0xff] \ +- | (IP[((right) >> 16) & 0xff] << 1) \ +- | (IP[((right) >> 8) & 0xff] << 2) \ +- | (IP[(right) & 0xff] << 3); \ +- (right) = IP[((temp) >> 24) & 0xff] \ +- | (IP[((temp) >> 16) & 0xff] << 1) \ +- | (IP[((temp) >> 8) & 0xff] << 2) \ +- | (IP[(temp) & 0xff] << 3); \ +- } while(0); +- +-/* +- * Now the final permutation stuff. The same comments apply to +- * this as to the initial permutation, except that we use different +- * bits and shifts. +- * +- * The inserted cast to unsigned DES_INT32 circumvents a bug in +- * the Macintosh MPW 3.2 C compiler which loses the unsignedness and +- * propagates the high-order bit in the shift. +- */ +-#define DES_FP_LEFT_BITS(left, right) \ +- ((((left) & 0x0f0f0f0f) << 4) | ((right) & 0x0f0f0f0f)) +-#define DES_FP_RIGHT_BITS(left, right) \ +- (((left) & 0xf0f0f0f0) | \ +- ( ( (unsigned DES_INT32) ((right) & 0xf0f0f0f0) ) >> 4)) +- +- +-/* +- * Here is a sample final permutation. Note that there is a trick +- * here. DES requires swapping the left and right parts after the +- * last cipher round but before the final permutation. We do this +- * swapping internally, which is why left and right are confused +- * at the beginning. +- */ +-#define DES_FINAL_PERM(left, right, temp) do { \ +- (temp) = DES_FP_RIGHT_BITS((right), (left)); \ +- (right) = DES_FP_LEFT_BITS((right), (left)); \ +- (left) = (FP[((right) >> 24) & 0xff] << 6) \ +- | (FP[((right) >> 16) & 0xff] << 4) \ +- | (FP[((right) >> 8) & 0xff] << 2) \ +- | FP[(right) & 0xff]; \ +- (right) = (FP[((temp) >> 24) & 0xff] << 6) \ +- | (FP[((temp) >> 16) & 0xff] << 4) \ +- | (FP[((temp) >> 8) & 0xff] << 2) \ +- | FP[temp & 0xff]; \ +- } while(0); +- +- +-/* +- * Finally, as a sample of how all this might be held together, the +- * following two macros do in-place encryptions and decryptions. left +- * and right are two unsigned DES_INT32 variables which at the beginning +- * are expected to hold the clear (encrypted) block in host byte order +- * (left the high order four bytes, right the low order). At the end +- * they will contain the encrypted (clear) block. temp is an unsigned DES_INT32 +- * used as a temporary. kp is an unsigned DES_INT32 pointer pointing at +- * the start of the key schedule. All these should be in registers. +- * +- * You can probably do better than these by rewriting for particular +- * situations. These aren't bad, though. +- * +- * The DEB macros enable debugging when this code breaks (typically +- * when a buggy compiler breaks it), by printing the intermediate values +- * at each stage of the encryption, so that by comparing the output to +- * a known good machine, the location of the first error can be found. +- */ +-#define DES_DO_ENCRYPT_1(left, right, kp) \ +- do { \ +- int i; \ +- unsigned DES_INT32 temp1; \ +- DEB (("do_encrypt %8lX %8lX \n", left, right)); \ +- DES_INITIAL_PERM((left), (right), (temp1)); \ +- DEB ((" after IP %8lX %8lX\n", left, right)); \ +- for (i = 0; i < 8; i++) { \ +- DES_SP_ENCRYPT_ROUND((left), (right), (temp1), (kp)); \ +- DEB ((" round %2d %8lX %8lX \n", i*2, left, right)); \ +- DES_SP_ENCRYPT_ROUND((right), (left), (temp1), (kp)); \ +- DEB ((" round %2d %8lX %8lX \n", 1+i*2, left, right)); \ +- } \ +- DES_FINAL_PERM((left), (right), (temp1)); \ +- (kp) -= (2 * 16); \ +- DEB ((" after FP %8lX %8lX \n", left, right)); \ +- } while (0) +- +-#define DES_DO_DECRYPT_1(left, right, kp) \ +- do { \ +- int i; \ +- unsigned DES_INT32 temp2; \ +- DES_INITIAL_PERM((left), (right), (temp2)); \ +- (kp) += (2 * 16); \ +- for (i = 0; i < 8; i++) { \ +- DES_SP_DECRYPT_ROUND((left), (right), (temp2), (kp)); \ +- DES_SP_DECRYPT_ROUND((right), (left), (temp2), (kp)); \ +- } \ +- DES_FINAL_PERM((left), (right), (temp2)); \ +- } while (0) +- +-#if defined(CONFIG_SMALL) && !defined(CONFIG_SMALL_NO_CRYPTO) +-extern void krb5int_des_do_encrypt_2(unsigned DES_INT32 *l, +- unsigned DES_INT32 *r, +- const unsigned DES_INT32 *k); +-extern void krb5int_des_do_decrypt_2(unsigned DES_INT32 *l, +- unsigned DES_INT32 *r, +- const unsigned DES_INT32 *k); +-#define DES_DO_ENCRYPT(L,R,K) krb5int_des_do_encrypt_2(&(L), &(R), (K)) +-#define DES_DO_DECRYPT(L,R,K) krb5int_des_do_decrypt_2(&(L), &(R), (K)) +-#else +-#define DES_DO_ENCRYPT DES_DO_ENCRYPT_1 +-#define DES_DO_DECRYPT DES_DO_DECRYPT_1 +-#endif +- +-/* +- * These are handy dandy utility thingies for straightening out bytes. +- * Included here because they're used a couple of places. +- */ +-#define GET_HALF_BLOCK(lr, ip) ((lr) = load_32_be(ip), (ip) += 4) +-#define PUT_HALF_BLOCK(lr, op) (store_32_be(lr, op), (op) += 4) +- +-/* Shorthand that we'll need in several places, for creating values that +- really can hold 32 bits regardless of the prevailing int size. */ +-#define FF_UINT32 ((unsigned DES_INT32) 0xFF) +- +-#endif /* __DES_TABLES_H__ */ +diff --git a/src/lib/crypto/builtin/des/key_sched.c b/src/lib/crypto/builtin/des/key_sched.c +deleted file mode 100644 +index 87f02b6a9..000000000 +--- a/src/lib/crypto/builtin/des/key_sched.c ++++ /dev/null +@@ -1,62 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/key_sched.c */ +-/* +- * Copyright 1985, 1986, 1987, 1988, 1990 by the Massachusetts Institute +- * of Technology. +- * All Rights Reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-/* +- * This routine computes the DES key schedule given a key. The +- * permutations and shifts have been done at compile time, resulting +- * in a direct one-step mapping from the input key to the key +- * schedule. +- * +- * Also checks parity and weak keys. +- * +- * Watch out for the subscripts -- most effectively start at 1 instead +- * of at zero. Maybe some bugs in that area. +- * +- * In case the user wants to cache the computed key schedule, it is +- * passed as an arg. Also implies that caller has explicit control +- * over zeroing both the key schedule and the key. +- * +- * Originally written 6/85 by Steve Miller, MIT Project Athena. +- */ +- +-#include "k5-int.h" +-#include "des_int.h" +- +-int +-mit_des_key_sched(mit_des_cblock k, mit_des_key_schedule schedule) +-{ +- mit_des_make_key_sched(k,schedule); +- +- if (!mit_des_check_key_parity(k)) /* bad parity --> return -1 */ +- return(-1); +- +- if (mit_des_is_weak_key(k)) +- return(-2); +- +- /* if key was good, return 0 */ +- return 0; +-} +diff --git a/src/lib/crypto/builtin/des/keytest.data b/src/lib/crypto/builtin/des/keytest.data +deleted file mode 100644 +index 7ff34eedc..000000000 +--- a/src/lib/crypto/builtin/des/keytest.data ++++ /dev/null +@@ -1,171 +0,0 @@ +-0101010101010101 95F8A5E5DD31D900 8000000000000000 +-0101010101010101 DD7F121CA5015619 4000000000000000 +-0101010101010101 2E8653104F3834EA 2000000000000000 +-0101010101010101 4BD388FF6CD81D4F 1000000000000000 +-0101010101010101 20B9E767B2FB1456 0800000000000000 +-0101010101010101 55579380D77138EF 0400000000000000 +-0101010101010101 6CC5DEFAAF04512F 0200000000000000 +-0101010101010101 0D9F279BA5D87260 0100000000000000 +-0101010101010101 D9031B0271BD5A0A 0080000000000000 +-0101010101010101 424250B37C3DD951 0040000000000000 +-0101010101010101 B8061B7ECD9A21E5 0020000000000000 +-0101010101010101 F15D0F286B65BD28 0010000000000000 +-0101010101010101 ADD0CC8D6E5DEBA1 0008000000000000 +-0101010101010101 E6D5F82752AD63D1 0004000000000000 +-0101010101010101 ECBFE3BD3F591A5E 0002000000000000 +-0101010101010101 F356834379D165CD 0001000000000000 +-0101010101010101 2B9F982F20037FA9 0000800000000000 +-0101010101010101 889DE068A16F0BE6 0000400000000000 +-0101010101010101 E19E275D846A1298 0000200000000000 +-0101010101010101 329A8ED523D71AEC 0000100000000000 +-0101010101010101 E7FCE22557D23C97 0000080000000000 +-0101010101010101 12A9F5817FF2D65D 0000040000000000 +-0101010101010101 A484C3AD38DC9C19 0000020000000000 +-0101010101010101 FBE00A8A1EF8AD72 0000010000000000 +-0101010101010101 750D079407521363 0000008000000000 +-0101010101010101 64FEED9C724C2FAF 0000004000000000 +-0101010101010101 F02B263B328E2B60 0000002000000000 +-0101010101010101 9D64555A9A10B852 0000001000000000 +-0101010101010101 D106FF0BED5255D7 0000000800000000 +-0101010101010101 E1652C6B138C64A5 0000000400000000 +-0101010101010101 E428581186EC8F46 0000000200000000 +-0101010101010101 AEB5F5EDE22D1A36 0000000100000000 +-0101010101010101 E943D7568AEC0C5C 0000000080000000 +-0101010101010101 DF98C8276F54B04B 0000000040000000 +-0101010101010101 B160E4680F6C696F 0000000020000000 +-0101010101010101 FA0752B07D9C4AB8 0000000010000000 +-0101010101010101 CA3A2B036DBC8502 0000000008000000 +-0101010101010101 5E0905517BB59BCF 0000000004000000 +-0101010101010101 814EEB3B91D90726 0000000002000000 +-0101010101010101 4D49DB1532919C9F 0000000001000000 +-0101010101010101 25EB5FC3F8CF0621 0000000000800000 +-0101010101010101 AB6A20C0620D1C6F 0000000000400000 +-0101010101010101 79E90DBC98F92CCA 0000000000200000 +-0101010101010101 866ECEDD8072BB0E 0000000000100000 +-0101010101010101 8B54536F2F3E64A8 0000000000080000 +-0101010101010101 EA51D3975595B86B 0000000000040000 +-0101010101010101 CAFFC6AC4542DE31 0000000000020000 +-0101010101010101 8DD45A2DDF90796C 0000000000010000 +-0101010101010101 1029D55E880EC2D0 0000000000008000 +-0101010101010101 5D86CB23639DBEA9 0000000000004000 +-0101010101010101 1D1CA853AE7C0C5F 0000000000002000 +-0101010101010101 CE332329248F3228 0000000000001000 +-0101010101010101 8405D1ABE24FB942 0000000000000800 +-0101010101010101 E643D78090CA4207 0000000000000400 +-0101010101010101 48221B9937748A23 0000000000000200 +-0101010101010101 DD7C0BBD61FAFD54 0000000000000100 +-0101010101010101 2FBC291A570DB5C4 0000000000000080 +-0101010101010101 E07C30D7E4E26E12 0000000000000040 +-0101010101010101 0953E2258E8E90A1 0000000000000020 +-0101010101010101 5B711BC4CEEBF2EE 0000000000000010 +-0101010101010101 CC083F1E6D9E85F6 0000000000000008 +-0101010101010101 D2FD8867D50D2DFE 0000000000000004 +-0101010101010101 06E7EA22CE92708F 0000000000000002 +-0101010101010101 166B40B44ABA4BD6 0000000000000001 +-8001010101010101 0000000000000000 95A8D72813DAA94D +-4001010101010101 0000000000000000 0EEC1487DD8C26D5 +-2001010101010101 0000000000000000 7AD16FFB79C45926 +-1001010101010101 0000000000000000 D3746294CA6A6CF3 +-0801010101010101 0000000000000000 809F5F873C1FD761 +-0401010101010101 0000000000000000 C02FAFFEC989D1FC +-0201010101010101 0000000000000000 4615AA1D33E72F10 +-0180010101010101 0000000000000000 2055123350C00858 +-0140010101010101 0000000000000000 DF3B99D6577397C8 +-0120010101010101 0000000000000000 31FE17369B5288C9 +-0110010101010101 0000000000000000 DFDD3CC64DAE1642 +-0108010101010101 0000000000000000 178C83CE2B399D94 +-0104010101010101 0000000000000000 50F636324A9B7F80 +-0102010101010101 0000000000000000 A8468EE3BC18F06D +-0101800101010101 0000000000000000 A2DC9E92FD3CDE92 +-0101400101010101 0000000000000000 CAC09F797D031287 +-0101200101010101 0000000000000000 90BA680B22AEB525 +-0101100101010101 0000000000000000 CE7A24F350E280B6 +-0101080101010101 0000000000000000 882BFF0AA01A0B87 +-0101040101010101 0000000000000000 25610288924511C2 +-0101020101010101 0000000000000000 C71516C29C75D170 +-0101018001010101 0000000000000000 5199C29A52C9F059 +-0101014001010101 0000000000000000 C22F0A294A71F29F +-0101012001010101 0000000000000000 EE371483714C02EA +-0101011001010101 0000000000000000 A81FBD448F9E522F +-0101010801010101 0000000000000000 4F644C92E192DFED +-0101010401010101 0000000000000000 1AFA9A66A6DF92AE +-0101010201010101 0000000000000000 B3C1CC715CB879D8 +-0101010180010101 0000000000000000 19D032E64AB0BD8B +-0101010140010101 0000000000000000 3CFAA7A7DC8720DC +-0101010120010101 0000000000000000 B7265F7F447AC6F3 +-0101010110010101 0000000000000000 9DB73B3C0D163F54 +-0101010108010101 0000000000000000 8181B65BABF4A975 +-0101010104010101 0000000000000000 93C9B64042EAA240 +-0101010102010101 0000000000000000 5570530829705592 +-0101010101800101 0000000000000000 8638809E878787A0 +-0101010101400101 0000000000000000 41B9A79AF79AC208 +-0101010101200101 0000000000000000 7A9BE42F2009A892 +-0101010101100101 0000000000000000 29038D56BA6D2745 +-0101010101080101 0000000000000000 5495C6ABF1E5DF51 +-0101010101040101 0000000000000000 AE13DBD561488933 +-0101010101020101 0000000000000000 024D1FFA8904E389 +-0101010101018001 0000000000000000 D1399712F99BF02E +-0101010101014001 0000000000000000 14C1D7C1CFFEC79E +-0101010101012001 0000000000000000 1DE5279DAE3BED6F +-0101010101011001 0000000000000000 E941A33F85501303 +-0101010101010801 0000000000000000 DA99DBBC9A03F379 +-0101010101010401 0000000000000000 B7FC92F91D8E92E9 +-0101010101010201 0000000000000000 AE8E5CAA3CA04E85 +-0101010101010180 0000000000000000 9CC62DF43B6EED74 +-0101010101010140 0000000000000000 D863DBB5C59A91A0 +-0101010101010120 0000000000000000 A1AB2190545B91D7 +-0101010101010110 0000000000000000 0875041E64C570F7 +-0101010101010108 0000000000000000 5A594528BEBEF1CC +-0101010101010104 0000000000000000 FCDB3291DE21F0C0 +-0101010101010102 0000000000000000 869EFD7F9F265A09 +-1046913489980131 0000000000000000 88D55E54F54C97B4 +-1007103489988020 0000000000000000 0C0CC00C83EA48FD +-10071034C8980120 0000000000000000 83BC8EF3A6570183 +-1046103489988020 0000000000000000 DF725DCAD94EA2E9 +-1086911519190101 0000000000000000 E652B53B550BE8B0 +-1086911519580101 0000000000000000 AF527120C485CBB0 +-5107B01519580101 0000000000000000 0F04CE393DB926D5 +-1007B01519190101 0000000000000000 C9F00FFC74079067 +-3107915498080101 0000000000000000 7CFD82A593252B4E +-3107919498080101 0000000000000000 CB49A2F9E91363E3 +-10079115B9080140 0000000000000000 00B588BE70D23F56 +-3107911598080140 0000000000000000 406A9A6AB43399AE +-1007D01589980101 0000000000000000 6CB773611DCA9ADA +-9107911589980101 0000000000000000 67FD21C17DBB5D70 +-9107D01589190101 0000000000000000 9592CB4110430787 +-1007D01598980120 0000000000000000 A6B7FF68A318DDD3 +-1007940498190101 0000000000000000 4D102196C914CA16 +-0107910491190401 0000000000000000 2DFA9F4573594965 +-0107910491190101 0000000000000000 B46604816C0E0774 +-0107940491190401 0000000000000000 6E7E6221A4F34E87 +-19079210981A0101 0000000000000000 AA85E74643233199 +-1007911998190801 0000000000000000 2E5A19DB4D1962D6 +-10079119981A0801 0000000000000000 23A866A809D30894 +-1007921098190101 0000000000000000 D812D961F017D320 +-100791159819010B 0000000000000000 055605816E58608F +-1004801598190101 0000000000000000 ABD88E8B1B7716F1 +-1004801598190102 0000000000000000 537AC95BE69DA1E1 +-1004801598190108 0000000000000000 AED0F6AE3C25CDD8 +-1002911598100104 0000000000000000 B3E35A5EE53E7B8D +-1002911598190104 0000000000000000 61C79C71921A2EF8 +-1002911598100201 0000000000000000 E2F5728F0995013C +-1002911698100101 0000000000000000 1AEAC39A61F0A464 +-7CA110454A1A6E57 01A1D6D039776742 690F5B0D9A26939B +-0131D9619DC1376E 5CD54CA83DEF57DA 7A389D10354BD271 +-07A1133E4A0B2686 0248D43806F67172 868EBB51CAB4599A +-3849674C2602319E 51454B582DDF440A 7178876E01F19B2A +-04B915BA43FEB5B6 42FD443059577FA2 AF37FB421F8C4095 +-0113B970FD34F2CE 059B5E0851CF143A 86A560F10EC6D85B +-0170F175468FB5E6 0756D8E0774761D2 0CD3DA020021DC09 +-43297FAD38E373FE 762514B829BF486A EA676B2CB7DB2B7A +-07A7137045DA2A16 3BDD119049372802 DFD64A815CAF1A0F +-04689104C2FD3B2F 26955F6835AF609A 5C513C9C4886C088 +-37D06BB516CB7546 164D5E404F275232 0A2AEEAE3FF4AB77 +-1F08260D1AC2465E 6B056E18759F5CCA EF1BF03E5DFA575A +-584023641ABA6176 004BD6EF09176062 88BF0DB6D70DEE56 +-025816164629B007 480D39006EE762F2 A1F9915541020B56 +-49793EBC79B3258F 437540C8698F3CFA 6FBF1CAFCFFD0556 +-4FB05E1515AB73A7 072D43A077075292 2F22E49BAB7CA1AC +-49E95D6D4CA229BF 02FE55778117F12A 5A6B612CC26CCE4A +-018310DC409B26D6 1D9D5C5018F728C2 5F4C038ED12B2E41 +-1C587F1C13924FEF 305532286D6F295A 63FAC0D034D9F793 +diff --git a/src/lib/crypto/builtin/des/t_verify.c b/src/lib/crypto/builtin/des/t_verify.c +deleted file mode 100644 +index 4a19933ca..000000000 +--- a/src/lib/crypto/builtin/des/t_verify.c ++++ /dev/null +@@ -1,395 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/t_verify.c */ +-/* +- * Copyright 1988, 1990 by the Massachusetts Institute of Technology. +- * All Rights Reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +-/* +- * Copyright (C) 1998 by the FundsXpress, INC. +- * +- * All rights reserved. +- * +- * Export of this software from the United States of America may require +- * a specific license from the United States Government. It is the +- * responsibility of any person or organization contemplating export to +- * obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of FundsXpress. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. FundsXpress makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- * +- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +- */ +- +-/* +- * +- * Program to test the correctness of the DES library +- * implementation. +- * +- * exit returns 0 ==> success +- * -1 ==> error +- */ +- +-#include "k5-int.h" +-#include "des_int.h" +-#include +-#include "com_err.h" +- +-static void do_encrypt(unsigned char *, unsigned char *); +-static void do_decrypt(unsigned char *, unsigned char *); +- +-char *progname; +-int nflag = 2; +-int vflag; +-int mflag; +-int zflag; +-int pid; +-int mit_des_debug; +- +-unsigned char cipher_text[64]; +-unsigned char clear_text[64] = "Now is the time for all " ; +-unsigned char clear_text2[64] = "7654321 Now is the time for "; +-unsigned char clear_text3[64] = {2,0,0,0, 1,0,0,0}; +-unsigned char output[64]; +-unsigned char zero_text[8] = {0x0,0,0,0,0,0,0,0}; +-unsigned char msb_text[8] = {0x0,0,0,0, 0,0,0,0x40}; /* to ANSI MSB */ +-unsigned char *input; +- +-/* 0x0123456789abcdef */ +-unsigned char default_key[8] = { +- 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef +-}; +-unsigned char key2[8] = { 0x08,0x19,0x2a,0x3b,0x4c,0x5d,0x6e,0x7f }; +-unsigned char key3[8] = { 0x80,1,1,1,1,1,1,1 }; +-mit_des_cblock s_key; +-unsigned char default_ivec[8] = { +- 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef +-}; +-unsigned char *ivec; +-unsigned char zero_key[8] = {1,1,1,1,1,1,1,1}; /* just parity bits */ +- +-unsigned char cipher1[8] = { +- 0x25,0xdd,0xac,0x3e,0x96,0x17,0x64,0x67 +-}; +-unsigned char cipher2[8] = { +- 0x3f,0xa4,0x0e,0x8a,0x98,0x4d,0x48,0x15 +-}; +-unsigned char cipher3[64] = { +- 0xe5,0xc7,0xcd,0xde,0x87,0x2b,0xf2,0x7c, +- 0x43,0xe9,0x34,0x00,0x8c,0x38,0x9c,0x0f, +- 0x68,0x37,0x88,0x49,0x9a,0x7c,0x05,0xf6 +-}; +-unsigned char checksum[8] = { +- 0x58,0xd2,0xe7,0x7e,0x86,0x06,0x27,0x33 +-}; +- +-unsigned char zresult[8] = { +- 0x8c, 0xa6, 0x4d, 0xe9, 0xc1, 0xb1, 0x23, 0xa7 +-}; +- +-unsigned char mresult[8] = { +- 0xa3, 0x80, 0xe0, 0x2a, 0x6b, 0xe5, 0x46, 0x96 +-}; +- +- +-/* +- * Can also add : +- * plaintext = 0, key = 0, cipher = 0x8ca64de9c1b123a7 (or is it a 1?) +- */ +- +-mit_des_key_schedule sched; +- +-int +-main(argc,argv) +- int argc; +- char *argv[]; +-{ +- /* Local Declarations */ +- size_t in_length; +- int retval; +- int i, j; +- +-#ifdef WINDOWS +- /* Set screen window buffer to infinite size -- MS default is tiny. */ +- _wsetscreenbuf (fileno (stdout), _WINBUFINF); +-#endif +- progname=argv[0]; /* salt away invoking program */ +- +- while (--argc > 0 && (*++argv)[0] == '-') +- for (i=1; argv[0][i] != '\0'; i++) { +- switch (argv[0][i]) { +- +- /* debug flag */ +- case 'd': +- mit_des_debug=3; +- continue; +- +- case 'z': +- zflag = 1; +- continue; +- +- case 'm': +- mflag = 1; +- continue; +- +- default: +- printf("%s: illegal flag \"%c\" ", +- progname,argv[0][i]); +- exit(1); +- } +- }; +- +- if (argc) { +- fprintf(stderr, "Usage: %s [-dmz]\n", progname); +- exit(1); +- } +- +- /* do some initialisation */ +- +- /* use known input and key */ +- +- /* ECB zero text zero key */ +- if (zflag) { +- input = zero_text; +- mit_des_key_sched(zero_key, sched); +- printf("plaintext = key = 0, cipher = 0x8ca64de9c1b123a7\n"); +- do_encrypt(input,cipher_text); +- printf("\tcipher = (low to high bytes)\n\t\t"); +- for (j = 0; j<=7; j++) +- printf("%02x ",cipher_text[j]); +- printf("\n"); +- do_decrypt(output,cipher_text); +- if ( memcmp((char *)cipher_text, (char *)zresult, 8) ) { +- printf("verify: error in zero key test\n"); +- exit(-1); +- } +- +- exit(0); +- } +- +- if (mflag) { +- input = msb_text; +- mit_des_key_sched(key3, sched); +- printf("plaintext = 0x00 00 00 00 00 00 00 40, "); +- printf("key = 0x80 01 01 01 01 01 01 01\n"); +- printf(" cipher = 0xa380e02a6be54696\n"); +- do_encrypt(input,cipher_text); +- printf("\tcipher = (low to high bytes)\n\t\t"); +- for (j = 0; j<=7; j++) { +- printf("%02x ",cipher_text[j]); +- } +- printf("\n"); +- do_decrypt(output,cipher_text); +- if ( memcmp((char *)cipher_text, (char *)mresult, 8) ) { +- printf("verify: error in msb test\n"); +- exit(-1); +- } +- exit(0); +- } +- +- /* ECB mode Davies and Price */ +- { +- input = zero_text; +- mit_des_key_sched(key2, sched); +- printf("Examples per FIPS publication 81, keys ivs and cipher\n"); +- printf("in hex. These are the correct answers, see below for\n"); +- printf("the actual answers.\n\n"); +- printf("Examples per Davies and Price.\n\n"); +- printf("EXAMPLE ECB\tkey = 08192a3b4c5d6e7f\n"); +- printf("\tclear = 0\n"); +- printf("\tcipher = 25 dd ac 3e 96 17 64 67\n"); +- printf("ACTUAL ECB\n"); +- printf("\tclear \"%s\"\n", input); +- do_encrypt(input,cipher_text); +- printf("\tcipher = (low to high bytes)\n\t\t"); +- for (j = 0; j<=7; j++) +- printf("%02x ",cipher_text[j]); +- printf("\n\n"); +- do_decrypt(output,cipher_text); +- if ( memcmp((char *)cipher_text, (char *)cipher1, 8) ) { +- printf("verify: error in ECB encryption\n"); +- exit(-1); +- } +- else +- printf("verify: ECB encryption is correct\n\n"); +- } +- +- /* ECB mode */ +- { +- mit_des_key_sched(default_key, sched); +- input = clear_text; +- ivec = default_ivec; +- printf("EXAMPLE ECB\tkey = 0123456789abcdef\n"); +- printf("\tclear = \"Now is the time for all \"\n"); +- printf("\tcipher = 3f a4 0e 8a 98 4d 48 15 ...\n"); +- printf("ACTUAL ECB\n\tclear \"%s\"",input); +- do_encrypt(input,cipher_text); +- printf("\n\tcipher = (low to high bytes)\n\t\t"); +- for (j = 0; j<=7; j++) { +- printf("%02x ",cipher_text[j]); +- } +- printf("\n\n"); +- do_decrypt(output,cipher_text); +- if ( memcmp((char *)cipher_text, (char *)cipher2, 8) ) { +- printf("verify: error in ECB encryption\n"); +- exit(-1); +- } +- else +- printf("verify: ECB encryption is correct\n\n"); +- } +- +- /* CBC mode */ +- printf("EXAMPLE CBC\tkey = 0123456789abcdef"); +- printf("\tiv = 1234567890abcdef\n"); +- printf("\tclear = \"Now is the time for all \"\n"); +- printf("\tcipher =\te5 c7 cd de 87 2b f2 7c\n"); +- printf("\t\t\t43 e9 34 00 8c 38 9c 0f\n"); +- printf("\t\t\t68 37 88 49 9a 7c 05 f6\n"); +- +- printf("ACTUAL CBC\n\tclear \"%s\"\n",input); +- in_length = strlen((char *)input); +- if ((retval = mit_des_cbc_encrypt((const mit_des_cblock *) input, +- (mit_des_cblock *) cipher_text, +- (size_t) in_length, +- sched, +- ivec, +- MIT_DES_ENCRYPT))) { +- com_err("des verify", retval, "can't encrypt"); +- exit(-1); +- } +- printf("\tciphertext = (low to high bytes)\n"); +- for (i = 0; i <= 2; i++) { +- printf("\t\t"); +- for (j = 0; j <= 7; j++) { +- printf("%02x ",cipher_text[i*8+j]); +- } +- printf("\n"); +- } +- if ((retval = mit_des_cbc_encrypt((const mit_des_cblock *) cipher_text, +- (mit_des_cblock *) clear_text, +- (size_t) in_length, +- sched, +- ivec, +- MIT_DES_DECRYPT))) { +- com_err("des verify", retval, "can't decrypt"); +- exit(-1); +- } +- printf("\tdecrypted clear_text = \"%s\"\n",clear_text); +- +- if ( memcmp((char *)cipher_text, (char *)cipher3, in_length) ) { +- printf("verify: error in CBC encryption\n"); +- exit(-1); +- } +- else +- printf("verify: CBC encryption is correct\n\n"); +- +- printf("EXAMPLE CBC checksum"); +- printf("\tkey = 0123456789abcdef\tiv = 1234567890abcdef\n"); +- printf("\tclear =\t\t\"7654321 Now is the time for \"\n"); +- printf("\tchecksum\t58 d2 e7 7e 86 06 27 33, "); +- printf("or some part thereof\n"); +- input = clear_text2; +- mit_des_cbc_cksum(input,cipher_text, strlen((char *)input), +- sched,ivec); +- printf("ACTUAL CBC checksum\n"); +- printf("\t\tencrypted cksum = (low to high bytes)\n\t\t"); +- for (j = 0; j<=7; j++) +- printf("%02x ",cipher_text[j]); +- printf("\n\n"); +- if ( memcmp((char *)cipher_text, (char *)checksum, 8) ) { +- printf("verify: error in CBC checksum\n"); +- exit(-1); +- } +- else +- printf("verify: CBC checksum is correct\n\n"); +- +- exit(0); +-} +- +-static void +-do_encrypt(in,out) +- unsigned char *in; +- unsigned char *out; +-{ +- int i, j; +- for (i =1; i<=nflag; i++) { +- mit_des_cbc_encrypt((const mit_des_cblock *)in, +- (mit_des_cblock *)out, +- 8, +- sched, +- zero_text, +- MIT_DES_ENCRYPT); +- if (mit_des_debug) { +- printf("\nclear %s\n",in); +- for (j = 0; j<=7; j++) +- printf("%02X ",in[j] & 0xff); +- printf("\tcipher "); +- for (j = 0; j<=7; j++) +- printf("%02X ",out[j] & 0xff); +- } +- } +-} +- +-static void +-do_decrypt(in,out) +- unsigned char *out; +- unsigned char *in; +- /* try to invert it */ +-{ +- int i, j; +- for (i =1; i<=nflag; i++) { +- mit_des_cbc_encrypt((const mit_des_cblock *)out, +- (mit_des_cblock *)in, +- 8, +- sched, +- zero_text, +- MIT_DES_DECRYPT); +- if (mit_des_debug) { +- printf("clear %s\n",in); +- for (j = 0; j<=7; j++) +- printf("%02X ",in[j] & 0xff); +- printf("\tcipher "); +- for (j = 0; j<=7; j++) +- printf("%02X ",out[j] & 0xff); +- } +- } +-} +- +-/* +- * Fake out the DES library, for the purposes of testing. +- */ +- +-int +-mit_des_is_weak_key(key) +- mit_des_cblock key; +-{ +- return 0; /* fake it out for testing */ +-} +diff --git a/src/lib/crypto/builtin/des/weak_key.c b/src/lib/crypto/builtin/des/weak_key.c +deleted file mode 100644 +index eb41b267d..000000000 +--- a/src/lib/crypto/builtin/des/weak_key.c ++++ /dev/null +@@ -1,86 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/builtin/des/weak_key.c */ +-/* +- * Copyright 1989,1990 by the Massachusetts Institute of Technology. +- * All Rights Reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-/* +- * Under U.S. law, this software may not be exported outside the US +- * without license from the U.S. Commerce department. +- * +- * These routines form the library interface to the DES facilities. +- * +- * Originally written 8/85 by Steve Miller, MIT Project Athena. +- */ +- +-#include "k5-int.h" +-#include "des_int.h" +- +-/* +- * The following are the weak DES keys: +- */ +-static const mit_des_cblock weak[16] = { +- /* weak keys */ +- {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01}, +- {0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe}, +- {0x1f,0x1f,0x1f,0x1f,0x0e,0x0e,0x0e,0x0e}, +- {0xe0,0xe0,0xe0,0xe0,0xf1,0xf1,0xf1,0xf1}, +- +- /* semi-weak */ +- {0x01,0xfe,0x01,0xfe,0x01,0xfe,0x01,0xfe}, +- {0xfe,0x01,0xfe,0x01,0xfe,0x01,0xfe,0x01}, +- +- {0x1f,0xe0,0x1f,0xe0,0x0e,0xf1,0x0e,0xf1}, +- {0xe0,0x1f,0xe0,0x1f,0xf1,0x0e,0xf1,0x0e}, +- +- {0x01,0xe0,0x01,0xe0,0x01,0xf1,0x01,0xf1}, +- {0xe0,0x01,0xe0,0x01,0xf1,0x01,0xf1,0x01}, +- +- {0x1f,0xfe,0x1f,0xfe,0x0e,0xfe,0x0e,0xfe}, +- {0xfe,0x1f,0xfe,0x1f,0xfe,0x0e,0xfe,0x0e}, +- +- {0x01,0x1f,0x01,0x1f,0x01,0x0e,0x01,0x0e}, +- {0x1f,0x01,0x1f,0x01,0x0e,0x01,0x0e,0x01}, +- +- {0xe0,0xfe,0xe0,0xfe,0xf1,0xfe,0xf1,0xfe}, +- {0xfe,0xe0,0xfe,0xe0,0xfe,0xf1,0xfe,0xf1} +-}; +- +-/* +- * mit_des_is_weak_key: returns true iff key is a [semi-]weak des key. +- * +- * Requires: key has correct odd parity. +- */ +-int +-mit_des_is_weak_key(mit_des_cblock key) +-{ +- unsigned int i; +- const mit_des_cblock *weak_p = weak; +- +- for (i = 0; i < (sizeof(weak)/sizeof(mit_des_cblock)); i++) { +- if (!memcmp(weak_p++,key,sizeof(mit_des_cblock))) +- return 1; +- } +- +- return 0; +-} +diff --git a/src/lib/crypto/builtin/enc_provider/Makefile.in b/src/lib/crypto/builtin/enc_provider/Makefile.in +index 3459e1d0e..af6276b96 100644 +--- a/src/lib/crypto/builtin/enc_provider/Makefile.in ++++ b/src/lib/crypto/builtin/enc_provider/Makefile.in +@@ -1,7 +1,6 @@ + mydir=lib$(S)crypto$(S)builtin$(S)enc_provider + BUILDTOP=$(REL)..$(S)..$(S)..$(S).. +-LOCALINCLUDES = -I$(srcdir)/../des \ +- -I$(srcdir)/../aes \ ++LOCALINCLUDES = -I$(srcdir)/../aes \ + -I$(srcdir)/../camellia \ + -I$(srcdir)/../../krb \ + -I$(srcdir)/.. +@@ -11,19 +10,16 @@ LOCALINCLUDES = -I$(srcdir)/../des \ + ##DOS##OBJFILE = ..\..\$(OUTPRE)enc_provider.lst + + STLIBOBJS= \ +- des3.o \ + rc4.o \ + aes.o \ + camellia.o + + OBJS= \ +- $(OUTPRE)des3.$(OBJEXT) \ + $(OUTPRE)aes.$(OBJEXT) \ + $(OUTPRE)camellia.$(OBJEXT) \ + $(OUTPRE)rc4.$(OBJEXT) + + SRCS= \ +- $(srcdir)/des3.c \ + $(srcdir)/aes.c \ + $(srcdir)/camellia.c \ + $(srcdir)/rc4.c +diff --git a/src/lib/crypto/builtin/enc_provider/deps b/src/lib/crypto/builtin/enc_provider/deps +index ea4ffecd8..061289a91 100644 +--- a/src/lib/crypto/builtin/enc_provider/deps ++++ b/src/lib/crypto/builtin/enc_provider/deps +@@ -1,19 +1,6 @@ + # + # Generated makefile dependencies follow. + # +-des3.so des3.po $(OUTPRE)des3.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ +- $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(srcdir)/../../krb/crypto_int.h \ +- $(srcdir)/../aes/aes.h $(srcdir)/../aes/brg_types.h \ +- $(srcdir)/../crypto_mod.h $(srcdir)/../des/des_int.h \ +- $(srcdir)/../sha2/sha2.h $(top_srcdir)/include/k5-buf.h \ +- $(top_srcdir)/include/k5-err.h $(top_srcdir)/include/k5-gmt_mktime.h \ +- $(top_srcdir)/include/k5-int-pkinit.h $(top_srcdir)/include/k5-int.h \ +- $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-plugin.h \ +- $(top_srcdir)/include/k5-thread.h $(top_srcdir)/include/k5-trace.h \ +- $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/authdata_plugin.h \ +- $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/port-sockets.h \ +- $(top_srcdir)/include/socket-utils.h des3.c + aes.so aes.po $(OUTPRE)aes.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ + $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ + $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(srcdir)/../../krb/crypto_int.h \ +diff --git a/src/lib/crypto/builtin/enc_provider/des3.c b/src/lib/crypto/builtin/enc_provider/des3.c +deleted file mode 100644 +index 9b8244223..000000000 +--- a/src/lib/crypto/builtin/enc_provider/des3.c ++++ /dev/null +@@ -1,105 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* +- * Copyright (C) 1998 by the FundsXpress, INC. +- * +- * All rights reserved. +- * +- * Export of this software from the United States of America may require +- * a specific license from the United States Government. It is the +- * responsibility of any person or organization contemplating export to +- * obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of FundsXpress. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. FundsXpress makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- * +- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +- */ +- +-#include "crypto_int.h" +-#include "des_int.h" +- +-static krb5_error_code +-validate_and_schedule(krb5_key key, const krb5_data *ivec, +- const krb5_crypto_iov *data, size_t num_data, +- mit_des3_key_schedule *schedule) +-{ +- if (key->keyblock.length != 24) +- return(KRB5_BAD_KEYSIZE); +- if (iov_total_length(data, num_data, FALSE) % 8 != 0) +- return(KRB5_BAD_MSIZE); +- if (ivec && (ivec->length != 8)) +- return(KRB5_BAD_MSIZE); +- +- switch (mit_des3_key_sched(*(mit_des3_cblock *)key->keyblock.contents, +- *schedule)) { +- case -1: +- return(KRB5DES_BAD_KEYPAR); +- case -2: +- return(KRB5DES_WEAK_KEY); +- } +- return 0; +-} +- +-static krb5_error_code +-k5_des3_encrypt(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, +- size_t num_data) +-{ +- mit_des3_key_schedule schedule; +- krb5_error_code err; +- +- err = validate_and_schedule(key, ivec, data, num_data, &schedule); +- if (err) +- return err; +- +- /* this has a return value, but the code always returns zero */ +- krb5int_des3_cbc_encrypt(data, num_data, +- schedule[0], schedule[1], schedule[2], +- ivec != NULL ? (unsigned char *) ivec->data : +- NULL); +- +- zap(schedule, sizeof(schedule)); +- +- return(0); +-} +- +-static krb5_error_code +-k5_des3_decrypt(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, +- size_t num_data) +-{ +- mit_des3_key_schedule schedule; +- krb5_error_code err; +- +- err = validate_and_schedule(key, ivec, data, num_data, &schedule); +- if (err) +- return err; +- +- /* this has a return value, but the code always returns zero */ +- krb5int_des3_cbc_decrypt(data, num_data, +- schedule[0], schedule[1], schedule[2], +- ivec != NULL ? (unsigned char *) ivec->data : +- NULL); +- +- zap(schedule, sizeof(schedule)); +- +- return 0; +-} +- +-const struct krb5_enc_provider krb5int_enc_des3 = { +- 8, +- 21, 24, +- k5_des3_encrypt, +- k5_des3_decrypt, +- NULL, +- krb5int_des_init_state, +- krb5int_default_free_state +-}; +diff --git a/src/lib/crypto/crypto_tests/t_cf2.expected b/src/lib/crypto/crypto_tests/t_cf2.expected +index f8251a16c..bc6aa50c8 100644 +--- a/src/lib/crypto/crypto_tests/t_cf2.expected ++++ b/src/lib/crypto/crypto_tests/t_cf2.expected +@@ -1,6 +1,5 @@ + 97df97e4b798b29eb31ed7280287a92a + 4d6ca4e629785c1f01baf55e2e548566b9617ae3a96868c337cb93b5e72b1c7b +-e58f9eb643862c13ad38e529313462a7f73e62834fe54a01 + 24d7f6b6bae4e5c00d2082c5ebab3672 + edd02a39d2dbde31611c16e610be062c + 67f6ea530aea85a37dcbb23349ea52dcc61ca8493ff557252327fd8304341584 +diff --git a/src/lib/crypto/crypto_tests/t_cf2.in b/src/lib/crypto/crypto_tests/t_cf2.in +index 73e2f8fbc..c4d23b506 100644 +--- a/src/lib/crypto/crypto_tests/t_cf2.in ++++ b/src/lib/crypto/crypto_tests/t_cf2.in +@@ -8,11 +8,6 @@ key1 + key2 + a + b +-16 +-key1 +-key2 +-a +-b + 23 + key1 + key2 +diff --git a/src/lib/crypto/crypto_tests/t_cksums.c b/src/lib/crypto/crypto_tests/t_cksums.c +index 8297fcbf5..3063d12ec 100644 +--- a/src/lib/crypto/crypto_tests/t_cksums.c ++++ b/src/lib/crypto/crypto_tests/t_cksums.c +@@ -59,16 +59,6 @@ struct test { + "\xDA\x39\xA3\xEE\x5E\x6B\x4B\x0D\x32\x55\xBF\xEF\x95\x60\x18\x90" + "\xAF\xD8\x07\x09" } + }, +- { +- { KV5M_DATA, 9, "six seven" }, +- CKSUMTYPE_HMAC_SHA1_DES3, ENCTYPE_DES3_CBC_SHA1, 2, +- { KV5M_DATA, 24, +- "\x7A\x25\xDF\x89\x92\x29\x6D\xCE\xDA\x0E\x13\x5B\xC4\x04\x6E\x23" +- "\x75\xB3\xC1\x4C\x98\xFB\xC1\x62" }, +- { KV5M_DATA, 20, +- "\x0E\xEF\xC9\xC3\xE0\x49\xAA\xBC\x1B\xA5\xC4\x01\x67\x7D\x9A\xB6" +- "\x99\x08\x2B\xB4" } +- }, + { + { KV5M_DATA, 37, "eight nine ten eleven twelve thirteen" }, + CKSUMTYPE_HMAC_SHA1_96_AES128, ENCTYPE_AES128_CTS_HMAC_SHA1_96, 3, +diff --git a/src/lib/crypto/crypto_tests/t_decrypt.c b/src/lib/crypto/crypto_tests/t_decrypt.c +index a40a85500..716f2c337 100644 +--- a/src/lib/crypto/crypto_tests/t_decrypt.c ++++ b/src/lib/crypto/crypto_tests/t_decrypt.c +@@ -39,62 +39,6 @@ struct test { + krb5_data keybits; + krb5_data ciphertext; + } test_cases[] = { +- { +- ENCTYPE_DES3_CBC_SHA1, +- { KV5M_DATA, 0, "", }, 0, +- { KV5M_DATA, 24, +- "\x7A\x25\xDF\x89\x92\x29\x6D\xCE\xDA\x0E\x13\x5B\xC4\x04\x6E\x23" +- "\x75\xB3\xC1\x4C\x98\xFB\xC1\x62" }, +- { KV5M_DATA, 28, +- "\x54\x8A\xF4\xD5\x04\xF7\xD7\x23\x30\x3F\x12\x17\x5F\xE8\x38\x6B" +- "\x7B\x53\x35\xA9\x67\xBA\xD6\x1F\x3B\xF0\xB1\x43" } +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- { KV5M_DATA, 1, "1", }, 1, +- { KV5M_DATA, 24, +- "\xBC\x07\x83\x89\x15\x13\xD5\xCE\x57\xBC\x13\x8F\xD3\xC1\x1A\xE6" +- "\x40\x45\x23\x85\x32\x29\x62\xB6" }, +- { KV5M_DATA, 36, +- "\x9C\x3C\x1D\xBA\x47\x47\xD8\x5A\xF2\x91\x6E\x47\x45\xF2\xDC\xE3" +- "\x80\x46\x79\x6E\x51\x04\xBC\xCD\xFB\x66\x9A\x91\xD4\x4B\xC3\x56" +- "\x66\x09\x45\xC7" } +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- { KV5M_DATA, 9, "9 bytesss", }, 2, +- { KV5M_DATA, 24, +- "\x2F\xD0\xF7\x25\xCE\x04\x10\x0D\x2F\xC8\xA1\x80\x98\x83\x1F\x85" +- "\x0B\x45\xD9\xEF\x85\x0B\xD9\x20" }, +- { KV5M_DATA, 44, +- "\xCF\x91\x44\xEB\xC8\x69\x79\x81\x07\x5A\x8B\xAD\x8D\x74\xE5\xD7" +- "\xD5\x91\xEB\x7D\x97\x70\xC7\xAD\xA2\x5E\xE8\xC5\xB3\xD6\x94\x44" +- "\xDF\xEC\x79\xA5\xB7\xA0\x14\x82\xD9\xAF\x74\xE6" } +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- { KV5M_DATA, 13, "13 bytes byte", }, 3, +- { KV5M_DATA, 24, +- "\x0D\xD5\x20\x94\xE0\xF4\x1C\xEC\xCB\x5B\xE5\x10\xA7\x64\xB3\x51" +- "\x76\xE3\x98\x13\x32\xF1\xE5\x98" }, +- { KV5M_DATA, 44, +- "\x83\x9A\x17\x08\x1E\xCB\xAF\xBC\xDC\x91\xB8\x8C\x69\x55\xDD\x3C" +- "\x45\x14\x02\x3C\xF1\x77\xB7\x7B\xF0\xD0\x17\x7A\x16\xF7\x05\xE8" +- "\x49\xCB\x77\x81\xD7\x6A\x31\x6B\x19\x3F\x8D\x30" } +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- { KV5M_DATA, 30, "30 bytes bytes bytes bytes byt", }, 4, +- { KV5M_DATA, 24, +- "\xF1\x16\x86\xCB\xBC\x9E\x23\xEA\x54\xFE\xCD\x2A\x3D\xCD\xFB\x20" +- "\xB6\xFE\x98\xBF\x26\x45\xC4\xC4" }, +- { KV5M_DATA, 60, +- "\x89\x43\x3E\x83\xFD\x0E\xA3\x66\x6C\xFF\xCD\x18\xD8\xDE\xEB\xC5" +- "\x3B\x9A\x34\xED\xBE\xB1\x59\xD9\xF6\x67\xC6\xC2\xB9\xA9\x64\x40" +- "\x1D\x55\xE7\xE9\xC6\x8D\x64\x8D\x65\xC3\xAA\x84\xFF\xA3\x79\x0C" +- "\x14\xA8\x64\xDA\x80\x73\xA9\xA9\x5C\x4B\xA2\xBC" } +- }, +- + { + ENCTYPE_ARCFOUR_HMAC, + { KV5M_DATA, 0, "", }, 0, +@@ -524,7 +468,6 @@ printhex(const char *head, void *data, size_t len) + + static krb5_enctype + enctypes[] = { +- ENCTYPE_DES3_CBC_SHA1, + ENCTYPE_ARCFOUR_HMAC, + ENCTYPE_ARCFOUR_HMAC_EXP, + ENCTYPE_AES128_CTS_HMAC_SHA1_96, +diff --git a/src/lib/crypto/crypto_tests/t_derive.c b/src/lib/crypto/crypto_tests/t_derive.c +index afbf7477f..93ce30da2 100644 +--- a/src/lib/crypto/crypto_tests/t_derive.c ++++ b/src/lib/crypto/crypto_tests/t_derive.c +@@ -38,41 +38,6 @@ struct test { + enum deriv_alg alg; + krb5_data expected_key; + } test_cases[] = { +- /* Kc, Ke, Kei for a DES3 key */ +- { +- ENCTYPE_DES3_CBC_SHA1, +- { KV5M_DATA, 24, +- "\x85\x0B\xB5\x13\x58\x54\x8C\xD0\x5E\x86\x76\x8C\x31\x3E\x3B\xFE" +- "\xF7\x51\x19\x37\xDC\xF7\x2C\x3E" }, +- { KV5M_DATA, 5, "\0\0\0\2\x99" }, +- DERIVE_RFC3961, +- { KV5M_DATA, 24, +- "\xF7\x8C\x49\x6D\x16\xE6\xC2\xDA\xE0\xE0\xB6\xC2\x40\x57\xA8\x4C" +- "\x04\x26\xAE\xEF\x26\xFD\x6D\xCE" } +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- { KV5M_DATA, 24, +- "\x85\x0B\xB5\x13\x58\x54\x8C\xD0\x5E\x86\x76\x8C\x31\x3E\x3B\xFE" +- "\xF7\x51\x19\x37\xDC\xF7\x2C\x3E" }, +- { KV5M_DATA, 5, "\0\0\0\2\xAA" }, +- DERIVE_RFC3961, +- { KV5M_DATA, 24, +- "\x5B\x57\x23\xD0\xB6\x34\xCB\x68\x4C\x3E\xBA\x52\x64\xE9\xA7\x0D" +- "\x52\xE6\x83\x23\x1A\xD3\xC4\xCE" } +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- { KV5M_DATA, 24, +- "\x85\x0B\xB5\x13\x58\x54\x8C\xD0\x5E\x86\x76\x8C\x31\x3E\x3B\xFE" +- "\xF7\x51\x19\x37\xDC\xF7\x2C\x3E" }, +- { KV5M_DATA, 5, "\0\0\0\2\x55" }, +- DERIVE_RFC3961, +- { KV5M_DATA, 24, +- "\xA7\x7C\x94\x98\x0E\x9B\x73\x45\xA8\x15\x25\xC4\x23\xA7\x37\xCE" +- "\x67\xF4\xCD\x91\xB6\xB3\xDA\x45" } +- }, +- + /* Kc, Ke, Ki for an AES-128 key */ + { + ENCTYPE_AES128_CTS_HMAC_SHA1_96, +@@ -286,7 +251,6 @@ static const struct krb5_enc_provider * + get_enc_provider(krb5_enctype enctype) + { + switch (enctype) { +- case ENCTYPE_DES3_CBC_SHA1: return &krb5int_enc_des3; + case ENCTYPE_AES128_CTS_HMAC_SHA1_96: return &krb5int_enc_aes128; + case ENCTYPE_AES256_CTS_HMAC_SHA1_96: return &krb5int_enc_aes256; + case ENCTYPE_CAMELLIA128_CTS_CMAC: return &krb5int_enc_camellia128; +diff --git a/src/lib/crypto/crypto_tests/t_encrypt.c b/src/lib/crypto/crypto_tests/t_encrypt.c +index bd9b94691..290a72e1e 100644 +--- a/src/lib/crypto/crypto_tests/t_encrypt.c ++++ b/src/lib/crypto/crypto_tests/t_encrypt.c +@@ -37,7 +37,6 @@ + + /* What enctypes should we test?*/ + krb5_enctype interesting_enctypes[] = { +- ENCTYPE_DES3_CBC_SHA1, + ENCTYPE_ARCFOUR_HMAC, + ENCTYPE_ARCFOUR_HMAC_EXP, + ENCTYPE_AES256_CTS_HMAC_SHA1_96, +diff --git a/src/lib/crypto/crypto_tests/t_short.c b/src/lib/crypto/crypto_tests/t_short.c +index d4c2b97df..4466b7115 100644 +--- a/src/lib/crypto/crypto_tests/t_short.c ++++ b/src/lib/crypto/crypto_tests/t_short.c +@@ -34,7 +34,6 @@ + #include "k5-int.h" + + krb5_enctype interesting_enctypes[] = { +- ENCTYPE_DES3_CBC_SHA1, + ENCTYPE_ARCFOUR_HMAC, + ENCTYPE_ARCFOUR_HMAC_EXP, + ENCTYPE_AES256_CTS_HMAC_SHA1_96, +diff --git a/src/lib/crypto/crypto_tests/t_str2key.c b/src/lib/crypto/crypto_tests/t_str2key.c +index cdb1acc6d..ef4c4a7d3 100644 +--- a/src/lib/crypto/crypto_tests/t_str2key.c ++++ b/src/lib/crypto/crypto_tests/t_str2key.c +@@ -35,58 +35,6 @@ struct test { + krb5_error_code expected_err; + krb5_boolean allow_weak; + } test_cases[] = { +- /* Test vectors from RFC 3961 appendix A.4. */ +- { +- ENCTYPE_DES3_CBC_SHA1, +- "password", +- { KV5M_DATA, 21, "ATHENA.MIT.EDUraeburn" }, +- { KV5M_DATA, 0, NULL }, +- { KV5M_DATA, 24, "\x85\x0B\xB5\x13\x58\x54\x8C\xD0\x5E\x86\x76\x8C" +- "\x31\x3E\x3B\xFE\xF7\x51\x19\x37\xDC\xF7\x2C\x3E" }, +- 0, +- FALSE +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- "potatoe", +- { KV5M_DATA, 19, "WHITEHOUSE.GOVdanny" }, +- { KV5M_DATA, 0, NULL }, +- { KV5M_DATA, 24, "\xDF\xCD\x23\x3D\xD0\xA4\x32\x04\xEA\x6D\xC4\x37" +- "\xFB\x15\xE0\x61\xB0\x29\x79\xC1\xF7\x4F\x37\x7A" }, +- 0, +- FALSE +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- "penny", +- { KV5M_DATA, 19, "EXAMPLE.COMbuckaroo" }, +- { KV5M_DATA, 0, NULL }, +- { KV5M_DATA, 24, "\x6D\x2F\xCD\xF2\xD6\xFB\xBC\x3D\xDC\xAD\xB5\xDA" +- "\x57\x10\xA2\x34\x89\xB0\xD3\xB6\x9D\x5D\x9D\x4A" }, +- 0, +- FALSE +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- "\xC3\x9F", +- { KV5M_DATA, 23, "ATHENA.MIT.EDUJuri\xC5\xA1\x69\xC4\x87" }, +- { KV5M_DATA, 0, NULL }, +- { KV5M_DATA, 24, "\x16\xD5\xA4\x0E\x1C\xE3\xBA\xCB\x61\xB9\xDC\xE0" +- "\x04\x70\x32\x4C\x83\x19\x73\xA7\xB9\x52\xFE\xB0" }, +- 0, +- FALSE +- }, +- { +- ENCTYPE_DES3_CBC_SHA1, +- "\xF0\x9D\x84\x9E", +- { KV5M_DATA, 18, "EXAMPLE.COMpianist" }, +- { KV5M_DATA, 0, NULL }, +- { KV5M_DATA, 24, "\x85\x76\x37\x26\x58\x5D\xBC\x1C\xCE\x6E\xC4\x3E" +- "\x1F\x75\x1F\x07\xF1\xC4\xCB\xB0\x98\xF4\x0B\x19" }, +- 0, +- FALSE +- }, +- + /* Test vectors from RFC 3962 appendix B. */ + { + ENCTYPE_AES128_CTS_HMAC_SHA1_96, +diff --git a/src/lib/crypto/krb/Makefile.in b/src/lib/crypto/krb/Makefile.in +index b74e6f7cc..2b0c4163d 100644 +--- a/src/lib/crypto/krb/Makefile.in ++++ b/src/lib/crypto/krb/Makefile.in +@@ -50,7 +50,6 @@ STLIBOBJS=\ + prf.o \ + prf_aes2.o \ + prf_cmac.o \ +- prf_des.o \ + prf_dk.o \ + prf_rc4.o \ + prng.o \ +@@ -109,7 +108,6 @@ OBJS=\ + $(OUTPRE)prf.$(OBJEXT) \ + $(OUTPRE)prf_aes2.$(OBJEXT) \ + $(OUTPRE)prf_cmac.$(OBJEXT) \ +- $(OUTPRE)prf_des.$(OBJEXT) \ + $(OUTPRE)prf_dk.$(OBJEXT) \ + $(OUTPRE)prf_rc4.$(OBJEXT) \ + $(OUTPRE)prng.$(OBJEXT) \ +@@ -168,7 +166,6 @@ SRCS=\ + $(srcdir)/prf.c \ + $(srcdir)/prf_aes2.c \ + $(srcdir)/prf_cmac.c \ +- $(srcdir)/prf_des.c \ + $(srcdir)/prf_dk.c \ + $(srcdir)/prf_rc4.c \ + $(srcdir)/prng.c \ +diff --git a/src/lib/crypto/krb/cksumtypes.c b/src/lib/crypto/krb/cksumtypes.c +index ecc2e08c9..f5fbe8a2a 100644 +--- a/src/lib/crypto/krb/cksumtypes.c ++++ b/src/lib/crypto/krb/cksumtypes.c +@@ -46,12 +46,6 @@ const struct krb5_cksumtypes krb5int_cksumtypes_list[] = { + krb5int_unkeyed_checksum, NULL, + 20, 20, CKSUM_UNKEYED }, + +- { CKSUMTYPE_HMAC_SHA1_DES3, +- "hmac-sha1-des3", { "hmac-sha1-des3-kd" }, "HMAC-SHA1 DES3 key", +- &krb5int_enc_des3, &krb5int_hash_sha1, +- krb5int_dk_checksum, NULL, +- 20, 20, 0 }, +- + { CKSUMTYPE_HMAC_MD5_ARCFOUR, + "hmac-md5-rc4", { "hmac-md5-enc", "hmac-md5-earcfour" }, + "Microsoft HMAC MD5", +diff --git a/src/lib/crypto/krb/crypto_int.h b/src/lib/crypto/krb/crypto_int.h +index 19f808749..4bc430c7a 100644 +--- a/src/lib/crypto/krb/crypto_int.h ++++ b/src/lib/crypto/krb/crypto_int.h +@@ -276,10 +276,6 @@ krb5_error_code krb5int_aes2_string_to_key(const struct krb5_keytypes *enc, + /* Random to key */ + krb5_error_code k5_rand2key_direct(const krb5_data *randombits, + krb5_keyblock *keyblock); +-krb5_error_code k5_rand2key_des(const krb5_data *randombits, +- krb5_keyblock *keyblock); +-krb5_error_code k5_rand2key_des3(const krb5_data *randombits, +- krb5_keyblock *keyblock); + + /* Pseudo-random function */ + krb5_error_code krb5int_des_prf(const struct krb5_keytypes *ktp, +@@ -368,11 +364,6 @@ krb5_keyusage krb5int_arcfour_translate_usage(krb5_keyusage usage); + /* Ensure library initialization has occurred. */ + int krb5int_crypto_init(void); + +-/* DES default state initialization handler (used by module enc providers). */ +-krb5_error_code krb5int_des_init_state(const krb5_keyblock *key, +- krb5_keyusage keyusage, +- krb5_data *state_out); +- + /* Default state cleanup handler (used by module enc providers). */ + void krb5int_default_free_state(krb5_data *state); + +@@ -425,7 +416,6 @@ void k5_iov_cursor_put(struct iov_cursor *cursor, unsigned char *block); + /* Modules must implement the k5_sha256() function prototyped in k5-int.h. */ + + /* Modules must implement the following enc_providers and hash_providers: */ +-extern const struct krb5_enc_provider krb5int_enc_des3; + extern const struct krb5_enc_provider krb5int_enc_arcfour; + extern const struct krb5_enc_provider krb5int_enc_aes128; + extern const struct krb5_enc_provider krb5int_enc_aes256; +@@ -442,12 +432,6 @@ extern const struct krb5_hash_provider krb5int_hash_sha384; + + /* Modules must implement the following functions. */ + +-/* Set the parity bits to the correct values in keybits. */ +-void k5_des_fixup_key_parity(unsigned char *keybits); +- +-/* Return true if keybits is a weak or semi-weak DES key. */ +-krb5_boolean k5_des_is_weak_key(unsigned char *keybits); +- + /* Compute an HMAC using the provided hash function, key, and data, storing the + * result into output (caller-allocated). */ + krb5_error_code krb5int_hmac(const struct krb5_hash_provider *hash, +diff --git a/src/lib/crypto/krb/default_state.c b/src/lib/crypto/krb/default_state.c +index 0757c8b02..f89dc7902 100644 +--- a/src/lib/crypto/krb/default_state.c ++++ b/src/lib/crypto/krb/default_state.c +@@ -32,16 +32,6 @@ + + #include "crypto_int.h" + +-krb5_error_code +-krb5int_des_init_state(const krb5_keyblock *key, krb5_keyusage usage, +- krb5_data *state_out) +-{ +- if (alloc_data(state_out, 8)) +- return ENOMEM; +- +- return 0; +-} +- + void + krb5int_default_free_state(krb5_data *state) + { +diff --git a/src/lib/crypto/krb/enctype_util.c b/src/lib/crypto/krb/enctype_util.c +index 1542d4062..a0037912a 100644 +--- a/src/lib/crypto/krb/enctype_util.c ++++ b/src/lib/crypto/krb/enctype_util.c +@@ -45,6 +45,9 @@ struct { + { ENCTYPE_DES_CBC_MD5, "des-cbc-md5" }, + { ENCTYPE_DES_CBC_RAW, "des-cbc-raw" }, + { ENCTYPE_DES_HMAC_SHA1, "des-hmac-sha1" }, ++ { ENCTYPE_DES3_CBC_SHA, "des3-cbc-sha1" }, ++ { ENCTYPE_DES3_CBC_RAW, "des3-cbc-raw" }, ++ { ENCTYPE_DES3_CBC_SHA1, "des3-hmac-sha1" }, + { ENCTYPE_NULL, NULL } + }; + +diff --git a/src/lib/crypto/krb/etypes.c b/src/lib/crypto/krb/etypes.c +index fc278783b..7635393a4 100644 +--- a/src/lib/crypto/krb/etypes.c ++++ b/src/lib/crypto/krb/etypes.c +@@ -35,27 +35,6 @@ + + /* Deprecations come from RFC 6649 and RFC 8249. */ + const struct krb5_keytypes krb5int_enctypes_list[] = { +- { ENCTYPE_DES3_CBC_RAW, +- "des3-cbc-raw", { 0 }, "Triple DES cbc mode raw", +- &krb5int_enc_des3, NULL, +- 16, +- krb5int_raw_crypto_length, krb5int_raw_encrypt, krb5int_raw_decrypt, +- krb5int_dk_string_to_key, k5_rand2key_des3, +- NULL, /*PRF*/ +- 0, +- ETYPE_WEAK | ETYPE_DEPRECATED, 112 }, +- +- { ENCTYPE_DES3_CBC_SHA1, +- "des3-cbc-sha1", { "des3-hmac-sha1", "des3-cbc-sha1-kd" }, +- "Triple DES cbc mode with HMAC/sha1", +- &krb5int_enc_des3, &krb5int_hash_sha1, +- 16, +- krb5int_dk_crypto_length, krb5int_dk_encrypt, krb5int_dk_decrypt, +- krb5int_dk_string_to_key, k5_rand2key_des3, +- krb5int_dk_prf, +- CKSUMTYPE_HMAC_SHA1_DES3, +- ETYPE_DEPRECATED, 112 }, +- + /* rc4-hmac uses a 128-bit key, but due to weaknesses in the RC4 cipher, we + * consider its strength degraded and assign it an SSF value of 64. */ + { ENCTYPE_ARCFOUR_HMAC, +diff --git a/src/lib/crypto/krb/prf_des.c b/src/lib/crypto/krb/prf_des.c +deleted file mode 100644 +index 7a2d719c5..000000000 +--- a/src/lib/crypto/krb/prf_des.c ++++ /dev/null +@@ -1,47 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/krb/prf_des.c - RFC 3961 DES-based PRF */ +-/* +- * Copyright (C) 2004, 2009 by the Massachusetts Institute of Technology. +- * All rights reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-#include "crypto_int.h" +- +-krb5_error_code +-krb5int_des_prf(const struct krb5_keytypes *ktp, krb5_key key, +- const krb5_data *in, krb5_data *out) +-{ +- const struct krb5_hash_provider *hash = &krb5int_hash_md5; +- krb5_crypto_iov iov; +- krb5_error_code ret; +- +- /* Compute a hash of the input, storing into the output buffer. */ +- iov.flags = KRB5_CRYPTO_TYPE_DATA; +- iov.data = *in; +- ret = hash->hash(&iov, 1, out); +- if (ret != 0) +- return ret; +- +- /* Encrypt the hash in place. */ +- iov.data = *out; +- return ktp->enc->encrypt(key, NULL, &iov, 1); +-} +diff --git a/src/lib/crypto/krb/random_to_key.c b/src/lib/crypto/krb/random_to_key.c +index 157462526..863090beb 100644 +--- a/src/lib/crypto/krb/random_to_key.c ++++ b/src/lib/crypto/krb/random_to_key.c +@@ -71,48 +71,3 @@ k5_rand2key_direct(const krb5_data *randombits, krb5_keyblock *keyblock) + memcpy(keyblock->contents, randombits->data, randombits->length); + return 0; + } +- +-static inline void +-eighth_byte(unsigned char *b) +-{ +- b[7] = (((b[0] & 1) << 1) | ((b[1] & 1) << 2) | ((b[2] & 1) << 3) | +- ((b[3] & 1) << 4) | ((b[4] & 1) << 5) | ((b[5] & 1) << 6) | +- ((b[6] & 1) << 7)); +-} +- +-krb5_error_code +-k5_rand2key_des(const krb5_data *randombits, krb5_keyblock *keyblock) +-{ +- if (randombits->length != 7) +- return(KRB5_CRYPTO_INTERNAL); +- +- keyblock->magic = KV5M_KEYBLOCK; +- +- /* Take the seven bytes, move them around into the top 7 bits of the +- * 8 key bytes, then compute the parity bits. */ +- memcpy(keyblock->contents, randombits->data, randombits->length); +- eighth_byte(keyblock->contents); +- k5_des_fixup_key_parity(keyblock->contents); +- +- return 0; +-} +- +-krb5_error_code +-k5_rand2key_des3(const krb5_data *randombits, krb5_keyblock *keyblock) +-{ +- int i; +- +- if (randombits->length != 21) +- return KRB5_CRYPTO_INTERNAL; +- +- keyblock->magic = KV5M_KEYBLOCK; +- +- /* Take the seven bytes, move them around into the top 7 bits of the +- * 8 key bytes, then compute the parity bits. Do this three times. */ +- for (i = 0; i < 3; i++) { +- memcpy(&keyblock->contents[i * 8], &randombits->data[i * 7], 7); +- eighth_byte(&keyblock->contents[i * 8]); +- k5_des_fixup_key_parity(&keyblock->contents[i * 8]); +- } +- return 0; +-} +diff --git a/src/lib/crypto/libk5crypto.exports b/src/lib/crypto/libk5crypto.exports +index d6cc1b423..f44cb9170 100644 +--- a/src/lib/crypto/libk5crypto.exports ++++ b/src/lib/crypto/libk5crypto.exports +@@ -86,7 +86,6 @@ krb5_k_verify_checksum + krb5_k_verify_checksum_iov + krb5int_aes_encrypt + krb5int_aes_decrypt +-krb5int_enc_des3 + krb5int_arcfour_gsscrypt + krb5int_camellia_cbc_mac + krb5int_cmac_checksum +diff --git a/src/lib/crypto/openssl/Makefile.in b/src/lib/crypto/openssl/Makefile.in +index aa434b168..234fc0e76 100644 +--- a/src/lib/crypto/openssl/Makefile.in ++++ b/src/lib/crypto/openssl/Makefile.in +@@ -1,6 +1,6 @@ + mydir=lib$(S)crypto$(S)openssl + BUILDTOP=$(REL)..$(S)..$(S).. +-SUBDIRS=camellia des aes md4 md5 sha1 sha2 enc_provider hash_provider ++SUBDIRS=camellia aes md4 md5 sha1 sha2 enc_provider hash_provider + LOCALINCLUDES = -I$(srcdir)/../krb -I$(srcdir) + + STLIBOBJS=\ +@@ -24,14 +24,14 @@ SRCS=\ + $(srcdir)/sha256.c \ + $(srcdir)/stubs.c + +-STOBJLISTS= des/OBJS.ST md4/OBJS.ST \ ++STOBJLISTS= md4/OBJS.ST \ + md5/OBJS.ST sha1/OBJS.ST sha2/OBJS.ST \ + enc_provider/OBJS.ST \ + hash_provider/OBJS.ST \ + aes/OBJS.ST \ + OBJS.ST + +-SUBDIROBJLISTS= des/OBJS.ST md4/OBJS.ST \ ++SUBDIROBJLISTS= md4/OBJS.ST \ + md5/OBJS.ST sha1/OBJS.ST sha2/OBJS.ST \ + enc_provider/OBJS.ST \ + hash_provider/OBJS.ST \ +@@ -42,7 +42,7 @@ includes: depend + + depend: $(SRCS) + +-clean-unix:: clean-libobjs ++clean-unix:: clean-libobjsn + + @lib_frag@ + @libobj_frag@ +diff --git a/src/lib/crypto/openssl/des/Makefile.in b/src/lib/crypto/openssl/des/Makefile.in +deleted file mode 100644 +index 4392fb8ea..000000000 +--- a/src/lib/crypto/openssl/des/Makefile.in ++++ /dev/null +@@ -1,20 +0,0 @@ +-mydir=lib$(S)crypto$(S)openssl$(S)des +-BUILDTOP=$(REL)..$(S)..$(S)..$(S).. +-LOCALINCLUDES = -I$(srcdir)/../../krb -I$(srcdir)/.. +- +-STLIBOBJS= des_keys.o +- +-OBJS= $(OUTPRE)des_keys.$(OBJEXT) +- +-SRCS= $(srcdir)/des_keys.c +- +-all-unix: all-libobjs +- +-includes: depend +- +-depend: $(SRCS) +- +-clean-unix:: clean-libobjs +- +-@libobj_frag@ +- +diff --git a/src/lib/crypto/openssl/des/deps b/src/lib/crypto/openssl/des/deps +deleted file mode 100644 +index 21b904f89..000000000 +--- a/src/lib/crypto/openssl/des/deps ++++ /dev/null +@@ -1,15 +0,0 @@ +-# +-# Generated makefile dependencies follow. +-# +-des_keys.so des_keys.po $(OUTPRE)des_keys.$(OBJEXT): \ +- $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \ +- $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \ +- $(COM_ERR_DEPS) $(srcdir)/../../krb/crypto_int.h $(srcdir)/../crypto_mod.h \ +- $(top_srcdir)/include/k5-buf.h $(top_srcdir)/include/k5-err.h \ +- $(top_srcdir)/include/k5-gmt_mktime.h $(top_srcdir)/include/k5-int-pkinit.h \ +- $(top_srcdir)/include/k5-int.h $(top_srcdir)/include/k5-platform.h \ +- $(top_srcdir)/include/k5-plugin.h $(top_srcdir)/include/k5-thread.h \ +- $(top_srcdir)/include/k5-trace.h $(top_srcdir)/include/krb5.h \ +- $(top_srcdir)/include/krb5/authdata_plugin.h $(top_srcdir)/include/krb5/plugin.h \ +- $(top_srcdir)/include/port-sockets.h $(top_srcdir)/include/socket-utils.h \ +- des_keys.c +diff --git a/src/lib/crypto/openssl/des/des_keys.c b/src/lib/crypto/openssl/des/des_keys.c +deleted file mode 100644 +index 51d9db216..000000000 +--- a/src/lib/crypto/openssl/des/des_keys.c ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/openssl/des/des_keys.c - Key functions used by Kerberos code */ +-/* +- * Copyright (C) 2011 by the Massachusetts Institute of Technology. +- * All rights reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +- +-#include "crypto_int.h" +-#include +- +-void +-k5_des_fixup_key_parity(unsigned char *keybits) +-{ +- DES_set_odd_parity((DES_cblock *)keybits); +-} +- +-krb5_boolean +-k5_des_is_weak_key(unsigned char *keybits) +-{ +- return DES_is_weak_key((DES_cblock *)keybits); +-} +diff --git a/src/lib/crypto/openssl/enc_provider/Makefile.in b/src/lib/crypto/openssl/enc_provider/Makefile.in +index a9069d22d..2b32c3ac4 100644 +--- a/src/lib/crypto/openssl/enc_provider/Makefile.in ++++ b/src/lib/crypto/openssl/enc_provider/Makefile.in +@@ -3,19 +3,16 @@ BUILDTOP=$(REL)..$(S)..$(S)..$(S).. + LOCALINCLUDES = -I$(srcdir)/../../krb -I$(srcdir)/.. + + STLIBOBJS= \ +- des3.o \ + rc4.o \ + aes.o \ + camellia.o + + OBJS= \ +- $(OUTPRE)des3.$(OBJEXT) \ + $(OUTPRE)aes.$(OBJEXT) \ + $(OUTPRE)camellia.$(OBJEXT) \ + $(OUTPRE)rc4.$(OBJEXT) + + SRCS= \ +- $(srcdir)/des3.c \ + $(srcdir)/aes.c \ + $(srcdir)/camellia.c \ + $(srcdir)/rc4.c +diff --git a/src/lib/crypto/openssl/enc_provider/deps b/src/lib/crypto/openssl/enc_provider/deps +index 1c28cc842..91ba48234 100644 +--- a/src/lib/crypto/openssl/enc_provider/deps ++++ b/src/lib/crypto/openssl/enc_provider/deps +@@ -1,17 +1,6 @@ + # + # Generated makefile dependencies follow. + # +-des3.so des3.po $(OUTPRE)des3.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ +- $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ +- $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(srcdir)/../../krb/crypto_int.h \ +- $(srcdir)/../crypto_mod.h $(top_srcdir)/include/k5-buf.h \ +- $(top_srcdir)/include/k5-err.h $(top_srcdir)/include/k5-gmt_mktime.h \ +- $(top_srcdir)/include/k5-int-pkinit.h $(top_srcdir)/include/k5-int.h \ +- $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-plugin.h \ +- $(top_srcdir)/include/k5-thread.h $(top_srcdir)/include/k5-trace.h \ +- $(top_srcdir)/include/krb5.h $(top_srcdir)/include/krb5/authdata_plugin.h \ +- $(top_srcdir)/include/krb5/plugin.h $(top_srcdir)/include/port-sockets.h \ +- $(top_srcdir)/include/socket-utils.h des3.c + aes.so aes.po $(OUTPRE)aes.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ + $(BUILDTOP)/include/krb5/krb5.h $(BUILDTOP)/include/osconf.h \ + $(BUILDTOP)/include/profile.h $(COM_ERR_DEPS) $(srcdir)/../../krb/crypto_int.h \ +diff --git a/src/lib/crypto/openssl/enc_provider/des3.c b/src/lib/crypto/openssl/enc_provider/des3.c +deleted file mode 100644 +index 1c439c2cd..000000000 +--- a/src/lib/crypto/openssl/enc_provider/des3.c ++++ /dev/null +@@ -1,184 +0,0 @@ +-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +-/* lib/crypto/openssl/enc_provider/des3.c */ +-/* +- * Copyright (C) 2009 by the Massachusetts Institute of Technology. +- * All rights reserved. +- * +- * Export of this software from the United States of America may +- * require a specific license from the United States Government. +- * It is the responsibility of any person or organization contemplating +- * export to obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of M.I.T. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. Furthermore if you modify this software you must label +- * your software as modified software and not distribute it in such a +- * fashion that it might be confused with the original M.I.T. software. +- * M.I.T. makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- */ +-/* +- * Copyright (C) 1998 by the FundsXpress, INC. +- * +- * All rights reserved. +- * +- * Export of this software from the United States of America may require +- * a specific license from the United States Government. It is the +- * responsibility of any person or organization contemplating export to +- * obtain such a license before exporting. +- * +- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and +- * distribute this software and its documentation for any purpose and +- * without fee is hereby granted, provided that the above copyright +- * notice appear in all copies and that both that copyright notice and +- * this permission notice appear in supporting documentation, and that +- * the name of FundsXpress. not be used in advertising or publicity pertaining +- * to distribution of the software without specific, written prior +- * permission. FundsXpress makes no representations about the suitability of +- * this software for any purpose. It is provided "as is" without express +- * or implied warranty. +- * +- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +- */ +- +-#include "crypto_int.h" +-#include +- +- +-#define DES3_BLOCK_SIZE 8 +-#define DES3_KEY_SIZE 24 +-#define DES3_KEY_BYTES 21 +- +-static krb5_error_code +-validate(krb5_key key, const krb5_data *ivec, const krb5_crypto_iov *data, +- size_t num_data, krb5_boolean *empty) +-{ +- size_t input_length = iov_total_length(data, num_data, FALSE); +- +- if (key->keyblock.length != DES3_KEY_SIZE) +- return(KRB5_BAD_KEYSIZE); +- if ((input_length%DES3_BLOCK_SIZE) != 0) +- return(KRB5_BAD_MSIZE); +- if (ivec && (ivec->length != 8)) +- return(KRB5_BAD_MSIZE); +- +- *empty = (input_length == 0); +- return 0; +-} +- +-static krb5_error_code +-k5_des3_encrypt(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, +- size_t num_data) +-{ +- int ret, olen = DES3_BLOCK_SIZE; +- unsigned char iblock[DES3_BLOCK_SIZE], oblock[DES3_BLOCK_SIZE]; +- struct iov_cursor cursor; +- EVP_CIPHER_CTX *ctx; +- krb5_boolean empty; +- +- ret = validate(key, ivec, data, num_data, &empty); +- if (ret != 0 || empty) +- return ret; +- +- ctx = EVP_CIPHER_CTX_new(); +- if (ctx == NULL) +- return ENOMEM; +- +- ret = EVP_EncryptInit_ex(ctx, EVP_des_ede3_cbc(), NULL, +- key->keyblock.contents, +- (ivec) ? (unsigned char*)ivec->data : NULL); +- if (!ret) { +- EVP_CIPHER_CTX_free(ctx); +- return KRB5_CRYPTO_INTERNAL; +- } +- +- EVP_CIPHER_CTX_set_padding(ctx,0); +- +- k5_iov_cursor_init(&cursor, data, num_data, DES3_BLOCK_SIZE, FALSE); +- while (k5_iov_cursor_get(&cursor, iblock)) { +- ret = EVP_EncryptUpdate(ctx, oblock, &olen, iblock, DES3_BLOCK_SIZE); +- if (!ret) +- break; +- k5_iov_cursor_put(&cursor, oblock); +- } +- +- if (ivec != NULL) +- memcpy(ivec->data, oblock, DES3_BLOCK_SIZE); +- +- EVP_CIPHER_CTX_free(ctx); +- +- zap(iblock, sizeof(iblock)); +- zap(oblock, sizeof(oblock)); +- +- if (ret != 1) +- return KRB5_CRYPTO_INTERNAL; +- return 0; +-} +- +-static krb5_error_code +-k5_des3_decrypt(krb5_key key, const krb5_data *ivec, krb5_crypto_iov *data, +- size_t num_data) +-{ +- int ret, olen = DES3_BLOCK_SIZE; +- unsigned char iblock[DES3_BLOCK_SIZE], oblock[DES3_BLOCK_SIZE]; +- struct iov_cursor cursor; +- EVP_CIPHER_CTX *ctx; +- krb5_boolean empty; +- +- ret = validate(key, ivec, data, num_data, &empty); +- if (ret != 0 || empty) +- return ret; +- +- ctx = EVP_CIPHER_CTX_new(); +- if (ctx == NULL) +- return ENOMEM; +- +- ret = EVP_DecryptInit_ex(ctx, EVP_des_ede3_cbc(), NULL, +- key->keyblock.contents, +- (ivec) ? (unsigned char*)ivec->data : NULL); +- if (!ret) { +- EVP_CIPHER_CTX_free(ctx); +- return KRB5_CRYPTO_INTERNAL; +- } +- +- EVP_CIPHER_CTX_set_padding(ctx,0); +- +- k5_iov_cursor_init(&cursor, data, num_data, DES3_BLOCK_SIZE, FALSE); +- while (k5_iov_cursor_get(&cursor, iblock)) { +- ret = EVP_DecryptUpdate(ctx, oblock, &olen, +- (unsigned char *)iblock, DES3_BLOCK_SIZE); +- if (!ret) +- break; +- k5_iov_cursor_put(&cursor, oblock); +- } +- +- if (ivec != NULL) +- memcpy(ivec->data, iblock, DES3_BLOCK_SIZE); +- +- EVP_CIPHER_CTX_free(ctx); +- +- zap(iblock, sizeof(iblock)); +- zap(oblock, sizeof(oblock)); +- +- if (ret != 1) +- return KRB5_CRYPTO_INTERNAL; +- return 0; +-} +- +-const struct krb5_enc_provider krb5int_enc_des3 = { +- DES3_BLOCK_SIZE, +- DES3_KEY_BYTES, DES3_KEY_SIZE, +- k5_des3_encrypt, +- k5_des3_decrypt, +- NULL, +- krb5int_des_init_state, +- krb5int_default_free_state +-}; +diff --git a/src/lib/gssapi/krb5/accept_sec_context.c b/src/lib/gssapi/krb5/accept_sec_context.c +index 75f071c3e..fcf2c2152 100644 +--- a/src/lib/gssapi/krb5/accept_sec_context.c ++++ b/src/lib/gssapi/krb5/accept_sec_context.c +@@ -1039,7 +1039,6 @@ kg_accept_krb5(minor_status, context_handle, + } + + switch (negotiated_etype) { +- case ENCTYPE_DES3_CBC_SHA1: + case ENCTYPE_ARCFOUR_HMAC: + case ENCTYPE_ARCFOUR_HMAC_EXP: + /* RFC 4121 accidentally omits RC4-HMAC-EXP as a "not-newer" +diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h +index a7e0e63ec..3bacdcd35 100644 +--- a/src/lib/gssapi/krb5/gssapiP_krb5.h ++++ b/src/lib/gssapi/krb5/gssapiP_krb5.h +@@ -125,14 +125,14 @@ enum sgn_alg { + /* SGN_ALG_DES_MAC = 0x0002, */ + /* SGN_ALG_3 = 0x0003, /\* not published *\/ */ + SGN_ALG_HMAC_MD5 = 0x0011, /* microsoft w2k; */ +- SGN_ALG_HMAC_SHA1_DES3_KD = 0x0004 ++ /* SGN_ALG_HMAC_SHA1_DES3_KD = 0x0004 */ + }; + enum seal_alg { + SEAL_ALG_NONE = 0xffff, + /* SEAL_ALG_DES = 0x0000, */ + /* SEAL_ALG_1 = 0x0001, /\* not published *\/ */ + SEAL_ALG_MICROSOFT_RC4 = 0x0010, /* microsoft w2k; */ +- SEAL_ALG_DES3KD = 0x0002 ++ /* SEAL_ALG_DES3KD = 0x0002 */ + }; + + /* for 3DES */ +@@ -153,7 +153,7 @@ enum qop { + GSS_KRB5_INTEG_C_QOP_HMAC_SHA1 = 0x0004, + GSS_KRB5_INTEG_C_QOP_MASK = 0x00ff, + /* GSS_KRB5_CONF_C_QOP_DES = 0x0100, */ +- GSS_KRB5_CONF_C_QOP_DES3_KD = 0x0200, ++ /* GSS_KRB5_CONF_C_QOP_DES3_KD = 0x0200, */ + GSS_KRB5_CONF_C_QOP_MASK = 0xff00 + }; + +diff --git a/src/lib/gssapi/krb5/k5seal.c b/src/lib/gssapi/krb5/k5seal.c +index d1cdce486..7f7146a0a 100644 +--- a/src/lib/gssapi/krb5/k5seal.c ++++ b/src/lib/gssapi/krb5/k5seal.c +@@ -136,19 +136,12 @@ make_seal_token_v1 (krb5_context context, + + /* pad the plaintext, encrypt if needed, and stick it in the token */ + +- /* initialize the the checksum */ +- switch (signalg) { +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- md5cksum.checksum_type = CKSUMTYPE_HMAC_SHA1_DES3; +- break; +- case SGN_ALG_HMAC_MD5: +- md5cksum.checksum_type = CKSUMTYPE_HMAC_MD5_ARCFOUR; +- if (toktype != KG_TOK_SEAL_MSG) +- sign_usage = 15; +- break; +- default: +- abort (); +- } ++ if (signalg != SGN_ALG_HMAC_MD5) ++ abort(); ++ ++ md5cksum.checksum_type = CKSUMTYPE_HMAC_MD5_ARCFOUR; ++ if (toktype != KG_TOK_SEAL_MSG) ++ sign_usage = 15; + + code = krb5_c_checksum_length(context, md5cksum.checksum_type, &sumlen); + if (code) { +@@ -196,20 +189,8 @@ make_seal_token_v1 (krb5_context context, + gssalloc_free(t); + return(code); + } +- switch(signalg) { +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- /* +- * Using key derivation, the call to krb5_c_make_checksum +- * already dealt with encrypting. +- */ +- if (md5cksum.length != cksum_size) +- abort (); +- memcpy (ptr+14, md5cksum.contents, md5cksum.length); +- break; +- case SGN_ALG_HMAC_MD5: +- memcpy (ptr+14, md5cksum.contents, cksum_size); +- break; +- } ++ ++ memcpy (ptr+14, md5cksum.contents, cksum_size); + + krb5_free_checksum_contents(context, &md5cksum); + +diff --git a/src/lib/gssapi/krb5/k5sealiov.c b/src/lib/gssapi/krb5/k5sealiov.c +index 9bb2ee109..9147bb2c7 100644 +--- a/src/lib/gssapi/krb5/k5sealiov.c ++++ b/src/lib/gssapi/krb5/k5sealiov.c +@@ -144,18 +144,11 @@ make_seal_token_v1_iov(krb5_context context, + /* pad the plaintext, encrypt if needed, and stick it in the token */ + + /* initialize the checksum */ +- switch (ctx->signalg) { +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- md5cksum.checksum_type = CKSUMTYPE_HMAC_SHA1_DES3; +- break; +- case SGN_ALG_HMAC_MD5: +- md5cksum.checksum_type = CKSUMTYPE_HMAC_MD5_ARCFOUR; +- if (toktype != KG_TOK_WRAP_MSG) +- sign_usage = 15; +- break; +- default: +- abort (); +- } ++ if (ctx->signalg != SGN_ALG_HMAC_MD5) ++ abort(); ++ md5cksum.checksum_type = CKSUMTYPE_HMAC_MD5_ARCFOUR; ++ if (toktype != KG_TOK_WRAP_MSG) ++ sign_usage = 15; + + code = krb5_c_checksum_length(context, md5cksum.checksum_type, &k5_trailerlen); + if (code != 0) +@@ -177,15 +170,7 @@ make_seal_token_v1_iov(krb5_context context, + if (code != 0) + goto cleanup; + +- switch (ctx->signalg) { +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- assert(md5cksum.length == ctx->cksum_size); +- memcpy(ptr + 14, md5cksum.contents, md5cksum.length); +- break; +- case SGN_ALG_HMAC_MD5: +- memcpy(ptr + 14, md5cksum.contents, ctx->cksum_size); +- break; +- } ++ memcpy(ptr + 14, md5cksum.contents, ctx->cksum_size); + + /* create the seq_num */ + code = kg_make_seq_num(context, ctx->seq, ctx->initiate ? 0 : 0xFF, +diff --git a/src/lib/gssapi/krb5/k5unseal.c b/src/lib/gssapi/krb5/k5unseal.c +index 9b183bc33..f0cc4a680 100644 +--- a/src/lib/gssapi/krb5/k5unseal.c ++++ b/src/lib/gssapi/krb5/k5unseal.c +@@ -131,28 +131,21 @@ kg_unseal_v1(context, minor_status, ctx, ptr, bodysize, message_buffer, + but few enough that we can try them all. */ + + if ((ctx->sealalg == SEAL_ALG_NONE && signalg > 1) || +- (ctx->sealalg == SEAL_ALG_DES3KD && +- signalg != SGN_ALG_HMAC_SHA1_DES3_KD)|| + (ctx->sealalg == SEAL_ALG_MICROSOFT_RC4 && + signalg != SGN_ALG_HMAC_MD5)) { + *minor_status = 0; + return GSS_S_DEFECTIVE_TOKEN; + } + +- switch (signalg) { +- case SGN_ALG_HMAC_MD5: +- cksum_len = 8; +- if (toktype != KG_TOK_SEAL_MSG) +- sign_usage = 15; +- break; +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- cksum_len = 20; +- break; +- default: ++ if (signalg != SGN_ALG_HMAC_MD5) { + *minor_status = 0; + return GSS_S_DEFECTIVE_TOKEN; + } + ++ cksum_len = 8; ++ if (toktype != KG_TOK_SEAL_MSG) ++ sign_usage = 15; ++ + if ((size_t)bodysize < 14 + cksum_len) { + *minor_status = 0; + return GSS_S_DEFECTIVE_TOKEN; +@@ -252,64 +245,53 @@ kg_unseal_v1(context, minor_status, ctx, ptr, bodysize, message_buffer, + /* compute the checksum of the message */ + + /* initialize the the cksum */ +- switch (signalg) { +- case SGN_ALG_HMAC_MD5: +- md5cksum.checksum_type = CKSUMTYPE_HMAC_MD5_ARCFOUR; +- break; +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- md5cksum.checksum_type = CKSUMTYPE_HMAC_SHA1_DES3; +- break; +- default: +- abort (); +- } ++ if (signalg != SGN_ALG_HMAC_MD5) ++ abort(); ++ md5cksum.checksum_type = CKSUMTYPE_HMAC_MD5_ARCFOUR; + + code = krb5_c_checksum_length(context, md5cksum.checksum_type, &sumlen); + if (code) + return(code); + md5cksum.length = sumlen; + +- switch (signalg) { +- default: ++ if (signalg != SGN_ALG_HMAC_MD5) { + *minor_status = 0; + return(GSS_S_DEFECTIVE_TOKEN); +- +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- case SGN_ALG_HMAC_MD5: +- /* compute the checksum of the message */ +- +- /* 8 = bytes of token body to be checksummed according to spec */ +- +- if (! (data_ptr = xmalloc(8 + plainlen))) { +- if (sealalg != 0xffff) +- xfree(plain); +- if (toktype == KG_TOK_SEAL_MSG) +- gssalloc_free(token.value); +- *minor_status = ENOMEM; +- return(GSS_S_FAILURE); +- } +- +- (void) memcpy(data_ptr, ptr-2, 8); +- +- (void) memcpy(data_ptr+8, plain, plainlen); +- +- plaind.length = 8 + plainlen; +- plaind.data = data_ptr; +- code = krb5_k_make_checksum(context, md5cksum.checksum_type, +- ctx->seq, sign_usage, +- &plaind, &md5cksum); +- xfree(data_ptr); +- +- if (code) { +- if (toktype == KG_TOK_SEAL_MSG) +- gssalloc_free(token.value); +- *minor_status = code; +- return(GSS_S_FAILURE); +- } +- +- code = k5_bcmp(md5cksum.contents, ptr + 14, cksum_len); +- break; + } + ++ /* compute the checksum of the message */ ++ ++ /* 8 = bytes of token body to be checksummed according to spec */ ++ ++ if (! (data_ptr = xmalloc(8 + plainlen))) { ++ if (sealalg != 0xffff) ++ xfree(plain); ++ if (toktype == KG_TOK_SEAL_MSG) ++ gssalloc_free(token.value); ++ *minor_status = ENOMEM; ++ return(GSS_S_FAILURE); ++ } ++ ++ (void) memcpy(data_ptr, ptr-2, 8); ++ ++ (void) memcpy(data_ptr+8, plain, plainlen); ++ ++ plaind.length = 8 + plainlen; ++ plaind.data = data_ptr; ++ code = krb5_k_make_checksum(context, md5cksum.checksum_type, ++ ctx->seq, sign_usage, ++ &plaind, &md5cksum); ++ xfree(data_ptr); ++ ++ if (code) { ++ if (toktype == KG_TOK_SEAL_MSG) ++ gssalloc_free(token.value); ++ *minor_status = code; ++ return(GSS_S_FAILURE); ++ } ++ ++ code = k5_bcmp(md5cksum.contents, ptr + 14, cksum_len); ++ + krb5_free_checksum_contents(context, &md5cksum); + if (sealalg != 0xffff) + xfree(plain); +diff --git a/src/lib/gssapi/krb5/k5unsealiov.c b/src/lib/gssapi/krb5/k5unsealiov.c +index 85a9574f3..3ce2a90ce 100644 +--- a/src/lib/gssapi/krb5/k5unsealiov.c ++++ b/src/lib/gssapi/krb5/k5unsealiov.c +@@ -102,28 +102,21 @@ kg_unseal_v1_iov(krb5_context context, + } + + if ((ctx->sealalg == SEAL_ALG_NONE && signalg > 1) || +- (ctx->sealalg == SEAL_ALG_DES3KD && +- signalg != SGN_ALG_HMAC_SHA1_DES3_KD)|| + (ctx->sealalg == SEAL_ALG_MICROSOFT_RC4 && + signalg != SGN_ALG_HMAC_MD5)) { + *minor_status = 0; + return GSS_S_DEFECTIVE_TOKEN; + } + +- switch (signalg) { +- case SGN_ALG_HMAC_MD5: +- cksum_len = 8; +- if (toktype != KG_TOK_WRAP_MSG) +- sign_usage = 15; +- break; +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- cksum_len = 20; +- break; +- default: ++ if (signalg != SGN_ALG_HMAC_MD5) { + *minor_status = 0; + return GSS_S_DEFECTIVE_TOKEN; + } + ++ cksum_len = 8; ++ if (toktype != KG_TOK_WRAP_MSG) ++ sign_usage = 15; ++ + /* get the token parameters */ + code = kg_get_seq_num(context, ctx->seq, ptr + 14, ptr + 6, &direction, + &seqnum); +@@ -181,16 +174,10 @@ kg_unseal_v1_iov(krb5_context context, + + /* initialize the checksum */ + +- switch (signalg) { +- case SGN_ALG_HMAC_MD5: +- md5cksum.checksum_type = CKSUMTYPE_HMAC_MD5_ARCFOUR; +- break; +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- md5cksum.checksum_type = CKSUMTYPE_HMAC_SHA1_DES3; +- break; +- default: ++ if (signalg != SGN_ALG_HMAC_MD5) + abort(); +- } ++ ++ md5cksum.checksum_type = CKSUMTYPE_HMAC_MD5_ARCFOUR; + + code = krb5_c_checksum_length(context, md5cksum.checksum_type, &sumlen); + if (code != 0) { +@@ -209,18 +196,13 @@ kg_unseal_v1_iov(krb5_context context, + goto cleanup; + } + +- switch (signalg) { +- case SGN_ALG_HMAC_SHA1_DES3_KD: +- case SGN_ALG_HMAC_MD5: +- code = k5_bcmp(md5cksum.contents, ptr + 14, cksum_len); +- break; +- default: ++ if (signalg != SGN_ALG_HMAC_MD5) { + code = 0; + retval = GSS_S_DEFECTIVE_TOKEN; + goto cleanup; +- break; + } + ++ code = k5_bcmp(md5cksum.contents, ptr + 14, cksum_len); + if (code != 0) { + code = 0; + retval = GSS_S_BAD_SIG; +diff --git a/src/lib/gssapi/krb5/util_crypt.c b/src/lib/gssapi/krb5/util_crypt.c +index 84f194988..32150f5e3 100644 +--- a/src/lib/gssapi/krb5/util_crypt.c ++++ b/src/lib/gssapi/krb5/util_crypt.c +@@ -97,17 +97,6 @@ kg_setup_keys(krb5_context context, krb5_gss_ctx_id_rec *ctx, krb5_key subkey, + return code; + + switch (subkey->keyblock.enctype) { +- case ENCTYPE_DES3_CBC_SHA1: +- code = kg_copy_keys(context, ctx, subkey); +- if (code != 0) +- return code; +- +- ctx->enc->keyblock.enctype = ENCTYPE_DES3_CBC_RAW; +- ctx->seq->keyblock.enctype = ENCTYPE_DES3_CBC_RAW; +- ctx->signalg = SGN_ALG_HMAC_SHA1_DES3_KD; +- ctx->cksum_size = 20; +- ctx->sealalg = SEAL_ALG_DES3KD; +- break; + case ENCTYPE_ARCFOUR_HMAC: + case ENCTYPE_ARCFOUR_HMAC_EXP: + /* RFC 4121 accidentally omits RC4-HMAC-EXP as a "not-newer" enctype, +diff --git a/src/lib/krb5/krb/init_ctx.c b/src/lib/krb5/krb/init_ctx.c +index aa35baa3c..bfa99d9eb 100644 +--- a/src/lib/krb5/krb/init_ctx.c ++++ b/src/lib/krb5/krb/init_ctx.c +@@ -59,7 +59,6 @@ + static krb5_enctype default_enctype_list[] = { + ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, + ENCTYPE_AES256_CTS_HMAC_SHA384_192, ENCTYPE_AES128_CTS_HMAC_SHA256_128, +- ENCTYPE_DES3_CBC_SHA1, + ENCTYPE_ARCFOUR_HMAC, + ENCTYPE_CAMELLIA128_CTS_CMAC, ENCTYPE_CAMELLIA256_CTS_CMAC, + 0 +@@ -467,8 +466,6 @@ krb5int_parse_enctype_list(krb5_context context, const char *profkey, + /* Set all enctypes in the default list. */ + for (i = 0; default_list[i]; i++) + mod_list(default_list[i], sel, weak, &list); +- } else if (strcasecmp(token, "des3") == 0) { +- mod_list(ENCTYPE_DES3_CBC_SHA1, sel, weak, &list); + } else if (strcasecmp(token, "aes") == 0) { + mod_list(ENCTYPE_AES256_CTS_HMAC_SHA1_96, sel, weak, &list); + mod_list(ENCTYPE_AES128_CTS_HMAC_SHA1_96, sel, weak, &list); +diff --git a/src/lib/krb5/krb/s4u_creds.c b/src/lib/krb5/krb/s4u_creds.c +index 44d113e7c..966278578 100644 +--- a/src/lib/krb5/krb/s4u_creds.c ++++ b/src/lib/krb5/krb/s4u_creds.c +@@ -288,8 +288,6 @@ verify_s4u2self_reply(krb5_context context, + assert(req_s4u_user != NULL); + + switch (subkey->enctype) { +- case ENCTYPE_DES3_CBC_SHA1: +- case ENCTYPE_DES3_CBC_RAW: + case ENCTYPE_ARCFOUR_HMAC: + case ENCTYPE_ARCFOUR_HMAC_EXP : + not_newer = TRUE; +diff --git a/src/lib/krb5/krb/t_etypes.c b/src/lib/krb5/krb/t_etypes.c +index 90c9f626c..935aca12f 100644 +--- a/src/lib/krb5/krb/t_etypes.c ++++ b/src/lib/krb5/krb/t_etypes.c +@@ -50,17 +50,6 @@ static struct { + { ENCTYPE_AES256_CTS_HMAC_SHA1_96, 0 }, + 0, 0 + }, +- /* Family followed by enctype */ +- { "aes des3-cbc-sha1-kd", +- { 0 }, +- { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, +- ENCTYPE_AES256_CTS_HMAC_SHA384_192, ENCTYPE_AES128_CTS_HMAC_SHA256_128, +- ENCTYPE_DES3_CBC_SHA1, 0 }, +- { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, +- ENCTYPE_AES256_CTS_HMAC_SHA384_192, ENCTYPE_AES128_CTS_HMAC_SHA256_128, +- ENCTYPE_DES3_CBC_SHA1, 0 }, +- 0, 0 +- }, + /* Family with enctype removed */ + { "camellia -camellia256-cts-cmac", + { 0 }, +@@ -69,46 +58,15 @@ static struct { + }, + /* Default set with family added and enctype removed */ + { "DEFAULT +aes -arcfour-hmac-md5", +- { ENCTYPE_ARCFOUR_HMAC, ENCTYPE_DES3_CBC_SHA1, 0 }, +- { ENCTYPE_DES3_CBC_SHA1, ENCTYPE_AES256_CTS_HMAC_SHA1_96, ++ { ENCTYPE_ARCFOUR_HMAC, 0 }, ++ { ENCTYPE_AES256_CTS_HMAC_SHA1_96, + ENCTYPE_AES128_CTS_HMAC_SHA1_96, ENCTYPE_AES256_CTS_HMAC_SHA384_192, + ENCTYPE_AES128_CTS_HMAC_SHA256_128, 0 }, +- { ENCTYPE_DES3_CBC_SHA1, +- ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, ++ { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, + ENCTYPE_AES256_CTS_HMAC_SHA384_192, ENCTYPE_AES128_CTS_HMAC_SHA256_128, + 0 }, + 0, 0 + }, +- /* Default set with families removed and enctypes added (one redundant) */ +- { "DEFAULT -des3 rc4-hmac rc4-hmac-exp", +- { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, +- ENCTYPE_DES3_CBC_SHA1, ENCTYPE_ARCFOUR_HMAC, 0 }, +- { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, +- ENCTYPE_ARCFOUR_HMAC, 0 }, +- { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, +- ENCTYPE_ARCFOUR_HMAC, ENCTYPE_ARCFOUR_HMAC_EXP, 0 }, +- 0, 0 +- }, +- /* Default set with family moved to front */ +- { "des3 +DEFAULT", +- { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES128_CTS_HMAC_SHA1_96, +- ENCTYPE_DES3_CBC_SHA1, 0 }, +- { ENCTYPE_DES3_CBC_SHA1, ENCTYPE_AES256_CTS_HMAC_SHA1_96, +- ENCTYPE_AES128_CTS_HMAC_SHA1_96, 0 }, +- { ENCTYPE_DES3_CBC_SHA1, ENCTYPE_AES256_CTS_HMAC_SHA1_96, +- ENCTYPE_AES128_CTS_HMAC_SHA1_96, 0 }, +- 0, 0 +- }, +- /* Two families with default set removed (exotic case), enctype added */ +- { "aes +rc4 -DEFaulT des3-hmac-sha1", +- { ENCTYPE_AES128_CTS_HMAC_SHA1_96, ENCTYPE_DES3_CBC_SHA1, +- ENCTYPE_ARCFOUR_HMAC, 0 }, +- { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES256_CTS_HMAC_SHA384_192, +- ENCTYPE_AES128_CTS_HMAC_SHA256_128, ENCTYPE_DES3_CBC_SHA1, 0 }, +- { ENCTYPE_AES256_CTS_HMAC_SHA1_96, ENCTYPE_AES256_CTS_HMAC_SHA384_192, +- ENCTYPE_AES128_CTS_HMAC_SHA256_128, ENCTYPE_DES3_CBC_SHA1, 0 }, +- 0, 0 +- }, + /* Test krb5_set_default_in_tkt_ktypes */ + { NULL, + { ENCTYPE_AES256_CTS_HMAC_SHA1_96, 0 }, +diff --git a/src/lib/krb5/os/t_trace.c b/src/lib/krb5/os/t_trace.c +index 10ba8d0ac..24064ffcf 100644 +--- a/src/lib/krb5/os/t_trace.c ++++ b/src/lib/krb5/os/t_trace.c +@@ -65,8 +65,8 @@ main (int argc, char *argv[]) + krb5_principal princ = &principal_data; + krb5_pa_data padata, padata2, **padatap; + krb5_enctype enctypes[4] = { +- ENCTYPE_DES3_CBC_SHA, ENCTYPE_ARCFOUR_HMAC_EXP, ENCTYPE_UNKNOWN, +- ENCTYPE_NULL}; ++ ENCTYPE_AES128_CTS_HMAC_SHA1_96, ENCTYPE_ARCFOUR_HMAC_EXP, ++ ENCTYPE_UNKNOWN, ENCTYPE_NULL}; + krb5_ccache ccache; + krb5_keytab keytab; + krb5_creds creds; +diff --git a/src/lib/krb5/os/t_trace.ref b/src/lib/krb5/os/t_trace.ref +index 044a66999..98fb14f3f 100644 +--- a/src/lib/krb5/os/t_trace.ref ++++ b/src/lib/krb5/os/t_trace.ref +@@ -41,7 +41,7 @@ int, krb5_principal type: ? + krb5_pa_data **, display list of padata type numbers: PA-PW-SALT (3), 0 + krb5_pa_data **, display list of padata type numbers: (empty) + krb5_enctype, display shortest name of enctype: aes128-cts +-krb5_enctype *, display list of enctypes: 5, rc4-hmac-exp, 511 ++krb5_enctype *, display list of enctypes: aes128-cts, rc4-hmac-exp, 511 + krb5_enctype *, display list of enctypes: (empty) + krb5_ccache, display type:name: FILE:/path/to/ccache + krb5_keytab, display name: FILE:/etc/krb5.keytab +diff --git a/src/plugins/preauth/pkinit/pkcs11.h b/src/plugins/preauth/pkinit/pkcs11.h +index e3d284631..586661bb7 100644 +--- a/src/plugins/preauth/pkinit/pkcs11.h ++++ b/src/plugins/preauth/pkinit/pkcs11.h +@@ -339,9 +339,9 @@ typedef unsigned long ck_key_type_t; + #define CKK_GENERIC_SECRET (0x10) + #define CKK_RC2 (0x11) + #define CKK_RC4 (0x12) +-#define CKK_DES (0x13) +-#define CKK_DES2 (0x14) +-#define CKK_DES3 (0x15) ++/* #define CKK_DES (0x13) */ ++/* #define CKK_DES2 (0x14) */ ++/* #define CKK_DES3 (0x15) */ + #define CKK_CAST (0x16) + #define CKK_CAST3 (0x17) + #define CKK_CAST128 (0x18) +diff --git a/src/plugins/preauth/pkinit/pkinit_clnt.c b/src/plugins/preauth/pkinit/pkinit_clnt.c +index 2817cc213..a385da7c3 100644 +--- a/src/plugins/preauth/pkinit/pkinit_clnt.c ++++ b/src/plugins/preauth/pkinit/pkinit_clnt.c +@@ -212,14 +212,6 @@ pkinit_as_req_create(krb5_context context, + auth_pack.clientPublicValue = &info; + auth_pack.supportedKDFs = (krb5_data **)supported_kdf_alg_ids; + +- /* add List of CMS algorithms */ +- retval = create_krb5_supportedCMSTypes(context, plgctx->cryptoctx, +- reqctx->cryptoctx, +- reqctx->idctx, &cmstypes); +- auth_pack.supportedCMSTypes = cmstypes; +- if (retval) +- goto cleanup; +- + switch(protocol) { + case DH_PROTOCOL: + TRACE_PKINIT_CLIENT_REQ_DH(context); +diff --git a/src/plugins/preauth/pkinit/pkinit_crypto.h b/src/plugins/preauth/pkinit/pkinit_crypto.h +index 77d5c61fe..1f9868351 100644 +--- a/src/plugins/preauth/pkinit/pkinit_crypto.h ++++ b/src/plugins/preauth/pkinit/pkinit_crypto.h +@@ -380,18 +380,6 @@ krb5_error_code server_process_dh + unsigned int *server_key_len_out); /* OUT + receives length of DH secret key */ + +-/* +- * this functions takes in crypto specific representation of +- * supportedCMSTypes and creates a list of +- * krb5_algorithm_identifier +- */ +-krb5_error_code create_krb5_supportedCMSTypes +- (krb5_context context, /* IN */ +- pkinit_plg_crypto_context plg_cryptoctx, /* IN */ +- pkinit_req_crypto_context req_cryptoctx, /* IN */ +- pkinit_identity_crypto_context id_cryptoctx, /* IN */ +- krb5_algorithm_identifier ***supportedCMSTypes); /* OUT */ +- + /* + * this functions takes in crypto specific representation of + * trustedCertifiers and creates a list of +diff --git a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c +index e5940a513..e1153344e 100644 +--- a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c ++++ b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c +@@ -5486,44 +5486,6 @@ cleanup: + return retval; + } + +-krb5_error_code +-create_krb5_supportedCMSTypes(krb5_context context, +- pkinit_plg_crypto_context plg_cryptoctx, +- pkinit_req_crypto_context req_cryptoctx, +- pkinit_identity_crypto_context id_cryptoctx, +- krb5_algorithm_identifier ***oids) +-{ +- +- krb5_error_code retval = ENOMEM; +- krb5_algorithm_identifier **loids = NULL; +- krb5_data des3oid = {0, 8, "\x2A\x86\x48\x86\xF7\x0D\x03\x07" }; +- +- *oids = NULL; +- loids = malloc(2 * sizeof(krb5_algorithm_identifier *)); +- if (loids == NULL) +- goto cleanup; +- loids[1] = NULL; +- loids[0] = malloc(sizeof(krb5_algorithm_identifier)); +- if (loids[0] == NULL) { +- free(loids); +- goto cleanup; +- } +- retval = pkinit_copy_krb5_data(&loids[0]->algorithm, &des3oid); +- if (retval) { +- free(loids[0]); +- free(loids); +- goto cleanup; +- } +- loids[0]->parameters.length = 0; +- loids[0]->parameters.data = NULL; +- +- *oids = loids; +- retval = 0; +-cleanup: +- +- return retval; +-} +- + krb5_error_code + create_krb5_trustedCertifiers(krb5_context context, + pkinit_plg_crypto_context plg_cryptoctx, +diff --git a/src/plugins/preauth/pkinit/pkinit_kdf_test.c b/src/plugins/preauth/pkinit/pkinit_kdf_test.c +index 7acbd0d28..cd998a29a 100644 +--- a/src/plugins/preauth/pkinit/pkinit_kdf_test.c ++++ b/src/plugins/preauth/pkinit/pkinit_kdf_test.c +@@ -49,7 +49,6 @@ char eighteen_bs[9]; + char party_u_name[] = "lha@SU.SE"; + char party_v_name[] = "krbtgt/SU.SE@SU.SE"; + int enctype_aes = ENCTYPE_AES256_CTS_HMAC_SHA1_96; +-int enctype_des3 = ENCTYPE_DES3_CBC_SHA1; + const krb5_data lha_data = DATA_FROM_STRING("lha"); + + krb5_octet key1_hex[] = +@@ -185,36 +184,6 @@ main(int argc, char **argv) + goto cleanup; + } + +- /* TEST 3: SHA-512/DES3 */ +- /* set up algorithm id */ +- alg_id.algorithm.data = (char *)krb5_pkinit_sha512_oid; +- alg_id.algorithm.length = krb5_pkinit_sha512_oid_len; +- +- enctype = enctype_des3; +- +- /* call pkinit_alg_agility_kdf() with test vector values*/ +- if (0 != (retval = pkinit_alg_agility_kdf(context, &secret, +- &alg_id.algorithm, +- u_principal, v_principal, +- enctype, &as_req, &pk_as_rep, +- &key_block))) { +- printf("ERROR in pkinit_kdf_test: kdf call failed, retval = %d", +- retval); +- goto cleanup; +- } +- +- /* compare key to expected key value */ +- +- if ((key_block.length == sizeof(key3_hex)) && +- (0 == memcmp(key_block.contents, key3_hex, key_block.length))) { +- printf("SUCCESS: TEST 3 (SHA-512/DES3), Correct key value generated.\n"); +- retval = 0; +- } else { +- printf("FAILURE: TEST 2 (SHA-512/DES3), Incorrect key value generated!\n"); +- retval = 1; +- goto cleanup; +- } +- + cleanup: + /* release all allocated resources, whether good or bad return */ + free(secret.data); +diff --git a/src/plugins/preauth/spake/t_vectors.c b/src/plugins/preauth/spake/t_vectors.c +index 2279202d3..96b0307d7 100644 +--- a/src/plugins/preauth/spake/t_vectors.c ++++ b/src/plugins/preauth/spake/t_vectors.c +@@ -56,31 +56,6 @@ struct test { + const char *K2; + const char *K3; + } tests[] = { +- { ENCTYPE_DES3_CBC_SHA1, SPAKE_GROUP_EDWARDS25519, +- /* initial key, w, x, y, T, S, K */ +- "850BB51358548CD05E86768C313E3BFEF7511937DCF72C3E", +- "686D84730CB8679AE95416C6567C6A63F2C9CEF124F7A3371AE81E11CAD42A37", +- "201012D07BFD48DDFA33C4AAC4FB1E229FB0D043CFE65EBFB14399091C71A723", +- "500B294797B8B042ACA1BEDC0F5931A4F52C537B3608B2D05CC8A2372F439F25", +- "18F511E750C97B592ACD30DB7D9E5FCA660389102E6BF610C1BFBED4616C8362", +- "5D10705E0D1E43D5DBF30240CCFBDE4A0230C70D4C79147AB0B317EDAD2F8AE7", +- "25BDE0D875F0FEB5755F45BA5E857889D916ECF7476F116AA31DC3E037EC4292", +- /* support, challenge, thash, body */ +- "A0093007A0053003020101", +- "A1363034A003020101A122042018F511E750C97B592ACD30DB7D9E5FCA660389" +- "102E6BF610C1BFBED4616C8362A20930073005A003020101", +- "EAAA08807D0616026FF51C849EFBF35BA0CE3C5300E7D486DA46351B13D4605B", +- "3075A00703050000000000A1143012A003020101A10B30091B07726165627572" +- "6EA2101B0E415448454E412E4D49542E454455A3233021A003020102A11A3018" +- "1B066B72627467741B0E415448454E412E4D49542E454455A511180F31393730" +- "303130313030303030305AA703020100A8053003020110", +- /* K'[0], K'[1], K'[2], K'[3] */ +- "BAF12FAE7CD958CBF1A29BFBC71F89CE49E03E295D89DAFD", +- "64F73DD9C41908206BCEC1F719026B574F9D13463D7A2520", +- "0454520B086B152C455829E6BAEFF78A61DFE9E3D04A895D", +- "4A92260B25E3EF94C125D5C24C3E5BCED5B37976E67F25C4", +- }, +- + { ENCTYPE_ARCFOUR_HMAC, SPAKE_GROUP_EDWARDS25519, + /* initial key, w, x, y, T, S, K */ + "8846F7EAEE8FB117AD06BDD830B7586C", +diff --git a/src/tests/dejagnu/config/default.exp b/src/tests/dejagnu/config/default.exp +index 85bbf478a..302dee74c 100644 +--- a/src/tests/dejagnu/config/default.exp ++++ b/src/tests/dejagnu/config/default.exp +@@ -15,8 +15,6 @@ set timeout 100 + set stty_init {erase \^h kill \^u} + set env(TERM) dumb + +-set des3_krbtgt 0 +- + if { [string length $VALGRIND] } { + rename spawn valgrind_aux_spawn + proc spawn { args } { +@@ -105,17 +103,9 @@ if { $PRIOCNTL_HACK } { + # particularly with regards to encryption types. + + set passes { +- { +- des3 +- mode=udp +- des3_krbtgt=1 +- {supported_enctypes=des3-cbc-sha1:normal} +- {dummy=[verbose -log "DES3 TGT, DES3 enctype"]} +- } + { + aes-only + mode=udp +- des3_krbtgt=0 + {supported_enctypes=aes256-cts-hmac-sha1-96:normal} + {permitted_enctypes(kdc)=aes256-cts-hmac-sha1-96} + {permitted_enctypes(client)=aes256-cts-hmac-sha1-96} +@@ -130,7 +120,6 @@ set passes { + { + aes-sha2-only + mode=udp +- des3_krbtgt=0 + {supported_enctypes=aes256-sha2:normal} + {permitted_enctypes(kdc)=aes256-sha2} + {permitted_enctypes(replica)=aes256-sha2} +@@ -146,7 +135,6 @@ set passes { + { + camellia-only + mode=udp +- des3_krbtgt=0 + {supported_enctypes=camellia256-cts:normal} + {permitted_enctypes(kdc)=camellia256-cts} + {permitted_enctypes(replica)=camellia256-cts} +@@ -159,32 +147,9 @@ set passes { + {master_key_type=camellia256-cts} + {dummy=[verbose -log "Camellia-256 enctype"]} + } +- { +- aes-des3 +- mode=udp +- des3_krbtgt=0 +- {supported_enctypes=aes256-cts-hmac-sha1-96:normal des3-cbc-sha1:normal} +- {permitted_enctypes(kdc)=aes256-cts-hmac-sha1-96 des3-cbc-sha1} +- {permitted_enctypes(client)=aes256-cts-hmac-sha1-96 des3-cbc-sha1} +- {permitted_enctypes(server)=aes256-cts-hmac-sha1-96 des3-cbc-sha1} +- {master_key_type=aes256-cts-hmac-sha1-96} +- {dummy=[verbose -log "AES + DES3 + DES enctypes"]} +- } +- { +- aes-des3tgt +- mode=udp +- des3_krbtgt=1 +- {supported_enctypes=aes256-cts-hmac-sha1-96:normal des3-cbc-sha1:normal} +- {permitted_enctypes(kdc)=aes256-cts-hmac-sha1-96 des3-cbc-sha1} +- {permitted_enctypes(client)=aes256-cts-hmac-sha1-96 des3-cbc-sha1} +- {permitted_enctypes(server)=aes256-cts-hmac-sha1-96 des3-cbc-sha1} +- {master_key_type=aes256-cts-hmac-sha1-96} +- {dummy=[verbose -log "AES enctypes, DES3 TGT"]} +- } + { + all-enctypes + mode=udp +- des3_krbtgt=0 + {allow_weak_crypto(kdc)=false} + {allow_weak_crypto(replica)=false} + {allow_weak_crypto(client)=false} +@@ -946,7 +911,6 @@ proc setup_kerberos_db { standalone } { + global REALMNAME KDB5_UTIL KADMIN_LOCAL KEY + global tmppwd hostname + global spawn_id +- global des3_krbtgt + global multipass_name last_passname_db + + set failall 0 +@@ -1143,48 +1107,6 @@ proc setup_kerberos_db { standalone } { + } + } + +- if $des3_krbtgt { +- # Set the TGT key to DES3. +- set test "kadmin.local TGT to DES3" +- set body { +- if $failall { +- break +- } +- spawn $KADMIN_LOCAL -r $REALMNAME -e des3-cbc-sha1:normal +- verbose "starting $test" +- expect_after $def_exp_after +- +- expect "kadmin.local: " +- send "cpw -randkey krbtgt/$REALMNAME@$REALMNAME\r" +- # It echos... +- expect "cpw -randkey krbtgt/$REALMNAME@$REALMNAME\r" +- expect { +- "Key for \"krbtgt/$REALMNAME@$REALMNAME\" randomized." { } +- } +- expect "kadmin.local: " +- send "quit\r" +- expect eof +- catch expect_after +- if ![check_exit_status kadmin_local] { +- break +- } +- } +- set ret [catch $body] +- catch "expect eof" +- catch expect_after +- if $ret { +- set failall 1 +- if $standalone { +- fail $test +- } else { +- delete_db +- } +- } else { +- if $standalone { +- pass $test +- } +- } +- } + envstack_pop + + # create the admin database lock file +diff --git a/src/tests/dejagnu/krb-standalone/kprop.exp b/src/tests/dejagnu/krb-standalone/kprop.exp +index 661e3fd9a..2b8f60045 100644 +--- a/src/tests/dejagnu/krb-standalone/kprop.exp ++++ b/src/tests/dejagnu/krb-standalone/kprop.exp +@@ -54,7 +54,7 @@ proc doit { } { + global REALMNAME KEY + global KADMIN_LOCAL KTUTIL KDB5_UTIL KPROPLOG KPROP kpropd_spawn_id + global hostname tmppwd spawn_id timeout +- global KRBIV supported_enctypes portbase mode ulog des3_krbtgt ++ global KRBIV supported_enctypes portbase mode ulog + + # Delete any db, ulog files + delete_db +diff --git a/src/tests/gssapi/t_enctypes.py b/src/tests/gssapi/t_enctypes.py +index 7494d7fcd..2f95d8996 100755 +--- a/src/tests/gssapi/t_enctypes.py ++++ b/src/tests/gssapi/t_enctypes.py +@@ -1,24 +1,17 @@ + from k5test import * + +-# Define some convenience abbreviations for enctypes we will see in +-# test program output. For background, aes256 and aes128 are "CFX +-# enctypes", meaning that they imply support for RFC 4121, while des3 +-# and rc4 are not. DES3 keys will appear as 'des3-cbc-raw' in +-# t_enctypes output because that's how GSSAPI does raw triple-DES +-# encryption without the RFC3961 framing. ++# Define some convenience abbreviations for enctypes we will see in test ++# program output. For background, aes256 and aes128 are "CFX enctypes", ++# meaning that they imply support for RFC 4121, while rc4 does not. + aes256 = 'aes256-cts-hmac-sha1-96' + aes128 = 'aes128-cts-hmac-sha1-96' +-des3 = 'des3-cbc-sha1' +-d_des3 = 'DEPRECATED:des3-cbc-sha1' +-des3raw = 'des3-cbc-raw' +-d_des3raw = 'DEPRECATED:des3-cbc-raw' + rc4 = 'arcfour-hmac' + d_rc4 = 'DEPRECATED:arcfour-hmac' + + # These tests make assumptions about the default enctype lists, so set + # them explicitly rather than relying on the library defaults. +-supp='aes256-cts:normal aes128-cts:normal des3-cbc-sha1:normal rc4-hmac:normal' +-conf = {'libdefaults': {'permitted_enctypes': 'aes des3 rc4'}, ++supp='aes256-cts:normal aes128-cts:normal rc4-hmac:normal' ++conf = {'libdefaults': {'permitted_enctypes': 'aes rc4'}, + 'realms': {'$realm': {'supported_enctypes': supp}}} + realm = K5Realm(krb5_conf=conf) + shutil.copyfile(realm.ccache, os.path.join(realm.testdir, 'save')) +@@ -87,19 +80,12 @@ test('both aes128', 'aes128-cts', 'aes128-cts', + test_err('acc aes128', None, 'aes128-cts', + 'Encryption type aes256-cts-hmac-sha1-96 not permitted') + +-# If the initiator constrains the permitted session enctypes to des3, +-# no acceptor subkey will be generated because we can't upgrade to a +-# CFX enctype. +-test('init des3', 'des3', None, +- tktenc=aes256, tktsession=d_des3, +- proto='rfc1964', isubkey=des3raw, asubkey=None) +- + # Force the ticket session key to be rc4, so we can test some subkey + # upgrade cases. The ticket encryption key remains aes256. + realm.run([kadminl, 'setstr', realm.host_princ, 'session_enctypes', 'rc4']) + + # With no arguments, the initiator should send an upgrade list of +-# [aes256 aes128 des3] and the acceptor should upgrade to an aes256 ++# [aes256 aes128] and the acceptor should upgrade to an aes256 + # subkey. + test('upgrade noargs', None, None, + tktenc=aes256, tktsession=d_rc4, +@@ -115,13 +101,6 @@ test('upgrade init aes128+rc4', 'aes128-cts rc4', None, + tktenc=aes256, tktsession=d_rc4, + proto='cfx', isubkey=rc4, asubkey=aes128) + +-# If the initiator permits rc4 but prefers des3, it will send an +-# upgrade list of [des3], but the acceptor won't generate a subkey +-# because des3 isn't a CFX enctype. +-test('upgrade init des3+rc4', 'des3 rc4', None, +- tktenc=aes256, tktsession=d_rc4, +- proto='rfc1964', isubkey=rc4, asubkey=None) +- + # If the acceptor permits only aes128, subkey negotiation will fail + # because the ticket session key and initiator subkey are + # non-permitted. (This is unfortunate if the acceptor's restriction +diff --git a/src/tests/gssapi/t_invalid.c b/src/tests/gssapi/t_invalid.c +index 9876a11e6..fb8fe5511 100644 +--- a/src/tests/gssapi/t_invalid.c ++++ b/src/tests/gssapi/t_invalid.c +@@ -84,18 +84,6 @@ struct test { + size_t toklen; + const char *token; + } tests[] = { +- { +- ENCTYPE_DES3_CBC_SHA1, ENCTYPE_DES3_CBC_RAW, +- SEAL_ALG_DES3KD, SGN_ALG_HMAC_SHA1_DES3_KD, 20, +- 24, +- "\x4F\xEA\x19\x19\x5E\x0E\x10\xDF\x3D\x29\xB5\x13\x8F\x01\xC7\xA7" +- "\x92\x3D\x38\xF7\x26\x73\x0D\x6D", +- 65, +- "\x60\x3F\x06\x09\x2A\x86\x48\x86\xF7\x12\x01\x02\x02\x02\x01\x04" +- "\x00\x02\x00\xFF\xFF\xEB\xF3\x9A\x89\x24\x57\xB8\x63\x95\x25\xE8" +- "\x6E\x8E\x79\xE6\x2E\xCA\xD3\xFF\x57\x9F\x8C\xAB\xEF\xDD\x28\x10" +- "\x2F\x93\x21\x2E\xF2\x52\xB6\x6F\xA8\xBB\x8A\x6D\xAA\x6F\xB7\xF4\xD4" +- }, + { + ENCTYPE_ARCFOUR_HMAC, ENCTYPE_ARCFOUR_HMAC, + SEAL_ALG_MICROSOFT_RC4, SGN_ALG_HMAC_MD5, 8, +diff --git a/src/tests/gssapi/t_pcontok.c b/src/tests/gssapi/t_pcontok.c +index 7368f752f..bf22bd3da 100644 +--- a/src/tests/gssapi/t_pcontok.c ++++ b/src/tests/gssapi/t_pcontok.c +@@ -43,7 +43,6 @@ + #include "k5-int.h" + #include "common.h" + +-#define SGN_ALG_HMAC_SHA1_DES3_KD 0x04 + #define SGN_ALG_HMAC_MD5 0x11 + + /* +@@ -77,17 +76,12 @@ make_delete_token(gss_krb5_lucid_context_v1_t *lctx, gss_buffer_desc *out) + ret = krb5_k_create_key(context, &seqkb, &seq); + check_k5err(context, "krb5_k_create_key", ret); + +- if (signalg == SGN_ALG_HMAC_SHA1_DES3_KD) { +- cktype = CKSUMTYPE_HMAC_SHA1_DES3; +- cksize = 20; +- ckusage = 23; +- } else if (signalg == SGN_ALG_HMAC_MD5) { +- cktype = CKSUMTYPE_HMAC_MD5_ARCFOUR; +- cksize = 8; +- ckusage = 15; +- } else { ++ if (signalg != SGN_ALG_HMAC_MD5) + abort(); +- } ++ ++ cktype = CKSUMTYPE_HMAC_MD5_ARCFOUR; ++ cksize = 8; ++ ckusage = 15; + + tlen = 20 + mech_krb5.length + cksize; + token = malloc(tlen); +diff --git a/src/tests/gssapi/t_prf.c b/src/tests/gssapi/t_prf.c +index f71774cdc..d1857c433 100644 +--- a/src/tests/gssapi/t_prf.c ++++ b/src/tests/gssapi/t_prf.c +@@ -41,13 +41,6 @@ static struct { + const char *key2; + const char *out2; + } tests[] = { +- { ENCTYPE_DES3_CBC_SHA1, +- "70378A19CD64134580C27C0115D6B34A1CF2FEECEF9886A2", +- "9F8D127C520BB826BFF3E0FE5EF352389C17E0C073D9" +- "AC4A333D644D21BA3EF24F4A886D143F85AC9F6377FB", +- "3452A167DF1094BA1089E0A20E9E51ABEF1525922558B69E", +- "6BF24FABC858F8DD9752E4FCD331BB831F238B5BE190" +- "4EEA42E38F7A60C588F075C5C96A67E7F8B7BD0AECF4" }, + { ENCTYPE_ARCFOUR_HMAC, + "3BB3AE288C12B3B9D06B208A4151B3B6", + "9AEA11A3BCF3C53F1F91F5A0BA2132E2501ADF5F3C28" +diff --git a/src/tests/t_authdata.py b/src/tests/t_authdata.py +index 3fa957ad2..2e01f46bc 100644 +--- a/src/tests/t_authdata.py ++++ b/src/tests/t_authdata.py +@@ -174,7 +174,7 @@ realm.run([kvno, 'restricted']) + # preferred krbtgt enctype changes. + mark('#8139 regression test') + realm.kinit(realm.user_princ, password('user'), ['-f']) +-realm.run([kadminl, 'cpw', '-randkey', '-keepold', '-e', 'des3-cbc-sha1', ++realm.run([kadminl, 'cpw', '-randkey', '-keepold', '-e', 'aes256-sha2', + realm.krbtgt_princ]) + realm.run(['./forward']) + realm.run([kvno, realm.host_princ]) +diff --git a/src/tests/t_etype_info.py b/src/tests/t_etype_info.py +index c982508d8..96e90a69d 100644 +--- a/src/tests/t_etype_info.py ++++ b/src/tests/t_etype_info.py +@@ -1,6 +1,6 @@ + from k5test import * + +-supported_enctypes = 'aes128-cts des3-cbc-sha1 rc4-hmac' ++supported_enctypes = 'aes128-cts rc4-hmac' + conf = {'libdefaults': {'allow_weak_crypto': 'true'}, + 'realms': {'$realm': {'supported_enctypes': supported_enctypes}}} + realm = K5Realm(create_host=False, get_creds=False, krb5_conf=conf) +@@ -26,9 +26,9 @@ def test_etinfo(princ, enctypes, expected_lines): + # With no newer enctypes in the request, PA-ETYPE-INFO2, + # PA-ETYPE-INFO, and PA-PW-SALT appear in the AS-REP, each listing one + # key for the most preferred matching enctype. +-test_etinfo('user', 'rc4-hmac-exp des3 rc4', +- ['asrep etype_info2 des3-cbc-sha1 KRBTEST.COMuser', +- 'asrep etype_info des3-cbc-sha1 KRBTEST.COMuser', ++test_etinfo('user', 'rc4-hmac-exp rc4', ++ ['asrep etype_info2 rc4-hmac KRBTEST.COMuser', ++ 'asrep etype_info rc4-hmac KRBTEST.COMuser', + 'asrep pw_salt KRBTEST.COMuser']) + + # With a newer enctype in the request (even if it is not the most +@@ -39,9 +39,9 @@ test_etinfo('user', 'rc4 aes256-cts', + + # In preauth-required errors, PA-PW-SALT does not appear, but the same + # etype-info2 values are expected. +-test_etinfo('preauthuser', 'rc4-hmac-exp des3 rc4', +- ['error etype_info2 des3-cbc-sha1 KRBTEST.COMpreauthuser', +- 'error etype_info des3-cbc-sha1 KRBTEST.COMpreauthuser']) ++test_etinfo('preauthuser', 'rc4-hmac-exp rc4', ++ ['error etype_info2 rc4-hmac KRBTEST.COMpreauthuser', ++ 'error etype_info rc4-hmac KRBTEST.COMpreauthuser']) + test_etinfo('preauthuser', 'rc4 aes256-cts', + ['error etype_info2 rc4-hmac KRBTEST.COMpreauthuser']) + +@@ -50,8 +50,8 @@ test_etinfo('preauthuser', 'rc4 aes256-cts', + # (to allow for preauth mechs which don't depend on long-term keys). + # An AS-REP cannot be generated without preauth as there is no reply + # key. +-test_etinfo('rc4user', 'des3', []) +-test_etinfo('nokeyuser', 'des3', []) ++test_etinfo('rc4user', 'aes128-cts', []) ++test_etinfo('nokeyuser', 'aes128-cts', []) + + # Verify that etype-info2 is included in a MORE_PREAUTH_DATA_REQUIRED + # error if the client does optimistic preauth. +diff --git a/src/tests/t_keyrollover.py b/src/tests/t_keyrollover.py +index 2c825a692..f29e0d550 100755 +--- a/src/tests/t_keyrollover.py ++++ b/src/tests/t_keyrollover.py +@@ -37,9 +37,9 @@ realm.run([klist, '-e'], expected_msg=msg) + + # Test that the KDC only accepts the first enctype for a kvno, for a + # local-realm TGS request. To set this up, we abuse an edge-case +-# behavior of modprinc -kvno. First, set up a DES3 krbtgt entry at ++# behavior of modprinc -kvno. First, set up an aes128-sha2 krbtgt entry at + # kvno 1 and cache a krbtgt ticket. +-realm.run([kadminl, 'cpw', '-randkey', '-e', 'des3-cbc-sha1', ++realm.run([kadminl, 'cpw', '-randkey', '-e', 'aes128-cts-hmac-sha256-128', + realm.krbtgt_princ]) + realm.run([kadminl, 'modprinc', '-kvno', '1', realm.krbtgt_princ]) + realm.kinit(realm.user_princ, password('user')) +@@ -50,9 +50,9 @@ realm.run([kadminl, 'cpw', '-randkey', '-keepold', '-e', 'aes256-cts', + realm.run([kadminl, 'modprinc', '-kvno', '1', realm.krbtgt_princ]) + out = realm.run([kadminl, 'getprinc', realm.krbtgt_princ]) + if 'vno 1, aes256-cts' not in out or \ +- 'vno 1, DEPRECATED:des3-cbc-sha1' not in out: ++ 'vno 1, aes128-cts-hmac-sha256-128' not in out: + fail('keyrollover: setup for TGS enctype test failed') +-# Now present the DES3 ticket to the KDC and make sure it's rejected. ++# Now present the aes128-sha2 ticket to the KDC and make sure it's rejected. + realm.run([kvno, realm.host_princ], expected_code=1) + + realm.stop() +diff --git a/src/tests/t_mkey.py b/src/tests/t_mkey.py +index 32f4070bc..da0ed1831 100755 +--- a/src/tests/t_mkey.py ++++ b/src/tests/t_mkey.py +@@ -7,7 +7,6 @@ import struct + # default enctype for master keys. + aes256 = 'aes256-cts-hmac-sha1-96' + aes128 = 'aes128-cts-hmac-sha1-96' +-des3 = 'des3-cbc-sha1' + defetype = aes256 + + realm = K5Realm(create_host=False, start_kadmind=True) +@@ -300,40 +299,6 @@ if 'Decrypt integrity check failed' in out or 'added to keytab' not in out: + + realm.stop() + +-# Load a dump file created with krb5 1.6, before the master key +-# rollover changes were introduced. Write out an old-format stash +-# file consistent with the dump's master password ("footes"). The K/M +-# entry in this database will not have actkvno tl-data because it was +-# created prior to master key rollover support. Verify that: +-# 1. We can access the database using the old-format stash file. +-# 2. list_mkeys displays the same list as for a post-1.7 KDB. +-mark('pre-1.7 stash file') +-dumpfile = os.path.join(srctop, 'tests', 'dumpfiles', 'dump.16') +-os.remove(stash_file) +-f = open(stash_file, 'wb') +-f.write(struct.pack('=HL24s', 16, 24, +- b'\xF8\x3E\xFB\xBA\x6D\x80\xD9\x54\xE5\x5D\xF2\xE0' +- b'\x94\xAD\x6D\x86\xB5\x16\x37\xEC\x7C\x8A\xBC\x86')) +-f.close() +-realm.run([kdb5_util, 'load', dumpfile]) +-nprincs = len(realm.run([kadminl, 'listprincs']).splitlines()) +-check_mkvno('K/M', 1) +-check_mkey_list((1, des3, True, True)) +- +-# Create a new master key and verify that, without actkvkno tl-data: +-# 1. list_mkeys displays the same as for a post-1.7 KDB. +-# 2. update_princ_encryption still targets mkvno 1. +-# 3. libkadm5 still uses mkvno 1 for key changes. +-# 4. use_mkey creates the same list as for a post-1.7 KDB. +-mark('rollover from pre-1.7 KDB') +-add_mkey([]) +-check_mkey_list((2, defetype, False, False), (1, des3, True, True)) +-update_princ_encryption(False, 1, 0, nprincs - 1) +-realm.run([kadminl, 'addprinc', '-randkey', realm.user_princ]) +-check_mkvno(realm.user_princ, 1) +-realm.run([kdb5_util, 'use_mkey', '2', 'now-1day']) +-check_mkey_list((2, defetype, True, True), (1, des3, True, False)) +- + # Regression test for #8395. Purge the master key and verify that a + # master key fetch does not segfault. + mark('#8395 regression test') +diff --git a/src/tests/t_salt.py b/src/tests/t_salt.py +index 65084bbf3..55ca89745 100755 +--- a/src/tests/t_salt.py ++++ b/src/tests/t_salt.py +@@ -16,13 +16,12 @@ def test_salt(realm, e1, salt, e2): + + # Enctype/salt pairs chosen with non-default salt types. + # The enctypes are mostly arbitrary. +-salts = [('des3-cbc-sha1', 'norealm'), ++salts = [('aes128-cts-hmac-sha1-96', 'norealm'), + ('arcfour-hmac', 'onlyrealm'), + ('aes128-cts-hmac-sha1-96', 'special')] + # These enctypes are chosen to cover the different string-to-key routines. + # Omit ":normal" from aes256 to check that salttype defaulting works. +-second_kstypes = ['aes256-cts-hmac-sha1-96', 'arcfour-hmac:normal', +- 'des3-cbc-sha1:normal'] ++second_kstypes = ['aes256-cts-hmac-sha1-96', 'arcfour-hmac:normal'] + + # Test using different salt types in a principal's key list. + # Parameters from one key in the list must not leak over to later ones. +diff --git a/src/util/k5test.py b/src/util/k5test.py +index 6afe4b92c..789b0f4b9 100644 +--- a/src/util/k5test.py ++++ b/src/util/k5test.py +@@ -1278,13 +1278,6 @@ _passes = [ + # No special settings; exercises AES256. + ('default', None, None, None), + +- # Exercise the DES3 enctype. +- ('des3', None, +- {'libdefaults': {'permitted_enctypes': 'des3'}}, +- {'realms': {'$realm': { +- 'supported_enctypes': 'des3-cbc-sha1:normal', +- 'master_key_type': 'des3-cbc-sha1'}}}), +- + # Exercise the arcfour enctype. + ('arcfour', None, + {'libdefaults': {'permitted_enctypes': 'rc4'}}, +diff --git a/src/windows/leash/htmlhelp/html/Encryption_Types.htm b/src/windows/leash/htmlhelp/html/Encryption_Types.htm +index 1aebdd0b4..c38eefd2b 100644 +--- a/src/windows/leash/htmlhelp/html/Encryption_Types.htm ++++ b/src/windows/leash/htmlhelp/html/Encryption_Types.htm +@@ -79,19 +79,6 @@ will have an entry in the Encryption type column.
+ Description + + +- des3- +- The triple DES family improves on +-the original DES (Data Encryption Standard) by using 3 separate 56-bit +-keys. Some modes of 3DES are considered weak while others are strong +-(if slow).
    +-
  • des3-cbc-sha1
  • +-
  • des3-cbc-raw (weak)
  • +-
  • des3-hmac-sha1
  • +-
  • des3-cbc-sha1-kd
  • +-
+- +- +- + aes + The AES Advanced Encryption Standard + family, like 3DES, is a symmetric block cipher and was designed diff --git a/downstream-SELinux-integration.patch b/downstream-SELinux-integration.patch new file mode 100644 index 0000000..48b058b --- /dev/null +++ b/downstream-SELinux-integration.patch @@ -0,0 +1,1034 @@ +From 97966ffaac6bf9f2e09ac33a16b15794b31d51de Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Tue, 23 Aug 2016 16:30:53 -0400 +Subject: [PATCH] [downstream] SELinux integration + +SELinux bases access to files on the domain of the requesting process, +the operation being performed, and the context applied to the file. + +In many cases, applications needn't be SELinux aware to work properly, +because SELinux can apply a default label to a file based on the label +of the directory in which it's created. + +In the case of files such as /etc/krb5.keytab, however, this isn't +sufficient, as /etc/krb5.keytab will almost always need to be given a +label which differs from that of /etc/issue or /etc/resolv.conf. The +the kdb stash file needs a different label than the database for which +it's holding a master key, even though both typically live in the same +directory. + +To give the file the correct label, we can either force a "restorecon" +call to fix a file's label after it's created, or create the file with +the right label, as we attempt to do here. We lean on THREEPARAMOPEN +and define a similar macro named WRITABLEFOPEN with which we replace +several uses of fopen(). + +The file creation context that we're manipulating here is a process-wide +attribute. While for the most part, applications which need to label +files when they're created have tended to be single-threaded, there's +not much we can do to avoid interfering with an application that +manipulates the creation context directly. Right now we're mediating +access using a library-local mutex, but that can only work for consumers +that are part of this package -- an unsuspecting application will still +stomp all over us. + +The selabel APIs for looking up the context should be thread-safe (per +Red Hat #273081), so switching to using them instead of matchpathcon(), +which we used earlier, is some improvement. + +Last-updated: krb5-1.18-beta1 +--- + src/aclocal.m4 | 48 +++ + src/build-tools/krb5-config.in | 3 +- + src/config/pre.in | 3 +- + src/configure.ac | 2 + + src/include/k5-int.h | 1 + + src/include/k5-label.h | 32 ++ + src/include/krb5/krb5.hin | 6 + + src/kadmin/dbutil/dump.c | 11 +- + src/kdc/main.c | 2 +- + src/kprop/kpropd.c | 9 + + src/lib/kadm5/logger.c | 4 +- + src/lib/kdb/kdb_log.c | 2 +- + src/lib/krb5/ccache/cc_dir.c | 26 +- + src/lib/krb5/keytab/kt_file.c | 4 +- + src/lib/krb5/os/trace.c | 2 +- + src/plugins/kdb/db2/adb_openclose.c | 2 +- + src/plugins/kdb/db2/kdb_db2.c | 4 +- + src/plugins/kdb/db2/libdb2/btree/bt_open.c | 3 +- + src/plugins/kdb/db2/libdb2/hash/hash.c | 3 +- + src/plugins/kdb/db2/libdb2/recno/rec_open.c | 4 +- + .../kdb/ldap/ldap_util/kdb5_ldap_services.c | 11 +- + src/util/profile/prof_file.c | 3 +- + src/util/support/Makefile.in | 3 +- + src/util/support/selinux.c | 406 ++++++++++++++++++ + 24 files changed, 573 insertions(+), 21 deletions(-) + create mode 100644 src/include/k5-label.h + create mode 100644 src/util/support/selinux.c + +diff --git a/src/aclocal.m4 b/src/aclocal.m4 +index ca9fcf664..5afb96e58 100644 +--- a/src/aclocal.m4 ++++ b/src/aclocal.m4 +@@ -85,6 +85,7 @@ AC_SUBST_FILE(libnodeps_frag) + dnl + KRB5_AC_PRAGMA_WEAK_REF + WITH_LDAP ++KRB5_WITH_SELINUX + KRB5_LIB_PARAMS + KRB5_AC_INITFINI + KRB5_AC_ENABLE_THREADS +@@ -1745,4 +1746,51 @@ AC_SUBST(PAM_LIBS) + AC_SUBST(PAM_MAN) + AC_SUBST(NON_PAM_MAN) + ])dnl ++dnl ++dnl Use libselinux to set file contexts on newly-created files. ++dnl ++AC_DEFUN(KRB5_WITH_SELINUX,[ ++AC_ARG_WITH(selinux,[AC_HELP_STRING(--with-selinux,[compile with SELinux labeling support])], ++ withselinux="$withval",withselinux=auto) ++old_LIBS="$LIBS" ++if test "$withselinux" != no ; then ++ AC_MSG_RESULT([checking for libselinux...]) ++ SELINUX_LIBS= ++ AC_CHECK_HEADERS(selinux/selinux.h selinux/label.h) ++ if test "x$ac_cv_header_selinux_selinux_h" != xyes ; then ++ if test "$withselinux" = auto ; then ++ AC_MSG_RESULT([Unable to locate selinux/selinux.h.]) ++ withselinux=no ++ else ++ AC_MSG_ERROR([Unable to locate selinux/selinux.h.]) ++ fi ++ fi + ++ LIBS= ++ unset ac_cv_func_setfscreatecon ++ AC_CHECK_FUNCS(setfscreatecon selabel_open) ++ if test "x$ac_cv_func_setfscreatecon" = xno ; then ++ AC_CHECK_LIB(selinux,setfscreatecon) ++ unset ac_cv_func_setfscreatecon ++ AC_CHECK_FUNCS(setfscreatecon selabel_open) ++ if test "x$ac_cv_func_setfscreatecon" = xyes ; then ++ SELINUX_LIBS="$LIBS" ++ else ++ if test "$withselinux" = auto ; then ++ AC_MSG_RESULT([Unable to locate libselinux.]) ++ withselinux=no ++ else ++ AC_MSG_ERROR([Unable to locate libselinux.]) ++ fi ++ fi ++ fi ++ if test "$withselinux" != no ; then ++ AC_MSG_NOTICE([building with SELinux labeling support]) ++ AC_DEFINE(USE_SELINUX,1,[Define if Kerberos-aware tools should set SELinux file contexts when creating files.]) ++ SELINUX_LIBS="$LIBS" ++ EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS krb5int_labeled_open krb5int_labeled_fopen krb5int_push_fscreatecon_for krb5int_pop_fscreatecon" ++ fi ++fi ++LIBS="$old_LIBS" ++AC_SUBST(SELINUX_LIBS) ++])dnl +diff --git a/src/build-tools/krb5-config.in b/src/build-tools/krb5-config.in +index dead0dddc..fef3e054f 100755 +--- a/src/build-tools/krb5-config.in ++++ b/src/build-tools/krb5-config.in +@@ -41,6 +41,7 @@ DL_LIB='@DL_LIB@' + DEFCCNAME='@DEFCCNAME@' + DEFKTNAME='@DEFKTNAME@' + DEFCKTNAME='@DEFCKTNAME@' ++SELINUX_LIBS='@SELINUX_LIBS@' + + LIBS='@LIBS@' + GEN_LIB=@GEN_LIB@ +@@ -254,7 +255,7 @@ if test -n "$do_libs"; then + fi + + # If we ever support a flag to generate output suitable for static +- # linking, we would output "-lkrb5support $GEN_LIB $LIBS $DL_LIB" ++ # linking, we would output "-lkrb5support $GEN_LIB $LIBS $SELINUX_LIBS $DL_LIB" + # here. + + echo $lib_flags +diff --git a/src/config/pre.in b/src/config/pre.in +index 3752174c7..0d2068575 100644 +--- a/src/config/pre.in ++++ b/src/config/pre.in +@@ -177,6 +177,7 @@ LD = $(PURE) @LD@ + KRB_INCLUDES = -I$(BUILDTOP)/include -I$(top_srcdir)/include + LDFLAGS = @LDFLAGS@ + LIBS = @LIBS@ ++SELINUX_LIBS=@SELINUX_LIBS@ + + INSTALL=@INSTALL@ + INSTALL_STRIP= +@@ -403,7 +404,7 @@ SUPPORT_LIB = -l$(SUPPORT_LIBNAME) + # HESIOD_LIBS is -lhesiod... + HESIOD_LIBS = @HESIOD_LIBS@ + +-KRB5_BASE_LIBS = $(KRB5_LIB) $(K5CRYPTO_LIB) $(COM_ERR_LIB) $(SUPPORT_LIB) $(GEN_LIB) $(LIBS) $(DL_LIB) ++KRB5_BASE_LIBS = $(KRB5_LIB) $(K5CRYPTO_LIB) $(COM_ERR_LIB) $(SUPPORT_LIB) $(GEN_LIB) $(LIBS) $(SELINUX_LIBS) $(DL_LIB) + KDB5_LIBS = $(KDB5_LIB) $(GSSRPC_LIBS) + GSS_LIBS = $(GSS_KRB5_LIB) + # needs fixing if ever used on macOS! +diff --git a/src/configure.ac b/src/configure.ac +index 693f76a81..dd2cad3ee 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -1391,6 +1391,8 @@ AC_PATH_PROG(GROFF, groff) + + KRB5_WITH_PAM + ++KRB5_WITH_SELINUX ++ + # Make localedir work in autoconf 2.5x. + if test "${localedir+set}" != set; then + localedir='$(datadir)/locale' +diff --git a/src/include/k5-int.h b/src/include/k5-int.h +index cf524252f..efb523689 100644 +--- a/src/include/k5-int.h ++++ b/src/include/k5-int.h +@@ -128,6 +128,7 @@ typedef unsigned char u_char; + + + #include "k5-platform.h" ++#include "k5-label.h" + + #define KRB5_KDB_MAX_LIFE (60*60*24) /* one day */ + #define KRB5_KDB_MAX_RLIFE (60*60*24*7) /* one week */ +diff --git a/src/include/k5-label.h b/src/include/k5-label.h +new file mode 100644 +index 000000000..dfaaa847c +--- /dev/null ++++ b/src/include/k5-label.h +@@ -0,0 +1,32 @@ ++#ifndef _KRB5_LABEL_H ++#define _KRB5_LABEL_H ++ ++#ifdef THREEPARAMOPEN ++#undef THREEPARAMOPEN ++#endif ++#ifdef WRITABLEFOPEN ++#undef WRITABLEFOPEN ++#endif ++ ++/* Wrapper functions which help us create files and directories with the right ++ * context labels. */ ++#ifdef USE_SELINUX ++#include ++#include ++#include ++#include ++#include ++FILE *krb5int_labeled_fopen(const char *path, const char *mode); ++int krb5int_labeled_creat(const char *path, mode_t mode); ++int krb5int_labeled_open(const char *path, int flags, ...); ++int krb5int_labeled_mkdir(const char *path, mode_t mode); ++int krb5int_labeled_mknod(const char *path, mode_t mode, dev_t device); ++#define THREEPARAMOPEN(x,y,z) krb5int_labeled_open(x,y,z) ++#define WRITABLEFOPEN(x,y) krb5int_labeled_fopen(x,y) ++void *krb5int_push_fscreatecon_for(const char *pathname); ++void krb5int_pop_fscreatecon(void *previous); ++#else ++#define WRITABLEFOPEN(x,y) fopen(x,y) ++#define THREEPARAMOPEN(x,y,z) open(x,y,z) ++#endif ++#endif +diff --git a/src/include/krb5/krb5.hin b/src/include/krb5/krb5.hin +index 045334a08..db80063eb 100644 +--- a/src/include/krb5/krb5.hin ++++ b/src/include/krb5/krb5.hin +@@ -87,6 +87,12 @@ + #define THREEPARAMOPEN(x,y,z) open(x,y,z) + #endif + ++#if KRB5_PRIVATE ++#ifndef WRITABLEFOPEN ++#define WRITABLEFOPEN(x,y) fopen(x,y) ++#endif ++#endif ++ + #define KRB5_OLD_CRYPTO + + #include +diff --git a/src/kadmin/dbutil/dump.c b/src/kadmin/dbutil/dump.c +index 634ba4a8b..cea7939f4 100644 +--- a/src/kadmin/dbutil/dump.c ++++ b/src/kadmin/dbutil/dump.c +@@ -148,12 +148,21 @@ create_ofile(char *ofile, char **tmpname) + { + int fd = -1; + FILE *f; ++#ifdef USE_SELINUX ++ void *selabel; ++#endif + + *tmpname = NULL; + if (asprintf(tmpname, "%s-XXXXXX", ofile) < 0) + goto error; + ++#ifdef USE_SELINUX ++ selabel = krb5int_push_fscreatecon_for(ofile); ++#endif + fd = mkstemp(*tmpname); ++#ifdef USE_SELINUX ++ krb5int_pop_fscreatecon(selabel); ++#endif + if (fd == -1) + goto error; + +@@ -197,7 +206,7 @@ prep_ok_file(krb5_context context, char *file_name, int *fd_out) + goto cleanup; + } + +- fd = open(file_ok, O_WRONLY | O_CREAT | O_TRUNC, 0600); ++ fd = THREEPARAMOPEN(file_ok, O_WRONLY | O_CREAT | O_TRUNC, 0600); + if (fd == -1) { + com_err(progname, errno, _("while creating 'ok' file, '%s'"), file_ok); + goto cleanup; +diff --git a/src/kdc/main.c b/src/kdc/main.c +index 3be6dcb07..24d441e16 100644 +--- a/src/kdc/main.c ++++ b/src/kdc/main.c +@@ -872,7 +872,7 @@ write_pid_file(const char *path) + FILE *file; + unsigned long pid; + +- file = fopen(path, "w"); ++ file = WRITABLEFOPEN(path, "w"); + if (file == NULL) + return errno; + pid = (unsigned long) getpid(); +diff --git a/src/kprop/kpropd.c b/src/kprop/kpropd.c +index 498ca599a..c6b8efc28 100644 +--- a/src/kprop/kpropd.c ++++ b/src/kprop/kpropd.c +@@ -487,6 +487,9 @@ doit(int fd) + krb5_enctype etype; + int database_fd; + char host[INET6_ADDRSTRLEN + 1]; ++#ifdef USE_SELINUX ++ void *selabel; ++#endif + + signal_wrapper(SIGALRM, alarm_handler); + alarm(params.iprop_resync_timeout); +@@ -542,9 +545,15 @@ doit(int fd) + free(name); + exit(1); + } ++#ifdef USE_SELINUX ++ selabel = krb5int_push_fscreatecon_for(file); ++#endif + omask = umask(077); + lock_fd = open(temp_file_name, O_RDWR | O_CREAT, 0600); + (void)umask(omask); ++#ifdef USE_SELINUX ++ krb5int_pop_fscreatecon(selabel); ++#endif + retval = krb5_lock_file(kpropd_context, lock_fd, + KRB5_LOCKMODE_EXCLUSIVE | KRB5_LOCKMODE_DONTBLOCK); + if (retval) { +diff --git a/src/lib/kadm5/logger.c b/src/lib/kadm5/logger.c +index c6885edf2..9aec3c05e 100644 +--- a/src/lib/kadm5/logger.c ++++ b/src/lib/kadm5/logger.c +@@ -309,7 +309,7 @@ krb5_klog_init(krb5_context kcontext, char *ename, char *whoami, krb5_boolean do + */ + append = (cp[4] == ':') ? O_APPEND : 0; + if (append || cp[4] == '=') { +- fd = open(&cp[5], O_CREAT | O_WRONLY | append, ++ fd = THREEPARAMOPEN(&cp[5], O_CREAT | O_WRONLY | append, + S_IRUSR | S_IWUSR | S_IRGRP); + if (fd != -1) + f = fdopen(fd, append ? "a" : "w"); +@@ -776,7 +776,7 @@ krb5_klog_reopen(krb5_context kcontext) + * In case the old logfile did not get moved out of the + * way, open for append to prevent squashing the old logs. + */ +- f = fopen(log_control.log_entries[lindex].lfu_fname, "a+"); ++ f = WRITABLEFOPEN(log_control.log_entries[lindex].lfu_fname, "a+"); + if (f) { + set_cloexec_file(f); + log_control.log_entries[lindex].lfu_filep = f; +diff --git a/src/lib/kdb/kdb_log.c b/src/lib/kdb/kdb_log.c +index 2659a2501..e9b95fce5 100644 +--- a/src/lib/kdb/kdb_log.c ++++ b/src/lib/kdb/kdb_log.c +@@ -480,7 +480,7 @@ ulog_map(krb5_context context, const char *logname, uint32_t ulogentries) + return ENOMEM; + + if (stat(logname, &st) == -1) { +- log_ctx->ulogfd = open(logname, O_RDWR | O_CREAT, 0600); ++ log_ctx->ulogfd = THREEPARAMOPEN(logname, O_RDWR | O_CREAT, 0600); + if (log_ctx->ulogfd == -1) { + retval = errno; + goto cleanup; +diff --git a/src/lib/krb5/ccache/cc_dir.c b/src/lib/krb5/ccache/cc_dir.c +index 7b100a0ec..5683a0433 100644 +--- a/src/lib/krb5/ccache/cc_dir.c ++++ b/src/lib/krb5/ccache/cc_dir.c +@@ -183,10 +183,19 @@ write_primary_file(const char *primary_path, const char *contents) + char *newpath = NULL; + FILE *fp = NULL; + int fd = -1, status; ++#ifdef USE_SELINUX ++ void *selabel; ++#endif + + if (asprintf(&newpath, "%s.XXXXXX", primary_path) < 0) + return ENOMEM; ++#ifdef USE_SELINUX ++ selabel = krb5int_push_fscreatecon_for(primary_path); ++#endif + fd = mkstemp(newpath); ++#ifdef USE_SELINUX ++ krb5int_pop_fscreatecon(selabel); ++#endif + if (fd < 0) + goto cleanup; + #ifdef HAVE_CHMOD +@@ -221,10 +230,23 @@ static krb5_error_code + verify_dir(krb5_context context, const char *dirname) + { + struct stat st; ++ int status; ++#ifdef USE_SELINUX ++ void *selabel; ++#endif + + if (stat(dirname, &st) < 0) { +- if (errno == ENOENT && mkdir(dirname, S_IRWXU) == 0) +- return 0; ++ if (errno == ENOENT) { ++#ifdef USE_SELINUX ++ selabel = krb5int_push_fscreatecon_for(dirname); ++#endif ++ status = mkdir(dirname, S_IRWXU); ++#ifdef USE_SELINUX ++ krb5int_pop_fscreatecon(selabel); ++#endif ++ if (status == 0) ++ return 0; ++ } + k5_setmsg(context, KRB5_FCC_NOFILE, + _("Credential cache directory %s does not exist"), + dirname); +diff --git a/src/lib/krb5/keytab/kt_file.c b/src/lib/krb5/keytab/kt_file.c +index e510211fc..f3ea28c8e 100644 +--- a/src/lib/krb5/keytab/kt_file.c ++++ b/src/lib/krb5/keytab/kt_file.c +@@ -735,14 +735,14 @@ krb5_ktfileint_open(krb5_context context, krb5_keytab id, int mode) + + KTCHECKLOCK(id); + errno = 0; +- KTFILEP(id) = fopen(KTFILENAME(id), ++ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id), + (mode == KRB5_LOCKMODE_EXCLUSIVE) ? "rb+" : "rb"); + if (!KTFILEP(id)) { + if ((mode == KRB5_LOCKMODE_EXCLUSIVE) && (errno == ENOENT)) { + /* try making it first time around */ + k5_create_secure_file(context, KTFILENAME(id)); + errno = 0; +- KTFILEP(id) = fopen(KTFILENAME(id), "rb+"); ++ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id), "rb+"); + if (!KTFILEP(id)) + goto report_errno; + writevno = 1; +diff --git a/src/lib/krb5/os/trace.c b/src/lib/krb5/os/trace.c +index 7073459f0..e9b99f4ca 100644 +--- a/src/lib/krb5/os/trace.c ++++ b/src/lib/krb5/os/trace.c +@@ -458,7 +458,7 @@ krb5_set_trace_filename(krb5_context context, const char *filename) + fd = malloc(sizeof(*fd)); + if (fd == NULL) + return ENOMEM; +- *fd = open(filename, O_WRONLY|O_CREAT|O_APPEND, 0600); ++ *fd = THREEPARAMOPEN(filename, O_WRONLY|O_CREAT|O_APPEND, 0600); + if (*fd == -1) { + free(fd); + return errno; +diff --git a/src/plugins/kdb/db2/adb_openclose.c b/src/plugins/kdb/db2/adb_openclose.c +index 7db30a33b..2b9d01921 100644 +--- a/src/plugins/kdb/db2/adb_openclose.c ++++ b/src/plugins/kdb/db2/adb_openclose.c +@@ -152,7 +152,7 @@ osa_adb_init_db(osa_adb_db_t *dbp, char *filename, char *lockfilename, + * needs be open read/write so that write locking can work with + * POSIX systems + */ +- if ((lockp->lockinfo.lockfile = fopen(lockfilename, "r+")) == NULL) { ++ if ((lockp->lockinfo.lockfile = WRITABLEFOPEN(lockfilename, "r+")) == NULL) { + /* + * maybe someone took away write permission so we could only + * get shared locks? +diff --git a/src/plugins/kdb/db2/kdb_db2.c b/src/plugins/kdb/db2/kdb_db2.c +index 1a476b586..b40bb2240 100644 +--- a/src/plugins/kdb/db2/kdb_db2.c ++++ b/src/plugins/kdb/db2/kdb_db2.c +@@ -694,8 +694,8 @@ ctx_create_db(krb5_context context, krb5_db2_context *dbc) + if (retval) + return retval; + +- dbc->db_lf_file = open(dbc->db_lf_name, O_CREAT | O_RDWR | O_TRUNC, +- 0600); ++ dbc->db_lf_file = THREEPARAMOPEN(dbc->db_lf_name, ++ O_CREAT | O_RDWR | O_TRUNC, 0600); + if (dbc->db_lf_file < 0) { + retval = errno; + goto cleanup; +diff --git a/src/plugins/kdb/db2/libdb2/btree/bt_open.c b/src/plugins/kdb/db2/libdb2/btree/bt_open.c +index 2977b17f3..d5809a5a9 100644 +--- a/src/plugins/kdb/db2/libdb2/btree/bt_open.c ++++ b/src/plugins/kdb/db2/libdb2/btree/bt_open.c +@@ -60,6 +60,7 @@ static char sccsid[] = "@(#)bt_open.c 8.11 (Berkeley) 11/2/95"; + #include + #include + ++#include "k5-int.h" + #include "db-int.h" + #include "btree.h" + +@@ -203,7 +204,7 @@ __bt_open(fname, flags, mode, openinfo, dflags) + goto einval; + } + +- if ((t->bt_fd = open(fname, flags | O_BINARY, mode)) < 0) ++ if ((t->bt_fd = THREEPARAMOPEN(fname, flags | O_BINARY, mode)) < 0) + goto err; + + } else { +diff --git a/src/plugins/kdb/db2/libdb2/hash/hash.c b/src/plugins/kdb/db2/libdb2/hash/hash.c +index 862dbb164..686a960c9 100644 +--- a/src/plugins/kdb/db2/libdb2/hash/hash.c ++++ b/src/plugins/kdb/db2/libdb2/hash/hash.c +@@ -51,6 +51,7 @@ static char sccsid[] = "@(#)hash.c 8.12 (Berkeley) 11/7/95"; + #include + #endif + ++#include "k5-int.h" + #include "db-int.h" + #include "hash.h" + #include "page.h" +@@ -129,7 +130,7 @@ __kdb2_hash_open(file, flags, mode, info, dflags) + new_table = 1; + } + if (file) { +- if ((hashp->fp = open(file, flags|O_BINARY, mode)) == -1) ++ if ((hashp->fp = THREEPARAMOPEN(file, flags|O_BINARY, mode)) == -1) + RETURN_ERROR(errno, error0); + (void)fcntl(hashp->fp, F_SETFD, 1); + } +diff --git a/src/plugins/kdb/db2/libdb2/recno/rec_open.c b/src/plugins/kdb/db2/libdb2/recno/rec_open.c +index d8b26e701..b0daa7c02 100644 +--- a/src/plugins/kdb/db2/libdb2/recno/rec_open.c ++++ b/src/plugins/kdb/db2/libdb2/recno/rec_open.c +@@ -51,6 +51,7 @@ static char sccsid[] = "@(#)rec_open.c 8.12 (Berkeley) 11/18/94"; + #include + #include + ++#include "k5-int.h" + #include "db-int.h" + #include "recno.h" + +@@ -68,7 +69,8 @@ __rec_open(fname, flags, mode, openinfo, dflags) + int rfd = -1, sverrno; + + /* Open the user's file -- if this fails, we're done. */ +- if (fname != NULL && (rfd = open(fname, flags | O_BINARY, mode)) < 0) ++ if (fname != NULL && ++ (rfd = THREEPARAMOPEN(fname, flags | O_BINARY, mode)) < 0) + return (NULL); + + if (fname != NULL && fcntl(rfd, F_SETFD, 1) == -1) { +diff --git a/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c b/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c +index e87688d66..30f7c00ab 100644 +--- a/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c ++++ b/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c +@@ -190,7 +190,7 @@ kdb5_ldap_stash_service_password(int argc, char **argv) + + /* set password in the file */ + old_mode = umask(0177); +- pfile = fopen(file_name, "a+"); ++ pfile = WRITABLEFOPEN(file_name, "a+"); + if (pfile == NULL) { + com_err(me, errno, _("Failed to open file %s: %s"), file_name, + strerror (errno)); +@@ -231,6 +231,9 @@ kdb5_ldap_stash_service_password(int argc, char **argv) + * Delete the existing entry and add the new entry + */ + FILE *newfile; ++#ifdef USE_SELINUX ++ void *selabel; ++#endif + + mode_t omask; + +@@ -242,7 +245,13 @@ kdb5_ldap_stash_service_password(int argc, char **argv) + } + + omask = umask(077); ++#ifdef USE_SELINUX ++ selabel = krb5int_push_fscreatecon_for(file_name); ++#endif + newfile = fopen(tmp_file, "w"); ++#ifdef USE_SELINUX ++ krb5int_pop_fscreatecon(selabel); ++#endif + umask (omask); + if (newfile == NULL) { + com_err(me, errno, _("Error creating file %s"), tmp_file); +diff --git a/src/util/profile/prof_file.c b/src/util/profile/prof_file.c +index aa951df05..79f9500f6 100644 +--- a/src/util/profile/prof_file.c ++++ b/src/util/profile/prof_file.c +@@ -33,6 +33,7 @@ + #endif + + #include "k5-platform.h" ++#include "k5-label.h" + + struct global_shared_profile_data { + /* This is the head of the global list of shared trees */ +@@ -391,7 +392,7 @@ static errcode_t write_data_to_file(prf_data_t data, const char *outfile, + + errno = 0; + +- f = fopen(new_file, "w"); ++ f = WRITABLEFOPEN(new_file, "w"); + if (!f) { + retval = errno; + if (retval == 0) +diff --git a/src/util/support/Makefile.in b/src/util/support/Makefile.in +index 86d5a950a..1052d53a1 100644 +--- a/src/util/support/Makefile.in ++++ b/src/util/support/Makefile.in +@@ -74,6 +74,7 @@ IPC_SYMS= \ + + STLIBOBJS= \ + threads.o \ ++ selinux.o \ + init-addrinfo.o \ + plugins.o \ + errors.o \ +@@ -168,7 +169,7 @@ SRCS=\ + + SHLIB_EXPDEPS = + # Add -lm if dumping thread stats, for sqrt. +-SHLIB_EXPLIBS= $(LIBS) $(DL_LIB) ++SHLIB_EXPLIBS= $(LIBS) $(SELINUX_LIBS) $(DL_LIB) + + DEPLIBS= + +diff --git a/src/util/support/selinux.c b/src/util/support/selinux.c +new file mode 100644 +index 000000000..6d41f3244 +--- /dev/null ++++ b/src/util/support/selinux.c +@@ -0,0 +1,406 @@ ++/* ++ * Copyright 2007,2008,2009,2011,2012,2013,2016 Red Hat, Inc. All Rights Reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are met: ++ * ++ * Redistributions of source code must retain the above copyright notice, this ++ * list of conditions and the following disclaimer. ++ * ++ * Redistributions in binary form must reproduce the above copyright notice, ++ * this list of conditions and the following disclaimer in the documentation ++ * and/or other materials provided with the distribution. ++ * ++ * Neither the name of Red Hat, Inc. nor the names of its contributors may be ++ * used to endorse or promote products derived from this software without ++ * specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++ * POSSIBILITY OF SUCH DAMAGE. ++ * ++ * File-opening wrappers for creating correctly-labeled files. So far, we can ++ * assume that this is Linux-specific, so we make many simplifying assumptions. ++ */ ++ ++#include "../../include/autoconf.h" ++ ++#ifdef USE_SELINUX ++ ++#include ++#include ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++/* #define DEBUG 1 */ ++static void ++debug_log(const char *fmt, ...) ++{ ++#ifdef DEBUG ++ va_list ap; ++ va_start(ap, fmt); ++ if (isatty(fileno(stderr))) { ++ vfprintf(stderr, fmt, ap); ++ } ++ va_end(ap); ++#endif ++ ++ return; ++} ++ ++/* Mutex used to serialize use of the process-global file creation context. */ ++k5_mutex_t labeled_mutex = K5_MUTEX_PARTIAL_INITIALIZER; ++ ++/* Make sure we finish initializing that mutex before attempting to use it. */ ++k5_once_t labeled_once = K5_ONCE_INIT; ++static void ++label_mutex_init(void) ++{ ++ k5_mutex_finish_init(&labeled_mutex); ++} ++ ++static struct selabel_handle *selabel_ctx; ++static time_t selabel_last_changed; ++ ++MAKE_FINI_FUNCTION(cleanup_fscreatecon); ++ ++static void ++cleanup_fscreatecon(void) ++{ ++ if (selabel_ctx != NULL) { ++ selabel_close(selabel_ctx); ++ selabel_ctx = NULL; ++ } ++} ++ ++static security_context_t ++push_fscreatecon(const char *pathname, mode_t mode) ++{ ++ security_context_t previous, configuredsc, currentsc, derivedsc; ++ context_t current, derived; ++ const char *fullpath, *currentuser; ++ char *genpath; ++ ++ previous = configuredsc = currentsc = derivedsc = NULL; ++ current = derived = NULL; ++ genpath = NULL; ++ ++ fullpath = pathname; ++ ++ if (!is_selinux_enabled()) { ++ goto fail; ++ } ++ ++ if (getfscreatecon(&previous) != 0) { ++ goto fail; ++ } ++ ++ /* Canonicalize pathname */ ++ if (pathname[0] != '/') { ++ char *wd; ++ size_t len; ++ len = 0; ++ ++ wd = getcwd(NULL, len); ++ if (wd == NULL) { ++ goto fail; ++ } ++ ++ len = strlen(wd) + 1 + strlen(pathname) + 1; ++ genpath = malloc(len); ++ if (genpath == NULL) { ++ free(wd); ++ goto fail; ++ } ++ ++ sprintf(genpath, "%s/%s", wd, pathname); ++ free(wd); ++ fullpath = genpath; ++ } ++ ++ debug_log("Looking up context for \"%s\"(%05o).\n", fullpath, mode); ++ ++ /* Check whether context file has changed under us */ ++ if (selabel_ctx != NULL || selabel_last_changed == 0) { ++ const char *cpath; ++ struct stat st; ++ int i = -1; ++ ++ cpath = selinux_file_context_path(); ++ if (cpath == NULL || (i = stat(cpath, &st)) != 0 || ++ st.st_mtime != selabel_last_changed) { ++ cleanup_fscreatecon(); ++ ++ selabel_last_changed = i ? time(NULL) : st.st_mtime; ++ } ++ } ++ ++ if (selabel_ctx == NULL) { ++ selabel_ctx = selabel_open(SELABEL_CTX_FILE, NULL, 0); ++ } ++ ++ if (selabel_ctx != NULL && ++ selabel_lookup(selabel_ctx, &configuredsc, fullpath, mode) != 0) { ++ goto fail; ++ } ++ ++ if (genpath != NULL) { ++ free(genpath); ++ genpath = NULL; ++ } ++ ++ if (configuredsc == NULL) { ++ goto fail; ++ } ++ ++ getcon(¤tsc); ++ ++ /* AAAAAAAA */ ++ if (currentsc != NULL) { ++ derived = context_new(configuredsc); ++ ++ if (derived != NULL) { ++ current = context_new(currentsc); ++ ++ if (current != NULL) { ++ currentuser = context_user_get(current); ++ ++ if (currentuser != NULL) { ++ if (context_user_set(derived, ++ currentuser) == 0) { ++ derivedsc = context_str(derived); ++ ++ if (derivedsc != NULL) { ++ freecon(configuredsc); ++ configuredsc = strdup(derivedsc); ++ } ++ } ++ } ++ ++ context_free(current); ++ } ++ ++ context_free(derived); ++ } ++ ++ freecon(currentsc); ++ } ++ ++ debug_log("Setting file creation context to \"%s\".\n", configuredsc); ++ if (setfscreatecon(configuredsc) != 0) { ++ debug_log("Unable to determine current context.\n"); ++ goto fail; ++ } ++ ++ freecon(configuredsc); ++ return previous; ++ ++fail: ++ if (previous != NULL) { ++ freecon(previous); ++ } ++ if (genpath != NULL) { ++ free(genpath); ++ } ++ if (configuredsc != NULL) { ++ freecon(configuredsc); ++ } ++ ++ cleanup_fscreatecon(); ++ return NULL; ++} ++ ++static void ++pop_fscreatecon(security_context_t previous) ++{ ++ if (!is_selinux_enabled()) { ++ return; ++ } ++ ++ if (previous != NULL) { ++ debug_log("Resetting file creation context to \"%s\".\n", previous); ++ } else { ++ debug_log("Resetting file creation context to default.\n"); ++ } ++ ++ /* NULL resets to default */ ++ setfscreatecon(previous); ++ ++ if (previous != NULL) { ++ freecon(previous); ++ } ++ ++ /* Need to clean this up here otherwise it leaks */ ++ cleanup_fscreatecon(); ++} ++ ++void * ++krb5int_push_fscreatecon_for(const char *pathname) ++{ ++ struct stat st; ++ void *retval; ++ ++ k5_once(&labeled_once, label_mutex_init); ++ k5_mutex_lock(&labeled_mutex); ++ ++ if (stat(pathname, &st) != 0) { ++ st.st_mode = S_IRUSR | S_IWUSR; ++ } ++ ++ retval = push_fscreatecon(pathname, st.st_mode); ++ return retval ? retval : (void *) -1; ++} ++ ++void ++krb5int_pop_fscreatecon(void *con) ++{ ++ if (con != NULL) { ++ pop_fscreatecon((con == (void *) -1) ? NULL : con); ++ k5_mutex_unlock(&labeled_mutex); ++ } ++} ++ ++FILE * ++krb5int_labeled_fopen(const char *path, const char *mode) ++{ ++ FILE *fp; ++ int errno_save; ++ security_context_t ctx; ++ ++ if ((strcmp(mode, "r") == 0) || ++ (strcmp(mode, "rb") == 0)) { ++ return fopen(path, mode); ++ } ++ ++ k5_once(&labeled_once, label_mutex_init); ++ k5_mutex_lock(&labeled_mutex); ++ ctx = push_fscreatecon(path, 0); ++ ++ fp = fopen(path, mode); ++ errno_save = errno; ++ ++ pop_fscreatecon(ctx); ++ k5_mutex_unlock(&labeled_mutex); ++ ++ errno = errno_save; ++ return fp; ++} ++ ++int ++krb5int_labeled_creat(const char *path, mode_t mode) ++{ ++ int fd; ++ int errno_save; ++ security_context_t ctx; ++ ++ k5_once(&labeled_once, label_mutex_init); ++ k5_mutex_lock(&labeled_mutex); ++ ctx = push_fscreatecon(path, 0); ++ ++ fd = creat(path, mode); ++ errno_save = errno; ++ ++ pop_fscreatecon(ctx); ++ k5_mutex_unlock(&labeled_mutex); ++ ++ errno = errno_save; ++ return fd; ++} ++ ++int ++krb5int_labeled_mknod(const char *path, mode_t mode, dev_t dev) ++{ ++ int ret; ++ int errno_save; ++ security_context_t ctx; ++ ++ k5_once(&labeled_once, label_mutex_init); ++ k5_mutex_lock(&labeled_mutex); ++ ctx = push_fscreatecon(path, mode); ++ ++ ret = mknod(path, mode, dev); ++ errno_save = errno; ++ ++ pop_fscreatecon(ctx); ++ k5_mutex_unlock(&labeled_mutex); ++ ++ errno = errno_save; ++ return ret; ++} ++ ++int ++krb5int_labeled_mkdir(const char *path, mode_t mode) ++{ ++ int ret; ++ int errno_save; ++ security_context_t ctx; ++ ++ k5_once(&labeled_once, label_mutex_init); ++ k5_mutex_lock(&labeled_mutex); ++ ctx = push_fscreatecon(path, S_IFDIR); ++ ++ ret = mkdir(path, mode); ++ errno_save = errno; ++ ++ pop_fscreatecon(ctx); ++ k5_mutex_unlock(&labeled_mutex); ++ ++ errno = errno_save; ++ return ret; ++} ++ ++int ++krb5int_labeled_open(const char *path, int flags, ...) ++{ ++ int fd; ++ int errno_save; ++ security_context_t ctx; ++ mode_t mode; ++ va_list ap; ++ ++ if ((flags & O_CREAT) == 0) { ++ return open(path, flags); ++ } ++ ++ k5_once(&labeled_once, label_mutex_init); ++ k5_mutex_lock(&labeled_mutex); ++ ctx = push_fscreatecon(path, 0); ++ ++ va_start(ap, flags); ++ mode = va_arg(ap, mode_t); ++ fd = open(path, flags, mode); ++ va_end(ap); ++ ++ errno_save = errno; ++ ++ pop_fscreatecon(ctx); ++ k5_mutex_unlock(&labeled_mutex); ++ ++ errno = errno_save; ++ return fd; ++} ++ ++#endif /* USE_SELINUX */ diff --git a/downstream-fix-debuginfo-with-y.tab.c.patch b/downstream-fix-debuginfo-with-y.tab.c.patch new file mode 100644 index 0000000..494152c --- /dev/null +++ b/downstream-fix-debuginfo-with-y.tab.c.patch @@ -0,0 +1,41 @@ +From 98b50683165089bf7bd9d91f953abbd79a8b1b08 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Tue, 23 Aug 2016 16:49:25 -0400 +Subject: [PATCH] [downstream] fix debuginfo with y.tab.c + +We want to keep these y.tab.c files around because the debuginfo points to +them. It would be more elegant at the end to use symbolic links, but that +could mess up people working in the tree on other things. + +Last-updated: krb5-1.9 +--- + src/kadmin/cli/Makefile.in | 5 +++++ + src/plugins/kdb/ldap/ldap_util/Makefile.in | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/kadmin/cli/Makefile.in b/src/kadmin/cli/Makefile.in +index adfea6e2b..d1327e400 100644 +--- a/src/kadmin/cli/Makefile.in ++++ b/src/kadmin/cli/Makefile.in +@@ -37,3 +37,8 @@ clean-unix:: + # CC_LINK is not meant for compilation and this use may break in the future. + datetest: getdate.c + $(CC_LINK) $(ALL_CFLAGS) -DTEST -o datetest getdate.c ++ ++%.c: %.y ++ $(RM) y.tab.c $@ ++ $(YACC.y) $< ++ $(CP) y.tab.c $@ +diff --git a/src/plugins/kdb/ldap/ldap_util/Makefile.in b/src/plugins/kdb/ldap/ldap_util/Makefile.in +index 8669c2436..a22f23c02 100644 +--- a/src/plugins/kdb/ldap/ldap_util/Makefile.in ++++ b/src/plugins/kdb/ldap/ldap_util/Makefile.in +@@ -20,7 +20,7 @@ $(PROG): $(OBJS) $(KADMSRV_DEPLIBS) $(KRB5_BASE_DEPLIB) $(GETDATE) + getdate.c: $(GETDATE) + $(RM) getdate.c y.tab.c + $(YACC) $(GETDATE) +- $(MV) y.tab.c getdate.c ++ $(CP) y.tab.c getdate.c + + install: + $(INSTALL_PROGRAM) $(PROG) ${DESTDIR}$(ADMIN_BINDIR)/$(PROG) diff --git a/downstream-ksu-pam-integration.patch b/downstream-ksu-pam-integration.patch new file mode 100644 index 0000000..bebe946 --- /dev/null +++ b/downstream-ksu-pam-integration.patch @@ -0,0 +1,774 @@ +From 659b3b4a654b879ce84ad8fb4621dde5ae693385 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Tue, 23 Aug 2016 16:29:58 -0400 +Subject: [PATCH] [downstream] ksu pam integration + +Modify ksu so that it performs account and session management on behalf of +the target user account, mimicking the action of regular su. The default +service name is "ksu", because on Fedora at least the configuration used +is determined by whether or not a login shell is being opened, and so +this may need to vary, too. At run-time, ksu's behavior can be reset to +the earlier, non-PAM behavior by setting "use_pam" to false in the [ksu] +section of /etc/krb5.conf. + +When enabled, ksu gains a dependency on libpam. + +Originally RT#5939, though it's changed since then to perform the account +and session management before dropping privileges, and to apply on top of +changes we're proposing for how it handles cache collections. + +Last-updated: krb5-1.18-beta1 +--- + src/aclocal.m4 | 69 +++++++ + src/clients/ksu/Makefile.in | 8 +- + src/clients/ksu/main.c | 88 +++++++- + src/clients/ksu/pam.c | 389 ++++++++++++++++++++++++++++++++++++ + src/clients/ksu/pam.h | 57 ++++++ + src/configure.ac | 2 + + 6 files changed, 610 insertions(+), 3 deletions(-) + create mode 100644 src/clients/ksu/pam.c + create mode 100644 src/clients/ksu/pam.h + +diff --git a/src/aclocal.m4 b/src/aclocal.m4 +index 024d6370c..ca9fcf664 100644 +--- a/src/aclocal.m4 ++++ b/src/aclocal.m4 +@@ -1677,3 +1677,72 @@ if test "$with_ldap" = yes; then + OPENLDAP_PLUGIN=yes + fi + ])dnl ++dnl ++dnl ++dnl Use PAM instead of local crypt() compare for checking local passwords, ++dnl and perform PAM account, session management, and password-changing where ++dnl appropriate. ++dnl ++AC_DEFUN(KRB5_WITH_PAM,[ ++AC_ARG_WITH(pam,[AC_HELP_STRING(--with-pam,[compile with PAM support])], ++ withpam="$withval",withpam=auto) ++AC_ARG_WITH(pam-ksu-service,[AC_HELP_STRING(--with-ksu-service,[PAM service name for ksu ["ksu"]])], ++ withksupamservice="$withval",withksupamservice=ksu) ++old_LIBS="$LIBS" ++if test "$withpam" != no ; then ++ AC_MSG_RESULT([checking for PAM...]) ++ PAM_LIBS= ++ ++ AC_CHECK_HEADERS(security/pam_appl.h) ++ if test "x$ac_cv_header_security_pam_appl_h" != xyes ; then ++ if test "$withpam" = auto ; then ++ AC_MSG_RESULT([Unable to locate security/pam_appl.h.]) ++ withpam=no ++ else ++ AC_MSG_ERROR([Unable to locate security/pam_appl.h.]) ++ fi ++ fi ++ ++ LIBS= ++ unset ac_cv_func_pam_start ++ AC_CHECK_FUNCS(putenv pam_start) ++ if test "x$ac_cv_func_pam_start" = xno ; then ++ unset ac_cv_func_pam_start ++ AC_CHECK_LIB(dl,dlopen) ++ AC_CHECK_FUNCS(pam_start) ++ if test "x$ac_cv_func_pam_start" = xno ; then ++ AC_CHECK_LIB(pam,pam_start) ++ unset ac_cv_func_pam_start ++ unset ac_cv_func_pam_getenvlist ++ AC_CHECK_FUNCS(pam_start pam_getenvlist) ++ if test "x$ac_cv_func_pam_start" = xyes ; then ++ PAM_LIBS="$LIBS" ++ else ++ if test "$withpam" = auto ; then ++ AC_MSG_RESULT([Unable to locate libpam.]) ++ withpam=no ++ else ++ AC_MSG_ERROR([Unable to locate libpam.]) ++ fi ++ fi ++ fi ++ fi ++ if test "$withpam" != no ; then ++ AC_MSG_NOTICE([building with PAM support]) ++ AC_DEFINE(USE_PAM,1,[Define if Kerberos-aware tools should support PAM]) ++ AC_DEFINE_UNQUOTED(KSU_PAM_SERVICE,"$withksupamservice", ++ [Define to the name of the PAM service name to be used by ksu.]) ++ PAM_LIBS="$LIBS" ++ NON_PAM_MAN=".\\\" " ++ PAM_MAN= ++ else ++ PAM_MAN=".\\\" " ++ NON_PAM_MAN= ++ fi ++fi ++LIBS="$old_LIBS" ++AC_SUBST(PAM_LIBS) ++AC_SUBST(PAM_MAN) ++AC_SUBST(NON_PAM_MAN) ++])dnl ++ +diff --git a/src/clients/ksu/Makefile.in b/src/clients/ksu/Makefile.in +index 8b4edce4d..9d58f29b5 100644 +--- a/src/clients/ksu/Makefile.in ++++ b/src/clients/ksu/Makefile.in +@@ -3,12 +3,14 @@ BUILDTOP=$(REL)..$(S).. + DEFINES = -DGET_TGT_VIA_PASSWD -DPRINC_LOOK_AHEAD -DCMD_PATH='"/usr/local/sbin /usr/local/bin /sbin /bin /usr/sbin /usr/bin"' + + KSU_LIBS=@KSU_LIBS@ ++PAM_LIBS=@PAM_LIBS@ + + SRCS = \ + $(srcdir)/krb_auth_su.c \ + $(srcdir)/ccache.c \ + $(srcdir)/authorization.c \ + $(srcdir)/main.c \ ++ $(srcdir)/pam.c \ + $(srcdir)/heuristic.c \ + $(srcdir)/xmalloc.c \ + $(srcdir)/setenv.c +@@ -17,13 +19,17 @@ OBJS = \ + ccache.o \ + authorization.o \ + main.o \ ++ pam.o \ + heuristic.o \ + xmalloc.o @SETENVOBJ@ + + all: ksu + + ksu: $(OBJS) $(KRB5_BASE_DEPLIBS) +- $(CC_LINK) -o $@ $(OBJS) $(KRB5_BASE_LIBS) $(KSU_LIBS) ++ $(CC_LINK) -o $@ $(OBJS) $(KRB5_BASE_LIBS) $(KSU_LIBS) $(PAM_LIBS) ++ ++pam.o: pam.c ++ $(CC) $(ALL_CFLAGS) -c $< + + clean: + $(RM) ksu +diff --git a/src/clients/ksu/main.c b/src/clients/ksu/main.c +index af1286172..931f05404 100644 +--- a/src/clients/ksu/main.c ++++ b/src/clients/ksu/main.c +@@ -26,6 +26,7 @@ + * KSU was written by: Ari Medvinsky, ari@isi.edu + */ + ++#include "autoconf.h" + #include "ksu.h" + #include "adm_proto.h" + #include +@@ -33,6 +34,10 @@ + #include + #include + ++#ifdef USE_PAM ++#include "pam.h" ++#endif ++ + /* globals */ + char * prog_name; + int auth_debug =0; +@@ -40,6 +45,7 @@ char k5login_path[MAXPATHLEN]; + char k5users_path[MAXPATHLEN]; + char * gb_err = NULL; + int quiet = 0; ++int force_fork = 0; + /***********/ + + #define KS_TEMPORARY_CACHE "MEMORY:_ksu" +@@ -536,6 +542,23 @@ main (argc, argv) + prog_name,target_user,client_name, + source_user,ontty()); + ++#ifdef USE_PAM ++ if (appl_pam_enabled(ksu_context, "ksu")) { ++ if (appl_pam_acct_mgmt(KSU_PAM_SERVICE, 1, target_user, NULL, ++ NULL, source_user, ++ ttyname(STDERR_FILENO)) != 0) { ++ fprintf(stderr, "Access denied for %s.\n", target_user); ++ exit(1); ++ } ++ if (appl_pam_requires_chauthtok()) { ++ fprintf(stderr, "Password change required for %s.\n", ++ target_user); ++ exit(1); ++ } ++ force_fork++; ++ } ++#endif ++ + /* Run authorization as target.*/ + if (krb5_seteuid(target_uid)) { + com_err(prog_name, errno, _("while switching to target for " +@@ -596,6 +619,24 @@ main (argc, argv) + + exit(1); + } ++#ifdef USE_PAM ++ } else { ++ /* we always do PAM account management, even for root */ ++ if (appl_pam_enabled(ksu_context, "ksu")) { ++ if (appl_pam_acct_mgmt(KSU_PAM_SERVICE, 1, target_user, NULL, ++ NULL, source_user, ++ ttyname(STDERR_FILENO)) != 0) { ++ fprintf(stderr, "Access denied for %s.\n", target_user); ++ exit(1); ++ } ++ if (appl_pam_requires_chauthtok()) { ++ fprintf(stderr, "Password change required for %s.\n", ++ target_user); ++ exit(1); ++ } ++ force_fork++; ++ } ++#endif + } + + if( some_rest_copy){ +@@ -653,6 +694,30 @@ main (argc, argv) + exit(1); + } + ++#ifdef USE_PAM ++ if (appl_pam_enabled(ksu_context, "ksu")) { ++ if (appl_pam_session_open() != 0) { ++ fprintf(stderr, "Error opening session for %s.\n", target_user); ++ exit(1); ++ } ++#ifdef DEBUG ++ if (auth_debug){ ++ printf(" Opened PAM session.\n"); ++ } ++#endif ++ if (appl_pam_cred_init()) { ++ fprintf(stderr, "Error initializing credentials for %s.\n", ++ target_user); ++ exit(1); ++ } ++#ifdef DEBUG ++ if (auth_debug){ ++ printf(" Initialized PAM credentials.\n"); ++ } ++#endif ++ } ++#endif ++ + /* set permissions */ + if (setgid(target_pwd->pw_gid) < 0) { + perror("ksu: setgid"); +@@ -750,7 +815,7 @@ main (argc, argv) + fprintf(stderr, "program to be execed %s\n",params[0]); + } + +- if( keep_target_cache ) { ++ if( keep_target_cache && !force_fork ) { + execv(params[0], params); + com_err(prog_name, errno, _("while trying to execv %s"), params[0]); + sweep_up(ksu_context, cc_target); +@@ -780,16 +845,35 @@ main (argc, argv) + if (ret_pid == -1) { + com_err(prog_name, errno, _("while calling waitpid")); + } +- sweep_up(ksu_context, cc_target); ++ if( !keep_target_cache ) { ++ sweep_up(ksu_context, cc_target); ++ } + exit (statusp); + case -1: + com_err(prog_name, errno, _("while trying to fork.")); + sweep_up(ksu_context, cc_target); + exit (1); + case 0: ++#ifdef USE_PAM ++ if (appl_pam_enabled(ksu_context, "ksu")) { ++ if (appl_pam_setenv() != 0) { ++ fprintf(stderr, "Error setting up environment for %s.\n", ++ target_user); ++ exit (1); ++ } ++#ifdef DEBUG ++ if (auth_debug){ ++ printf(" Set up PAM environment.\n"); ++ } ++#endif ++ } ++#endif + execv(params[0], params); + com_err(prog_name, errno, _("while trying to execv %s"), + params[0]); ++ if( keep_target_cache ) { ++ sweep_up(ksu_context, cc_target); ++ } + exit (1); + } + } +diff --git a/src/clients/ksu/pam.c b/src/clients/ksu/pam.c +new file mode 100644 +index 000000000..cbfe48704 +--- /dev/null ++++ b/src/clients/ksu/pam.c +@@ -0,0 +1,389 @@ ++/* ++ * src/clients/ksu/pam.c ++ * ++ * Copyright 2007,2009,2010 Red Hat, Inc. ++ * ++ * All Rights Reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are met: ++ * ++ * Redistributions of source code must retain the above copyright notice, this ++ * list of conditions and the following disclaimer. ++ * ++ * Redistributions in binary form must reproduce the above copyright notice, ++ * this list of conditions and the following disclaimer in the documentation ++ * and/or other materials provided with the distribution. ++ * ++ * Neither the name of Red Hat, Inc. nor the names of its contributors may be ++ * used to endorse or promote products derived from this software without ++ * specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++ * POSSIBILITY OF SUCH DAMAGE. ++ * ++ * Convenience wrappers for using PAM. ++ */ ++ ++#include "autoconf.h" ++#ifdef USE_PAM ++#include ++#include ++#include ++#include ++#include ++#include "k5-int.h" ++#include "pam.h" ++ ++#ifndef MAXPWSIZE ++#define MAXPWSIZE 128 ++#endif ++ ++static int appl_pam_started; ++static pid_t appl_pam_starter = -1; ++static int appl_pam_session_opened; ++static int appl_pam_creds_initialized; ++static int appl_pam_pwchange_required; ++static pam_handle_t *appl_pamh; ++static struct pam_conv appl_pam_conv; ++static char *appl_pam_user; ++struct appl_pam_non_interactive_args { ++ const char *user; ++ const char *password; ++}; ++ ++int ++appl_pam_enabled(krb5_context context, const char *section) ++{ ++ int enabled = 1; ++ if ((context != NULL) && (context->profile != NULL)) { ++ if (profile_get_boolean(context->profile, ++ section, ++ USE_PAM_CONFIGURATION_KEYWORD, ++ NULL, ++ enabled, &enabled) != 0) { ++ enabled = 1; ++ } ++ } ++ return enabled; ++} ++ ++void ++appl_pam_cleanup(void) ++{ ++ if (getpid() != appl_pam_starter) { ++ return; ++ } ++#ifdef DEBUG ++ printf("Called to clean up PAM.\n"); ++#endif ++ if (appl_pam_creds_initialized) { ++#ifdef DEBUG ++ printf("Deleting PAM credentials.\n"); ++#endif ++ pam_setcred(appl_pamh, PAM_DELETE_CRED); ++ appl_pam_creds_initialized = 0; ++ } ++ if (appl_pam_session_opened) { ++#ifdef DEBUG ++ printf("Closing PAM session.\n"); ++#endif ++ pam_close_session(appl_pamh, 0); ++ appl_pam_session_opened = 0; ++ } ++ appl_pam_pwchange_required = 0; ++ if (appl_pam_started) { ++#ifdef DEBUG ++ printf("Shutting down PAM.\n"); ++#endif ++ pam_end(appl_pamh, 0); ++ appl_pam_started = 0; ++ appl_pam_starter = -1; ++ free(appl_pam_user); ++ appl_pam_user = NULL; ++ } ++} ++static int ++appl_pam_interactive_converse(int num_msg, const struct pam_message **msg, ++ struct pam_response **presp, void *appdata_ptr) ++{ ++ const struct pam_message *message; ++ struct pam_response *resp; ++ int i, code; ++ char *pwstring, pwbuf[MAXPWSIZE]; ++ unsigned int pwsize; ++ resp = malloc(sizeof(struct pam_response) * num_msg); ++ if (resp == NULL) { ++ return PAM_BUF_ERR; ++ } ++ memset(resp, 0, sizeof(struct pam_response) * num_msg); ++ code = PAM_SUCCESS; ++ for (i = 0; i < num_msg; i++) { ++ message = &(msg[0][i]); /* XXX */ ++ message = msg[i]; /* XXX */ ++ pwstring = NULL; ++ switch (message->msg_style) { ++ case PAM_TEXT_INFO: ++ case PAM_ERROR_MSG: ++ printf("[%s]\n", message->msg ? message->msg : ""); ++ fflush(stdout); ++ resp[i].resp = NULL; ++ resp[i].resp_retcode = PAM_SUCCESS; ++ break; ++ case PAM_PROMPT_ECHO_ON: ++ case PAM_PROMPT_ECHO_OFF: ++ if (message->msg_style == PAM_PROMPT_ECHO_ON) { ++ if (fgets(pwbuf, sizeof(pwbuf), ++ stdin) != NULL) { ++ pwbuf[strcspn(pwbuf, "\r\n")] = '\0'; ++ pwstring = pwbuf; ++ } ++ } else { ++ pwstring = getpass(message->msg ? ++ message->msg : ++ ""); ++ } ++ if ((pwstring != NULL) && (pwstring[0] != '\0')) { ++ pwsize = strlen(pwstring); ++ resp[i].resp = malloc(pwsize + 1); ++ if (resp[i].resp == NULL) { ++ resp[i].resp_retcode = PAM_BUF_ERR; ++ } else { ++ memcpy(resp[i].resp, pwstring, pwsize); ++ resp[i].resp[pwsize] = '\0'; ++ resp[i].resp_retcode = PAM_SUCCESS; ++ } ++ } else { ++ resp[i].resp_retcode = PAM_CONV_ERR; ++ code = PAM_CONV_ERR; ++ } ++ break; ++ default: ++ break; ++ } ++ } ++ *presp = resp; ++ return code; ++} ++static int ++appl_pam_non_interactive_converse(int num_msg, ++ const struct pam_message **msg, ++ struct pam_response **presp, ++ void *appdata_ptr) ++{ ++ const struct pam_message *message; ++ struct pam_response *resp; ++ int i, code; ++ unsigned int pwsize; ++ struct appl_pam_non_interactive_args *args; ++ const char *pwstring; ++ resp = malloc(sizeof(struct pam_response) * num_msg); ++ if (resp == NULL) { ++ return PAM_BUF_ERR; ++ } ++ args = appdata_ptr; ++ memset(resp, 0, sizeof(struct pam_response) * num_msg); ++ code = PAM_SUCCESS; ++ for (i = 0; i < num_msg; i++) { ++ message = &((*msg)[i]); ++ message = msg[i]; ++ pwstring = NULL; ++ switch (message->msg_style) { ++ case PAM_TEXT_INFO: ++ case PAM_ERROR_MSG: ++ break; ++ case PAM_PROMPT_ECHO_ON: ++ case PAM_PROMPT_ECHO_OFF: ++ if (message->msg_style == PAM_PROMPT_ECHO_ON) { ++ /* assume "user" */ ++ pwstring = args->user; ++ } else { ++ /* assume "password" */ ++ pwstring = args->password; ++ } ++ if ((pwstring != NULL) && (pwstring[0] != '\0')) { ++ pwsize = strlen(pwstring); ++ resp[i].resp = malloc(pwsize + 1); ++ if (resp[i].resp == NULL) { ++ resp[i].resp_retcode = PAM_BUF_ERR; ++ } else { ++ memcpy(resp[i].resp, pwstring, pwsize); ++ resp[i].resp[pwsize] = '\0'; ++ resp[i].resp_retcode = PAM_SUCCESS; ++ } ++ } else { ++ resp[i].resp_retcode = PAM_CONV_ERR; ++ code = PAM_CONV_ERR; ++ } ++ break; ++ default: ++ break; ++ } ++ } ++ *presp = resp; ++ return code; ++} ++static int ++appl_pam_start(const char *service, int interactive, ++ const char *login_username, ++ const char *non_interactive_password, ++ const char *hostname, ++ const char *ruser, ++ const char *tty) ++{ ++ static int exit_handler_registered; ++ static struct appl_pam_non_interactive_args args; ++ int ret = 0; ++ if (appl_pam_started && ++ (strcmp(login_username, appl_pam_user) != 0)) { ++ appl_pam_cleanup(); ++ appl_pam_user = NULL; ++ } ++ if (!appl_pam_started) { ++#ifdef DEBUG ++ printf("Starting PAM up (service=\"%s\",user=\"%s\").\n", ++ service, login_username); ++#endif ++ memset(&appl_pam_conv, 0, sizeof(appl_pam_conv)); ++ appl_pam_conv.conv = interactive ? ++ &appl_pam_interactive_converse : ++ &appl_pam_non_interactive_converse; ++ memset(&args, 0, sizeof(args)); ++ args.user = strdup(login_username); ++ args.password = non_interactive_password ? ++ strdup(non_interactive_password) : ++ NULL; ++ appl_pam_conv.appdata_ptr = &args; ++ ret = pam_start(service, login_username, ++ &appl_pam_conv, &appl_pamh); ++ if (ret == 0) { ++ if (hostname != NULL) { ++#ifdef DEBUG ++ printf("Setting PAM_RHOST to \"%s\".\n", hostname); ++#endif ++ pam_set_item(appl_pamh, PAM_RHOST, hostname); ++ } ++ if (ruser != NULL) { ++#ifdef DEBUG ++ printf("Setting PAM_RUSER to \"%s\".\n", ruser); ++#endif ++ pam_set_item(appl_pamh, PAM_RUSER, ruser); ++ } ++ if (tty != NULL) { ++#ifdef DEBUG ++ printf("Setting PAM_TTY to \"%s\".\n", tty); ++#endif ++ pam_set_item(appl_pamh, PAM_TTY, tty); ++ } ++ if (!exit_handler_registered && ++ (atexit(appl_pam_cleanup) != 0)) { ++ pam_end(appl_pamh, 0); ++ appl_pamh = NULL; ++ ret = -1; ++ } else { ++ appl_pam_started = 1; ++ appl_pam_starter = getpid(); ++ appl_pam_user = strdup(login_username); ++ exit_handler_registered = 1; ++ } ++ } ++ } ++ return ret; ++} ++int ++appl_pam_acct_mgmt(const char *service, int interactive, ++ const char *login_username, ++ const char *non_interactive_password, ++ const char *hostname, ++ const char *ruser, ++ const char *tty) ++{ ++ int ret; ++ appl_pam_pwchange_required = 0; ++ ret = appl_pam_start(service, interactive, login_username, ++ non_interactive_password, hostname, ruser, tty); ++ if (ret == 0) { ++#ifdef DEBUG ++ printf("Calling pam_acct_mgmt().\n"); ++#endif ++ ret = pam_acct_mgmt(appl_pamh, 0); ++ switch (ret) { ++ case PAM_IGNORE: ++ ret = 0; ++ break; ++ case PAM_NEW_AUTHTOK_REQD: ++ appl_pam_pwchange_required = 1; ++ ret = 0; ++ break; ++ default: ++ break; ++ } ++ } ++ return ret; ++} ++int ++appl_pam_requires_chauthtok(void) ++{ ++ return appl_pam_pwchange_required; ++} ++int ++appl_pam_session_open(void) ++{ ++ int ret = 0; ++ if (appl_pam_started) { ++#ifdef DEBUG ++ printf("Opening PAM session.\n"); ++#endif ++ ret = pam_open_session(appl_pamh, 0); ++ if (ret == 0) { ++ appl_pam_session_opened = 1; ++ } ++ } ++ return ret; ++} ++int ++appl_pam_setenv(void) ++{ ++ int ret = 0; ++#ifdef HAVE_PAM_GETENVLIST ++#ifdef HAVE_PUTENV ++ int i; ++ char **list; ++ if (appl_pam_started) { ++ list = pam_getenvlist(appl_pamh); ++ for (i = 0; ((list != NULL) && (list[i] != NULL)); i++) { ++#ifdef DEBUG ++ printf("Setting \"%s\" in environment.\n", list[i]); ++#endif ++ putenv(list[i]); ++ } ++ } ++#endif ++#endif ++ return ret; ++} ++int ++appl_pam_cred_init(void) ++{ ++ int ret = 0; ++ if (appl_pam_started) { ++#ifdef DEBUG ++ printf("Initializing PAM credentials.\n"); ++#endif ++ ret = pam_setcred(appl_pamh, PAM_ESTABLISH_CRED); ++ if (ret == 0) { ++ appl_pam_creds_initialized = 1; ++ } ++ } ++ return ret; ++} ++#endif +diff --git a/src/clients/ksu/pam.h b/src/clients/ksu/pam.h +new file mode 100644 +index 000000000..0ab76569c +--- /dev/null ++++ b/src/clients/ksu/pam.h +@@ -0,0 +1,57 @@ ++/* ++ * src/clients/ksu/pam.h ++ * ++ * Copyright 2007,2009,2010 Red Hat, Inc. ++ * ++ * All Rights Reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are met: ++ * ++ * Redistributions of source code must retain the above copyright notice, this ++ * list of conditions and the following disclaimer. ++ * ++ * Redistributions in binary form must reproduce the above copyright notice, ++ * this list of conditions and the following disclaimer in the documentation ++ * and/or other materials provided with the distribution. ++ * ++ * Neither the name of Red Hat, Inc. nor the names of its contributors may be ++ * used to endorse or promote products derived from this software without ++ * specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++ * POSSIBILITY OF SUCH DAMAGE. ++ * ++ * Convenience wrappers for using PAM. ++ */ ++ ++#include ++#ifdef HAVE_SECURITY_PAM_APPL_H ++#include ++#endif ++ ++#define USE_PAM_CONFIGURATION_KEYWORD "use_pam" ++ ++#ifdef USE_PAM ++int appl_pam_enabled(krb5_context context, const char *section); ++int appl_pam_acct_mgmt(const char *service, int interactive, ++ const char *local_username, ++ const char *non_interactive_password, ++ const char *hostname, ++ const char *ruser, ++ const char *tty); ++int appl_pam_requires_chauthtok(void); ++int appl_pam_session_open(void); ++int appl_pam_setenv(void); ++int appl_pam_cred_init(void); ++void appl_pam_cleanup(void); ++#endif +diff --git a/src/configure.ac b/src/configure.ac +index 4eb080784..693f76a81 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -1389,6 +1389,8 @@ AC_SUBST([VERTO_VERSION]) + + AC_PATH_PROG(GROFF, groff) + ++KRB5_WITH_PAM ++ + # Make localedir work in autoconf 2.5x. + if test "${localedir+set}" != set; then + localedir='$(datadir)/locale' diff --git a/downstream-netlib-and-dns.patch b/downstream-netlib-and-dns.patch new file mode 100644 index 0000000..d3ae129 --- /dev/null +++ b/downstream-netlib-and-dns.patch @@ -0,0 +1,24 @@ +From 2d7e197fa88dccd3ca051f9f7cb97937c35c55a8 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Tue, 23 Aug 2016 16:46:21 -0400 +Subject: [PATCH] [downstream] netlib and dns + +We want to be able to use --with-netlib and --enable-dns at the same time. + +Last-updated: krb5-1.3.1 +--- + src/aclocal.m4 | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/aclocal.m4 b/src/aclocal.m4 +index 5afb96e58..4a4d460e3 100644 +--- a/src/aclocal.m4 ++++ b/src/aclocal.m4 +@@ -718,6 +718,7 @@ AC_HELP_STRING([--with-netlib=LIBS], use user defined resolver library), + LIBS="$LIBS $withval" + AC_MSG_RESULT("netlib will use \'$withval\'") + fi ++ KRB5_AC_ENABLE_DNS + ],dnl + [AC_LIBRARY_NET] + )])dnl diff --git a/kadm5.acl b/kadm5.acl new file mode 100644 index 0000000..dc93eb0 --- /dev/null +++ b/kadm5.acl @@ -0,0 +1 @@ +*/admin@EXAMPLE.COM * diff --git a/kadmin.service b/kadmin.service new file mode 100644 index 0000000..daa08b1 --- /dev/null +++ b/kadmin.service @@ -0,0 +1,15 @@ +[Unit] +Description=Kerberos 5 Password-changing and Administration +Wants=network-online.target +After=syslog.target network.target network-online.target +AssertPathExists=!/var/kerberos/krb5kdc/kpropd.acl + +[Service] +Type=forking +PIDFile=/run/kadmind.pid +EnvironmentFile=-/etc/sysconfig/kadmin +ExecStart=/usr/sbin/kadmind -P /run/kadmind.pid $KADMIND_ARGS +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/kadmin.sysconfig b/kadmin.sysconfig new file mode 100644 index 0000000..fa72039 --- /dev/null +++ b/kadmin.sysconfig @@ -0,0 +1 @@ +KADMIND_ARGS= diff --git a/kadmind.logrotate b/kadmind.logrotate new file mode 100644 index 0000000..f00aa4d --- /dev/null +++ b/kadmind.logrotate @@ -0,0 +1,9 @@ +/var/log/kadmind.log { + missingok + notifempty + monthly + rotate 12 + postrotate + systemctl reload kadmin.service || true + endscript +} diff --git a/kdc.conf b/kdc.conf new file mode 100644 index 0000000..5d1571d --- /dev/null +++ b/kdc.conf @@ -0,0 +1,14 @@ +[kdcdefaults] + kdc_ports = 88 + kdc_tcp_ports = 88 + spake_preauth_kdc_challenge = edwards25519 + +[realms] +EXAMPLE.COM = { + #master_key_type = aes256-cts + acl_file = /var/kerberos/krb5kdc/kadm5.acl + dict_file = /usr/share/dict/words + default_principal_flags = +preauth + admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab + supported_enctypes = aes256-cts:normal aes128-cts:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal +} diff --git a/kprop.service b/kprop.service new file mode 100644 index 0000000..7b5d4b9 --- /dev/null +++ b/kprop.service @@ -0,0 +1,13 @@ +[Unit] +Description=Kerberos 5 Propagation +Wants=network-online.target +After=syslog.target network.target network-online.target +AssertPathExists=/var/kerberos/krb5kdc/kpropd.acl + +[Service] +Type=forking +EnvironmentFile=-/etc/sysconfig/kprop +ExecStart=/usr/sbin/kpropd $KPROPD_ARGS + +[Install] +WantedBy=multi-user.target diff --git a/kprop.sysconfig b/kprop.sysconfig new file mode 100644 index 0000000..f43e8bb --- /dev/null +++ b/kprop.sysconfig @@ -0,0 +1 @@ +KPROPD_ARGS= diff --git a/krb5-1.19.2.tar.gz b/krb5-1.19.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..a96d447d291d7c481cfb584724604bc2267c9435 GIT binary patch literal 8741053 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�q;;@NZ2q1EDiQq;8%gdlB#g)V+yB&75F0&?(z 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ê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 z z@vCoNpPZhbC+nm*ZR&TMQp|%j_x-;v+&Vxf=e0AxZT%|ABig7Nre<)S<5Gfzb`%bt zPC=2{E}3qCTB`EI4yUA>v4k=0ol$!oWsn)K-8WcHc zjvh!E!8~2fB|+9uTMr~Rh9~?w3yOG~q)$Cax>B!prt>VrD4}w<&uH8@TM?p6bg2x< zlA&;CN#Q$n-+nfAlLf3*3OG;PVGUf|^TpKPTB;*>k~veG$jIHcGlY~gcz2BNR1~1i zMs0{11_4(?YnqsesnT(pbP~J`hyI~=n0a@HioP>DgyX~kokye{G({n5cgV7 z3yR3Sp|u$APLAGo@OAeDYy*l{rv$%9;g1VMCg(IVNJ_a~6eG-*!SWsogA03z;yLJ0 zWGRVHswwbsd{`Fbv8{sei!aEPQtvD%vgg95VJ0#_-rbLkO;|oZhefj`V({EUGtapy zQu^luLz*y0?g!L~O0B)gLuyjK+vbbWAXrVxFAV--*=T4A41_ts|IN*Eg%@Yo1@bNo z;k{MaGcBiglX6j+AT+doTXOy?#!~$?LAen6_NB^xfY^IV;&F1Fp#wj`VnLDDdOK{Rj0E*=EqspRiSbkSdhfD=MCJb|MusZb0^72Pe zo%8eGzCAj4@zQOqbwD7*=x75sgK#!1K0{XbtKy23J0Z1!i}?seiCEVjB7R9*UIx=5K*bWykSY0sPGRaypD-IndiAx`ZNgDq+t_%kWD}|7MN^Oo(A+t3_F0sobI&vUqE1hv~}NAvV#fA@W(eA^rIR^aehV8Bi*cle|}9 zfnWk7gGH=TZNf&f)Z?()1nHmms!m)IQy?)z!4rz*BRTjb;l!jfF{Z>;yc9aF<*Uw< z2sGaTT^*KRGUw3HiOU|9k6@wbLorkcKqtgeF&HYw?j;yV!vyXRF1$ctFCdA%?!c4k zMk|e!I9t~v8ImLsXS4C0Wz&weIc3Z2_71dk#jZY9^;k!;TV+^>XhO$Q^<)*up3US8 z61)U0gC{1=&jE!NQ?qJ85Hh9Ml7^G6#ZHDbraJP0E6hE>f`+J21e94R6fvMLC%N5A z-%$ey%K6Zu2?f~V?3mXUKo^C%yBe}+58j=Ad-l!A$-$fBC@u?;@AoBh1;66^-#}?M zMsmmFi)?rUFScS6O&FkX=5=-y3P|$j1q?`Qg8<+~f~Oc>?*an~G=6sAoJf8piZ4?! z`~?(KTu}@RrGP>Jrj+uZHC$O?BhJBN4J6zRA^SOHo`Q1$#+(rY! zDOi|AN#zQV_HH=~SQVg*DAegk1T+rgx0xPV#AX47K!${(0<&gBc{-S!!a&kkk%@V@ zSlq9Gx^j2$JU18Bg67hf>Tcp84$>8qHx{0H+vyPfzd2PyvQp?R5xz;X97&c(5*3b* z`5h~CIK@y0>fLwM7rwc~Kv#2?FTEmEtzf#HTLhRiri(!fL+I&=CJ#>;&;bP#IJ3&h zMKR5+E={jcNU_m`5_!# zGJNiE@qlVSKq(Onl1&w@8i+RztoQ;!=!Put|lZR6Y%46{7cW;mF2m>kAXiBYLFacIa z>(5{5?u9GU7J9R&;o0qoS`IbxX49%c3s;s?0G#pM`8=QeDYR;>V24YUbZuh=z(dr( zzQ9fJzAQ%goSsRxrDa4)WbiPX5pTKdbQ>8#Aj+QwY^OkrA64Y=n&iW48dvx$n-
  • ;%x)TWTgrRgiD@UF0_Ee{#J#xfBdDV&6iTM23* zbE@&XXcKlL@G%$mTIz<(dk9j57iwq_(o5a{GJjk3Wy*Q+w-w%{ZJoEj%Zi;u#|w4Q z_`{ohB;VK4ZrSem^tbzm7=r_C!>WzMJs;&4iz}9Wz<+JhzQqiCJ0R6 zF_wnbSZ6&jpd8yL38Ag*sW9 zut4J?_Kj6k(N2#=*UUwZyIbS}9-H>Hi>isi?jG_V{XhTxSN{nKSP^HOpxAEq8$W;u zye=*ZPS!WV2YW)nTq&pWBy>Eja1d_(s@W*ME4K*sFfE-kEQxXVf}bAL!GLUo z#|`(^ykD1n1k;Wk!W>nMi{9?^&9LSi46rJCr$%rrF|~!Fv)D0tRHdiioVuH+6d3^@ zsPn&Sbbjd�-r(2)}CnVvoRJg6Lch2*Am+f<^x8?UW>|nJ zC&|**EyQ!KF_EU3c-9L-^{8uLm=v9#(Wr~;_t{EOxLpeJB%mzPKUxXks^oM+DGldE zk%w2dPsR0Z$4tl%51j~sgt&GRs*>`N89W@y#fF}gzA z3_W0WEX;|4%!tRQIh?_Sl{aTubp}L!R~|pljY0gqH`w4FXSQILo&JhdmA(H#tq$X;N* ziLHc&WVNNZ$ZZ{5fseg?}MZblg8V_AYUHUvSHH8gdELO0L2cR$Fp&+ryEk7qnjzSB!CL4dldMLuL< z_@7^_AuwZMR+s3`>lA9OzYAGi^CaS2nl5b@E^%8uA764Nf?F9iy06eH-NSXTsB)8s z;;d(P1!in=2jVky%3XvQ$eBbn%?fD$8NCW9L*E=6f(?1_ynk~1&8ws5Zw^ks<&s=s zX5!OQa8TPNQ`aa%d}UPLPR|(3jr$dS?fY}%p+K7|v0Gj5MYWJ46ukF7r5qEou3<5t zAaqL_qNX-(M5o)6yM3gar2yl%& zELyc2^^mF7rUhBHVTV}%GikfbfWV`Oc!*F30SRy+p&||=<>7^nB&^pY{@eLQeN}I5 z!m{9ev`rcocoB04d{-{&kR#kc?EC(TFUrYb3ARl08qnSm)vX+s40kG7vb^pXA#T)? z55(BdZWO&CW3zP{&LZ5Pf>&$k>ZYY{;Lu|Y2lp9-Q5uMnsVQ1K+wAd0$5b;xO}pr$ zU@iR&6Tzg~ozuzNpzQ*`C?J~et7qBd>N#bU^AvN)ioisae?)#;8-TE+=T*_m1&LLR zuAz`lC=5(2)*d~+-gfoWD&;b>=~Y2$mE<*1F~84lIwp{{dq~bseHu{^>kR;+yK)&g zFxwrI#lQzcK@bul2ph>ZwUuWrMgJtkB|FV#Iuz5J2R^$rM3o4ks=H%J2l!^9xG0@^ zZacv*kF}B_NXiC7(`pk#jlWdxGN$f{yW5Nf!cY zd|@1Yv;g)m5w@ps8kyxR)`!OyMCdx>)3?$du*y~(ApNZS@UEC1ZzJ2 zs&mc97Yf`jWyiWjUykjX!~px5-3V`ULS75^L3|r5@9<6zJPYA=z~N?raC?zUN%D5J zek8%{-IZd`v>V8NvZ3h8u0}T^x*FR?*9<(h6byX)Rp-FR7d8go4l-eEHwM`ZuqPjh zsx^2(5<9;5>{Z4#U1e;W<7tP}{Td8s{N83b$?I|^JH>q)eUo&IWpvpxxqV3R$qf@~ zGgz5#8iay+ZE=}Q^8yVUD|1mDVw0^1r2Nvcqn_hkI(l4uOGwiO$9cY(PQBVhYG*G=4jGMWfF%!Xs3_rzk>)N^NbbAfb9*9VRJufXN;#8B2Xpz2veoNtRakj7l-ZkDcd{3GdtU$eu~$7m1H0P`t^9 zMEnExJo4lwO^8Mj7;;TokM9;+zD8Kh$bIvR-_9gl!VJCr^iNYrwxo*F7cFqA`{_$} z?ZM(I-Puidp6u^D-GA~dJ$inc?tK3F(@=`!%Nl>#%-`Ejx7~$qS?_G`Z^Qow7y29` zy7n1eyKS$1;c;X0(ekdQ>lc5?s#!LT$7RE})QRicGES|Sz2S9V(CKran zy`sQOcle09+fSW*NOzpk+KHq{L*=i<&j-3|SiYly1)Xwh?)#2aM7t!b$9w6sy~n#xc6J{>!S4`zk2H&xHJQ?_Pj}o! z?gngcyLsFM0>sE7^@T=8NiMXH95KrWs+OH%+3J3EpM4Im^gIccq}I|pb;jH zncFbSnL+~ns=gcN36i$>D>#iJn+C4t+hRQG4>Q_w5Mu-F?EL)S&d+d!jHSle%x91Bk1d0zX$syTGr92&Bq>}+59Q#IIsEV z2*)XTPDRF53vM*H&5Yjk;KMaK1}nm-j(cz3snT!V7yd&F2b%ved>^hlN*R-yS@g2T z%f;{JY?a3A8(_5rDg{6v3;?Ue@10pkoEK~=5;nP`1YX{q9CQE*1{)Cmp^A?$#*kUVd|sd7IoMp|{(OuN z<57O;Oht}@x)z9mK)|hZck2dFYF(2X4*Xx-ci(!9M-Zup2GHcu+gXjyg~uqa)^3SjP==Dmt{Ga6!jnzWTqZ|?frI#nayTi5E5{FV(VBWQq#Su@v6nh^x#BAzkKjj0W9f~h?LuB$?Rp*szChm*`7n59S;EPv)g#d|s&AI;2o zBo!G^Z7p?}!oOfVcH9gTLR6%{t&~R&WNL)eL7wuKf)q~f1a2bgY0OSUspS4%Bzccm|YuDeSBNL*2Ex*8=@b^D# zcVluZCoxZ?$cbX*9WzQ6ch>bgp%kL2T=7r_J;k_wKF(&KBUA;^nCI#!r<`57zPI8M zLsOt41m+z-C&5!YXJwLSl+2g=vUr{no+lYknvLj76n6C051R;urV$`rpXL_m>zpz{ z3Fcu%3*-@VoJ6D>uSnS7St`u;j+a^;6E4`u)|>L2?lJ=>;TdG075vWVGHA|4jk$@&X9W4 zd$fTP6~tm`a)+coNZa%^+zjiiJLpmW(bBXy-ae`5Jn7mlI?2~kuOp;;=@mkUc4Usx z25hE{iNY9sPL^hiE!P}_JhA2aBVd7B1+QY(p9?q8gobA|)xi%jRA7~pg4uZamh=`G zl;Cr+G^@oAN|4ebqhj+}?j4jj9hpHwkuBLQdJ@xsphE=2jZ`^$e2;<9 z-m=VtnTR8qGNb-O(hnp3ZA0>b#x$ecNseo>Q#5d# z0cUvigWa#;1h&N>Wd=L0xdw&Ye)=@{IneGk zoEh36`{`~Jh0}BaFa-9~Jx;9uBY%n zyYN4I`0KN9*~0E!i=MnDDNg3)e2%!(sARQfH2?lSv!ut_*TG|${F|{iK*4YgJI#C$ zZ<T!pY=m|gc#jXN^;E7qvZKHM2iS1*gt{`G+A?!`&y#kl6t)I zsX^((Z7G|Tkvo3Oz-^5bJDD)sFJHN~9v~Ax$<3c|tiE5$ACjp7Vum$hM~Wy)*hS(Q zN`AC#M};!~Ni!Y=3V`*I6!V&$$$e2)0iU)MZH76m&r2%0mG!1+n*-D-X+aX)TQQGd zs~{}Qp`FE4vIj#4n#WcSQ1u!B%Z6qqx3FplQ-F{K@MvL2kMnLH0ibR1*F{U%4ozQ> zxCtV2A}XN-CwWX9JFBr;VW zqfn+llUN~;AG&0-(-1KI667n=XA^Y=xDgS)=Y^rWTT&k&>`Mb;1wsH*C)DO^Ud-+zQ~_7>@R=xh}3nshoJq2VKl8I};rBT%`Sl7;4g*d(l-| zODr=r<|R{$jHPqWSKn*&X+lZs%KMy0443n_T?6ynBW8O z*yGY3Mhvyj{AY{#2gpg?-ndGaZg6_L)Y8(x_;haO;6k%=wP0U}pDHHNxVRSLJ#kHsW1!5mlJ8hbJBMI4Q3Fjuc@IU zpe%@pc}!mbl8gMKJr8t_u5f&XQTPzxKcL6J0!xx_k55itzx|`<+{0s389Fgh7@pwH zqbqj=LYcws98h$o;FdXclmEv>>b8)R?mgOki4vtspcTM;e^=m1tQFG{U#h&`&w+Rw zjq*{zyzL26Kap|&U(5f!SIyr8eEUa`f8Wdhz5Qf+XE);ie*F09_9y=DpN#)ork5$e zH; zYAUM#2C%_tBDy46^aRW4Ex#BP$=<12XfL4$u%jE;a-_nX8VOWZHza-#G!*3-h<%z2 zDpX`%Q{e(}l86~+djO~om{}8AbSV`iTO3OyF@%N#h%_~g{mF)4MDSV*#E}l3+rSjj z!xm5(+~AS@Ilk*(<A|fu{Nhy$TDV$Xh_%JN)GtD~MX+iGn8*fvB-ca3q-Y5f zkdlAIO_ctp55g*>@d(FKSE{7V8XhUQ`8Cw=R?mYM01aO}^kheHnIBJ$@YOP!fH+hGm_~5@7SjbTGtgWq(2F4} zEC4j%CYV}DoMyx?3QL5WA(-@@fXX9KSY2lbwQvQI_gcpoT_>P zD+V*KfX^8a8GwkGSEH7-ixg0BFu&5G&ZEm5lgK2|Mqmo%4uNH0qec4L;~Uf`?YUMF zT2u{e1B40mYdkKa`xZKGln1PK_4S0X>Jo(vMsx-&cEiQkowiokh?oo5zgkF@bt5^8 zo(eA^DXr?TC~2G(I)I3x%wmRU90LkiCzgM81xd4Nu;mGb*~v#mZCALHcF6wvv(V+W z$Evs2e8zv$qM{p4}1|L^YYe$xMcGX0;Y*BSYs{`05g zKINaU;}n`}NS{&N-l=HtvH$-2=*s?Er|oyE`{;t<%Qf0HviTdJC?JYz3;i$ap9$P- ziHj&z0}j7B=52&Re@d-|2HhbBezj@sRBF{_<0`5Ei$b26!ZX3jksvl@|Ct{l@sIT) zt_x{+SQOx+lt^MR$>w)ZFD4XK9O03BVW?Vf1^m-un8ENQbZaGm?($-o1Ibjdl=gjf zC6%23v4P~lCyR>;Ty|&~L6H~qMH)AVad3Q@(bI>Z3L&V~7NJY=ckP>M*`2pc3P?-5 zN^oe2F3fd8T315)j+LVUO<+jokbq2RG;g>%h^my=n_M9dbo8o5`IGOy8H7A{s0O(-gtyYI~53acS2ace~MAX4eKU ztCk*;6S!2z`la-{F3!)vEWF=rh?d`S2q93HkBvs%Bw)gg;H zvrP^>t9N70JX8p`Q-uvdGm?Stnvyz+CFp%vXjMqu?&1U9pu zNg5&Ebga0$2h&x}nY%>dP(ta~Ii!fE%zR|aFT0WA$|eH<4wqnTbhY45@xJx_HKeg_ zp4_-|mbsgrk<#HsD@1Dn{BGeHdLPXYRJy(|MvH803lyPzh8J;~LXe!|Q#SK}Nu|Br z4nhXpM)=|uN%bAQ8HTG2nx}lv8}JwDe)^>4XK#=0rw5}^%N72R+s7oI-yZ$p;N_ba zM_Sb$JrB|l+_QGuo(3`)IS1Sor}IVLa*0_v`{~#7BK-N*ZnpY1={b$@RM zO?w;-!9YqS!!Y>wCUA@e|Gsml9jx+}n>2M1mJ+w$ybRN&?*e4;j*FC4K*~yjf2S{~ zA3uk%k7yB}48u?MUyJ?cBwPOBBaOfN?Z53O+p+z(ySMY~ll}Ko{5uGP(c;~zeC#Ls zhxrS2IRsGYeMB?bpJX3K`3#c1ckrkpi{^|t4CVw~B=i;X5m=!mqNraeO|*XNRwrcI z$wv@W!G}@siCq-pKcnP+&kqDlz}*96SWLi8vE2jsf))^MGX6fp?}y_vu(oY%n609-(PA<)zkMCx zH=K!O!oSWif-F)5*ded@mp8=AIJLvwzPX_VL$rrMtqmpf0~xGZmo(Fxs^n(v8= z5%P2MY?7w+aF)vR(|PG$A>CS3^DWd(wyFzv*74iOGGz&feqt($SWFoZ3f;+L=<_Jc zCxCl#kqvLI=H+6F{b%Ac$iRdLa`Y0sq|QDxKzGimP(A<^+R;f3=-Qo)Spx`Ea(kU4K(!l1$cTg? z!F`UCld8mXjaG5jE~&IVamxn_Weduv2>@+ClD{9$vDlLU*xg{8LGv;(&4+vuqHe=d zz4e9TFd#5bKvf6zG&A>h7sa@!@2GBoGsvL~2xH6b8vwAoFLDv8HW{LT%g*QrcP5I- z-CiovklN8MOH^vxEggvOSvek84W~Ks>WObQs}s%yN7MqC#recW9;DZD^g^4PfDl1_ z*EE5oA@21VJR9m1tScV^iT(7AQ)Q4^QAwev^Efo~zQ}I_w`XG9o>XfBPi!8uO9wfz zM`IY+IX}O_VcFugpqvAes($(eImD0GdtIlWLEBxR8lXuqouv zjc-u7jmp%9=8rK(o9E=gb{|zig<9as=@?IRgp1P}8=)*HI9l<&&H8I`xRb}-sCzB& z5=>=u87xm$dhqt9a@f*}KT|I_oHnexLrh;lGKXOh>IDy{q&IG{sC;wOA5Bhd>xU#Q zra0|ZyJ!XjY2kAz1NEHp)1Z5rpVFqF@Qvx;otzjI^S}QYn{cNeY?`x4=Cs7QKzw{n znkg-mvk@0yyvaZqMZ8==`#q4ulElQFVbTM3Vjp-N2dQ)+e2Rl{$93}cH4X(orbP>r zL?KX48!xT*<6?xjg|jz!U2RNW_W7pp(vf@zQLl1GNhqCggUldHI%>m=e^)6*~p?%aUUU*u6m-^bZS!5#+^(7bd_@aK(Wc z#vcsgGjM;&2ZDk`n6CTY5XM3=aeLXVSQ@bn>f#$at>iEUb*2W;y_!`H4!vM;26dWK zX>)ihA-`d)L)7vpXwp>{7@pvaNfQ`-tFAOzW$brw_v0##ce=k`SC#A`Tu^$qtf+2N zP!?LGS@f{tBM-J$gYdJFsd)0J$i2M zkiO9qH$HFBHM-vxASJ7ymQ}733>Uol*P{y#TK~qDxB7fHtesVuAm6e(A)wfa&j-<) zVYq3UDcFwE%`dSpf^4SSJ7r{xjj?blxf+`^00b8Rvmr5Tc@5@10@{OP zm?VS;mLh!XNd{%$IfDfWS9psswb~kxgGL75;O7#}34%FRO81&(ZZB!}s;4I0r|{1w z|F7|u{{!MbPj?^h#rc0bJD>9Zelq_rPcJ!u`9rci`H!yxA8;z(SoFE3-_tiIrb?K; zqdU&zswFPf%H+C{XsQU+8P6jG9!skNvnWPz0&Db&uG-=^09HzmfQcT=O3a+Sa zMJ5qgrS1fMPR}$}vLOsh`~YR3HsVEp=kWGCE?T9J>~IkPm{vww?Fa#Psdlq*l94o{rBUS#{$CQ4xYo; zFJHcXl^(r)`}%GA^62E`;G3fpdj#3TXlEnES@dEaa1rM7a&8jy@QVHPklqva%_SJ< zFf2_Q0;$Gf{b&)K{|D_r3ZJq1@F6G%1ynYpp&S(>sF5TBYCo$miSB1&lSC2kT^Wte zxT)IR&;IG0`p?(wI|Ckf`%0?{g-;{bP_|R+q)@CaI+K6<;`QOdi-9=4Wzs=)VX94Y zBDDG)zX0*%>mHdV-FL8E%x1xPJ#|~ZVsEO?j>QV%8(bVh@v5jj(ouun6QGdrpt@Pu zTX7ad63uhqLjggAmqg--|E;|$sU8)(4>ZOFte0|rx7NAlM4As_s9+(vaUHdQ=p1A0 zEg>f>H2_P(D>5E_4swq5$v+35gwfyIQcQa?Z`JzV#wXXqKi~e>qgM-T&c z2!J0{v}6}xJV60k2E3$x9`(LYqAe#C;=K|(AadK z2ODe>6ArT610Dnj-@~=+^6RrX%4k-Ir$DwEj4h%R+Ls8XZK~yWl@Ch?=~|4hi}YWl zhm@=z^cZQShxuHH*b3p&Bx})J@kGQ79bJC%T+A3LVJ%`D+4hv;sc^LNRAQNEbqyE{ zqNlE{@JOw<%?U zBoxv?OB7``CtA(R#nm-JZo`Y)=b+O=iQ{2KINN?Pb6XZ~iAv*GA0@(=QfC>EI%=(J z11t$jJs5^GF&aS+5)-^POT1)3R*G@TpCglse)sL`lT%GhNjKr6WTPaa%gYPcCvJEo z5Mye(&JM4wI8T@q8gV`fl+Z02Hmj?foBiSDW;&!sJTFr~nhyJk+LX-8h)@VVe|PZw zdp`H4zQJc4O7L6hg} z`I{tmihze@h$&{^)@*h_@g8}DX+juRJvR8_2o{rzR`;2yz!V^~RFv$ax!p%YdtZxA zs=H}9tJo~tcg9dzxv?9C}77G@W^CfqlZa)gYD#O1t?Xzp&Y^oUXZj_689%&KAwF&n(%-T#v0RQ%Ka z6(V}XUaUdt3Qw5nM$wBk_kVy5Q%3_9=1cn|-!dy>o~);H_(F7M!t zTUK}QyGNP+LC=gwrRA~lB|p-W3`9>Ox`h|@NWgM*TyDA~Fh zk%SN%Z!ZA@3)%tC7y=WPX;HNhP%%N+hjcXkayb3+FZpy@T;}uMX!s=;pu?YTJW~0I zC|62hxiEBSP6(~ZRS}~3+7~t-i=qzzgCR^OjIEq|YcB#>?r7JI|F6GHPub2e44DM> z(9b`%O>7eA4gd^}np1h${g&dr9E3p5_s{8KIwBrLNzB5@lnKUQYvN3;8$98s9@fpy zdHUcv*Y@4yHz(X(0FR`FG0L2!(XuM=`{hdlFZr?8LtCRiXfbp)xO^qFzT9fdK#w^$ z@2tP^0AkXgk=}M8<$!J;|acFU+-Dm%ZSn z0A9seL}1GdiH(S%9A^lxk{+F$uBCn10MzaDS1@7Jho62$GbroQM*k7Zx~YD&kjK%W21m+Du(o^S5y2S*UXgIM^A1K>fuu_`(cEa1NMRRPJZcIYerG-iuF6@bML^T!L z2CLDJsFDVKZPCzz-+v^df$XblZT)zOKOQJPqb~z#NRwOYoZjEgPV{36ncmvy(PT zMzGr5o?62AUL|mI3z55T2rJ20DbxUlX{&T+rgoLc*4YJM(nRjH!CP4cSF*nW>6%7! zsa&$uvOmn)Zc^hW9j12FtA?H3?9Pv3WHb3`yM-N*JpL%=b=Lzscz1sk!@BF49kj4b z83JBNTH6pA8CxD&bgmK|m7)8iN0=6L^%ga!i$*hhA62huD<cH(kpZd zHFE5^2L#7Zh+1>p#)qzv(e2^X~9jR~LJv+I`)x7gr zsBzOs(cMSN^Z0QbhK!wQdK_Z4t!wkl>Bo>(bas;iJ@Y&Mnpw>7CkQqs-EtpkA0nRu zMjYGueo@oCEurs|a!z0u33ES`mUe*24JZ>Tvz_UA=bC2FK`S?m1t`k2#%}oD^Yg$z zeW(;68pNEI;+$tI4Rfy`_KcxtZr64tfgtD|?@b@8x7VcW7;j^bj071oK%xZFgNQG1 zBjqH%VOeo<`TJ~K@U(bZ6F+1Lu|}q+Wk&~kkhU9}cad_J_L-hC4aY2EDh=c&+JPoK z2T{B{pAo?WtV0aGxxSXuJOQo14vNrQ@c!wgK<^N@YFQ(RE z-R6KfGsUEh;%ZL8H9(4}lq&-)99d?(ZhR5}rr+frn%TgKA5Jtmrs>4;cLg7boaj zOw2;!NRTVX3{=58@hZjCFg)d>kr1 zZO^|_0a1ilCUsekDg87^DN0&RgA6v}wTd6s9X4*c=)s}m)%&p|bR1vf)ubh8 zjLGxGWJVQ6O&Ne&1-5;%y2S?RSgnmA&Xz!SEla#}#*=HqE0(an3`f>?&kw5~Z(iY1 zO9vA!SQ56=f)t>y|KA?AlEy(0>&zwLaH$Ki2HYL(GMYg!@XjYr!|mI9)j+u%p#0WBmMBoDb;+XuZd ziY>2o|DfLUd&fx0Fhqp5W&jkIM5xP%vo_2iLxeE7@IoMA^mu*1dj~IK@7Adr5pB54 zSVoP}HuX;+-UIk0N_C^^w1`N9&kU$|ar@~Efof={IWrf&>ykLkm#1A=Jzc{Z$N1FN z_NifdNFa$?^H80wTV|u5ND{%LmP#VHV2LF1vKK77ah!k$*~@c6K`iQCy0B)M49~uo zXZHv+-#8WIhAXSR0ep6!;kg0{r#H4Mk}<01)ty?) zx3^UdX;_yjk8nk_zZ2cvtvd>Dq2o%v+fNU(DOLiyQQJaR8@A$%O-iMJ@FN0F=?`&J zzt1pCu}{!OIbQ8^)PuVy#2xa7>lINryX~ql#C_ipW#=3U^(K?^o| zD;}@_Xzjr-$Bq00-i}*duJ_Y5AEWyB=V_#E@+|jB^1mo);}KJ?CmT7Y+V0|SfslUG z0eR&kzi18;ytvVbVbh?HXpde}b8mtzdyEPD1*GZJ znWX=~nt1j4H2wPZ+i#9eIdvkq?ICibRa9s;Oh+3C6q?VS+~~}IX*0~0OeU`k&s~az zFZSu)Z+8FW_0ZEM2{8XgkbRh-^yn_H9-)jNM%9gf!xxamme=3)e0b^st7R~tw|4vL z`2*G%zjYo-=+N~~!`|lkH^)V%XjJTBj5&D#;AgEsWfpbYw9cTQO#UP2De6&WkUmZ< z!?1Y6eg5of;O5tmq@q7kev0n_**V7n#7ro^WJMgM7gq9}Y z#yvk*BwO}eio7&SIO4)u|L%9MUUPwtrYBAF_Z(OtPNJ4Rb9l2y`w;gz0Bej9xLBUC zBVz5BX0!F_`LpeGbLG)? z#|(Bp-J#LWr#`(4C9fGG1c9fNEDVKWu2+Ds8?ZZq2ir}3LgC%T)NAq)e)ixA#HY{* z!>Yw1vT3+-pW!{+lt>gX-V55yVCDD6iV1kRJ})<`bj0ruAsMuW3ZGY_+SWh>Hh9p7 zFo+_I6X8jdV?*l42*}-Yw_$CHAlxVmIaI|c_u`m<_tJ0XzuhV>iGw!unw>D(PE5v zz!qdZRBPeA5=5ZAi=HQuk?N+H(NJn`4mR&ro~{CrB}GfuZpP;WkV;zM-Ma46=~e zm*a0kIv|YBRS>Lq6E`oY>`xLV$iI#&z(F zAA4t=?tdBz3M0q!(Ek7=_T}&f2Dp1xc!z?)MVEtmT5|-C=@Gcln#KrM#<+CrWKLz- z$kU5kBaeK*eiQ{_oH=@VMe^V>87?ic-va`jmzLRu8%)i?L_x2#D5Ex6oG@ZHHIWej z_EZ#c`*2qHq**SU9nsd{qFfRnGUL0E-t6{> z%n{}#FnrYpoiL^zhDQEgi@(7M*Xm-|tL}~DHn04saPC99bx&ZoaiKUSVEy2a?2o}= z5B;|xaYXWw&MCaP)qNT)u%zjgf|Hc2rGLnTF85W%*EPlsYKdjgJay~pqt+ZY$u@q# zkkKta*^trW?jJHv_LDO7RyXK`>=aNAEd zYVff8M-2@JE7RS@n9nVZPMtMU8W!h0w@wu&vA32k0KvJmc%Zn9AzFr=V+D0Qx4H5u zqi%bC9!898VMAL0(OyGoeT)r}stmOcnbpfpJv`M)D8f8!WJliE;BK z1tCkqM-sP6Q0klbLIz;4p#H(y(#vnQ0JwBta1v3flg~ zU0-CblQ0ETCqBnEs5skH3$VyFZBTRp38P{Ax#KGzb*1%E8k3V5cX2LL9ZNJ6WWc)A zf;j>GbMx+>$he)S-<+B?<1rO3g8tSi#DnT|_o;z#K>P^G7&|yQJU&kA{DWrNOCbG> zmLX^09GdXDoLmqk?>vYNb~h_S-#}3wG{K+O-5YEOrbU23DwG@nFfDBgW{L2GOFkCq zuZGYYuVzdnXfI2|B6?1f%ZXVW4>}I`bKcJ&`L?{xg|v&(yr)V#be%Vj6oa724A@RE zCtNp+@jCVl3IB?RyhLN0=uk_hh2(-qOvX+ckCGs<8%f@RFd~2>8{{qxg8AdCeAPBd z{s%$4uwtO)zd552I9se-R7h4)E!^3Jq7(A79LDk^THcGm-Q zomr2}JjVh?3QAE|ICVFI5U!bNZE%?*|GpT5bZ0@iPNddUFuRdn%omhqFwCPS>N*?V zNYQo)g8@kcFuI^0LDm9y1V&4jWY`F-&z>qRie-XPO%U{EDS3P@%?b;TAon;3aykvm zX>r9U$7Mn(K<-RH2c%EJqR_JG2$in#g7jya)>-35CQvrmC|DEjbBw&GGwB_`jA!*h z124_v!C==qPS%Y>xLQyqbM4Dt(w`y)Hd&G&hSCx0J=$E|enc zW4+47l;oR1@Sjy~Vi4f>9FhdT;=_4bPWx~qsZ8aZh6HK007eM8Y!J6=QouvI-V>z( zPvXHzB4KotwTyD%&rXqcQP*q5MM$(HKYoy8*a>pR5Z86#^kN*4tKz-n{cz*{FtKI+ zl|gq9{y8T^m>`ntggB9hGXC$tILJN2Uo8IY-1ayNjLi;Ky<|Fa%6NpG<4gl=U3^kv z0Z>!s*j)FB&92ciy6+r#yPq$(CKu?$eS%???hHOtd@M*J0WvgL@^nDDDFDO*z>ws9 z1*Q|6ma)abE?stD8|xQ~dWV2@{$c$eH?i~jmOEYJKl zF{Mp4^3ah=NLfae+Z}FEjihoKUf+p~%I%s)Ngd|zU^2}FBOIVgAWvUW866uoiJ=40 z+!v**PizuXGo6l)Yj6CB~p@C{T zEat<7n=H3lz$--F-(fz7Ym&-ojzG7lgzaTBdomz^^{OrtNZ83(_W&vi<>AM;nVMJm zY?p*`z=|P?B+W(&-WbLV4?CoAon#|eet?~UAxmc@B*?7?a^B<_O>0 zpO^hh3V4MxT8>7S*t{r9$imw6)ufyCe35VVD4(@!T^E&E+HQ-l(@6nmPwoa~Lo{%t zQ;+Xt`*t+IZ7D~-`(g9at@eC#z`f;yiG^Fsuq<6~VH;lMbM5VPgg(zIg5;C=AT|hP z(IaKruRp(48a>(B-roL#D+E4R@Id$5?%wvcbdh%jIDf}9peV$U`^V|Bo2HA`&h{yt zpq~cviF=3lM=~K6d|`fl)Zt+5Qr{39$Nr0l??mCF2$Icnl9H{ZG|L^UU_crO`VP>U zGE!%qyawg3(yP+qUvMCrxlUymtGns&48{(`+I?O1GhOAbRRU;1-d^&NW74i&bhTIe zeWxW;IYnyAmOi2%g@zcP@OXP$AGp3J!@VId;nopuY(L&a! zB!7~%>}gJ@da617o=Rs^ZaSkUGq0)erH~s{ST4i_u!5;6lei#ga{ya$6B574O_Z*` zdVPAd4^ks|sOu3>F$OiI&1d&OP+n&lYbEX&0ZcB5r055V(M6Gh7w$jp7eq!@+ zo1+V-bpfjArhjHF?vrb$Z}o>I9O^QVF!=HCv2ikRD}n5h%#Pb;F!h@X-VTQBBKPGM z@OJoBe`YO5@liZp#joFj8f<4H~5OmZEEg>C0@Uf6pU<9m!O4_W+E>Vq&`DVIEUDhYm-*mKoHWeeaY}XIDC= z-~qedvPS1m-vzh`6We#XIe3X0Ys`#w0%Mz;!(siMa1Fl-9 zHCHMsH+sC$u9C=z0IT(Op3Ty1jv$SQ$fD>SXr-~t;vu2hrnu)ItnTt!aZkAjgLGz% z=gA#d_W%yK`C?c%-bqkDY@xfSn_JWdLJOUIM2D4uzm!;-8rmZtL@4Ru;AR3dtbwS2 zMQ{2(zhiBt@KuTCkaYrs{2eVynA1WQlRUxMqSREs24o$9*jQ9#&l#5CjJH~q*Na(V zyvD==e8IcERUIbJ<`jwA2L$jrwJgCnFBzNHUiIP5lV=HLAE1!LXogDPY(5uraw4Ff z`8=BsuLIykC*Z^`m&rpjEYWpRvVFu)Bsc1)#6_WH9=tF6@Ny7N0II!df~F&C!(6H* zjr2G|Pog62AGi^A%P7w#M##AaM&<34zSkF~5E(i>uz4`xgci`3q-lGJbQ?v$oWUF6 zjX)A0D?5~d&5I!|CSEhLVAXEL`Etftzu`>a<>ek-m&0=Gh9;+tgpLo?tF8Y+ppQAd z53Fs7G%(2rUl{Ff6os%p$GE5w4h+lJoZ4JPH9$_-Q6Kp;5XnCODkWWm(>@qF6KkWU zS6{GmQVTdiX}fIFGPvm~tX;8sW>HVy7T69+*!# zmMpzGI7M>o#dHfCv|UGsWVj6T>S2&0u3_*2P%V}9^nq$f*rGI8u|&|4qsY*JxQNsB zLEr{8Ti!>(D-2$zDi;u~002VLW&~j3eWBstFnIzfZz+ES>}^U8g>H=CKyWXExynv} zp{zRe%Z`2uSF`t)OvUS&pq+d_yes4H;V1=jVKOce?M`{Zv$ek150YtJkj%)3df~UFLkokNX0ANWEK>&dP#;PZ(5)dBjH98`DwqZNjnJ(F=ufvU> z1XjeruaanysiB1{^BQD3O4;*sh0{1!*3HD8)jXQyPorni391lyRWN=@+l~4+9ApuEljYySn+XRwLf9Nx|-M^<#p1^;fZ9jR6pLd?@;eXv<+fUqgJ5RQsJ$<~h z^K|dozijVrKizrqFX{GAF#roNxYG1ruC5oOs+@LSM_kgQ{$JdA=MLBZDf5rm&pO*g zwFcG@;19)koaEfG zXU?lj%7pk-yV`RVLF$k!;rKD~rL(YBGV{cQ=~1}Sd&9D5%g&F;?%5#nG4FAG{b9Hei zSzd0X9Gs|Nq6lPs1oMfjo*~V(-Q4_DM<%-DPRUc!({KD!)-h!$Pz&H1I6Hl<4-CKt zbtvJw-&H!)$2{G$>iyjF%AA&oq`fr854@oyV}rtFcB(?29Iakxssb-X0Qg>Cw+ezb zie}HNlr{z}^}VL{!P3H&q|>a=D&Bi}&J(^4PQ=^m5(UGgbXpf2gtWktjs=!B78nJ7 z*pcRwc_wZq!AqW_R+1O)c)XoT>l;Mx5-+~Ab@3%AVbMoH3oovXx}!ZhH)0mcC75gm zgdOa-MrA?I@IRr}QD>7GdnQ?>@aZm2F}W^BRRSFcS2z0go5$S6onIoYgP+g~1A0t) zH05#yIt5SO9DH}wQULMmYUV_(Q?}MMTZ^-_++uNt*s~2&J0t~CmB33;Hm%}SVd)zm z4w3|x0+}6jh;`j5cj(*G(>Eue9(=e^+l-Gu= zu<&ME*@jO_QmNOsQq1@6>w}Zi9{QcZi^}ueVKQLPSav}TiC5|jZ4icI;kykGK6ndj zCDU?xH-YT)H{TtD8cwsgN0Q$#R8iZUpPPVSNH&5cK! zs7A;pH!J1Xs%2GqS>I-JCRu?rUfDdY@|{spr*Ulp#TT=2Ey=3oWqhIyugel?jqS!s z8XG5FVdK!K>HZ1#NZ0Pb9{N<<1aNFQuz9BY`%L$@6YmIX##`Y095TPo&&3fY?5>ox zaSnvCan=Y8aF8?;ZXUaBvdTomu;UL!}@yaYLtQfAxr)oq+{)0kc^n0|eUE^H(R%ZYax39Aj9& zlDNWyLDxYm<|L+J;Jr+_!jct&KSg`GWvD1HNUuv<(Al26?Vv^a<@M>C^w(uQlT*=J zrI&aJwaJEvh9!0vkf7xLjxba^YPBUbfjqD&|0g>;+x>sQVtGcBUHxzm;647or@Pxv zBLCmc&fe}P|KCsX?_h>beuJ#j>fdWXD`CwNXAr2b?{|AahB!zh-+Us1YDPKfZo88O zA2)GKO;ew~SrnrjeGx;%6{c(^emVy{<#_A`J*2{T$geJ|I)09?J2NRl2&7z&fPk13 z_3C_sGmJdzy(D8fS){G^=s}ERQ)yb*ql#T|04VdVC6I4rif1yntjjCVkkF3; zDvE)PBGWT#EEjrpB^k6p4oS!c17{qUL2{}dcQYJ3>7Yt;l-D$l|BfgFRB&8HRY;^# zQF%p8^(4+vv3^RrEB`Br`0#ERrRLq-LpRJYgKQ6SOp-9IOl}^oc`D;~C-+T{S>12Q zf&#$I5m#ITB>P=DFG~hqzVnR}&O29X*~CADqs`RQpt?q$%|Vf%3cQ|eN(%iNHKeA< zxclFO=+XMFumPSdYkzZ1E>D~n*rc$V*hV9u+y)Q)Z5i1-IWO6UPS7WR7SluA5 zcyBR<=GY$M8p<(dER^8|3F7>+ zEyE~Wi;_cHNfIc98Vn#uB-cOyDwHM>s~ieIAveYf0dv$5=V7iAf?mHump!|x0Y)7= zR^KuA0}=z+(Styo3|6WKGRMz&5%k0fA)wxyo8P_tYVYju#qrUr)3fhRUmd(W+T0BC zTdflU^cN7@;J!t){DZOEbW@~-9vieZ09C{3JEQ)eQ75Tr1CrQFAyCxT3-RTRiwnNF zI>+--8jV*3xJq3Me;;zy01eEEdpUZm!$W=>O=QMIBS^V!9U9aJT4^{aGh&oIZf9OXy=*h++rO9V26|P(7;7b)gPOiAj&~L(ptv; zxP8Ox14D_Jm5v${HX+@|ez=wC_Cw9yK7Q(=qAJqO&6h_nU%&k$Hb2A$f`{-T5eWhq z_~eL055yRw0UVQsq)Ih5hS-|3H7;>qmD6)*21aoNMSkN7vKC>kupYon0+%2lDvps= zB7kU*YxMyl>9_6X#x6D1v8;IAm<)hFelD} zNjgAjTC59HL@~z?nF(NXu_bgj9bUWrhd43d7^)@37+tZEUs0=X?a=`sK9qvUxU18v zgv|U3))zR*37R z6DUC1?plEK{k)O{6MSRWr<{>F=EY^rvDs`^j4=A@RwdVl@ZAaB#aWFa81UF5hp{&( z5!A$qR%DlwJ-@k04cq{1bh2Cq!SsH^Zd>p#+B$C@ocnnVPB^1IgVCumnZ-arBMJ>w zUPT*$OkA#^OXTp!&zYB85;6ggs8(`8O|F+6oKQAww0)SG9_{3p`&(CiVX|;c&nbaUC$$q9&fZZC9l8(f7@;2{_a-97lmHUa4 zj!rNbsr|Io#sk(m&uoWZff!2rKj5FB9PO@Ve2Y)@7E7tiw1V@KijwG!X=kT&vf2Zi zG?8@zVo6|XHw=XrTO2SRU~w=|6%DlvB8-(vN0a4&Q?W|#v8sW<>D+ETyL5;At=mHT ze)q!CMi-|1hBfXgv5d<%`G}zo9MX`{0kAFJ321^|&c5;wQ|KvjuO^Hpi>gXo{sT9< z|KK}N@(mu~lDNUK=tQYd*{f-5O5Lb~jv9^w7k|@TDxLG@U=iHhyXSAb{(?H0A_x*& zeIh+{vR!<3=ti8CtU4kdZY3m2T!3S%?=f@Wv(LT|_1%4}BzV}Ute`~0W|2KE#KDHs za*IiUSz#eC?$TMJWRry4t{yp2+~6zDlg~RQbTbK9a!E0^JECz}=lmf9kMQK_6XM-W zR_n8*3%MuI6oh;y$^ENpNpCHS0z}fgI{oa)=Nkjr4sf&WZ!v8yKQ?|i62aYJpxVU1 zB{M@IUL6E4?pv{mTlH5ZqDmgVL9rApVXPo@@ABDaEVKBt8-3q|CeLyOn$jw+{Dw*V zhHYbw3v9_dYa_H3S9>uxBT@y6As5}Al;LcH4TcLiW;frxI{rg?g8G%SU58Gn*LRye zP`{pM&MHa|7jwwfMNI;*QmK3$bZ9DHhLapZ6jMny(4`}9UVSPh`uWBGDKF#4sQtM= z{{Q%i`@b;$zw_+blV_je|36jz56!mI+&C>Kuosi|`X0U%H-0mX%L7w@08q)h$MHlI zNq-pZZGVoaZCC=rb^4+E-Qx#p#-kIuD7Qd(X9MkWi~FAgW|ZUyZX3>!G`@eq$Ru-%sx#%ZK+N0bUt<{k`ASpUsqL7_u7qdRR6e?3Y2V- zf@$6;kKiex6VDDlxfAJu48yDWlH3nTo3;-(SX!J+%w7pQ(OkBJ4puZk=i&|{L|9gY zY`fO&YF;og*U<9}db+^_;JaEnqs7^T0fNy9h6|BoLCIu81T-cG_8oyYNtUX8w$qhwidhmoja6n!N8>t_mBuJx?BsY#F74E%GIhjKu2kLL zXiKs%6A;S-D4X-S(nL`jZ}JUA>$#V$Lt#7kUk@b06G~>ru} zwjd~CCw^{n8WQfHB8^}OL$YF|RFq8YY3e(l;BA-LT>WZ`+6nJ3V6Re{Q1qe|b>2Q! z3^#QCC&7!t$U=r|u7BZ%;qA!*qFQAH$SrX=8QP)iAUX;qdkLcrX7vT_(j0|?lMVrC z4;j_f+{YK-u!v7R!`HxhV_|{r!N$v&!c{{#t3_H$C@eGPc!v290jRvX_A z+`%G_{sbxD@FL&iN1(+R9+q%QLFlRa^6+5)>w_03N0hOW-@U7{tNcqR=HKSC1t1kc zdcml;D(Y-}Qd~_l*cLr^;n9?81wb0Y=Yy+xo~sWy|3Emw-${!*gU5rXgPp#V}iu$Rc;@9t5>sE6BXj@Qwj2jluxHp#!FPy3LkXrCcJ zqmd4O?b{CResOa2f8HIvIy~Bk;i4=wDxA_W^k33QqM`rg(I4LIZ}(`WjZd&1V*i)_ zarEkU`}@de@t=6Ds!4c1-n7$eJ`%5}^1sGUmG9}n(8L)8uleD}uTGD?IeNRl>wl%f zjHS=1+8$DU@4LJ6W%yQ%K(4>Ylz&@kPJ<6`7xDh-)GTnCA7OAekOqg?9yjT+EU01~eNXoLiUXhK5Kx*5;U!`06VANEWi3(ES_ z(k*Mixsu~f(|-U&O3Wh5%?S_k8Qc{56x=GJ`!#7%DadudA$q_pCHWkHOXZZi3^?-e z48WM)uNPBg&-l&xxyh~IB#4Ybq$v3)hg#_AT}_~fPCuKMk|EbJDv=7(VlyW987^Y$ zwb{PlrtpBZR_*A}@q?u3W|N^J!o|{^WAQ-3U zIyxsdj5eeC3#YX`ScUn~b(SYTTb-q$ul(b5l{P))0XoXgeL6}*KUqmP;kTgN%7-f- zw8T{ZNc=wW`bXD>dAJHfEv=x1poS1!Z0^UCd#Nr$qe0)kd3*fou&JRuKp_!b#y>sM zMr1pi{o1Of@IacIRlTvVC#u$bVqZ9U#U^~u5IMm)sy1_gvn&x?V_RadkkNkOi1wlx z-wAt*Fm+C9v0WD_7=DveE|X|Tfo=mnNza2JjAibCo>hXc2>Mp?ar#zj^{wQi^(~SM zP8&ec(bTmf7{^CdB>&TOaadzR=rv2i^|pe#mNwP3WEFL7MMcXxPlC;a4isH%9l92g zb%pDQ6S2NXg7#XKEjw@xeamZEoB&Ud02iG7i~ulIz?x!xErAYYb*9)gPij*Jgub1c z&wW}|q8pf4ayk{0fePP7gaEstqeDbT*BLQ5tA>%R=Yy+(BoA@o*1-MzTc(HH5GZ(i zGGHKDD)OC%*AO@E0!^S86O^eyj~3I^aEl@E+8|j!0R&B@33iVoX-YK4&EC2131Q72 z9ZBpxqPzaw_EHi(VK1dg@g&}}P7MswWH6)x%e?KX9w!je;3&R#Hd6iS;Ro!_f8Of_ zpbK~ZllEv^jYFklx}z-Be3wiXW}%TinXnipflrkcVz1IGGvOTPCPl^wWtrKGGKu@N zhR05Mzj^iA+gAphrp*#sXOm|mF{m7N_u~~TG9XLnP*WKKO(L1+T)KQuwiM&DGN1_~ zR_JA#TJ878oa$HflCu_A3zX}L1rb-k+6`Ga6z)BfTAB1qu7m?9+i`J$nUb#gEgq0w z+YjPXkt`Pp&vu0o=lK-|K!IhcoIz;_)fq`tYD2?PwVgt=m6p$A=*dpkz3SsrA_G0o zrWUV@CfGV;@rY&9p;I5K&H?j}hB_?5)nJD?Lf_9*B!NQYd(P*f(uvCLgi0$oWF#Ot z5aJU-?iJ-BVfs!h()_BPGFb#GWWjE#jJFcsGA}vG81z5M*4uws^)5V8?Xz@UDN(w(?^q%`NNy2 zTA^0+C`nE@L#a_9w<{ImmdTn+H;J->Aw?2|6v5*(8V0N1RchT=GpIvjaiE~0i$rzs5S0l0 z5&H=sJv>EE0dBxfkCc*mRyfR>3!zKMgLlCKdfK*t*yi|~f;k17XvPk-cb<50Xww=F~HqVtOX2NonJu z>DsSP-hK7&M~A1sIehh{zw(!BBwbeQCoeY|ygR27eh?boB$RXh&~0y7&TPx_jZp5) z^j%K--D}M={m6Ei<{+9g1oKK5zKZ$1Va*|PBMp(Kl;v*aH;Xg*-E`~=T!7J-|HX&L(vUj?rcmbGqDn~yRA-v~p|`-Rc0ul}ZZQvqC)?*_NF_|{VioOon%_EYUGqDj zzOc<;?^!rBUlVwrY7jV7t!mJs8CbooZRHfxhN94kF19X-V)v_Iu~H$mDuFg}eA%kA z`U0MNbAvD$UFRoi1OXPIqy}0bSOGyTrg0rf-p@c&a+pyW*8atvuN;PqHv&cj08PFI z9({XVj`Ktt!pFJuu5&b=AHSu+aHhZ(^tXcG{))+BxEn2&SMx03{Tx}juG1}tgttl| zG?9es#+_^h(=aw_+$G5%ddp~U-po$$6%O2Lx0it;r}bW6YU$UYyd0n*Vb*r?QY>MW zB=&A2NjfV2p;Z40ifO$~9j!J_!8he3nirP%yfCT-^yQ@Uo*qD5Ju9k21*Q_uY2r^E z3skf!JLDyyG%zM|htZKXjE)AFT=o!2)8=7zvPS(=#tgwySWxx_AjjL5fk$d%kaSp= zW*UozhxAdEvJ*Syi2Ayr5sGd@u!4?b_jY%ek&#$6ZqnM0>>_1BJfF?(`*x+8S$X4 zVphjwd`G*=mu|FVR6_s;_ldgEM2WpEh^8H$o;0&TaMpvhjxb^9?*~x;4UY&yf=yr> z# zHJ%8?(K()8$e7*_S~noY`x$Wo6cg5uNwMdOfWjOYesRV z>o>v8)AHf>6B;1-y&La{u3R&sp8P0X&p#jv9?XN5!bNJMSJ*asO=X9ldZtfZj-77R z|72xB))nR={*4-GkFEvlO91ZhMf1x`*Ip#T{vf2*zSrmH=r|`0hzSuI%wiBC7rLoW z<;5RS|I7HwX9AS^C_@rkM zg9b(6)M52^;F~SxfQ%@v&GHiBrce-eg?6SY=^BZ2Ckq5S$Q4vh<9fE9L6lOc2I8~> zarx%pC97Ht^#_6&Afb~O(~7YuH8T$BAjmgMP#DqmPL*_v~Di{BuEw=1dq)kYQr5d(N1{?n}8wtXn{(Ye}HLQTp7-s%C0DI7kk_ zi~}s1$zo!CaEM(Aw|Xd3)DIw3$3EX;nzWz=>fCu+4nYn)dHXxiqF{X`>t63r0JwAH z^?CR9SguOVRZ5rw$z}z4ZWCOIzNRwrda@E@it#LVA!uYCCJJfj5py4s*ozSYwTo|i zKAKi!5?;C|=IR-tBm%cSc=;2V98iN2k(jfY!(hvKs}Xy{fJ^_)i`+Le#YQ(!*$p zI8EGKODhFCU6nLn)EPGRZLAve+58s%~tJVraWIC zlBP?}+}t9MtJ&6gYzUSm1rC#OKD~0sBUY?eTp+^Rhx*7dU(_w90Lkg>Jd8XtL{ehj zqcQ7qmJ87Rfelq+&JIVV{DnK98=SL?=r(f@PPW1%^Yfl3J>L8kzPGFSd^cM22 z=7rPZh3a68{+)cpIQxjAp4C};X)#AKD4olKAp&Ffmi>==|=kgE)M<{0@29U^nE(xDyKjr9Fu3^^yPW?sxG`FK9e zl{^#z53bF5TvLo$AfKHu=svR3THbOUFkZc){4!~ko(C4;8Qrb zvZG>@s}a3=IfncgZr9(e2pVD!0_PRg=&+NaMvw}c84Ua}Io4fJE6XWl0dYNInE^L5 zaYDU3KBZ?~fVJO{3OCqP|Cb^4*;B%58 zK)1VcpHV^}Cr2`cK4@AfX2eKz9+=ND6SXpMqBulcngMM9llL4~8l-mV_PY@$bgG>Y z7gn=R$i1?d&&mJ94PnXecUv#dffLBY$la^GVPCbA)pLwA!wBq?DPY+GaM+_ zA-;=wy9~J}Q>g%cf%?M{l+qX8xcdRQ6~o3<6c5M5F1*F%VmhR>)Y_nxVAWAv_mpx- zJ_~SAH-)l+->1n-Yv0aee1fZsh~Sfyp2zM=_AKA?!cotdj74{_uQ`%;stoNsu0R)s?xK?nn)LPW359pb`xef6?zw5Qa|yY+ z{fn8D;4NMQA+0y0IY{VGT0aMkz|E{r)rNdQA}o88gQ#`7OgusnlN1_?R16*YIP zdpIbOt|@c8!*Cu~Oc34=oqBHVu0D|*Bz!P18b z@u!K_B+3m1plEO?;0X!?Z`o2GMY^ZcDFg=-a8wEkpw32;mYWTM6pcnvcAe7gvAh~E zqzL3nDcJJ}ikgW(19zT%?Oyu-ynb~gWH!Bo%2|YO$b0&$x<7<*uZB7Bl9ocr26YL2{g2>B`S+*6 zVDNqGFQga&6()jExfYyu-ydEK`@{LL^^WEUg*WXpARO4X=Fj&}Ub{l7hE8&nT=z5;FEI(`(4~5M34zsqYW7I9` z4h0O!v{{bEn9r}X840wD;_3=QvuwNquot*T=1xbOQ0}v!d{NZ`9|gmFJcdJpd<4!{6rG|1d0pXnB8ajNAHc$N)?Hv<$ZI*Kc*WL3ltI9N&P zurN)<)QPnM)eBgP%D}GFa9CEHU=ElhEE`xRatz9xV}T0N@!_HnO?3h9Q#rNdn2;NK zY+BziRry68Y67OW5KqBHrm9lX=pv3cb9xKR{Bh4QID$KTm)8AJX^#^d(u+%|5US2pVp&=wBOQV=f zazKcOyfab9aUpX>J=^5&MJE|?eMDBTheC}7N{VF5{&|Sa>_3W$dAX=^1~}z%7;mq` z`?=oGxuL6?whu{va??1|gkWXi01Dq2OI4EOm|X6*c--v=*O>yHZ3dk{bw@E>;c4m^ zVr(Be+&Yx9}6Zh317D|RZk56 zKvh&da3u437OPk-D0Zcw!ND$;a_aQ!*K&@UR|Q`%8Ak#HN^TfbrYVP6Z2=g91hL4q#{66FH{AcZRu z-~m8As6#h4dT#(tG`d@RcasDLyq;J$cH$Y|y0KjzC%HBDB+kT6Dl;yR-nv3eeZ8Z8_O|F zm$EE|$lV|Rb~%WvE-5@!@(V7tyn1=JTBaUdZ+Meog}hRS?miMP;~Clx4l>J5&DoN~ z_Av(fN}W=3U7`COtZEYw2pcvAEH3uZF^eKn0A14zh1_$b2Xu?zAs|A9G$4jSv;eP! zHYoU$_FiZLxhEyw|fC=|}1ochydf(b{Fivj=|UTZzau)( zJ|)Ej;LDk(I*{M#RQ0LvLhdf;7!D5A#w-!yE3I;-D_N+uEXZf_2Wy2O9xRUO#?CQ=DuXjwN9 z;>nN7;2k4Rppu3H6jry?{ij3+4sCDf3!Xy~g(Qbj#6bHOHacqa>G!$0VPQb!o>6bQO|D9biCJ&%x8ZMp!QWI$gmnyX57n+NN7Z@XL_lSg^_3z=bP=Re;3t0$6_4;V|kJ4W;6i6O|E$x#kz@4z9&Ikp%H!L{I6JOUI$q zMz!|TYLd4oZq}(wj+GOzJSz4Kj48?og{q=*SMgqyM;o)_q*5a5<;PnQNzm2_UaQ2h zr^#F=8aM_;u5JOK)%F~L4{H_3w8IIQD~5>XeI*pch0`)v7_qaS1`vW9vju%KSm>vjYZ1+e6BoS;OO%+8{Q zBOxNqsI7BEfNr&&-en%1Qqij3Bs&qMbgah8GeHSQT*0X~x@HiLLYlw$g>{?pm9^%m z(&z#V;|atgyVHMYUw+)gp*I|*t5GeKpFG+r@6_7mDC`_^+a2keJ67X#IxZyaqSPt4Z>gfbY|j`|LL8X*{)Q{OC2nrkKc{Ku9A-h$@>9MS>weaP992j zzO->>2ROStJ8^mHc%#c671HwnQ^t&3`Yk14!iFg?R#Ed@@$KsvooS2G z*};#Wv6u8Gp7BTBc~kzSi<9_2e7HV+@$&T5501L-qeW{wrW(KOUz(bv|NTo>r!QZc zzI61)k9c%nSYJmtc`u}|!w=32>8AVMbV2<`WNyA+sDJ8EZpUSF#GQoYwONG@nY3>O z5(83)oJVzc)ChI7Th!F}^=1%GtOs@W3UeaT8d;qiAzsX1{IL1BfwZ&NjO{Fjt!As^ zCh2nfXf>O4CxDN(F7VjSlIe9>1h!(AxECsMB(^}Sr;hxEJenb zH2otkgQCl3XTuF+r^*32CEz(Wg@ygO+je`}L1VYg8_&E7UR31mcc164aZ&2u<@o}-k(E+b5 zeLRxfZ7Y~hCgl>a)f_eomdVW@%!`mP&mtpZPL+~A)+sy;J;scf=!l6yYslEJK`oK| zXk){wXvKmL9tE|!a-}7?l5CP~`lo^>acerl6`_bDH7vkijS`&8x@?#Q1Q{$vc=1&e+qJ1|tMCub{0CM_wo=47}DCN>pvJxbA=Zld+ zV{S>9R8D=&oUu}NqXf}c5=6`UL&>9P8lqbr=3 zYf@xg8A76zpWC{~1cj&VtEF_K5T}1H}G-uEj*%lZs0udm>$*eGu zPDV!RFQ+rnXwd712CdCd`P?TSp#}8>rU*zL#nJR1eyn0;`g_ergcOT2SB|=^28Rok zTWuP)oBeJPNYrE=C>l759p~oh9Jiz>Q_FrEh)p60rv2QX!ng0b%PJe+Z7~Y;ownJV zT7koC-7dQpW*;2U*6o8M+PZy^XX_>gYn-Ak2s_)q+N=XX)2s*eTHycTgLm}|TRxY& z^Gwfs+bCn({K5oIUnz@lT||Yuol~6c;qU{TGb)?U%5+l9Xce|pAWb=@9`?H($#FEV z-{DA(q-)LTpY>%aw>(=zHX$l9L|e*PMOnKr4XH?K%3nB|Pl{8#*YR=jZc0ZQ#P;}J z^14y-nntL_xsiC?T)Y$kxI|7t^+*%>Iz$E#RyloP%uzBj$EY6>g`g!X7`gx`LUAI_ zt+qLkMAux8Y}0wen?Y9^>EnIiNyfGg-Pl0PH<&r%><=m}Oo=7=UDp%#Z^a5ZqbMt7 z#nhEG=CopD=R~n;Q!k4pxkQfEPTVO&C~uUr;3OQv#kWJa%-qB4$msR#uU2*`?psX4PP@@FWRIz>J(ZpKzLVqlm(+l`b%g>vL+MJA`i z2uNJlwz1}KCXpu!C6qCsXa!RiTCvr!Eywd#;t*2~AH2e05s-QC@GgvAvM83w@;FNLdM^#qS8qxnYDJyCd?oG2c)nmr<)d6Y^uB+7Kc z!^CN1tfU>nPBv14jimIDc{)hTl6uBfcsD!k7{k?SKR`>zh+Q!T5PLfE!l}c?H5A2& z@ZQHk9~Px0)CO0jDZlk0X&uJPW|ISB^4zWaD>ob4DHmV`V7I zccoXCd^}@zUTf&rM{}n*hRvFYKy7p>`VRD;7T;mz z$7NBQiWvZA7-`}S46_ecQw`8+6}3`ujcvxwPK$lUYHgF$XTnYe%Has2CrmYJ3YT)Q zQ-*YE1YHH!)}jzIOC(cQuU`6KZS6w|@UghCvdSGM{^;7;U9>kqk_JCse*elEr*QJ{ z>(!}CYinafXi#K-EvrNeWli*!WF56&Gu^Wulcf{$bcVq7jtOz4iLNGQMUZyW2?=o@ zaf_Rcl4tVL(t%NWv3pmIMNNuz=(1aGeHu$RHup-h%Ky(UNxry%>My1s%>azUWp(^ zkjpvbkqCngi~=qH5u8bul%lydI8j9^X1H!)s-1?IrRu@x9Wu+}9l9iTu1S@yQBSF& zr_?>&q*s)To?w9=W4hub;xH1{ne{Rw%EcJjt<;WrbkYhy)62joL zcxoq7eNs*fQl??;zP)MNYns z8Fw&+w!r|r3+^Gt#8|p^E|!8CDJ&&sJB&-oyiQ>at8Nk2a5~H&555iaX2NHS4d&IF zV?LUutPyPuU0At0U_yy-aEYd5^QG_?FxLWLk?406WC8g*>V>3}MQ{W69kIgRpI`c4 z<^M#XVpNk()CN}`2QEDuDqiEU&aq5`Ltt#tcdq*aYoOX+(@ZtD#Y2R zBw$waQ4J%r6Ac=(DVP@C>*xZ4am#rDpS9=l1&)z_0o%EtBIcJbcr&JiI%c`KWYy9% zy?b~`%@R@AO(8~r?{7$GU3BU}!VhMs`;oS-C@eBHlWejOp%5XfBHX%^wYq29O*H_M zq0UKV>3@FJgz8j=Fij_SmT&To-dR}nG_fa`5St`(JbH!A6nSo?e9sYfGZDESHK7NS zT1_BRF``5^tryL~BN3~fsfCq`XDAunP-)gdhY(L^NMN9ljHt8`*^ygKjwB+8gv)HR zF+p5WOENr^Ijv2F1=d1fj=Fez~Yy8*gNtxXqNLTGnG zq2Q+CF`OWNmGO)i-%&HDgMceI^!K^({c?J!K1Z)*dzNamrNa>7W^)Wd75>DUU(F3S zMb1eaw_2%e(I_$swkK*0EyuUx5PD3lD*#to7F-7{Bt_;DN0IGcx#f`EPQXbC$@mfI z88o1Aa^I4)j*Eo@mW3Zlc-lbeCfm}9)w&4(b<_vsDv;C#93e|2?UXzT#Olg-r7ns+ z8NF0H5};p+nQbRJ&m9=f!ZP>q?6}w3WX6CDEjX@KN$(x&5?StSaZO!>{i}AID{hk= zPWjx+7`2KG=44{jU@nYZLl%G7r1^C8TTT&g2*dG?(AMGI8mH ztV2>4cO*62yfNm@@_RPKyfyzV4iPA^whPXh*3oCRow^;!9aJKX(SgI-$}ksWn_yBI zbJMx63ib}k_kl?jLZ_qVu%YY`&J!J6j5w$;$e7NllK=@NVzo}g2x&63D-aVaNa zc~vD}5Tb>X2OpNE+opt&^ijfZO|UW9ih^gP1sH#Vh0#o!>p3Vl1Iooi(}N`kxP=Zm4egE&)?W|eO#&87j;?Z!p!&Yv zlt_^1mShRAnIh#IKH)$v6@ql0x*k((CXl_l=P@Jvk|8L@HyabL2#K4Z+2z`CISQ>TS51 zJpG!8O=7fLWnso=bDyBzrc>vjb1LNws~!L+HRD#3a&FNrt+UvXWg%ubN9l?Z#vq^B zeB7|wRLr3Atlt^2JuIznOGTxSWF1zhX(zoKkx(kkyDkYV=tJ%i)(ODFqxs#;;EiW25jh?B3^pMa(fQIC$Az_$Xc6N?3 z4JqO!r+H-2Z_mx#EvdO>YOzjAIG^b-mvAfdMghjR)U z2u4+8))Lq$oN&atcX(BHpB)}~NfS29VDm~GoVM-IVdq;w6e7HvjZ#m1lI{{dSz9x1 ztZU|EnZ_~R=QL);bZVB=VWlWijy|5(%YC8T+$LiUpEB{%E-KhGFYAH3uj2MxP50QW z*Q&t0tv^IQC#OGp2|e_R`{gEdrz8d7kzU(UKyoiY5fae_5H?919swWn$Im z=y6=bL0DNul;&R=T|?Gr2CbPJWFihc4q67YpE$JzQ{%}fgC*2?i^)z#qups>yI8-# zjNrS!3Gv4aL;QA}dlC>9h0tceL(w`-R$~0Z=vbQ30cIdO*BM*mivl%HM;4t;7+D15dq>VU^_t48F1bGr^z;}416to%4ahs0+k@usPq%tNQoPXwCtEJ z$doQoHrsRQZ?f<#ypr)k(XOa?-FgMrZ7Fy81lo0aHcmO_X#)jze^hyB>V(Q+Dh(Cz zCkMt;Go@a5;)~g9R z{z*P<+!G8>AMcRd){ZAZ)tVb#9;rlSs0F9o8=((fvIh~5s{OcWQ<6#3Yd@}4l>*N= z_R&C00zAy7tDUP5;e+qi1vPMotydc6op1>0UL$bRQwA) zCv7wyNDQjB6Kw|TyKNKV1k(*^hdR#biKhT?)mEnwQbZ-Fm=LR$zWEJir2(<^Fy*%^ zDIKIfF^MvVl_)CYR};r*?t|`sK#5RKQ)Y!<6lF=5ujgjI<;A&y z9olpyot`a@T&08qI8z1T205doo#`8!b>&pR0xE?7LU&piwd&1X+$#YC)VU!F+HA6U zlt;mgh08J>6S8f_6ljY9UQTgtaJHx|dDUSC6&Z7itPhknhx8n zitdQ)=t+WCU*>y8WSS6CKD~owgW**ms|Ol1Gga zDD5sh#z=q=vV`FoA8#~qhU4R2`shgx>I=vpU68Gy^7M+R)yRxKhd$NL8p?!P1tXwq z2?wo{Z)B`U#>cUaVfBf^o}0OAQPE-0%B7;!NT6KRCg)k(;(`TUS{C7JYi;a9!Zowe zJ@Iy8kB4?W`VvvKb=KCV%3fzw!x+RVSsWCNyVBkZuL zy-v@O^-#kFW}O|qt;8Lc2c&F~74Ad8&Ni_xp}CFa&5M@H9cHlTTS5Rp?6-2&GHoa9 z!e?)T@pBNJbI7s+;ni`QN&07n3G(jLs&IEVH`@Lez|P<(ll zN%-X187}FLoddFR&38Ar$ogCBI2w7ZN7zJX>Oz}At$Q= zj;bJQ`UI6i&1#2DH9T^} zNm+V3t5G&k6xr)1$u$y}U`t^_bX=9Z+5&>Lm<+|3$*48RP@~Hph@dv!L5`I{5=g$p zVs*?})IPvr6;_{bvB^oHxHrBD86)FS z5;Y#Z05b3p`tQ=Et7-o~_t7=-e9bl=b0J z`Ay5scylrl8?MR6=FRd}d#4Up(`pAe=NewtZbLUa^+&a)zg(+UYe5{=eE%cW_T$Ho z%lYlMr7>#!;|ewpv=gQq+iH?&aMpXv8uR1YcCFl~CP5i(!5ht5f(G)FVJ&IZgWbu6 z)s;!PuYald?_Z|dciMw-CR=f59jfk@fe@R-V5e~{`5;)IT)DUSMF7WYa^+7A(q+AaGKW(*wkS5w$?=;$-$zLXLEUM8Y5ZbL^X9CdvP8ifDe+h3)zJKlN z)cddOeSeqif60$u5)C)w=e+?AjsJA{Y8wAvx$=tte`)-`yW2oi&7=YzsG_8sAYdk8 z9fYI@)$B>m$ZMxWft#xE#VNAYzoF*mXsjfA0Oxa zH-PTOLh-UGP^BdrvT3H^ePTk}6xmUNR&P+85|l)t0+yK~G32s0msR}c!kOhOeM(FevQtyd(tlNy_{0Z`$wjXFe>=V`#> z0VySt(Jnr&C0iy`vA7V3w%T4OiDgOI9qlLqYF(8q-%E9jKHFqKB4&lCe^1gr!zw;c zH9z-|T8*MJDpS0`xak6etAM-!WqRe6#1L0sf_F6>Th(f%SnQAnWME~vYxLL1rpGCm zm4X}WRSo?R^q~fz1NfuDyv>@NNmMtMsajb$Y#Vme2s3WS2=d}~{Mqs+tMe zcnNXr;>TO=%DEWjv6`EbI5*eHMKX{}#Y=f_n`N=)f~)CIeCdCA_2LH=?6gt~vAg!} z4HoI_>`p3CP6@wYJO%j7$5k3ZN80>#U{O(Skuzm(-?=GzmHX*gY=a2 z@G=YTF7?r7faTMylxA&b96h8Mbt;rN8!2xJJXhl=o@n${wgKiVRsuq$oMMIZs%3!onsWZ6-<3su5(u;|k(4APmTkP~*0LDSQ;W#(#P# z{(n$*^r?$&bBs*zoP(yVs~&5+n6+y=7TNViDNv{u1xR#>(J{iL-m zx+BF1_?9s1XcC@lJ3%vvA3mD0Bs|#f%Rc|u_e;|MU%Ghtawh)sl~?hfU&_x-*C;HX z$M1UBFWHA(ooF&mB4a!QOCDv|1ERLVgs6I^?Y`7^<9v=^mFc+MGTP3l2aGgCYb(zv zB9Yq*M^B(wMd}gL(drv;R_db;e@?^E3Tpix1*#7lx;vFIMt85wXJ~vGS=tenleVOy zR7vg{mdlenwf1LMRUA$;iboa2km`qROKh!2gdx+aQRp_C*7>}W*#65a|CO`wg8DcF z|6jXyITQbX>gp@`?@N>aS~4ZzAW68H`5{!)innMGsB8LyPO&W1~X?NCcd!VY@!>5{Q^1&xbN5!&5u~rY`@TGHmny+XcAel zjao#qz|C4igk&R=BjkpnytByv7cf;@+3q2@dKy5Nl%=Ff{RZGp&Ri^fwv3YkHYcOK zffv63F!WNuPmPkjJqL?Xo)fY+JXkb!Z3&CZA-X)YOx;zrl=Rq1OOZEgaWJ;}!u%#e zAmaG<0bt_}tZ%&k8-HzWl3}mR!=#`oI0>8_x;86@R-rOF-F)Or)?iYu-4YmGEz~_2 z;lv_Zx>@Q19=l)XP*w%B1jbmL`l+Ri^xW_z*2s$tL1%I*Yxq;42kN_GYurrLGGin!Baf52;Z3QN zyekA7B!V83e5^P(e{<&E?bR$=bPx(93AJ&-Y9<0Jd8Tt-%g7C&u(l?hkgLC58qVV* z@Xhx~kh)o}TKg1JXJCESC%W*)2(6RJ!+3>PtlFLi#*&4)* zf{yR*z-rD7;+sV63cs|b!t~nONYx+_d4I67w5T3Pcm=uNh^4JILm*y|U!R`#pP*$D z?XKCz3%JY|rZsLanG);^movZAKsJ%Jalj_Cv_I^|kDiU6 zpwTy-{3KJ1#DJ%ea#<}14jdEN5VpW^G6iEDg64*WBtAr22J+`AM93Bl>R!|$sGc-F z=iY2hs?zJah*t2bQDNY1ksgSPK{=pS;!9dy7lo=Es)=WjNAAS+;LRTCg)+krDCnn` zA=*+Z-i%2Ij>E}Li+Nzh9$`Y{!bkj1BjIOPH{Q&b%;SREwJkA;w zn6T=?cA$1zVJGefU;9^{;){p|h<@;upBbyHyh3R;@gkOEC7o160?-r3mHqAU|F%Hu zyXOC=E?&>re_gzM@s<7WOXL65ZUYvdcjG{3g~3*^VwGhsAkkseCR7VZ1rI?`-^6UA zTRToNKa}*MnUZN^d^{C-8gR!b`5tXIFep+$h@5J1DV@;3(-9bfX8-YBoaay*9^#z@t8|vZL2b-l2k{t`dz=3J#1Zp~E+8 z=6Uq9x!H;3`CpG&(u-+-W(A*-bCtJxi@ylA6$(L%D!8g;|DaMN2_E%Ep;HMG9QdpB zaN<@Ru$LBp_eWQ6t&WZ9$b#Imbd0p7G_5Qtq-k+ywInAPjVY{ckixDld90CWRFV9Z zZ3YWScq$Z(XO$wDG&UzNk_S=1%?;alV_Hjgq$j#=bv|SyM|{k>)`5w;qm*SMp%6wP z*3)B4G`CZVvQJSUnv}@BO4C5=2&ScwS?I*ACV8s!s1tPc1qg)K%^)!|b#te#l2yxq zIahV)Q>bi8kK_5Av!h1$2H#@5K+3JIDHn@d$%wU3yacVtYGGQ2T|G4VHla=#EWb0x zqJ`wwd{pxS16IR6wi0s#oJcdqQ{RZXwPwMb%0h0ASfhL;}-xm)5iu zxET<5xya5gV0$V34y?mG#(&^flZfH5#_}T*$W`!*s;xzM6bs)(`!OO&=mq`Z10Bp< zAyFc>B^3K(axd6au2U_wZsy3!l&O()&PUIldJ@%DYCi#ryp1*0Oiv1T*j>>fQ2nJ> z*|Z^Pa-;nVB4fU#E5M&^X3NSDjgqZAtI(1 zRI3ix22M<(Ajy_EfM}$cnPcr@858-4cY8!zIKfGiraes{!78Y50)QJ8HFZfzknFg4 z6z((1~2nYLdFmyf(Xu?QX9H3`h0!@GcH@1W~ ziyO#^vt<;_wMwtvp~2^FsZ{MH^Oo{|<5V{e?q`E+2NaM*r4B(=8fd8~pb7!esI zvQKoV!N612=}{2F-b%dv%%&0j0hkfPra9?k8lL4(ta95^co}DGw!IQbuHrFk?o^MA9G{ zOD(Rop2l|E3?>~*n{9QZV+Hbgn8BbJ)LXYOn=QpG)5kY&y_|q>7)6QVw-B@C1zD?5 z+lQLRr#0$c*Jz4H;twpLomv-tJJl5P9d7BG@E99Y(h9v7b?&3gaXg8&7SGY{~l~t5&s2uxC54lL!!2(eBNiu zLTxDLq@pm1Bu+~t6%PxSaehURL!3?uv|Ql9y~uwzyBnz(0$BuS7+FpPi7luIZJISB z&Si%Q5&n)dWRBJkx0b+=P@orfB(J${H(<^UwJjyLSef6-YJ(;|`Li zXf`CfN}(r$5BJ)mO_YoK5TupAg%e3oZ_};Y3Tm-zXeRJEUmJ)<5LM$=s6oLD+!2)& zPp7$JiSoi8Ez11Eh*sP^EaEB*6>B6{6`JdsPJSpfP_4nb3gV$CN0&v!7y32c@N+(@ z51J&+`N0e4FYrgoT7o~~RQ{~Jg;6q5U9V15<7!@S%BlcSGJg2@#?-}&7xh~^;gzGj z^%txct{$(O%k)~Z6vJH$11~2L-Vt9*_lC`22+q`Nm#*s7D9*W8_)az0 ziR$%QpgOB&S5n^jz)!!UIy=fc&j_&|fxgfR2@wlKt6%`XSS15iG4CWW;oSU6SuEf`QD2X`Vdz#+RTh;TUL z?6;9K7R#x&)8+uBGG*dg)N*BCw5&vMK6IsWcxC1}^tK}@T*DRh?$kEr?g$xY>vRp}EyI zOm-#;s;@$Bvl&ThkEVQ*ACN3U8Gdm8#2M@8mJ$UPBX>s|O-)FMXptJ#QODS5PVEck zbBemAfWoY(x-I#wU>)0=?aAf&ncH^&fQ=~5 zWSU6J#(>J&jM`Mw3cyM7Cyd=$L+UojnW8l+k7dk>D+S`{$sI}+sX#Kc24Ye?YtMBG z)(hnoo(CmlPR~%Hd)810vTM&#r82U`aFT7CMCKj^_180#j7ME3CV8r$w#fyl2w;o! zrOZ;zc4SFMC=V3QLba1FWqh3btZ1v@38Zvkx+(t@K)L(w<^Um~?n?G0H4}E|S?IM&FGP7sA@jKb89*Ttz2UP)*pFBB4YLA-$k^@@ zRPqN7ye`Ia0XDT6tE>@DSS0d&p+;~SweEv2eU+05U&^XKa>kG2HsN}7LLtRcS;;y~ z(601m9OB(l#31&@$C(=_Xh22#lp>n<1+?LP=XbXX) zxli%W)y-_>VE>4}kRSHPYbD&2T01d&#acK$Pb=jmJFzgRt))!hISHomK*8zC*rD~P zzCrVXD_sVJ(gvawEFV2ys|Feh*Mm)+@QJhmL8IB&-D!3bNA=xSVwn4r3dA{jePtIBrLzjF-S(tYuYxjFK=dm9*%vc1*4~ z^jwgfYc;lb61c@+;Zc$U(PX9y^$0NSYSNA;DHBH#)S0P9V^B#pgvm;|b7lLoiI$-$ z3Y%jyQV&Ryqamxt=_Ubyz=^^3)@WSl{7|yyvd;{L#tz^(Mw9Nf_N#PuZ}jw4!*kQ? zNds$Z*6QVDEw6Dpc^8w6@%>32KorX=*tIRN^v236F+aozuDpGf;0ehSO8%XgY(IpG zN^I*15U{2zuekxww-ASMI*ew#i*6ERRisnzF+-W-xsl|^ZKwm!UL3XrAfQxY28q3I zP@Eigdx$(6U#0M=8Mt)DTT^+K$H(Q>ik=GGhUswp#Wa-@&@Zso!%BRKc$QYKg=bTS z(-B83`@GdQ@)z9l^s8xmqr`KO0a=%|nwUVI7(z;d8Ep!GI5B}tn!6EdjK&j1b(exx zcJtiT<{C~TDncdoAbpjao%W)w*uXsNSrhK2Fn*VM%uO*%i18BZkuLg-3cm? z~Gp+gdPyHfyBJgQ0wRBJ|WV zueEvg!lp+~4(c8zH4eO$Lv`61u`;;S`&w50fx@GL?ATeI&3$##q|rusnE2PxI63OB zFp!i7OE@|%FS!xCF(N}<_hL7}P8A#Nh=5H8X^^Ya*@2Nn?qL+r)G*0!C+VPT0$H|< znnduI30WL=?qCR39QVEx97SP7Y~^(aGIT00bYMJLRjEm{ce?5arc zYrX{%ZEtOD64!CE-JH~Q2-4)_5FX*wX82UbMPTBleo z%y1iouP87if24DU3UvVOfs;)Fiww03oW7Lp9p_pVq^j&)Ppfwomz%MJ_N!#np%vTT zbl82I`(V;nt~Ngh{P^lYM?{hd=)if$IIXS6*k`w+${+2M%1`Wr>QfX^y%yGcHh9b+ zi$ww!d$H4r7;>S+D_rZNK?=X@*?_Wwq9{$SXp~EO9E<7Ji<&sdHbr&-S;aP%4#G{m zKg{{z@FIEAR0WHcd;#6M6m5j*P?4t;xtbTmHZb@m3K5D86_C0Y5p;}n0?d|fO7B9w zwvM>-0%9dCH&b|tu&U4ox=@+MSk7bKJ_>wPgfPlssYt4|G%8yOcGiOtG)rl$BL|DM zIoWqpt*S}RV9m~&7D}w$X~9ku4q;NJI4M1%ncLNh^hlSRB8nxpf0{Oyv;rn9Ww*`c z4K8}cPi>jOC5XSh{bV=6ZuLB1M3dOa8s#2xMMsSB<$fuAvy3?+&Bh8-2Xn^SYe4aK zHa2QcV3Wvw9a(T`GKr*zt-uhb3Xc$v={IYkZ?cm5UvuyyxW)XB(5mEP&s#!dpv3vZ=XM#VAV!L(HOt4Z3&Lj8TjGbAvsnkSfQ~$Am*}JN+$nqG(5Y%sgA3hV z8#NAwi3OPr<6FRN6%I~~dR!uxW+=|w!-hlPg&Frp0r!a%d5q>RB_=blwC51yCD^4H z7@tPSB7g)?Hrj;60SD56p;3$zw|QGf2S-%9?n>|i^c0uyQ-aTZf0lF5%bu~UK#zU zPTkij1OweQ9IC+h7jZU3;s){@enn5N)kHz6;Sxu&G|a1~EzEg_t z`RSF_<%Pvt9;z+@uEy2#ZPicN5K)QMo-!~wJv#^1ejAhLF%hQ3Yfyub~9&2-dzT)>D(EinJH<2@&>323+K>jbZx;d zw%WjP+-sw!d5yv#X2(@agrw}ci`y8%wYigug3+8&i@ z$ACpSkG3kn|I9BekuV1~G&Hr}!75;xIKXcKesNQVpNI}d&dqsGD)iBwk6vwMp z^;e>5hvH+3>sI1J@tC%WvGX?qcaOxtbA-g7S{Lz#fBb_`QH{hgBUB7af{k`?~D{JIfmY@m%?Xd7M zrbCl>7GnI~QhJ9i*G^ZKfXo3zjRZWXYhqrOAlY!-J0|%D@nPDh0-KeDP~;ncUFpdx zxtOqSB+b?gDy@QH+F?PpzKmzC^gJaG${t711pFm5WTG)XX-ADjAjX;(ULF+ZI_(6G zoVpCkb~QoS3CpL%AVb`t+bE?VeareTi8Szf1(a8Tp*G_--ws-E&0%R8s$aI?V~K@u zzS=Cz)3sPesNJWP$-KKd?X$4602991m>F2$;DL&SBf0amQ?KO zXrhptJVH2rlihT^wvFf8ES?0n_5+N{U@K5B}mqIh#?CObo}76ag-aEGVi~D)jlSb4t;Vg=PuUHet%B4QpXMKJBY)fDqb1IV)p6oT#M+ zX^O9wL_lO+I2~y^&{}mu{w0z(MbJ2{1UlDSyXF^7nbr_nXoNbI3Q74?QX@Ksbelv8D+yUBo?l{fAN|zj=nlpvJ)3U3u|kX0h~2P=0Y&Y(ei-< z%>D>{IqS86Ya|wuKQ>0cimZ6f5nc0zQ zfRjh-gIP#IHzgM@%+;y)FS^sEOVd`ca9BphBnc|BD$3VO-1%U4ac6@nXSPT43?v$& z7+41wfUunyAQROlte@hWf91-(sgj}ovtR-6%j@Z50mH$9Z4TWdU^1*RyeYF1+ zTI*m8Kyl!s=yw8CrXvc2&}=lcwaiQ-O}}{(HV%n(b0n84v&-{yaCR1EZnI;3+GSGW z4Vo1re`9g}$I6*)^f|W9mY4xb83r4z&V?qK%#L~r< zqCx~~5^~W5=cFMxbv)yy*hruuvuLPPEv?w4N}dkOLSDpH?iyKiU9NOTRlKs%2BWs8 zoyR3D7!ML~vn2Nx#WjcJ-c_NV`8Ghy46!9NFZdj4*a{=Tm`LV5J|2e+J0^sQvtoPC zs2~^4rqpus*AxO2UA|t5yP^d^=a!uod*h%fhKfIujsGo&BJJGm(oSiUGd5YMo4E1} zU)tSl6= z=JS~a#0^m#Q$8bx6rf={al;UwfT{rHA9_raJ?y3H`Cq2hP;4Ild zL0u*_BQ#j2c43|I>_MG61G0l$l-om~0Nl&JhcJXF66+9r?(trwwZ9O{!Ab zFMFHBa5b9>&l_EjI8KhcNfw1+Ls=G>#_-1V#A)&fo2&+>0mlr5wmB6CBh#V+KyDd_ zN7p&+5yx@V_|GKNS=i{_sK&F@jA3?C#E-;+z}m%IC*WCtNVHQFhaV_pxN{Ino-mL* zNiyilz=^&avVdneMw1;*7MElCyJPZlZZE!r%w@0vZEi7Ry}{uvwSiNXqT>U&%l;5# zfw~pdVinp;%u&4=ib@Z?61(IT(&xgv=hEjK*}j-U_p-t_pCf`%T#4<-HboQ3qfXqj zie|WhjPh_gp0ba4MK=>&XBggE%=v6N2n&1I?w5NnDR1QzT&N(UDJOh5bLdCJ=>fVj z0LDF%X5~3_x(cXKrKm4eosMfaE469t>NF;Wpf0D%%BZ!^kM@a}w<$!)%t<`$XRAWb z=h?@NrNpvYyMgAx3fyW=-d`JVI7XV`3B(kWeN@Cmm@JWlc$d7EqzzgF&FARlvk?x_ zNjYZ$11b9B^re#on*coI9?07>GdnwfchwblezLUsDW!i9^09~`!X?NsL4*JrdhZn3 zVaMPo-pWF(@o1?|^gY6}@yBKQ1&gPIieACuStH1<<0yx7MQM*?RI1!JW%CyBTJ4Iby2;zG#oj8+&#R zc*7<8N9B^O_w)E=KbK!FS^&nWEV8fYdrYs1%ZZyeb0S(`qB#{3h>nQ0vI@mm$>~{1 zpd)giXG$IiZ=kJk5|*=@j@t|{gRs&>x!*<6J~jMLquNdw)JN>V3R<7)h^@2gD;w@9 zD3WO+jUw!{wS zCalchrkiQ8a4<>sw3RtaWc6XqE-uH@7h+2oS#xbL7AekQ{Sien&<{QaM7Gq3Obt%> zEGvj1jB1TX%GpeG3pu-5LSJpIDmSlavbzysNR5D5IlY}hUERrc%51%D;g=m)ZVV4n021j?aOLr=rTBCh=%BSEKX0*k9_~Y^|$(;aC^RN+Q z3wZe1mhx-*2L*v^z=3^N;XjhQ=1GjwbMEO_=^s zC{O`z?6_SoEzIGJb>D~^k2ro>Jk6F>SbD@?j?qBg>T^qUfQ~s7GA)(;M|s;!9nBoc_nZcE zymwW^;-kL#q9D%!7=_XJ_3)XN-jZ`jGYCPeZjRM)Ge}#UVP}uV03ES)TY1@>WMt2o z5^Wo!2Ts9`<_(yqq0J6+F0G|pQIBqZ$cE-!VEeM9Q__y%MCITxhdB)MT_gwvy!kA(;+#=b5~6kO4w&34c3Y- ziqKq=Hh`etK}t%*$I_K~$yO}xn=wc*yZ*Bi~CE(@Fb2pB7;ZCFWO$S$fC)&Z_0_lUSWYe-> z#xl_|3G3ygO42M$(!2NaM$UmTnSU4>OQcB-76n3L)> znvW?Ru`uzfm@<0)Nl|Ci4^}ZWo(esV0)-tMOp4Q&3AS-53vU_c@ zhc+;~#^PH=Be0%Ys2&BjYZPN|4YQaQY6@g-RXE-5BaI#S^f)wne+MH{lpTnXe5#%d&wM7*Yc5N9aN4T+021R2*(XHii;2Hmiz}GRL(_-|7 zm02#Sh0%ws?dKVKdiT<#54z&OVgzwW#)nMLDnL~>C1Kp8=(U8512kS%J~EMVhO)KG9vQh) zERQO#E=K{8PNITY(lu#0%)w1rYZEicss(YaL+ENm}FF+Y;nhD552;BQY)6 z17k0wHh<*=3K$NwVfI| zk-(kz2*$9f2Q7C9@nQu~>$upxO`$hHLiN+@tV9}eXb z7Zkv!M?)5PETF7;rilS3=A$^5x)(;660hwnJi=Ht0vd+3W`+6}v3c>TI@1vqHrh!M zoUy<_Z?=w=PWOOidWCnRqK7neDV?ablJ)GQ#UiWGBsG2{nGz}L-YklJVwP>lym9SE zSFYR}^A4w#bdqP|W`SoJzub+RPj>CxE6sKjcx_viAz{fI?B})Mgl(+b|L=zC*_#R;Z(f8n}kY(GJ%B8-8XHkZQ4fozDc^8K_`Y<9|=yxLSL zf=RxSyOcV)WJx#{GgX~3lQ4bKS*KX;P2DxD%!LSz$r@FqHM(F4F7yhd+f^&Ujvc8M zOioTw&d_NxwqlO9Rimcd9U{DxC@*irK1QLRB-8MugY=pWb4I?~E22iPW zOQpC-?UPJV+SI0kMSUy7O5a=u`Pf3GXp-$B!>DE>DzR}yW{~V#V;E%x?&x!6Qs1c? zKw2G1bZ2sr;sk18dX8v|#PPT}^-+=CCh`;c^F9bkUufDK6+!q*C3{#heewlv8l z06sx`OVu^yC3N4mBgl%=fi>3;2}5&g<$O#6_gvO>k}#0vE+S4L8$k{2!qsSq>QRhF z;AJjQzYATn>NtMW&7=t}3A>p>Tqr-ht8D!&3F7;-JC$~f*b<(Ti>r7r4x zFJjMfiZz~s?2)DoXQc(Ew9}^JWjj2Py3hC)5<_9pfm-`ZGE?{R@kcLmnWA8IL{_;8Yl*D^$QU)M zMm<9(l2p*4${JA=Cfel`*&LHF)21>|qg@XFGLTdeUfOt&AbEYag2A*k zS>cG@z2l1BbDDl$qQh8)Jd;2^b@%DJo%xsJye+bJw(c0m;2`)JZ#~=9GwA@;j&Md7 zhC>$T;?|Ozqi6iAv5<~N$twcN!)5R2yf!~G=kK7-e-qg1n6sRD�t2BJih`S=cRYc&9-h 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℞MG(nb3eR!$3Mm#y`i6-$0=<&kI1R?@b7$4| z#^=x7!An`M@j#t{H`A?lZoQ1TO=Bp6c<1-@nW2AT%{W~=|-gw|06yeY9OKE^&ZH0S=&*I$3ixmpyJb9%P&o? zKL*=Tq>aR{Ve}qK3m6U@gS3$BO2OAKcHky2kWUhE=DpR2=#Y>qh;c~p0eHM3d%xH= zS|EZ>OExLxXwkr&Zwj5-+kc6z>-pdcy+%0D8(>=RBw7^>BEz8!NBSi}{yZ5Dqb;Pz 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

    8C;J6wG{l(MqpYt>y?DdB8B-Pt z1k5j|<0?#9u;G?6736Cd9XT5X6KVXpzHw4YT>=6TR+wSrJ9?5_|K|klyewB#fO0%o>047Km3vH%<#jt;#-HKAwwu!DkcEW`=T1$+|l7OaI*jI z=4YE*(bITzIC16h=Ay{{ayJHZdKD!)v_@6Ebw34?=k1c;PJMQvCI zbb8=|7<;Z;C!-ZYJ47y9bkN~?&gXr9#`FclhgJ>6Tzy)BrFQ_gaZT9&va1rQH3zmPI5b5iD{JO_wT{to>`B(a%N zIN;OQ9m#~ur-U5YRcWXpv&62wpa{NO-vdXRn=4ndH@uHwuY;z0nNOXjJ2It2)O%KF z=Hsh!@`Af5NXIR}9JD!jSo_TkGMOUy2e!iXi?4 zB{*uQL7|K76XG@s(n^xXZjG)kGX&$SGte#1i@JRnK-UgEhVZC%vY-G0j+6i@vstZf zU13>xTBQfYg)6fEO+K02xGTLiZ+UBD`?Fwn;KVvx%%&|3GrTcvO=uf!&0)efUlkxb zmKSyU&Rv)q8T%R)ly}FkSJRUPy1m^oROj<4>L}#i#79o{UazWwiJ2LwJ=6mFEKww^ zV7PLvlww+^6cQ32;jgwXZYj|T1eO^-{y{}MT@X=n8ph|zAO#CpqUkVkaNL(G0t7IB z1tUq~#b|f9y|eS2DclG*Q#0}y)LPbK?X3!K%zR>>ry#a-o?kD{+ay7wCTu4vjO+9>_3g2*H+7>Rv4)&T)i!-fh%kCtUKZ1k{DQxX zEQl?`6(SR$kgA*Ogr!9;$z_@)f0eGh()H#S)dPOWooS z=?AJ@+LKvXPVOCJ#IJFR1^{ccT;n!1Gftf{sJNV458H8c1=gGMyuQuzsk!%(X!nxY zCXy#UVjxV1=lOf5l-%3pebb1y?iKz8lSNnd-@aUJaB7;QMALr^xuESLhB-8uzzXG! zalfQd@QN=-;}rDV(by0 z!M#O;y+9Bs=DFv{z~%?agif0buIWri(`a0k^l52Zyb;l4`m=YLvx||B1uh`OJb-(9 zF#|duOp)4$a8dD?+Hr@`xO0tcTjdw-xvQzqI%~#nU_=%L$P0&;IfjAIj!Ph0g@l%~ z>SWN(mIhI*w8P3HOEvg+Vw@f){P?dZjXN?;fN=s+#Z5M86Nz2UUlYSGp}@HopJ4G( zq#&x1CT+dx>6HxlMnetx%9GnXyXNdLk3{!`_%H2xO9DSSrf@}fzu+mjS^n}P{-s}j z?7w83SI_#R^HG1E-KG!ycRI)8_u%j(b+1Cam^%*L`ztUatG>+YD%(u))74F8Kgy5& z>+!NOQB?fq)!zO(zPjQ^c{R!MYHR0te^gh#@c!q|Q~$mEiSKf9?%_$_eU12GkMSxfP>7DrAWc6wYUBR+z*Mqf78_dfsLGUEF%0sw44lfUx5 z40BMZERfDZo5PHS!p2A+`wxBHe&<|dH^t;`H{4{fAkvR2dCwHtvEO=W$6o2B-Rqnk zlAY@`akKw%ErxZVEjFu0r|i)s%Cu>*tt$$Fhgw#}&wZR@oGnAgLi`$f4V-+!_n&B1 zh)m|=Sm<7d%h3ttbj^vF^gf#-VJBR}C=IZ=8y|uU4;Yog->~e>PBZ|AEj@HKpWks1 z6l()FLMck2QfT^IdD4HfI!HQepaKNqFoTe0ee>U*P|iwq=PuTIe)mPP1f%&ci;9{h zstI~(q{chKh)L8N_eA|nY2U5S;qXa%D?(p$7@HypHW$_>edK|nt?&c_W!&~xM^;#N z(ph$D$~NZ!iz-loggv?mL0-5&U>yG1n%{kz%i}jJXYP7K02*kWP9zq`#K+b5$Pgl2 zh=K6{h1b&c19GwiGzQ#VzdJeEJ3dOlxkoHP*qIfuz4tc<&jy>=q&%CunV+v>VgTa? z&KJ`uD>YJLf`lmIsD?v}8$l8^8FDD9DS{AcOp>=V`aEgcR61gCOvOXS-!zH{dkn+@t&$^dqSN50xi1L`w*)Q_5gheP}vv z?v*DD0p-q#Sylj=()AP^xd7SDKPCA3ngH7HxA-`Q;7p}hp^;niBY}r@=$0 zho(TADHvOr7dkH97h^X*S_vMKH#yccM>r&K-eGi+|Bmsk z`0Ns&9jC-JZ=TT#+_LLPKOuNuL(77|j&OL?bu4*x7$L}mJ;S{{R0z3f-??ejjg3&SY z4$!P_PBR7@Zlb@sruMvNWd~sq=WYj*IlaUbA#Ye9Ah;`hEultwM?XXXgRV$TWhb$o zk2vH0oXDz#))MTuA14ze%(`rGhdf!5@7(X{%t?3P1&kpukp(aoS>S=_>6t_wrB}>o zB;YR!3&MbObR#vMPW4`Pn@+f_{Xbbu5ChBddEQ8gY2VThrWak|m|Z~zbOp6pNx!Vr}P_F(smeD-wd6mm2L3p<1Xb7ecx zWQy6u@INq5HX>$OWOf`j0WsE`$h8i0z9h(c>8n0OTTsKA3#B`&-<3X^e(4I+FMH$B zmp4TX|H;RTZYZ+GKs3?F6phRMgm_nv1}pQ8$HZ`;rl96xufwK3i6d9iU$aw;oaYe| z4B)>o985WFeN|!#J%$022dFo^TAbJOJg-_>t10V0b&EX~&wo|hTd@LMH`epotu|gm z>jLrWwk!PJUQCYhIfPoUuI~=q01RMhHQtHQqJnrnx4jbB2q%dgpg|zG9Gk--oWh5P z>E6qeH;FlJTjFne&3ww9$dFwFgxRxtCJ7KY14CYlms6W&XsbjBi4701FVL)AU!DSBr5~PCK8YU;t7sS&`x6PqY$ML>XLO zJpVZ{4bg?|eY0%VqBA^WudSA0(Ayd5{l}p2h-`2RW60P2?Zq`auz3dL{u`n%BG7O450NY zxN8r9?_gYWf@zGE(<`?8PMjLmPJgvmVaqmP96P6pOHNyTCmP8goG1gxwnwjz z@Zmx7(n%B$aNy+Jsq%I~@~nyds)8IP=&RVjHZ z(H(puSdZ|?RgRbxk^^hNdlB`o$+$$xef*roZTOqp1<*j$vK7#vhgNAeqlmh7QI<~j zIM3!uQqJ|uh5I59a{Xf(m!AF2ee>7F;zJ@q@{?>t#)YTftv%)OAo7P2^;~W`4Rruc ztQl*G2AO)KV@S+*C-_=Vjn4Rxq?{wTF+WVXW}2~>5o;LD`?96mvjh^FBfV#%%-L%0 z-PYJBw8Xddo3SV03;^dlFLGx<< z0X9FJ=e&dAU_@JH8jRi_K@^|6(cJw!&N1hDDu6}> z&}YpFd&$*`$+McJWdXe)Ae4MQ3YvpQ&%FCqc+oQrLG27s@a=eFvc?yL`jfvefS!Wi z7srNXo@Nv-HN8vlrS2WzK?Acol2!cT6VeFslw}^|S}>^H8;YdjAviGERLr3r+i1xy za^GE)bAmVEK}={6E7@RdM|t(;;N8o^3!V^NF)Q_YUlm(%k*R2zpOvI@fT@z zm@1-H1naLB;2oJSew#$lp@waQ*-Mgr8(47>7J(|^LMVlh($ZW}udXSY|6O%H69=#{vVv>|j{Aoy#D|EN#xdfNC+6 z7O%v)+iQd};dazdI;+XvcwA5-H)sTYl_7k)gz|Z~5)TCBZl2M+IHzRS=2|B(aZUTi zTst3;Hk;$2oeR8I5wM+@k0IR&Lw%XwTP3|#c$EmK3ln-EisuZSL1mP;Y#FRP`xb_B z!b?s6=t_qD$Q-|2W zY;K?yfxrU>f_!e%j%zP7 zRv88alF0C4is=VkE9Ke7hEz`QwIJ3&Xi}Y9ZaCjqF_|!jB#k{LJ>*bmM)nliROm?8 zxcU6UteAU|CGyz!lv@ltB+iA=m2zc)*c_EXvS)2!JyxJ9W&6C)NF7c>V85SKwyKX{ zg^;a4bw~gZNJsOUSq+4t)Nj;a?qzH&+Tj^*z?hImS*fZ{l3PvPh!$ZhsoD=z&kuvR zdD>HBuTyu3Pe9)3T%*I`_+qj<9R3%r(a*yESlky}M2(q=h`7|wjcbpPc@?Kok*d)a z9lkkeAxOozz`SPZEK3xWp#>xmuNumFX-RKZ#C>;?m)DFvO>8Q%P@+pX7>7_KYa0$9 zo+G&=72p+@7);lcDdBkb8QQc@S%nli39o~jjQB}`ZnXdQ@c;Ha7^2V*VoWX~x}rtk zs<^yjlre}et7?mO&ua5HM>KFAH6dfX$uK6&TXLD;uUp);EWK74z6cn(5l)X~Ez49W zA}B5M4ol2uy_Q^NPH+~mE6KEKmx1AWY}jbfjIiv*c=@$ca|1bKj&JfW&U9uOuW{df(bPfFi?tdkhq~RnfyrxJoMYc9sk%D8$i)Z{kn*x$J zybV#MPTwr2mlO)halo+FLW!wh>(^rDwuz(}w<{t4g#9p0_kQGlU>UtIG2U6FmuTC@ zA3Si8nxigSs1IAD7FC!R>LV9v*n}JK{YInC6RF6~fy= z9=0hd07uk_<&>Sm0jn~Z$=i_Wh0+7nOY(d$0ReJOV5T2LJ&qS6Hf|KzlrR7fUZ0@x zg|TP}4T7jz+w3Z{RluGbUg(U$M(W0B7wFYY0qhmUWlEdD53a3t7Kqrww02{~w z->Nzbk^!XkA}SSdf$NswWrk2%5O@fV>WourF5K)*-CXv|i$3o#8r|A8>Kca;EU{o~ zuV!U=QE9Vewn&d9(|v_e5!^AiKF#zDYz8?X2~ErNwwz->!N zAg>Js4lIx}|=$E;V z>;|Xo6Y_ayoX}6l9#rRs-uB`a-~;fKT7KNLYsNb`emOL3l%JK?XIXXTWb^#ejYFIH zRqd{n24#&J{F)xM3@pNtxMRIM-6>vP_p_=m^#E)?n|4JeFvBPJ8m+}a(;V#0=Pf1E zRY%KMUcftmyUfkXrlAHe5P1`Zc~Y}7zji~K-S{k`+;KUGO z4iK{+t(2NcLN0h6XeB6b1#ft{fnQ}m(c;|QOZ5Wpri?)*FjBoyU;4jZDcmmph9?I8 zurDV!F>YYzKGgHM+ZrBtZ4vsd@MlikdzF40$%LTAod{UPM&Re=rDgNe+ROE6V zi>rUYErLJ7kn+|qDVER6jBr!CRY8jyis(aj!#LQ*-b>Qss2_Bwsno@&yxe%$fIzh)8 zxFvBbaOM=E70nOByH#`K* zI;)>%G`JGXlbbK5>w~MjxH&Te)DQR~Ft?0Nd5rq21IF$PVEv4HYk~7gRU`G>)D&*)3djSuMhvQ_tne8vp3(aYKzga z>q#v4x@_lOoOKuZChVOJnih%8nL=Q6&%))wX2Mm1v%wM~N0nZP-Bb_;$y-bu2-C5F zy$6!_yk5+wA!=XY2@t9}1HQxnu(8ro77glBJm5x@W{k1GZfP#iQ_rM6BPN4vntVbP z1r4SaOOnn@eyFnkKCTmd^%of&bgG`ThP?4f`b9)|p-UObJS`6qHo23>l*vkC5x)IG zR}Bau_1Z*JgF1SX2|kdJw21gkG=Fe4WJ)SyrU!3+-znz30P+4_TUwiSy3H-nYWP>( z9(zJXsU_aH4Jyr-VVx2MQ9swE1-IytN+U#{cMoz5blUe5#bJe*DU8|35Y4L%YFC=x z0Ys4t5MwC^&3UqdkPNyK4oY z;ty}GOTgn0)Lx$jgE0v{oL40hePX#Mo9RN9`rzZ}Z5&`sg`knanRiR!%>4!H<;<>7 zt2C2=kR2m=sxPMeqKPLJpM(Wu=R=lIK$&}nBaKje4Uu2L=K+|TeAr}58G3d0P3X`Q zh*RHu?*9Ld`~TZddWLoe4JCMJ;h@81@5ylB{1upcxh>RT$3s?rC_Y+A*0+Bu6`4F0 zcW3D6u&x~OG!b%@m}ZdmBUtYui!3fKoMfVBi+gF3_u(2Wr!aHIg#!0|t0#jEWeZWR zS2#UIY{5$%P}(h&bm=+&Bv?D_8)Rg@nMNf65QL;l2igbK6J;X6+od1 zoQ?&sOUNVo>WCv3x?WTo$=? z+eM^QQ@HsG1!Oh6Z1$bdxd-c~&9&EVKuL|a?A{4?;}$smdZt%_0qfpt7R@1N_5ALP zrnu^|wrAKEH|M+*bcweZ-g$@eehGyhvcK>`!ca|1?#zx})`A4^ts)5yX}osR{w8}W zVbkE*3QM$?ZioXDY}$9KgM`hNw3SW&Fy6iV20!MWFK!rUTdoV&RWejnIQf_wa_aTr zrxhVgd4mE@IiX~yN0+1%}iN6w*47cpik0$HL zdL%{Rsq(rR!WN8YbDnvfaxIyvQU zg6DU(Kikmf0kSoG9=_>*erIbldLF*%dj4^JZp0{Bc|}Dcv}4$z;Q+?&^aQ0{!ONx9 zJo~(O= zkt5}F|Ck-lC{4aQIM#e%ci+eX?W5L#1&Qt6U9IvK9P?Vm=>g#OUivo2WI{va?ggT@ zv9!=Nm`sCj^Gi4B7++NS7WdL~ClQ07SeGNniV6!UE+WB3gjc~H^d zE#a4?VnZ#iMlT05A%~rE6F@?3f^wxjp%KN~mWj-ROzG&=ctA=CMSo{*N91R41x@qG z858+b59kMI7{+HR0~yh1gzi)IVY%`y=^~RvbQ42jJ+aJdP9sB&6t*E2kr~euaz)Xd zLT2Dxp1$AjL1|)i#X^Rd0Gau`FiiV5i0<-8Y6#IR*L=Y98^Lol#g|<4>C9%oqX6qO z;xIhX5CFU3o`LEn!ES&b2$qAVmrH}Z=)5O~zEV>C@GV*rAyxgHzIWxXKq( zmQcl&;L(`ef&zdh8weH#Xkgb-Z!gc#Sr9XMHr01#;&bxJe8KDujHKd)c=E?fQmOGm zsBqt8yER-FV1JV6dZL6|rluo5@MF6SA+g2qOXG)7y714|mtrzDw6! zeU|Y_94O4#?86WiSTb3=@TEbLglvr%0t>ChpNXvf&sfJ4{%4KqqpK6Y_zrPvZ!o2SqBiK;OW=aH4H3>?SF0g&zAA6sh)(aU@uR+AV~eCyqdbphv2W=)3unzsf0go?fz!# zH=7q_`Mvw`mZPXE)Efi>Mpbos1xw;$-Fw5~>Y!m=;epgy?}hb}C9qmw|MTVdWCP@p zE2k-A^m+`N1>p(>d|oV}(UMR~@wGMJNg;QIMji%*d$Tp3LPQTLrJK0~9034hK%Qg) zF+qEOC~J@n9hr5eK@rO7qWI{+Dvox0aB^f-?CDg0Z7_ho3@{8Jo()DILWrYTL325Q zOsJNcNAqgdy=~+@L+>AyZQYJ zFF|*h{Qm}PzgfQo!DamsC4BLlt?yUdt6$)P{*5b#|5|@UDO?2dZ*oK6@B2&ObrC$r z*rD+*gmbM)mOUIoMMKO0=1mDFNoC^kAj{M&1&Y@2_lUn=buBCqX=bmH1&tvFjRM{7 z@HO)q9zi&OByka=y}mF=eXF~dJVRd35eDTE4WWYhOvpcA5EO2CvAM&6a9d(084lSF ztUWB(z%fl`gIkGGW2&x8w)dO14u`n**pD1cG^Y0j-UA~zHYJf*I^evAhf5)+UPh&K zXc96sJ-!);K>ON;jKl|zP39rf(Q=A;HZO_&3%xMo$Xp&sG*GF^joU2|XaSDLj`@Mq z_Y0fUjG6`=R9LWE7o(f;K&pouu;j=9_-2H|@D+NF1ic5o0fZ-t zPPhm(2}CgzPJj-R7$+N9eK>l6Hw+=;Orw}AbiJDgzTP`IH6)VQs~Oxi$W2e)Wgb^@ zw863%FUXbC*@l5FPE~LjAu$}`9xEZFK?EJ0DL+d~tV&mPJ&Tx|(SoC3kk^Q!J67K{ zo;?^(gJ~@kwD!&E>G2782J*pCsBNZ24XjT@{3=H7-{S(kxxvbZTg zL9Uq#0D>lMOiLbe=IQXmn5iCwklF6LHHk%A<6rbMYV&~XK;ywYD{2y$rf+8X^yK7a zpO6qoS^s=79W(ft7xIqYVm0GpZflW`%}QLs)}sz{q!6UhfYGklQ*^f`vK!x|a0CL{ z*B6@VAV@e3(&-f-;5&T9THPw6kl8C)yLR~c_t>?3`u=@3m!9#bjwE&DuV?}H^jRs0 z`(S)sVhI43V>!R!NF0!4RRiLzTv`MXlm#E?(AGchY|!(8J#(}h_hM^ zKznp2sxE_PFL9iMH&r|v%6X)L*vJWj*r+{AwJz{>-gFx`O&1)#T!r_jTnpszcN2Pa z{QkMT>K2SUAtwMRSfGR&;cu#=kcf{KMRmn;#ss|71V)D)5U{u zwOWT{JVX1Lu{ud94XcxX!^&lCY>*oMYFJDqNVSpnN5`|60pJ>-l|t7*Xp=iGi>XIJ zVv`oFSuosEgeG%|P}~^ZADS0A@Y0BBPm<2Mo zl$wr3(C)u37#R#FZTtDQ!1A=38Og3_jr7=kp>}BQ7qlv^u?dmgneJ1`d{Hq}MDlSe^mgMT<$QAQQn}t-Zng{zU6%53_aLV_B_$mn{01E+aW6;4}t9LOY zC~zcz0%1J|=%&z!5Ij9Cj*!lNAX@^JIk*GD_@OXLR&*!n0p{*NqipoHuB|I!E5oCY zR@%511amHCV?2X|4ub;{_!Y2oXO~&6bYN&Xaa+~cYMru!?&+o^^*K3ew$Bj35u8UX z!!OsJBD;0TCS=;UMhmRuqM=0_t23%7u>yQl`_u9F+o`mPFHdmI<=!K0B9jFrEQb2l383y@G;rX5ey;Y5QdMar-|W2D`Zz^Mc3bctR!Q$QfZRe zabTm68XnqHv+P78VA(>7F{O&&W4@w`LyYFkCPq|;cVmt9XS z!9Umz6>W^03tOoT1aZeV+!T64<_~v>>gYA?6Q)P{s^SMDj}jYE=)oka!vno?2ctfa zn=L8iCKwB*v~{;tXWpYYXTN(S1`LvKq=&RNgP90Y7$N>-jz@DlsamuM#auX=XVsPP zsH9(}r-x354vnhGzYNCt`+J^IL$*E@J&@c0x~g{>ir~f8ub>^nq4Jd_!(mHx?g8sw z<>QXg2QrGsp?o?*oF;Ng8atq{eBV-2y0oUA&|xQ?T?mTBmSq&-nW|T4obcJ{F8=vg zgewWwvg0!x`WABjBXuaz4yD>5|0wPmri&w=0`AUHK9-v)(f-m>9S-9TyHgCax`HEz z#un}QWH`+Hd80^T)M7$Cm_rr?oQypl)hE$I%<6) zX9o`mTWydVDrYf>L;o0*f)ULzgx_oNiFDG(2!i-ZJ|?`~=;_7GoqMqP0ub`n07@TG zJxv3ATJkqlh|JD#qX|V8O4S~TPHq~;AcjkZ|1|fDn@8gm7YiaO{pm^!OS~H35{EXh zUQA_DA){0roCtl++F+0+!$*iilD)vdsrfl_9zx`5!S{Phfl^*l)Rkd2Y4}S`{D4=B zY=w!bkb`r&s+?=5AAut~Id*HVopNxifz<_7~nLM|Md@HNY#M)T|6|V^uuq zwku|2&$es2$3(LnngTWkAl`zQ4t+c5wTyMk1uQS3Ql21qDo3;O@cHOb-ynr^>0Twu z9C>bIO`HTzz_T`*fjx~mdKz1rfVaCg`pMvlg&)G91}6-~$)ZS?V7?BmZP2V>w5Da+ zEZJV0617>EiRq}DpEu;CEs=V+M%X9s$$>X{^|J=c6U9*&jE4h{@Q!7iT%)piDhA>!l#)1-v&dfRed+NbDbSPR zn$8;)#`LgOKQ_JJaA4a$xE}|>kH`8wjaKlZ_NV=4`YI^$A4x~8VUyZg<6k|#_pPWg z{#D!JN58E7c}QcE_NkOj5ZrYb=7*<$IgOSHPj&jZss4y=w#>=>Pw-z4UolIUMAvFq zvdr#Z6c2j2V`lBUk6y#}<+gEJ+OXsg9N9(3p_oN%^vozvl_SYL)6;`h#E*pVTa}5h+ViuwelGd483>FG?lF%W7L#co*qD47#r|Q2At<*UgQ1 ze^e3ma?|~Wam7&#PV=vhntU-0wp#jWEB@&p59M6;?}sh?N77LPo{AXA4-jKcR0hvF z2pXX;LZ`^jHS#B20YQB+O?0J>0mdz>CG|07qv2XrC<(*o2Q%_G&51odpi_4uB1v09+`2w^6$s!;6hDwcEp6uMdG zo!p#)S)pR1joW8QpU^X1z44BG3d#WJQI{HEWMB6TEE<*$dIIwLF&m^?I;4DoNZua3 z?#*d({&9jhoPGRfpd6zUI-T7@*610DmKPbLN39{Ms&?WbuJ2El4B6JBi02Vjkf3xO2yBG2+DdgxRu5!FAKLmH9Hgm*d>goJU4dwN`s7U1sA-Ewp@;s&!2SsStL{-J{W3UEsZAVZl1Mk*^9z~cYL};;jJW6OpW~0@b=Q< z6QPx9IHZ!Hg}WfeP~e;xJK5BQvkU6`n2E|Q1O%|At;wrvtV+u^5r3`h7N)nt0ij*$ z>tAb*gc$|OsrL1RxfTK4TR>x3GoMaY#nf^VRTKkcNWLN1ESnr?EVi^Xv0^t2_mS>b z1bqZ{MV|e{j0}gk`q?F)53}{A7+#BEwLLkW2#!&)O?_EC=Di{r?tD>9>VDx*Ap1H7 z043qEL4X;Ow;t>ZN=Op)Q@;Vd{6MEYJ|?8V93w=SmUcY&>N4bY<}iUuM&flhQ1J#5 z&EF6{{|ODOqskq1quPCxKh1UU>&8E7hCXTuPKA(7#tzXyBdn{0-jkFt)E@{0Yvg*y z*Bj*DE8>7)ANnav!aYHmC}w0DlSpKtE5!bcjw=u2s?pu_4a~;sE&&`j}Xz0XAz)ooyM-01+pxQ5j z!VQLGWiT##{vwqpr5p(nctC4{mY}$Tl875z`eVs5qeaG#-M7So=pRJLsPDW?AP2Gm z8<^(^g@fdD>I)|?y#EL$R}Sz{f`fY&m_o{E<$RxyBtT;yjOniIOYoG`M*cT($cSeM zcPyl7^LuZx#hkkB8;KK~S4BB)FCW9xElhJ&BOse=`8W7lx`H>Y(@!+369W<;_z?O? z+k>CwV`Y_tf)q|Is?;QxH4?LM1>suo(kBqm>xZRBkF1Nf$9*J$;4NX(ZRg!G^esWM zICT8DIaGj_UP~AmIHlbVHj&as;EZJ4+j&t#ya7{E!sfr5j;`kA6q3rF{^Q4)t}u@H z)?gvw&e@{~^aBIw^t!ZAQZzrHL^fC5zz#7;?K;Hp;SocOkIUX$DPZr77b99gCM@as zYGY$2vN0LEo}pF+@h9G#23$z-KavK2VNn@}hPwMQse?18#Z8lZ?0(HgK{~ARie}>~ z%Cp@WxMzu=2ZJ63J`H-xaZuVQaj+1pGxZ`HK@fyTAmyx^!t)Fh#z#K6XlaqJ39c9g z^tV+O%7!iLS~Jft;og*8ARHlc*8_KWgR9BOMY#bIrpaJoN>WYbbreVQ7#EuxQtM?q%Ex6Nj8uB z*4^N4soY<-PX^JKFkOX_AftlgG@%C->~n!^dtoVna3Zm2`uFm4j%M0FeE%u8wd9mT z(Wx%`QN?n+We7%P)AuBlvb;zFB4!^UR{4a|s}i^MMVO8HxMkBg<(MD7WdayTi47_3 zaeI2RGs!$BTnC8S(WpqaUe70Tx6Oa2#~Yb}a+Y)4(N(^fLq5Rh!42nd(s0wX z$K^=NdKNdf;;3Z~?-{3IM2ACj`v7+g(uly)5vpof>U==!-w)ZA{^1|D zEt!{Lx$I##rvj8*6|+QQdYbHqv|6Zi#-@daRd6GNx3MRkpxlx68>4)5g>H8OmT+Be6^@AdqVcTy6sHYVHwA{F zmBvDxgaMiZ;l|0O<(MdIc=vbIf-`Kv?w1R17Q!EG$h>T6MFm2lW*P90PpcO4053RZ z)2+#mtK1xRQE)p&bC!0W@jEJdm# zaPFa|{l3Up#`=*O2&ZdS**%jN_mWc4G$}(`Lv)}F0K7K=G#R>}UrSz5!0z4j~S>h#_5>-1#rbx1d2bhQhUb_%0#wwOt8!i%v5nuy=auNSR~*kAO#ZgyTH zVI{4T&D@6{>U;_jZQtg1={rPcQ&oimV_ny$KIS=0oOLZZlR!vs=5Dlme2$~BeA3E! zXBQez!`c=4_!@ z0-J_?3BD0o6&Ds>C^3SXjbhttebpQMd*qE7qX)4kI9r?t#lSGZ04SZ84M`=?Qt~Vm zpcZZp9?^d@jluUe+`@z?w8e{rDdz48$_HLl^L4x));SttFe+~bqj{Z#kS<$;_F?K6 zVB6pp)SNe`-yFVud${-V)!@zB-+feb(J)6_8`v7UoudidRSey3l5?@wAoV8+y4 zel1Bn6({T;P5lw-ojfTe*alx0AfWavG=e=CVrazU!&iO5fGbFohC4`ZM?(;0PJQ+r z+FmshaeMLm?jU~;HwJJ&W2BLLves~Hw-OC_Lk6sh6F`o918e%Ws5o=IQD;o{)7A-7 zbIWLYgb6#Cv$C9o!x(}+Nb33HP$dLW;yVK=@$;;PpgO-8vH)+w$q|G_K`{)&;Tjww zob3dk+z2wGqlcFyEGUT859UB9d^K2v;1@~qVuWt@CcG2K6Oim_RtmOfAPjg^H2EPE zGbv?2U5**&CIdPQ#6H3Gqyir?gZal9UxNA-p?Qcj7Ox=Y*CM}%GI{yxG-xG|^n`fR zw@wHI9={~p;YSowAzp=UL0!2g_V*fO9~d;ouq28zuKu>nPbADf6ayr@Zc)SYgI{y} zJ*om1^UTR|i&4Fp>v-f-r(Df5OgD$%{p{gTCu;3khIsODv=ckFaJXOROUAKn3@O2T z`8fJpgM#%CG%*}YU9xTCIqw|MXfSD_A3vZnn4b0w8y2_wL8H31cKq%B$>vsc<+XtD zMAwabEB*E6R%-5?UUXiInGZq}mK+Vf6`Rtg&R z0h+qM`^9+ed-$PtOJYjj@BF06Hr<*G<9 zgVZ-Kx}F95NqBQI&Bs);7fDGtn48Q`>m$H$u}o`aKEjjH9a-F(o}j-p@R77Za>|k2 z7KgPjCwg?n8#)3AVa=!2s6V?NRjyrC37M;O#`4(HWwMU>IW+3-n+5_hv2~0T(E^+f zq#&8x^Xi7kQszhzIws~oEVC`GjQ}*Ml=oRN0jo0N7V`YshWVLoZ=8hGjf4Pn;+2%3 ziFWyxV#ouJCymNUo-a|3!;}}64)7L*9zh_uM7Bt{PFK}T_u~av+&hE-^__=+`Y8~g z8YoL2hXBQx%9^`>mB&3g1IBW>s7w7F~!c77CNbK;Rd!29TnAGB#|OSSVP3Bm@W(mQ&%IsQ?#!BTi3NFwDQyv1lv=OTbpSRoyMQwwp1V)FawUHo; zhbQ(#7O;*`FduquKnxOu+1`NA3kMJyW5AY*DmWDZ8Ig2*8b~R(q#+lUaD+@ZMi5px z<>p(q1EUSMLm&nd?I$_xhD`JxC#?FOgdIfC{(N-J?@N3X$v2CML3DT5OEK|>EX&xi zuuT^mdZWh%6x%MWj3WRmBzQ2lg)0pDnv;i*;xjRfj=+JPoK02?`!GJ5kGfO}W zn{Rsn5DL*^e3IetU;h*e=zL)C0vI6`~xf$0JvUjzHxMN^6v2MBVIV!d;N%~55Il)9}L+~_WZsR z!}<%b=l4P2UQ7N(pOr`BCp_AIS0S_sJNT0Hb#Ryzppvxs7WDdsLn5>lLopsrhL1Ad zdI~`hn1?#cj~0sAPit&VG+*3QC!?22QZ0Eta0l!ySb3)}^BZ@b9nanB;@DmN=`q9P zhv(be8}}bHIvu0pdmD^SJSc60F)l8PI-8uhOFmPrn$w{2yF>7aTtVLbv`*Mtgu+r~ z-5ZUYHvKaF;RoF!gSCV5a6s#Mu=ZPHEnix~zy2$(X`P&&pAy+iT=LRlx(jjNH+r9R zIJO$*GcSzX!a38m5Cy?8zM^CTJ=&cR{wyl>&>?rB9%aRa%4m@^hGHkmxY%^Lii|(= zHQBF5+nz0L8E>rlgIq^`%LKLv(^m&0;ghEB+y`H%O12P29ArrFxAR(U-i!%?{jAINrP5~c6 zG49j&^}jv-c09s?a9yAzWNaIW2irS4&-H$C4LZThYgkdHU6}I{{ub%9jiCu0tT?>x z_?`7DEd!e*7Ltsqxm9Xj|xl&Li}a{mX2V9xr0-85yl;( z@0v>bv~_jHq|p>-i{hVU#;OU)W6C{4vC(yy-FOUcsTpxThglXWtRvSo*o9X9A77mT z!svNXw<}AQ)a;p_lHPBE2coLho{y1>T67AL&HDL=%d0_X5Z7ncr$as$O` zVL{oJ%BxiJ)OYRZEFHf-!2=kALRR>2X4735ak82^LE(xy@mNd{?~*^BD%c~H5S_Ih zPRn&RomI~x5CG$Hwzzdnn8mH}jy5I@I=+%ACN#AOaE;7ptlHTiC&N9qivaScX|k|Z zhbBZ9!#%rh);S||;njKteG)-GYrUH>&MmT>e1slsy2}#Z*=Rm#3Kjkwu#LcD(Qxj; z4a^8e#Cw3{=nQyO+ZfudTN&+l7z>m&WCt)=@m&mFi?J9hn3{-vPM&Bp^f+bd{@a&y zHUy0(0!7WNvu`0S89xn+#RtrSlq0`k3O z8&0Y}!3D}asL&BMdaJu=jNan7>A6BpbMx)2_-T{DHJ#~bnh;Y4aabK~@qlMGuFS?R zV&Vz0vI7nb9CnKt1XKf9GqksAC>;m{fp7!+d*Lc4pVvLxdfzOBw|=p{M6ZymaFuh_ zgS9I+T)4+?b$~2HNil{zM|NtoNhB(Kf7Gs~xDuz+-9T*Q84}b~ls0@U-=_L)6d%Sx zVkdP*=*YtUC}EqMfY$#W*#yPV40Py}{AQSRi2U=6ZnK^w-AMHn4;hi?fI#$n1_Rdz z+KGpWiT7SA-Y!Ps|MmCN!&k@u2#~3AfGGmqLEVP@=%N@0Pp0pt#RrUaO5YtFz{dZB zyM+O!`{d|=-^t^b@ExKwhg%fIg|3(1ogBVBIxw%FAZ&ESZQ-Y;i^(LY;xMM1|6hN9 zdGyu6(OdJ>5kP!TCgR^bZ|(3`N3WN>bzV%{UOI{23SOf8zK&O6Fkpe`yDKnStB^@O z7f(xL==j~e-793XkV%`nJr_zY^fMWOYVa?UZYerEyVC(SP;k^_efx7q!<` zL`E=K^GXK$&Hmm?^SXKeC52Z%upuXZI&sU>jK42P77OPrT$GcszV-(<0dM|r@{c92 z1<%7W+kf-=>!aWOBYyrkpZ9T`U$NgO@P5SeM+0Yy@&)ZXDcAM(0mb}8yE{2SyHBK> zw;gV9ynQ3~`l)!=$Y&{Gfnh0%)72XP7i2;;!KL-FfOjHB&Wf{<6d5aN4V1hGUW+QY zX5)zo*;Y8WY&J!$~ zcn8Afy_jy{I1C;+Qf*ZPn3LcIK1q0U`~a&T7XJ@UmN+>)O!r=%yh;4#ac9t^yj*#< zn*8e1zn}3ROiLfRM7Gw)TAj|GwDRevY3vw|DTr@aNXX=C3xlH(oq{wz>KIx%+-=XKQEYSLw#jF#t}? z&*o|RtIMm!xGJZe&(S40?*GLN%`}_*PnrMyAQ0wjnB=7ODpadECW$s7V+rsKCGvn= zrZVJv2}8jXk{dua^lvh70z2h6s|wJY8BIa1N=#t0DEyO2VkDo6X(Ys~UqS;}674}H z0z-<1aX||O*eRzS`3PWJVo#BVAe&R#%dS_Ohmvqp$0Kd&7Yfx)BLcR)n|ywW&ttq! zIBuLTorsbb^o+<34I!3?1rgY9KVBAnBEjsmsw9uJAo+43JxK|}9Jv{!xuJ8l;^?Qb z*D4cRr&9s0|?Du$;#gT%T?0i+!=Y3 zO)(pj9-J4KSDxul>+z=&oaF}LhH@BDy*K&!6in-?Vc#koj&cSjWL7uH{G&|3gD|j^ zeisy5d5ZD(#E2a;%4$os(xP%Q@Ob2o?jOEOhr@Lp<>4^(94h44jX_}Z6i|q83$7&| zP-2=kuOQd1lRv#a-TPxA6GWDr31%~kj|jr&tu0P)DQ6V;xH266dN^Fg$VB%U0`1*Z z^AcY)@#N4qp^HHDObST?1Ey%VJ_9(oYtlcv>M!&9%>3^3Q7|_VgyHw;_Z>;4&~okR`|H1c*~(+Fug1IkY;!B3jcAWCC6}hJi&# zGaz;>;15KhL$RR=9zpr>tKM|10S|`49f2Y30Alc7$tG?#iz8BL!0)cn#cbns-5omw%E3f!5?PRLFt?@OCE1ew24v;8SVWz`S}QBh*Mb+E+286xX$ z)O-`s!FU=x9^!@F9PF2EzAH$1_tcs<-^@SMFpBZJh($(&7QRzV(QgcA+Yw5<#Y@87m)aT$gAw9pxf0}{ON@<>-uME+6EtF6xDz2?$K7<^ zIi@dY5oTb~n(dBXZV@g@A0RE0M!_#!mlor8(^!#aF9C25qTGqZ@_kv1;YuXkC31g4f+`%-u9+$UMaH>^n=1~iT5yDwQ zHVMQ;su9$!BePF&092t^bYCb<)yF{&Ue!$%tUUctcwGI>w}Kj{ARpaRz5K~q5g?`!TbE9UOdncd1?H`xcb zDd-QkZt`3BwDu3T;EH(cSEz$-8A1fakf(Rm0&-HEltf}`Yl3249lc(m(t8F#h`5?f zA_#M?Ob`$q5>={j*&xru9mp)H8l@tcNl}~yhiSZEIC^)Wf=0lhaPBs_&E}x4$c1ub z&&zS3Jf(HW^^E^pb zXslP6nnq!-1e&0oWS3(lr^#@L!;0*@M4L`=!4UZ7jp-1uU<5Ii!{i2@ULq&tfE!b# zoBe025=IQ^N-}wzvWbGOQ7Ngo#1}_m4L0!#bClvX_7Y!c>oRrEuE+(%0|bmj)VXPy z1R8D4#E4uSM5OqdO!FIcBw-y}SO+#3mIotjko^WYV6`7T{0Q|VN>=Zr+rj0aC(@>S z88f}c=lsqp89GSY2vl-G@V3*Bhmqtd=*()n!gfDfm8na&X&vc0kBsj9e7?Fb` zYy%sMlhJqpc0OVNFwDa3%%nDyPDTn99EU(U51tiGEqYQ^0&E$A)lqH}3A{96ZXk2y zc%ghQzb?p{2#y$cX^OZ@fMr123PZ2{F();XD3}CxMjDdmtLfLpl-`2YoiM!jE3}tl zlJ*J3@pz?fIBcG6OLu=7?S5PzNz0-JCld0(RC+@f!pOrmAfnGeYU?C8HHj6N>@)l) z$Bg4C>thPPr-ygksn=}G&POUKz#(h*0t|Ass zCqRh&XlPwH95DeDNwSl=_5y91cXoRH(s0t425exOHzxPcwpiq|c!ROxeW;t&OeNXkgROrJc#wAq$`l4g;;rhDR( z_wgbAKZ;@E9FuDO(RF~A@5RneSNsS3Q~%$KXWPHp*m}0T{p?ri&L{uhFLC~9{}9UY zgWSN&{l71^H_iN$|M$iAvrq9qKdb+@n67M!^Vc278UXvJ*Kdwbj!u#Q>XqL(tL~=d ztSShlk-l47Oa8pJ)_=3M_T3NPrS7lSYir-*S3n5I+*b6(48HJ2C;IZQ@a10@`TP#P zfNw_d4N^%_;Q#mE{QzHIyRYHDHT+D80c+oX&y`N4(p#*9g<$>;tetB%E)x)}cGtkp z>PkrdEXj0E6srb>|J{`N6>2}=<84s|UnEnw|3DwXiq1O|g#Gd%y?<7`3g(Pv@C?xUR z2@jK#QnL9(FhQY`3jm}*b0Q{uevuH!+J)#71v~SDmPz0f`)b*)3F&NJtiQbi(SZBL zj>yWoE6FC?kOcc?y&lZP?_YU7kXFaw@#l>QBM-2?YJNZ!MS@6Qgtdu zIhIxlIhB|sA>Oynry1pBCM^^LhKfq`l%7VlfgXT)yO=qXtk8C-Ryjyvp5H+3DOb)} zL>Q5w6@mA`LYTYHJT!?nVK-^whCG1lVj4hgnZMgRcy;vpn>Qz?prR9`)S7;$_;qN% z?|b{brdqOLoz5fLsH?`yszid75(X;HIjI#mx*jaW$@X?QJ?jXbFs8gSDz7CqxQ9zJ z;o>a{Qv28i7^_kn91{S+$Y+=k4GS@(3751Zd<%(5(#Cp3`uL9WMHuH( z%WCqAnAa5Lg+~$=&AJ?eh+BGe5u^ii`+P8R#8QAV5v>{% zb0XF9+YQjsK$7wcgTGid8e$-`rYD>(g7IN}8L0g^P zmPkHR5lo_gCWt?Q6I8iw3F?r&!~PXHMtk0>-Rije1&Sfk=Szh zZ1+ROI0<;H%UYS|K*x@Qy9XAplJetk!f6qso`4?9lzhR!7X<9@M643;E`It7q(s7e zV8jj+E5Mha7_05LD>K*ELZ0Hz<{T+&K@?Hct3I4fJlxEu97PD=z<9D`J1|Ysn-ysb zR=;Y7Xg0}4{`GJ?y{X%cU`4Q4k_G)4oeq{26c-}yC~g*&5-)1cbcwr)6sB07Fn1-kQ>3`e5mhu%g=}M7~Q`r9Bwu!xwTkV(78p zoaDU<3&g3u;A1E+=h;mwI821T&q}hOzOmQ@jG6a}P6%6FA&4e|h0un-b!UmDjMJS+ za~bNd=DL=zI&UJ7dCk>5qgs3vCdv(m@c&6prlU`*7$R5w2r#jRIWA%>xQYb**>waWD4!nHKJgYjESG2c=kUTC{h3m}yI90EfDQVIcg`WR#7 z79sGjU%DZhu0jOjvD$(7?VvtEx5JPsy7r*jQw#@&P~bYN7nM#uL_qw_i5h}DM!giU zol}xm|LWyc&!?8n=XWg734w|+-&J4u;u5J$7#Xp3#Los@%Lz^2E{4e+3m#N^!nM2m zoSn-O4(%2`;DA_Jn!3Q!Iqd+5jq!Vvw%YjI>(zj<@zvhRVH&C7##VYDn_cWRQEaU6 zcj>9%vr7ftVUV1}+g?xlgRi!f8_pm<_CKU_2_g-`cM%yx^GL!L%0mk9=gKx|oLVwO z02gk^P1xfr2wj8k1Q%b8rdM$GGN{qDzn~OB{~~~ugcEh1Tj#UIcoR{laQ87CXO^7; z# z^q_BGNJ~IPX|RCxkbY)|d@+60pwr{wWrH|W+33oKwkwIB7YSg##BSR)Wx#Ws7AlD0p_uTqU7I-V#`@VOR6?Wbfo92mnrb?yOIX;d()Cr`Zc} zx|Rv)T1Jbo-YTen;d2h49uICV%ZP-?pfc|aSX;xNtNHucEfQ+bHZli+2!H20XE4ua z3wK44qs5PEl~t27;BTjKRVMeYfyKepr|zFWn?ZsPxk-mpgOVBv7%(c6&H8|-?gZWk zY-;QS$dMzVvRQUSM*=4v)YuJ#b%Qqgh#xJ&ZUnyO!dCa>0{8vk>)#;9qC!ZWy1z4j zduV5TG}Y3+w5{{@zC5szXn6UOvEtPp-fSb;zLqx2Hpl1t+&{$V9B3O>EhKLFI6q%p z^4aI)TodeHi5dpvSlB2wdMU6Pyqe-$KyO5^Qy{t7xpjWYu1A)xomgwESzMSa-~fud zw1RMA(+EcS4+D_9_Ff;@Sb;x~B*CukT1*~O=!Rn}P!%*JCczPnp0_?$#cG|cmDAHgsLzWmm{ zciSbu#oyN4fN+Fl=yCH;^o+%(z6G-pXXP31!9_AHBiHX;2v=+k?3{w)t^aIVN%%$K zM`LkGdHFE)%?z+-Z7yn-mAPL!Y9y#TB1%wqM&Q9qs4lwK_+3sc1Dc}A z9aRQpN2zQ2JQsn!AVFnOq-tue#gx$rNU`8+TNsaYrNW}A8Foz z-)=3Ng3~B@W1Vx9c!S{_A7&8m%864Q$u*>uxmOg$FK?uPvfJ*~7ma^EtZ-d7Q7vqX zqO=AmQ~tCiilB&2{Uw#ScZ-|FjhH;49JO<_bS20|qN@GpA5%Y;q8wEcN-XY$j@Dei zpO)zMg8yoM64-)dX?P*jfdDaR#DahRg0z>LMqmC0k2KlZ3A7bwYW9~pJhetI~-)n20E%X7617f$Lt#Rgu$4#%i*E+qX z&<8YbyqKL;ZvVz@^WTfb4foa@z@ITsDmDnSS21$`o!@ECFbx(Iuqx_P!#PG+2UB#S zi_Buj$g;5nwvrU*0o8vKyM! zH&#^3^ytIl+wY#Cht7_X720O#5wk<~1r`t6Lb2eztDi=7C$ipT}n{eihsR zZizxyF+47^Zqq4>5uq(8-nMql77sQ0`WH|H0` z%6sS5w*|{u+73v;r{q?@FYR}PN>CXUT5@4o|3_ympCFA5A<1r$qz(aFwvK!EgVcQ{ z$Vq2BPrlJh9&tN?OEl+o9%`+>d$61MCgNC{E@>AYaa%o~ zTyP|UTNyQ)uh1&p!*u}XnU6zp+OvBCBR07K@f|wlCV~${I6uZ_1+@Pxa5YtWytfZJ zaw7Pc(_tC>6W(*V)@U6?K0E|k0KKFKpq4Hzy*NA zG>jC77aEcfH3NF;BqL=w)6$;XByHTymy{U zT#u!+Z?|l-#TN}z%>XrRVgx=A))xkXae{Bg;p7@-U;?57yC{&U?W$$jGMF*kAjX4m zAj*G5d|RBf)dM184$rHi&IN&07$3uUY!Y>4eX;iHff%C4hE^$|lnt*6LaQXM32QRZ zO-IW9){J40FeTdFZN6Tbw=klv5zD}i*>0aKIzCDwl}4dR5jusHO=4r4{%=0SB|6PU zIuz6EN7h|(EFT|kPJ5Bvv7`a~GH3TY@!U2-XyWG568&O{k6NFRvKP~_#u?r-97PrG zYulLmx+ZHL`?DkHsy%^yGTBt#TpuI=+A9%WZGrFWb107)0m^}byA!9z zc)z*K$h3GCIhGT?Cp@#j=@@?%`W=nyF@7-iKAP07q1E2E))Pc2kGtn(nO@4mLyyk^yiolubL0_7$TPzCd&8|q_XB)I z=Oq(h@e0K7Eqg*OasJWJws`+`Y24ZOr!K#Ar2&(Y2VO$y&MG+vDVR$V&F}-9uJB(w zE9nZPtkMC0g;AWNym*gl34)_jbfz#`hw3Zy(t5EqpO%ZuD&NUxD$cg_P9qSf-Ik9UJ9qbl8 zG+L_`$}&+d)3ShZ}=z2Dkx`t9gSoAc-AcL5{w6Y}1E~ZF4;B zaJpZE;f(ujhLfx=XR=e=x6wCA$5=*>EjzdO1xhkfq1J+xd29xYa*y=c;v$*m1u8c7 z%tdjCRkk8H<(G~fwH)8l(c|P>;)wQX^^p2J^YNBon_zR{4?O2t2xoS`}k; z7NnTkupwSX6_t~Tw1&7EBEZ);xgUb zN;kK6H=plrzeo=cPSefLKYt#cBKfkyUp3?RcGC^_pj+0P8@n6uf5C%3hKQbhLCB{+EvTBx1<8fK_C3(#wQh8d&iPWQ|&wWjg=!lBm^$Gt{*3;ls$YDz^ZC~Eoo74gi=Ag%+nZa@ zw(&c}-XqDPWlg5^>hn$akb42k+h|@l!2x2*Wa0tlPYk(jP$J225=kF1wWp5H=N>m{VvZ)ZLwK&FJqCxG?=odtguyHS>q~UTK z??>hPL`^|z0N~``0#>s0rANr)!FMs1NJ_{?WTJ#oM93eF6;FJP_Z-?Vv0eHX{D%Fj z$S@SFD*v54(kZZ|zMvGg2}zdl*R$WA9PYn+d)PlcJUJb_`Mn;y@Z;99A2*l%2=aQ@ z@4-HamUVP%^R>r!Hh)Sw?rZ)z!f{FtD9N}|Pnx->rxCZuBQMwJ8gvy@qA8mOnLbte zt^2}%NSYn;KZgC`tfO=d6$V!sDs)++b8+9CuF~kf0ai;OQvl?_eBKW%;D(b`{2L4b zgr^I9m`xU!?mp*4P@$Jo)wIzv-KJo{D=()8I2njlQETO~KQobm-u=Vi%*MROR4C=# zvtLNKgLubd^tDj&%?!Gm>%l9qx6dZIFPKTdBC^|F>P573FzaWS;9VGGE5eWW>Z8rf zk+L=E9AMC9ba1USbBVSA1|F6M9xHBHjS%{2tqp>KgK2Tz5Fg3|E0BV#k+c;>u{VKy z;7~JzMqqj}PMC@rf?OPGm1kJx!*DJXmWjJ=HQ}YCw)+nFXXLt`b*SMi(j4tDGet|3&Xw`Qm5XG8+Tj}oB z4Io|y&YCl?m?VsN^2ZAt2u1*l!gy0oFKIMTGAzWyMi^XR4EAJ0rp~l`B)p-h9XYIJ zdpw8j@o1${5AX^P@Rm!|AH|rTy?#-agPWor$?lUUSMIAPPkK+D$cn*lv&oYu|M>n%e0zjuY=5Qr4@s-hy5mX# z^Psm=w_GL-6T^=*D)T^x?Kho5Um9rwoOehWZXFqi;_?a&$LzUJ_QvBN@G;2DlgH#r zFmMnbkq#%xaOLDtCR&qk<_V}Ck?f^LUC#K@JTG)_k*iN4gs8$|`V&>?cJD(g%%_(a zA-~3dh4yGJDWxAf${0;Dz(R#WDC?}Fkg2MvUVi6y{kf<{XcIj}%((CKmiJ)Z$Sy{J zl}Ln2f0Ka~>jXGrz;9k;KF!q0ByL}UY_PsS_f$=(y{bA<|J-tO!oXc;=X|GTpv~je zeVzLluowWuJK3;#5Y(YEfJTd8XitFas*qo3PQ%^dPUa6_JXp;Ag5}SgsCZ9<&4)WzbUe>*tef1~Nj0sK~T7$WTr( zyYzhTflCZkfr=2AH~pLhwRXMf4>MXIj+o;l+5#kWyvosNF%P19O|TL@MEfNXSOr*eG->4S+Y69%+K03$ za1tJsb^$7fB|Skv$SNXxbDN%mMl6)>a44}TDTkCG1CFF*-%*<5+=mQhLEfTVF6$fw{-c2bI}|1*EX$c4AnK1W`>Mj~2M%Q% zr${~RJzd2U6^_Ny#12V*ke2ClxEa=2chJ-R)1_f?ynQ@%;FB#hl0QkkjF9f6mk1r& z5jjR1uo*Tc0%PzwSsE?2TyhNJ#FopCfCX*^JV<#1=k~c9XhOrYlIq~cC@QeZNx*D$ zz9qax1||5MERAaMgA#G=t5)Kv2;OA;Wn7Hx#xOtS2{It!GGKWA2kAkW15F)`4f8W$^WKH;4ZJ$ zr{(HydY88>^I#@oPo~VM|B!SzFm)oW=P{T{v5hLie5FAl_sy($H4{@d1RtnRGm4#L zza|?+1H)MYoE$&e{2ESRn-5ZE&^RF3-Q>R!U!L}#TzQ+HZL~P^Ua`IrJ$%nIc*yOh z&x4->>0aHLp$@XkWV7B2r{Myi2<$R#>szIs#EaTB{zd0duq(~?pMZeSOSZGKv$X*p zGjwu2hyU4v|JlJ`UxdpRcJGs@<|h*3WIE?##3e^1t2Lte5BI4hJ&wK(s-Z!w<)NG3tdAp35a3IDX{e{x`pU{+Z4<(~6(W^X3tWZ0WX?kMn%x-uG2b ztmjL|zNb6B!ppR4&!q>Z+DQk%F$Vul%&PmrbripZ^~NH~_YIzsj;Gf8u%6V|2Ovz|9A?VE7?Hr0 zYSxH(w}&cj!ZaBOp`E6O0r=?C%18ZB93gslim8p#qu_bs>_pkfSHTIIEIG-0E#7Yl zJ$~@5LE*z~A)A#scl?-v*%~Q!FpmHJm22|>GO?3f{~5>X`=$ILnJOS=SR;0%h@yl| zB%Yzl}kv>*xY zt(Zr!Rp1t8*Un-p(SxA@&0{MEsCo^6WkWNQTUfQdDL}{qcr*jlHsWrd0-$a2*F}rl z4pm<`aT7%5L{vg?PWq@lb+$zBqfV&!;tA=4P_7l7KEPV;6nybqN&DC7dVMnk-$&mq zkv^}(*dHR%pxjxn-Nz5cwDKBzm_GAptBu~Y#1?J#KY#AC)2Ug$fUl2U9`3d@ym>NX zH-i(IvXAjlrazNdAdnxr&SobeVE84R&k*tm|Am-MlojAbMEIT;hVE`jet@tq4Tu#8 z0Zbto%rkiP)MVyXjfT01@lz!!;@Wa6fMa9W+w;UV@ktcQiMM>v#LTiY!Bx*m+FyvG zCZ)NKKBP1gBF}Njuw4hkB;3WGB;@eEmJkAm@K&YNH*lt_dA0)QSc z2PdGww|hXyikQf*f6KmR5}Ubt{~A0yU`;~EZ(>d2B?1(Bc-ISsSx~;5ND7{lwEMqd z2Hi%kc`y!vvLGVnF>L`zF0zmIJkU9s!m$hEuoB=uplV=&CCN8OC#P@T{wWFg<2^$s z1`0zB?moJ7S0JPr+|B_-X9{MSQ#bj4TBL3ZxzoKzn=etKRB^NdnD6fkyoohqI^s)} z?zt8nzW)8u+c&RY9lkydnOeO(a?Pczyik)V36e80MQc5VH7^m?JQ(*SZ0V?!kAV)U zg)F_-(u7Y0>i-Y&f4dbsdl2#WgZRHUwl-euMEu{+H+MeqfB$^^-!P$Whl3OdeDkKGZ3KHmQq$j?Us4B%14Vi zc*@|14A86GiD=lV{bey;+{_3JToX~1GghAWToYN!ZHj;FY4By@g)ny?gnbYkB&ky! zQvw%pewP@21VfF`q=Ic>eQiUy_v#k*NkPtoX=!;|>0*e4ujXb4Iq9B#1p2}P8zs?P zl#8j8i_h;=tTQFV?=kZto1=bkO7ysx|L`5q$I9@*EADEXR^rz5OQ)sr@I5pHAredB zTC-U2urBcW;t^p(n8l-q8B^Lh&Dg0cg4{=MXG1%$VktOm7lh3lmX$yr{zY8$GAg~a zWf}HNIHH>){3`i$`G30q>HZHGT^=9^EWiJ^p6@*0jPCyzFE+P6-Tyz^{U1~GfFKZj zM-qYm*D4z{i#n_Brsb?Eh#n#QjYWt9I7cBE7(lSl7w@z1$7|n{wD1jv7%^9r6BpKa zEn*q`_nC$^ENuxZ+)E^k;5`AtgjlZtWU$5{qwJDz->T=4xH!Rrt+56?tDsYvc~bf> zk6w2(&UFsyQa1QDxqz-|!d`@sBfh|bfp2;FfV^IdqPlW#y#@hc<>2+ITxf{5dwW$v zEF052UtB;Jr*-P|PF@(VDUGl~q8W#PX?4 zJaDTJz`I;cSh&&G(_4fCLwpp%>B#2p4RoYxTgK-?PuSty7%W?bvYT3{e@M_(t5QoD z^n~IA(nl7+P)A_oGMG00+s!z7Vwi~+pQ=V~67ZQkn~$!}=(B%70nS|4kQrNH_te1- z3(3E5jnTd!vE2m)UB8zfe*gN7`TmuBjX7)n`@T%{=L?;Ln>CvIb|42QeJA=99Ate2Li z;}7gQgeO~?9D@FFbGYS^3lJ^rn<)`<6UY}*c&+x*EexYrkePTzMoMT~9=3dwR(?Ys zrv{27ShSn5wUy+4WxNa|Vb2pjAH@awAQf};8YDr|T(GzXd}35QA8URISn$K7u`%1D zTgipS{bt&1___^8Cbz(Y3MJ*Uw&-<$Z^l%=H3*?5?Mi3?TaU}eQPI-U&^>#9d%sW& zAk*AU2Ervz&W3=!a~vzRBs`qjZq*>MTwQcahE52~oBTyo1i0nkmbpQw7n64vj3~Az z7}3trylDw#W~dKtrrH@)M(|jeK#uN#zTu_Q(?11#v=@0jy3&AhvQ@}^UR2lC3=x7u z1q0dDl)-}ql(vhZ?OalB_h{WTs}@s5*YKI5TF_$ey?~YykooFb7{WBf-y8>$Pb{dT zkGj_$*_05&L|98L-21YI1(#zj;3GY^S$!Ra(Ph<^c9sgHYd1Z4_f-?%>PcAplU;_RMw*7=Z*cDh^v85LJPm7piZA^M zqLV${_|2>~sli&vE7~u|x=pY?JW~sxrmiz#R)J{e*KbbKuiw1=-Qg(%_6M&KDp=@Q z)w44K0qb}QHl7>a;^J<1iJ;7~HbufOldI{8-7pE@7a&*ve8Oyy(GVh5Wx5Ifr%1J| z0ArEFdXPszdLAzDzh3yQ{wdOLm*krS5Zd=hzb%q4z5nS#{GWayVs!fdYTS#B+pX=U z)XQ+$jY(K&cWHy^?xD9KwQ$LK&)38IBEL;KuLk&4F9!Iq7N^IwpO!zT1c5zx;HbRC z%?ifJ-KZE^gmjqfrsd*G;vd478^2NGf?x5_JAp%RH+}Q^@Lr_6jm-xj<+Y*eotk~I zn;smU?7e*X<_~91;P}Jd+k?HYULK}z5C8AGqqm1AXUBio|7P#??+!cXmKOm)So8!aR zU^@@Ke06wmwAX*R_f_!il0n6AM;cMonXCEx*=>-J*yeN6Cv}YdS4JS$@C;)LCIB>u zU+nZh0ggt5Bu(-fahG{vCrePn7c_r?Hros15ZSi?c~}rlQ8b_)661;R=veVNV0x0Y z@!7yqsiDcWW(X*UopuAmhQGSA_PHJei7cx5IwBITzt86D{2t*2k3CN|NF-eiKnoSu zD|9^=itW+U#SntyJ63a7BP7B@8d#?ba>4}mPg+|AbUZx=IJD_ykK`wBq+(l>@wkyG zjmU%~J{r6{k&O~pn`_V+(c#SXD{2ycO;lFP4Q*=Lh1H?qx?_p;i7dJ&dnYfK_9et! zAZQlTq5C>hWz_^x@kYfMyCp}I?OODZbnsqb#qYtif03?Vl{fji+Yj^nb{)D2*2xP? z2INi}UTJ;THX|f74y49oPnMy8cfGOvDB)9xZ369y?%g&7O{=y(x3hp1{%2Ly39*jS zR{6vePgG1iB?^G|OND38�OGf^@O_v@b-yHX^2M^w=V8<+k(a;GIHdAT)QxX<%eu z1GpL9x}4c;6gj0vWj4x>QsnsP5oNATkqZ~k^7B4ePyYm~s6_?grJ6q31fAfCf7h-m z`1Ll=ub-sMw>v87js@Re0VWB0=4IZUiRCho3z$a!D&V$uHvUS!y^8 zmrsaq% z?OrWwL`egzAu-p>!u{`YPlhw}5$hi08XT!6G!biiPqomGGt~efLRW!Y>v-^hRcY)q z4?X70v%5{WmOEp+X#}1Ad{byU^uSpQr@6kFnNP6x`Qtr9BC&}7^xO&+Pyah4Onz+s z-}n&;fXn0mH#ax7x8nT2XPeJH#sB}T`F~@R060#*yf+1K+?4~k2Vc;Vp;Lpu&+z-v z&`L(#2ncuz+@Vn2%D$c*oF#k%Dmd+rFx+B%FKP$$4EO+g@^h+SSF2=SE z2WxS%qRH)&2fOnH5MiH3#N+cUrj<`J<2=HHeQz~AB4C=Fa95MX3}kCfj!$p0aW1;G z$=E^zV~`H-MhAcZrgb(+BmYRQc}*muX> zADBErd&9J}V5Xs*OfEHz3+Sc1qzK8gvgv_=F9jJ^DSDwGvo+d*dje`R#Zhg`nuLpb zQfA}U%)?^JX6tMOn5u~f4-gIwf$DDJ}XB3e%%oWfAagr*EQfnXEG^nD31wE$>a!m`Y3I8ca5V_M#3Zc07z2#zYEw@eA* zlE~Hp{dKBCGaMp}1{Q^OY9yDK$iz*`@*1LEt_cZ7B^z9fU|h?y8z)SRW~tPl&P&&Y z)Ho5Ub9cLOZ)BPB35b3W0>xTPnGmFQD>0iuo5xvx1Gwks+35Om4jHhRBwAPb1aP6p z2~-GQv5*eA9cU{6yaz~GeX+Bhu5b_pe$k}3m!MNI(_N6Yd=*J?9!eHQY8(yi829k}sO}%v%o}3S0yZ)(Uv+jDB!;;zRr_-McK&Q`>Io;P`gZ?xc#3XzV4Q z;qJt&6Gj3;)aphwwzgWXUMSPLP{bRQG>&_%gJ*+3upkQWYm@o(QA z?!A2Fj-M4wkyp3^`F%|RK#dY@uYGusiSDr|cp-^j&~qDwsZ~V`V2&QKn{&BOt0c@R zzkfW@E|CIzyA(p^e7IT*##NB@*8)WFlOPc^g~PVkL%mbab4lrMo@}zXzG(O>Y~=*! zBYAU`FYdn{8G-!A4~9liGz2Wd-F~oX&L~P)un@i`$&?n#*_fdRj=`5Myk)YAg7SNC z4#Nd*GDw*8nhjNZUdBOl6T}zbV6cP7Re?jn)wD=q>?1?rw9#pO9~UF^wnF!@>8=(g zojs7CB91nMqh8M)jV*GA8-NY+-Kz)9XfX#c!1OOA1(xz1CA-L9+;CV--56&iDPy_* zL2_fcdE|!!l!#NO3BvJ%FcH|iK^n9V0b&v4-y=!f06+C58aF&XCZQwy5G>8f@#TLXpK~(re+=7vtQ1qEG!edJcS8W!9p4WkH^Xq# zG^74Pr<-45Uj#X9ijuWpveX{@leD+@rUjzd%eMr7sZUUyK*ajS2N#D1dg>S^VIxXFacP*b#+Htaleg?xW z8*ux~CuZ%sq3t%d0=uh~fB6=FK_%CGdu_h;7GjjDK`g)D+ACp^uxQwp*@f$=wqALs zzMGK>pIGy72L_$M%%KudHSB(aCikdLif}R;~auSp#+y1tV@NhngGcH5P%ZfWT6kqu}+K zB}NRmond-4x;L+#1_>pW^RXKX)GjgR8Gv(l^)@xe8+I|%cr{D*34P&jwgVDNXep+x zidvcR#o1)kdY^NJHL<{n@>AZf_mRB;t=E+s(~FCIRLAM~DwrcGE^tMdj}m4}JCcio zt<#_96HP~y_6@B2a|a|f9WgHGX_fBnzf4yMm>UOcUQSTqSWW93j9Q?7;i@;eW|9gf z>|6#_C|cAR*;pk3G1OQ|CUy1GOhpXWR)_I}l6EWsk;AN(+hYc|Py>;%Km}y)LY6e| zwe$QER*TzdQ;eeqM-4Cvu`b(CRdLGzg<@5eqe9GXs`i2jjz@KZ5-=M5vWeLv-0vuw z+Zt8cB;7%$Rg^s=O&3>1HeNIu8t`-U@i42J7!G~W=tn?RoN`X!Z8V}UCX)ot=gMnd z2F3$6MK&UfE_YDOw5-IpQ8uWZvdxMsIxOgf?GCnpDx<}Oc>MP0)!y4beHYsf`FpV# z8WZkQU{ar!Q@A5YRe|M8`wk277PbU_S;f{_L;5og#gEC&jX__aR$wK~-SUG|7RSjG z1Lu6MJ_v}kY6BcYVm@ARs7>LT_(FXFihvQJhlJo+Jk>Z7Cb7fAfs8V}?>b>X7^Bnz ze8^$owD0p0_=Q#sKP&IdrQ1-9X-o}?j<3K7A`%X-qSX*=Bmfy9~|LVl2iKa~uS6S9e`#^I?M!6<@h`us~z1#;wm|(SAzI_&`$Z_XhKb zn5o5j%9pcK*^7LR>F1-U%-S`7QeNJ%Z8o!KkXRyt#HrQGjh(|OiTlAemNqH0Wxb;r zt+d(Xt#Vf2>Sr^BcmxF~n3q15xCB5ayp$tB;~`i&p%mTHCzdZvpN`4mB|BQ|V4Cnl zRue|XC%Rkk_L79WnCTg9E?#j-6lmJIxMQ|gax(hVBUcC;KhdO<(b^;1j2mWG3EE65 z&W4+*Xf-P5kR{@&n34`

    U;h7SKaI1ZOC)UQ3+~*16Vt#wW`r=aNZ^&s5N~!$Al*@ zjcCkyTMXAr@E){nh->!k=;xlZRiE7psNoN+F@pOC0vz6hY!qal!#w-*BT0Yty*DkQ zot+hN7q(46KYQA*#?A-j%uyxV6Vs>%%J4#6$imPEjHCzWq*)~gZ_giD+u@zpD1TC_ zYYqqByoySyXkWxNlJ93Ry+3q@xv`|Z?L_!*i>jQJJyQqjE8;6`z&nd6l zg1u3pi-C)T>ny-G2WEH(A%59P zNC(1#eSgES$^VTY8V2+fy6z9F+QT|Pa8rSzL!R(YzmF8qN=bU7A3 zfv%%*lSuL{4;go0F;2sqs(RI&MoM0t1GL19pZqk8CT2hkC-%Q&cfBxAz@io zm|EV;O(fhIUqnzs2vG^dk~5)0^o@!7H5c+t%ckmfV&;_SYlWpy`EcBs4h~+NvF4CJ zKS%Z}r*eGMi(*6hpB?pDF^v8@M9lPz{t9@3EPQD@kqiY~zc&eKxOdsTw0YLsSGa@P zu^KF%nvw|(Els2nk!Sa-1$2)N9EmBvIUh$ifc{#XLP}dcR1*D&tu|`uD+`DI0bkVY zV&K^cax}OX4l5Ka1G)m`2&nn!v$3>ZGRON|3Ug7byL!Cesq=Kt+zZibJ3m#|)^&+$ z$u5v9WXmMShj#4Z&|ImcvY&n$TF%6z;FOAJc)guhlu~BW2xFk3S$issZCpYb{@O-2 zm5r3tOg9{s)v+xbZHdaiEbq&v#)c9LH+>CWn}KDdQL5O*f{+K^#<~Y7hdy1dSCVK? zi4EJl$3G#>WavTPqGU8rQ>I&TWBYS|06y{=Jzls0{_(g0;t~>0*FZZLa1f92ba~~- zl}T{prUJaNK}^gywRM@=qMEvjm@c~3DR_sy5*ALw=gD-G>NoI3?OK(*Xh7S4+molG zH~!c&vfntAeJ2E~k#Xy0`pr{01V_9oXsoCRNuD=dfS3d0Ec5|wv_j^JvJ!n*M3)@}=2u^Nq<)pbJ3vrnYye4B{O6i67Dt9Q9 zx%;7Z-{Fh3X7=S!Q__63!UN~ePi6NeMfAs$)B&p&rr!803B?6z$25P%SlU` zMU2b$ifrsn&A3LDhJVDYI^1_A^-|Z9kBO5vKx>`rz#Ard0@*Q-u(G^11RGzma-ei^UGDb; z`14E9ns1t6No`F0(DyxJvs=gU2&dg#{lA1;*(^kwdyaBKZ;PJZpO3Hi0k3BNwzGQz z?@yxi#jE)g{TaKFpTl_AI&{uw<4Qi#q6Cn>dnoD`!=T1())~223d5_+x>@KowfKFM zqiPYJ&>CoOEPJ1`VA~He&3Zou-c0l zJ9?sQ{AiehX&Swp=B~6uPcW3f!1bhNi-t*8mAt>LVUK)kk_N+Qb0552{~WE5ZTIN- zvrCU?cHrPu^pM+~PWT9pAch%cYeA2FfhQ-m^0wOa?oE_~CtUN?K2@OWs|r!+LGFpH z^+`gbtU7$~d__tN$tXorzwZBHJM*2nMe~guesDut9>wWS@NxBEXG;d36kG|iJsW=lQqT@*FVVu>lbuC#9dOa8CNGqB#lqb z;dInVwJeUNg`qh78ckPW=0x1Z4y1oKS{oD`?g<0qI(vCaZA z$*=_B(2!IZmYIvisXaEY4fCvOvACev??2IhE?8J$|4KannfXg+x~Z+%5XP?`9WN{K zC|a%*c)ResR38H#Hp8w$X{|8e{v!DEkgjV0cPa0pB2;J&W;X{L(+n_xc-T6-*`dGX z12tT)0JOnn8+@nr0s2Gf6~t3c_fL8dToVNSeEZZN#~%1n&U0`^sZ5z%;$Sg2df6KK zGNcyQ^A*h;%YLkFN9o!-cDSFwz}!IpeG&Tht7YC`PH0Y%mdsdE=CCaN2tMwu6@@q% z$as+jBALtmZHy_7MJ`HQ6MO%5lz>TpP@r$79hwsNJxpYx>I$hg-;1nU2~utF14MbV zbvNq24@H-iu6cpg&QO5M6V(P-;DHUu##h`Z;k-S@FKd)bE#$=?I?p)HkAts$PkkGQ zDL}gLX?=PG!uey6MWd#1-t#>zc}6oDBb-nB@#tZDA%<13D7W?Su?EDrH|R`kk@QF~ z*wDAV4}Dune}uxW>!{)Z=K)TeS>C*bKFKu44Hd?RY4Z)i`Ri+x(L}{BuuVSuSj)|8 zfOg>%r_DY?nE~LjVXm!g4vOsp+r==i{RE(N0OBhrJHu`_5kc9`R#cfm@}1H(**i^- z{F`y1I$Se^mBQWuT7qmaKlp+B=?FYb9Z=_blpKENMwV^j$JjJKhVe8=5<+-mDuhRC=#ps5T-f%aN4X@&1gk$pAe3L<^gB7;ig;G@ zBNe#98nGjs7~i13iuw=&{Rh#+(#J>Z<9&m?7>aYm53loE^Q>(}j3#mXYxNxO-y<+N z%SVq9tJ;eG)l2rZqCM}9F`r6_LTzp6;eFCFw-CoUTP01=YKUjNlpe2^Th1zi&w$?q?qvMhu=< zZ~ibJ`UF+luWw%M-aPbIVk>#97y+}lc&bQGEYp3wknQ?DAaqrd@3G{C6KV(xWQQnZ zidg!G?1m9quI=8(po)xf8kBzHQ|v2l=JeRR0P|g1_;=~R+-z=Jcw$%5tQwwtHl0i! zxd$=0`aWReC$&8I)f{wDb$=JGnm@_6sFvGb(&l;C1emM~9shajPRnazKcG{LWc_p) zQYty4>9tYpMaXe{Y|O208f~-oZjO^fIpSbwWE{h}H=1S4dWmVB;9WGclQaSE`rk?W z?kg(Fe?)-- zVs1W!FZm+Z4^9oMElLmf_PFUgN~OjCnoQ)dQ4mll<-|oJu46G_bi%4851%J($-oEnBchxvQr0d zVH|Q%hcc$uO-o_d%PEkNnkJx<{L99o_y;-KPLQsYfXz{u#|jzmW5d+^3j!@q9Ul@l z>84m%yCatW%^fk%?tF1Z$jhRyw4PKQNR|5VOt-ryi#Rv3LY^Tb8B`}ayZ zrQhqOyZsS7xR>b*86Drzb^)B+UvKea6+s#o;q4djPeeL8vD8-MZM|57jA6a5W|JRI zX^j&$|63>=yNg>Y4Dno9(kEhVJS_zg-HnxO8rWEp~j?#`MQ)+0rLY^mGQ-Kln;gw_Wli&Iy_05 ziGa}%AGaqrJnmtEsf{a(fcvNHFmcFe&d$Nw75gae*CA<<)MJgcBQyAUhqK3BZu+SOk~WxwVW)6sg6l=PWs%_xQ(w4_sM2W9a-pv8n++jb40wk^h$qKzqjb5%j}IHk>Z9SxLUws&}&X@?({EwN+xCi%K@TG8uq zfeqwFp~M%}geVtp@U!8r;L4(V6%3h$l6wQ7sbA{4^m#UsV;5ji zER}V-@vVCug-kV{7$#Z<8*4JLc(y{Cyqkw}_1`LYh~x-0pZcGTU%^_u^*FiIzd~gW zpcc_U*OuEW7$zvOQ^;gtXqNLX7C~LqwZ>YkVxDX{XfAfm{;rllG3snHFHQMt*XT(u zy#hyN(cV_cdc!V&W{4C%Y;lS3EI6JP^*5C+jzfR$S?AgNlthNo{xXs=A#-7g#%1mZ zms-#|iTpBZKh{SpJLt-VY6EO2?U(xd*5ZGfIpXXl`#Qtf{Ph_59$q{?*UDVuYyc}> zUy#UFv0$p&&Fxn>6|>4q@|@wgWXd!75Z0pO|ED7y$DAOq6Gc3yY25bIEJXav>GU3^ zq49KzC`6IAYW@BS208BoZP&CK^{^?&PZGS~3!mL8B?s0cw<#uH)2Pq$|l9;&=xO0!dj%x|0X zt9cnRcLb)w#3;bKh1=Etd%a2QjI)!GGh4g9`xN_ko6{BelMl%u<8w`) zS{1NAjRYnRd-;p(N{~L!0++OYAD~;XOlN;Q0S=mZ>uwGmJYFKlWk0US5t0O20}8Y= zQ?};a(+geSQb+SW$29r^d*|8~53x!r0fcwjt9TZrynCJ*Lhz1G&zyB({L;M_YfV~$ zN{8Hv$~Q&pU%=o03avczYl85gf|C0ZibSRZ5Y={*6_Y(F8|kw;!MuoSkqOdj-6Tj6 z9$}c(8|Hp&#eh!Ed(FlJC;!=4{(xY-IbOJ-VFd&R=p>qTHS4r^7(#q|43OcGDU@&2 zO3C8kXvCX8nV8ek@2HJK>tp5b!5T06>yroC$vk66uDy;IoU>)3OcVK{NlWTd7cT$bEgYR;|q61=gOB>mai$ z0R2f>ALjeFfL7`v6ufzDl>{_vywWPS$~-W)CSI>b-(iQq&qVl5zC1rmEjvtiN(~2C zjcIkI>V_CqtKg1^2jf zje6RqgR3(G4%jpN1&DDTI(upIKTYKDZ@4XCrCDc7Ak3?*lk@yXaRWO1h>J8Hk$RM(?su4XG>(aQ(zY&z}Eb_cM?1FXdGn6%yufGSus7&%Ds5%^O1VFmo4P zRpU^`j`15d#5*j(j6hcTD z6EUQr@8u0x*ZoAFdSf6Yw18B3*lp~uH;W2ja76aqFlZ`|2GdK;9>u8o^?@l2Dt+4a z7xZ#Xdm5jJhZnAat`wqsVj0qk;LQSsdQH4{`B3KgP$3x79@1Vf**As>8+ zaoS>=wnpyLL3W6*=-vI23(q*gQt`1$sA(qEClq6@$MXV=8XOb~&!OEJ^_hPxonMiU zcdme~hbKT!>WOv{ulpTDcuuMdDq^xuS{a!&0{G!#16x)wC0`+AmPT9f6t~_4!iN`e zva^NIZN#MRs=2w6fU`o8tqd)Vi%Y%tY0(stf7wp{9Di%Dq+eVTbrdKnmyNrOF=dQh zS^On+Oz*4%|3Ng&80d4qv<8Lc%EqETj&v)pelM=bFL5}D z9c{j53nI>G{TKdlBOOiJNNpK#2HpCA;&{GQ?~;m_>lXOgQTLLI70 z%&9pahGL~HhMu8mE~QcJyK2rcgK;el<+LI>Jfpw;@*>8zDjuOIPBHNtBTo zxMpad<1Ig$Tnhjs*rgiv#(uI z0Sn{r*IT+}%v9s#+K`9-+sFhXs_%*LyKR>``-w8cfo z77_V}bn46{_-Uo%?%18f-XV8deTsUh0J-IW+Yl*g;C1%31>X&LdmKhEaQ%;9zy{}u z9tEW$PLR@RI>g6nByxgI9{}GdKB$nfe3-faiH-6kfAR<^g3wuV$SbmYL_A}!rmq2O z(Jmo@J~sbx842C{jXyq7r1=ls4h8$UVc#gE5m?`-Fl2yXyH0aX6+ zxCK$B06NM7*a(~yVT`Um^M2m+E4zp09$xx$!VRXE>&#}vN@Q3+kNV@PVk8V0w~}HbT;7IIF9oZ zIT5V8HMlr_8mLIEIz;|hSzBFyV3dT$5u8FyuY}dNoHX8u45L^Z(e|iz5vh43fX~Tn z9A})p144n`gmSypYhF_j%gZc7%s9+>Y*+U`$-<&#)UT8cURKGbCsTd4;xqT z#3&zp4TYWZ#OrrwaRT3TX+sE4Imt*ixmoGp-ToTk1CqYVvqaA>up9*ZS17om6=(?f zeFzA%0JlndN$?tv{k-OpyFD#^+b|{R?N2xtnNNn4UB32x-dItTQ>bYK=AJm4Up`jT zXK{;M5h~LM+}df8M!Rfa?FD8GrAWju`sNX#j2Lr3yHYwJ7qft~wFdf)q2Lq9*W2+5 zRM-jybB=*{%QG(1_XO$hP~V2zjSWrDgO{i7*^mLYJp}retB>iu&KaTmmVw3(>NGQj zRdRh}|Kpyl2p~T;H7!7X%>~hses{S#xDc*REw)$-AT5delKIXjq@AIr2Zrz4^Vk%d zo$Q(D4f@}U7dhaLw37{uuf9tn|MP<_T#^;hCCzvYx4UQwc8Wzxhh4EDTRrB$(mvq+ z1cG6R*BDJk08aB&G2n;x?EnwH_Fu^~{{q6xT2H=TWIass8QD^GlV~^=tTsqLxOSP0 z4F!M(e5;@6_Ywxojrpa&?1d9#A402xqtgPFkt5&4z%gw1fLizmWNW+ufg4&^OKW(X}oIb9CH}J zPhLqw5T6mAY;pFgkTS0E3GOKiHEV5Erds8%WXsyNaaHQZ#L#gX4s;F@or5laxqTf2 zhC~eU;hTwoCQ!x*Na8=#8Z0?)s}OXhd|a-a=-NRjJVbcSV$|poIonS!t2;!DRYMZy znp#R)F0{%6)$*o!k2N~%nQ`##MWWeJp!vviJq)y4Z2*n46h%rC7)>?j6Oqno253rh zuW4b@&7XHAg5`ARDE}t=L!+8v*Cq?EbSn`y$krzbC~OQEZ$g8|TXtbF=$H7zZ(O?L z1zs<)|LLVy4twa?5o>^%YRwPYa&0FB)&8m7n6+@flyQpPCmaAPazzms z9PJDrTt;hM8S*K!OnT0AQnV8kyP;vXvhgB6byt+xtFkMKF6pW-#=PZWB}SzD?pO(6$JYLvQHk#Rrrte2rZ7? zlp+A7{zMCW>HE!=Z;x{*KElU{5?6*NSX?eO_D+lZt{5k?wnYn^`s#`E@l!k7_9!uz zmWd+bQY|G`%n4%^mASco#nc`ca+0W$h<*+|E59zm;<@DtM6$DENp|zS6y}HC6(P;k>k!bh3zSZ6gSTMtc{B zMed6OLcc8_87(yxZO4uvr7)|C)Bk!7>4U(~-YO=*)HDZ~(1cfPH(fceluVRSW zvQ+8II5@C51^%ryu`TN<3bD#c`ZQh_;;Q|(ZO>lcJqzx7_sq5ShQo^?2~4y$>|_Jk z`ZBrjmU}SvBVa$1N#J*YJUd(A&@gHYCf zCDm++O76Jx1jy?_;8H>^AU{3ld)jxVO6)`qr%*^n&<5nk&Y3_b#e@3|iu)1~=drI1 z3h3cQqwx1TG$X6$AJQK@RD|x_-{2pmMQk}>HxD!H}@u~zZG*-oMtr|yY)%gy61NEXW57}nvdcmNFO>ap{ z$R$NM=ohJ(oO01y3H{mhvw;2S?&|1G+Mado5gq%lI#{kB>B^Iv3{;J_U3$k zYz3agNuEAfsaSFl*gF65Xfb^ba~WgYTt)xg3vND4?;=B`4xZ=)ecB+N4VhGkve&D3 zygl6JDOhuyo<9Egj0D|W+C&J>Wt--GCP1Z^wSmQKATnH~FNRTn=_F&46s&i;)#z~2 z*n??03CjA3zcQlU`%)xZZjY}K(Yqz_SHLx*i$la2fB4-&zQE>3ws99FLLaE>ak;?y zuhMaqVT3>rj7#_)TB)QL4c%ecg@J#J_}_LOx5~4=l6|l6dglfM%?)X$J1f~W%$k4R ziX$i~5+$j=?Yg2KxpfoUblT@R`#ym?SYr1w@@n0j5M8pKjM+iyX0G=sIbnvX1^Zs?U&_JRjex7s)#m1Q=b!=nOLRlD zhTB6{V$lVpR>4&Y<38tuKZJ5~)7;c-Ao7_#1c9(g7f0APL)DWmahs`~T92xiKAK17 z4I|G+v~|9nQg`8ggg*l_PBm5|z3Qt%VUowK*Tq41*c@qk4U~;fJZF(Hk%^``k6E}& zVrIO=ZG&v^-6-~lewmv-Pnhs=P~BwT_q{+)_`NooO%w#Teb=u`x@n%n{a_PH4|V|a z5sa+w(y9Z|x_n%11d3aq0GPut8UL3zT$+H0y0NIpYXFMV?T0?ltfLOSVw&t)5fi3M z>lWp@Y~ZQKTTFi%|K!#X9KMfL^h0D3KgwDKM725$=L@-q2F{)uM^*UT9HP){E$h^= zr1~C({jM?lza*>Y>$fC-5u?reDEZl~dY2edCR*V#1}MfPoAleBb=NBb(h?E^|A4*E zz|a4Hu~m7HSZvZ(^JTKyT$<9b)VW--B)y7n;aqzg+fRGqz_bt>>8^t2daty z{G6{q_nn+j`RM;d@WjtrF;+XmqA75zF)K5GeMXm^zAGvAc~0ad38r-*17QVwK^uYe zMMR4Tj@;GxNUEkfzW4T2SAaHcEd_F2)F%sbGwAix>116PKUL^+Xh?wWr1HbaGI;;% zh4PF5%%ttW%?Pv%1MZ%$e;MDwH9}h`<=~VD@^ECBeSLN5Rj#lTTfK<#Z$B+SIm%E^ zH9n+Bo8#_SFIZ=WUQ5`jou46~Oc)`Sr`y0CTs3}Ah@;2ed{9tYgFcuYgCvf`&_>_% zrRu+e!sMZ}Kb|czpG(BbJMZIicp|cR?vlGf0dBJ3H63cXgQ<611t(kom2F(}L8*ly z=4jVx|8~kpU#L2fXO6~i?HH)|#CLOKBAqS8*dPJ~CT%#g{MH+mk9jxiq>S zI!mgOLGro1pBg@~q4aOkksY$rhlrsrq!E0^;--O+r;hBK=#u?-qD;ds%5cnm7@@E}l#qzI++S2?%L&E)&KxyVdH zs>s(RYb#;pv+};9Zcyy%HL6fGgBZ_f*`BhldfS)Kh#0(1Mz>87`>yw94+V(s+Gr=0 zMA)aOp}S_(jDgrsTJiIZ&)e(hjo2{i!G+W85Xfl{O!;2}_Vh-&A1z>PIU>3@f7L?n zcfqee2Lt&RU#R?d%YqbHHDl94v$3hKN0RhewcnTShcXvG3S__Sbk=xFE@y1faAR)s zii+>n<+*I61@VBzE~F*T+MdAEbs#^5UwhI6(!=f|vUT$EaLN6dH)IMf822V}6jj-r zQ^$C55J|B^kGX)7(kFVF&)Zi7g4=60>cpO}ykn&Q+;!jmwRde1Ez|TyYvW#Oa5F|745y&;YRk5k zfs8~$70la_pEKc5cE$T_%P@B$19iE)b*XytsY+U9YQj#e@i1_Dk~ zb`wu6SfPgCkitWdq|+=gJprQ7eg_@4_?CRsA>$kDho_I;+KR0h%2_~(mCf}Vp1@d( zct!Z5q;vT+(&uXkO&k7&o92z~*N#hz%T>r3xAuXZ5cX5MD^bs_5%WMbmn4Jo^uPFoS?7Hxb0z5S=3P5JPX=r!Z6u`8J+0|_4EO6 zSIN#KJh);dZJYy&g02cDyq}=}x^Wx)p(^>GfiM>CYK?pC&UM?Rq{$vEYZ}zL-T_pk z1rWkFxOnUp+K?EYiH$(7#4MkzeA9t9DDiJ)kB8OugZwKSTw~ULdVGx6jX0!AQh+A& z4vM8>H3|zN5%-seUd)RldThSbaOWI759x`E<+*>Mp*P4{3znizqF@mlSot{@F~(JqSi>l;y9RJ6$(Y*j-l>&UFnR_7>C_BA5nwgl`mvN>D4Ti1cCQdaPI z4o(dNi?sxmdM&5PAdgUUHz+cg=TLd4pEDrxiHb@Aw0oEI0yt zjPFiqooV@0QTCnppKZElkz}ZNth(IVu%$S28Yh3YD0wD9P=0@8z3 zr0f*rRbA7Yd_3l*`4WhBIPw@2!M(zTE91GNRhszcAu#c7M?~zq6G_BX{VBX8>Au-# ze$?6L&$nM+ z*x#v!lwsRL$Dm`&vIXSX|48jM`j&+z<^Tial{^=pt6}-sSaE1@i9DbF+qQrH|3WpD9AT|1jYp^YJc>=9sv$htKd;(AJ!;d ze0C5{5ka-0EOWoKWpy=7kxBGM3KIr4xgeFb4D+9DarVCX=TGpn#BQm-prbGbIr_gh zvBED&`0Vit8;+oD_E19q&PaiqJ>q~zzHSN1a7FACzRpWCs{xfTwcvOADJtJ58N8X3 zPEsilb&~+z=(U<-9;0BW_<7}1$@8ci)WYXR+DE}^oRL^IamAe#W9*X${N#;{efol1 z1iDUwAL~){`bxs5hxm$ey9CpZZ@lY>(nZBta4>&@5y7_}?R)8dG3`TPYUX(&o4)w& z$#h7Pkey`aw5qW)H6P7j%ab?nh_V^VtJ1#avLvYS5fDdzDksUYeS5Swp`Ia%l`Tz} zV_S5)I^UkVHrju+=^y+rJ z__+^iizOPjXG3n><`jC*NsVv97T9EFQ6SLK2PwSx)*@LphnN6hp8%=czZ(YbQ%qhg zqK{x`sLbOn=96DWV&kAZLgSkg2J*t2PA_Siuddwx5eq-_y^AUCgdTqJ{kB!fwDj)V zHfZTt;K5bStxs4=e5;#WcVcY|7cPOql7#hmQBSTeIZRAb1wqNO5uUqmVES4cwJ(KZuq>*o6zOgy zg&{NU6Th;Q_e6qgdylYZRYn9+lzGw}?u!7Pxcg`1H_Nq40Is?k_6rDX0>D<~6Zk}5 z%!zYQ(>7Q|x3jOoylkfS(|Vo8i8EaBAO7m7F$XubnR8V}{KgrP`q7gnNt?yH|1=^w zumig1VP}(ytG1GmTA!Yr(Dl3O zJe5C^;+5y?RLFcxM579mKM6uFuN%U!jgLafSWrszWydGJ{OQiO7T=gJ!6p_VOZ0pr zdRzHKn9B9;JB)a9h1TJWL*0i)tUY3hf3xYMKhB!w$y=Dco2?r}>~eyD?Omj3*W8K8 zt*2&PI&`M&Qsln7oQExWkJJ7G8KhF-q`ppq9^aE!(~XpZDy$=lTe36kcvwJU(RpTI z@$*IMl6$QA+W@?VBOvs&vE&5{Ixj(C_O8z;{05C5tkwF9PbQv>P*5l8Y}*pSJ*Teh zmKnw8j;6i>J&JX2Qf5AznoW&q`3e0|Bp(zgG~Ikmg8_?WzI|Sh48$>&rb$upvb|3&3hIEIr6S2xY*VM6za=+=i#Rz1vJ=dpHq$ z<@j}4qTA(87E zq4s&EUf`3GjdOMS;Ck^xc0tAZP z7wMm!EZ}cyY-QmSY)=g!i^NS~gE_PC-*5jK!NZyUgVIb`iRXQU;c?tqS;9Y&1Akz9 zGfL`0Uv*fK8pjK0C>F!3@1_5YY8KtD7zJ-zCA&l;S4N2DNpC|h_0I@BBkye3G*mAJ zzZ4``rT86pdq?kPV9mNlfrs@|9M|`E?p;01EQN~Enp~-=BS@L0UHYl`=b~#rBKs9K zBVQ#gWx+#fS$IGX4aGPfaD4`;CmTUhU<>}K*c!o2GJH~NAYEKEk|-r8^&dx9#1VC9ak)3AecghMOA$H9aKsEu3>o;)3a^ zCFE{ebOgRCidAr}V_iIcZJ)aFY;=TkyZlF3YCPD;Y-5hii}~asG$Q&8K9d)uyg8C;VOJQOznBn=ImQjgx~gD^f}fNpz*$*h4KWnsL7wg z5z&!C8`79CbWsGIST`TdY8&0x0tS6eKaJRHTNiG9dd_c6%uw9pgMYgd6$Q<33*^2j z8#d>mvZ4lEYd4sxA*w1hebdn-Xt41QxC?m9d+oR^8?@d|YO1w!4jx#c7g3|V5mz9k-o>~~M^Dz9m(8x@x#tP%?sT42A6AaTxw5-QuvfuPMTOO&E{oE6i#0G zW6-XLbsg^t5Wz%G~*A@beZnf2IfRA0SbW-oI$IH)kF0m%goS;$)W z%P@u9{ji%RVMU7LqXHot4?At;skaxONif?xldq1X*;GN(JvryYe zXrC*zS;(1=1Q|BbmNrtEeCqkA^7qowqg1sGO*RXfirxjRsh2?Pbe1i?Qur^+a5}-b zvgU)YVD`j{xjr0=7@!W{JHXFn~*9dDi zn&y4(9P+vF+q21hnRK^Acc)D!;itDdlqZObsPD;}8KktMrP}B0y0;;O+gNMei82A6p|$yO8-&6QOM8O&*L5Kg@x^`_X=bB3XuB+Fu%pnEOjfXG0z&N}vX%11^ ze&K0SObnYiw7~alom;)!;2vrC}}2)hWt&+tTxr!_N=t zfk>&RGBWe+u?mNc--0vvp^CumZg~>mqy{}5VTfKZ@- zMPm}+==y5+pB?2LjfNK7LtKA^bCCJ2(eE31XIK=e1Ae`cv0T;`(eKVki6DUwea~cJ zB3`+K-N4d#yrC{j?~zn>_*=Q`QyfM>R8g#o!slOmWeZ6}<8%~e*S=vDQ)J_Ea#;R+ zCnbM};VeG(uw)U5Uw_i_$VVxH^lEma9Wd0Am;Z+Q%yNOQ>x&!nmy9QbUwOp-O%V>) zqoP{6K@ng_jj|!Wi}1k>x#AwY(+U8W|4~C%x&X!GYIlec$RSWGkt(Qp1x|_5Oda2omil0lG z2Fn(upQkcihnbA~nN>E5>)Wui(dC20`=Zz#r@S$qgQ8zmypOvZrK;L$U)?@F7kwvM zE*an7XMHkbu3}bzF2amQ%XKh!>EYChIG4g7d0UY&!Tmrh;x60x(eWFXtce7(A#u#- zvO*&DYw?PrgC@Lh|6eM!&b4Vdrb;zpmRd=wbdUK~6xa))Lr*#Kipf5VfswbU z$ZaaiVV#!gq1aLWNqZYxQecnb<73~G90Rj3j>rRn#(VB7c!!%qbXSC72%Uz{Ngo3C zxB8`0rd~tC{zB^x4!eUO{v=XhIo?pqP_`Ov97r*`*WH+UXPA@ zXFf^u_gf}to!m2~Njek<$AK^Coj+V0IG#1jnPhBtU=_(c=5H|M^zn2&+uqZ{oFvl; zGg6GBOC`9ut21FzqLRD$m*Zu^UmBKv$?tKU!k$3n4!H-FyNgG@@!pb*ROTyl$tE4^ z>0gOr1qcW{2>iE!Q{>Nqjt;yW?lKEKi6VhG?wM=snVtyTeo^ZPn#MgJnZ`AbWVJ%X zAhGmfv8JfYF_|kq@*I>)Q!z#7D1LCIm(b(=n@!h{*hzt>BKb=fkrRAZuDFJgg*u%#%!-$ z0gCj$m9H?+AKxrc@lLAH*c8q#1tJ;&W}H9)f3{lUtFsc+PHx7kFJ0n} zX{h0oBOt-^2v!f|fU3Y+vEAk7Z{UWV2EMA!eqOad59aGI6X26hUpUvbfb8q;@76PV z$z=YML817b)K`#vqvLtSQmBwCf}>&^J{Jch$l(9@j0}WxAjzsn%Dj0y>)$*6^r4_j`LSlH+$HqFxMc&6=`0+E_({GC< z<6m|wCkx3KKEP{sm3ZDGSu;wi37hTUF zaLy25p|^SiDtiWtmVSm;#zs$Fks9KvqrJ!xL$015OV}?K#_|6=L$;ZNohm`mdZQe9 zdNTnXeaWmNkIJ(!{d{xkuci4rBmtu#fReVMpmzL$geJEXB-8`BhTaFdqpU~{;|w6h z!1Xb}c~)0`0jPO(t4oz>xzZn1J@>J$ z{NlEH5VZCgT12kFK!W6I=$#YvU62~8k%4UJqCg!T8%j;e;!qX~-)Sn1A3#q!PZvb2 zRNOua$4?Lu9*&=xJc7uXD3U5_j8~r$YUp3ej(v|YJ&6}7uI-s1fBka|l$aT}CKbmn zW`_#1%Ze-QfbU+a>R;`|uFYsPtWb+DYY3GBwSxM|?~#87)JCFyFB`I;@l=#Gd4%E+TOK|E5>-*O4Zb;;r{nxA-*xtu(^vC2H!ZS}_`mQ2 zhsf+*61q%m9F`fmvT@m{z#}j>3^Mr)trv%0!0r(dNfC!Vkkx<4(KrOm*$@=*qY|;t zo9UD_d~;g}8#)EQ^ZV;cX26<5!evR%)cujV&R-wD<9{O1+fOHmvW^RpeX%oPeP+k; z)cSK&mRC_cSnzJkQbU_#_h99uh``CqtnuSjvG^^k)|^Z@%% z^+w$QXvAm*e5H54K}DpGK#Zab#4qBxh_@8u%6foW+BtsB}=0H*{%1ET|g)sqb&?I?R-QVsp%i!HO^F6#U%@9g+D zy{8b4UJd&^9|htU@TAg~NJ?+mf``B02Nlk}z?dp}L|23a0@63=G+0{xFleU8Bj;N) zj#u^k+MdnMc)WK8K+J1l8sN7k=CTO--!q}0!fD-I>PI^OGO?+15nG$a%t&}hT^EAh z5Hn>(?JrtK9n*CGY#1CpQQVO%?)Tt=JaNT7v3`MC>W1t2%QwK)fo>w}-Exmm52Qtpf zd#>ekF;SygSdeNIZ{dVNZGa_j_ow4YQY7j_R(F~dN;dpK= z`kLF6vt-l+M&O4TZ1+_-^>?|VbR&w1S0xmdzTXLsEs>%^wrL_npU(N-GCYRKAezjR==EPZ6bKSO zQ+F3RoL2X#5Ui?%Mmw zq$V5Z*?EYhE=mfy^;5kP!>}Sp%s{;Vr`f@`L~&!yBIZ)-2Z6*Vc3jdfm9lM1FP`lE zs`&JD>CuvYGlur7uON{Z+((MjKV@Qp@k>`Va~Rq`V1UQ_zp#YLe;b{Qdm1abKZIDk z*xZF29>bnhoN`=@LtizN^pbB-|{LYIGdZ%@>8NqK^o z8vb!^*?$k2jYEVhwba|-P?U;eEFQ)mq4B@^=%M+AxJ1bMRph;~j?d&}S?9`9%U7v} zi-yx~sfL*QWw&1~DeY#GpsWP8uvw4wor8#O_!N_=fbIM3Ulk!fPe&<@bvT$nTyFcw znm3GEIJ+4CpT(^qVxr?`eIZ?>6VnRD1Yhi0#eC7oSDp&|wiR!+Z=DTkQ755vSaMx* z+oP5BZ5D&C01MN~&oQ{vil?F~6kz8HmT8$?gEl7FGa`)Kp#*Wppl4{eA@IL_)q=zA z|auw=w;lEf^Ka5;FSUETxor!Ra$mNf&*>ergKPmXMcq{bd zc%&+NH}D#NvtV{^@%jK@Z-D$wTyL!{n#JyGHofO&MW9FOi{n_jmSL0W_KOS)DwW9e zk$wL?)?99%j)L56H{HmHWtikwfVyyC9b;-57I0kXb)52z;y~n@r$Fe|wsa^CwFq*i z!JQ#<@~2l*ofLP6YE$NjUYOVq5*H*C$%Dm zp62hvHe8G|l5>Q?I)Ut4(kQ+9(lmT05vExY{&#w&;zsw_4h+sW7PQOAnVqBo=FlIQZ2L90~67WPephkDh zwXWPD>L*Cn<}mk-^zUQ^DswNR*;3WtclVZF^v0pMX3rnb=$&%nBwJ(QQR_%bPLQqH z#S1As=n#qff;?b}`H_|KJk7r9%wS=LLYOJ!E~7IlMoQXehYvlqk7}DAVQTzp|};3h!BdA>F_WwDO~QXH}|KbccpCB)wiv z)bnU;>BW#1M#_i$!dNPOoh^Os9M{*bqWY~9q%q!8Eb6ckLhzHVY{vZCj=NIct6DsYNXTZG~H zC4Cq^Rh;WQ%0EN#c+eCBJ@Z>1rjU=z`P0`e479-;q0(#{x8KwyvNEisLC~)wXYmot zi!tuOOow#H>>C^r*qKqAX0-7J>ZKh+|FDunRsT&1*fis$F-}N;H(%eZby4DPILSkF zUjaI?0AxO;Kjaf;dfOmzaphsqLl+02Qg#o6^C9ClJ!aHe{SS4BBf;g2iravz)?c7z=wpTkJBk9U&nEC8<1kq4iypxHVLHMyrpG&-C<#pTRkjdcP4@lA9alnf=^_* zJi71-w@{#Jl0-&hqm{c-(S!YY)5PY&wcAoOUmmA9ps+B(f5RVA){wZToNI!ZZo0P6 z6!3K^YNCtS_QqU7!(}5M%PuP8C(~$*8aF9Y!_U8QK3kQWV&Y)l=i zP!kfU5f@Cwy@ZLB_O7o9_=7qrWUIT^C;9)drUhb(tYoAQGpoIq^0ie#P7ANuGcR&? zdKO-9J|h70+oBKbtxO~K>P>2*jk01`TV@?Ewjq&A^s+x03ejM4%Miz+-pE%DS$;(6 z*T(C@(>JbNVdvi!Qn93?VP*@3Ta!uE$gREkgDt!Joq-hMj5widG$IgjWFwgfrjXtJ zC})+3-7Dm1j>rnc#MVk0V~5_X!vNlqePb71X97GI=Fa{rIyit5K&p9~5X zX80QdW=t=7v~avXyJHEY%s76+9V7PSa`rp0^ntm{)y|QVkD?*C?fVbd0S!6e&YfI# zwV#d{dC|3?c{dL0zoxFZ0l}JLs$j#VWGN|PtX^L#N$EPS1uB<}KIXJj9FEhol9jg7V0d8i9DJ91iKDZ-h^9;COt$?KoqhV$A`#G|Nnc*sUy=ia3V= zFRVzE8YIfd)FD;PpO%5?R&iwZqa~k@+=hDI!FgD^gr&QR*NUS`+0b7}y~pKcamaVr z*)NM;|LdQKs`jD8mMB*(g5-O3St0jbFv99>JqasH(N0FdcIRv}995c?v@pwyqXp<` zk1MkwlJX+c0V!Na8?L=qE0q83dxJ}Z4pk9jRktk>$GY!@Dd@JOE4xW~r7}I;sd+C6g%hw?>% zM^MVj<22JNcqLZzJ_k6BHb*TtTHqW6ls;}!p(E$QIq^a`_KxORdkFDUkG3kl^IiyR z?Y*nnO$Vcw(vpS8-&IvZ_46q%Ouh?5Ava6ThzBOU7V8($BhUrkB0fE%gUa)E;ns0} z7+q)oohw_j|3O#bIm*5qvk=OpMb{=KBH1G07CC&$!=-gO==B?KEdZI@A0?$Zmpo1p zW5Q?tF`@luPCX(JF!%`k`Y#)DRlWKQ`jP<*#SUD{>u>9&SvMMf;W+5OlGYYoQ|`!u za1mVm_)MekbMaREQjWwBj#7YL5iW=ZbZQi(|A+EdK*VA4-wLlZ9?`dufNSmE(_z6I zZSF@0##g$(#OoYU=51`eRJ2)sr)rd&x8=+?=C4WacHj`NyUS#!g*g0CB(Zl)&c^VxZU7^=smG! zUY$)y{3DGxo4nwd&O!NKyBD}x3y$E6>8O{SVcK{Ap$%>Z+ra*-%hDRZ6_nTW6%VV zzvf4TIFYV8%fYz{l&)JD!Vg3siuZnYKu`#({y?gVj%;ih!gm)j6w{YmhzY*~xYCWO z^9TydZem8rA;aBKjs#mwhK>Ht`JQWGZs^|zmw|Mg^G3tcz{`p-v1;Mnf}y@61{02x z=_LkLWvC+#j*GDhBw_7te9$}n;dh%@I3!(*jaSKo4~d=qs-UM)w3sibMlU~s^LqG{ zBt%tq1<@L>eX*D%_vc3OXZ>k_qDzB2#8eMQOPn1w>Rdm<29>wD=&7hTmyP;9Mo2>V_PPrXX1NHQ+2$s-%T>ICDw?8rDDLs z;|K*8_lzgam=$Y3b-~r33Jw)iM)5jo$Jn~LG{l71f-Zq>)wcA%?Q|I-lZ)lsSxUqKzZTTU*Vlu52~je`-2sX9e8U&OapWGSNjtzNuBtVyCh$rULZT*brK}RW~akSk{~D^Y}Jcy~_d8xPGL>2Ea_R0SsL&oSlUa z;X3q!1QE^ys|M^(6@BU^i-_!6LIlbmB?1rrUr7baZ;#CKp7JkZf%{1z!-S*lL-D4= z03WQzgyOI;vfrx>l4AOB3DZ*!e?T^{pFxTE@+5fNY-sLoJF&mkbG!aZ;#M7?sRw^e zKr@@PvgYT}y03fh!>)BSHOIir?Tul`Z*l*jOOPS@>2w0-iVgzZA@?s{cq$C2NBOst zEu4W)(g9Ozt;iZa8>##wXL&&V;c@N~prLO2k7@(5k|VfMKLGwqO^>2X%1E!{y1Akh zEv58VO*>`WAYU7Ywc9TGEqedcllQ|8$i`?Te`8fVuPJU@*a>e<^h3Ut3;0^lD~2@O z<3`t8vrRoh(k-@e^^D5LEp@tb_5LkAd+Exflwvf{?iaZBUpXvjJr;vh*kYyQ#oYlQsMdq${o@D;xi9VG zwf{9I5l06~HQDN)qP-x!bMtCSE?E=eu3mf-!dCWiucys@qVz1}+tFPUMc8oDpd7FI)KQ1dhhHo}rmx4XorU1c*;rd}< zRzgAm77D6|xLrfI6f)7m4y&vvpL22!R0?L~88Hw8I_}`1ei873PZ}&vo@>VM;erXn zrGF>COV8~w8tMJ~2b&gKz#i@V3yKt~sKtjd#()IV{2i@^UMRl0Yh2yN@d+4|X$mOD zxIoPK0Qm9Yxuk% z%t_Mt&^gVYo-6YBERQ2S>jh?e!e5I}YNmwTQ=}xPOn_6VX6VbXViiC$f`$xicyvQI z)*dOuYhXEyGitvi$i{yLtr3u_`TM4W%vZAs{ucarcM3b?Bu`Yu&i8hKl~!Z~=FCP% z?+b9>3x)EG`e`7Nm6JJZu!;C7YQ>Z?`H7B!#Kb<4inV*(d^V__O!g!zT3LQNmA!Xt zEz6Xj|GI^((Vus-nFRfnzv&;s{Aaxe(!M)uFrT*7M5dGekX^UXmbf~IM^R}lyEa75 zN)g0YSuWZVpkTB2laVdxU{VgsQr$sY?M?H_5K!q-l@gjv1KAna`g0QE13*5b!%mRKZLm=lM zz;B;QaLgH?@iEWTVwHBpIo&k`Vae0JG94n=X)Vei=oHf7qwnx-@-}5um;Zf@%DJ1@ z9osfQ%hEv=tEJZUJv*+(J-TaV#HMd!sd5td{GzgO>>Q64bh$6-%nbjw?b3b4$2q_` z5%)!8-lXZGUh`ibs%_NWq5%rMVbHR`L4W3W$T6`Q!e1X{>VWp>F9=m8YD9EZs6;t7 zwR!tGPIvJ%Ai(Y~7Qw(ij)GAgOf~imwF2C(K<&Lii^h4AhV54ns)9%xP_^Ip<^}Zp zaS6cJ8K8ilr$kb}sZ;on!}ui}jE_ILb~R8vWm@!HnPrl}8YHnt{i?Vx8g?w$HA$iq z{VTw^Rj?ic5jg`lOBhCK;OTmyWLDlRrS#Jv%8eCwQvnJ^f2p3KUS9D zv76n80QBYGnyEJUaDR(vZ;%uy-t_2QH^A-uwgQfq-j4KM8!mPtOrHdv zpD}jSI=rMwrM6C~(Lg~+S5rGn`w95KWi(2#Q3LxEo2^5qlkMpR?R@~Lj+c*+3teEf z>(z{Gul35TQ)eD%{MnMv8LPXMsA-7aQgKuC(j~2V50iW!QgD+VFJR4hb|(i?l4G`~ zxTfphh;QCcFPL6@kMykv7u<0&+! zj37oOb7uI3S4mN_(+Q{Nr<R_=J$yo321H0;rVr+JKPGjW5}doB$7=?6FG*OY$_r@ynB&Bqo&TtA^HxG6B} z=H8upS-v6E+oQ_+>gK?)F$5ageY;Wq3Tj<|6`c2m1AnBP&j6!#Am#fGc<)dz9#AWk zEMA&?SKK#^#)pb;;6je1p712|@9=V$puWT2`Za;JPT&eeRX|O4CFKI$xIdE$&h)Yb ze6wSp#=pbMe4$Y*71gCRZOD37`B2+V};I$vc%=h zXWLW}0$=6Jup}4y?o6AIU%v1xet-N}-N-Y(-Qc|{_G9#+lK+z__nvA<9a`wN9u(eD zaFTSp1MNVjne=UL8$BV78CDF?7>SKBz@-RSes@p;a^NctgcRLpC%;s9TCsH&`>3I= z*wxjkFN!c9W`wH5ATw6WHKx!!mf7H9>S_M*_AcWHkV@+eZ!uhKm`vXK%fsIdT# zQZ!uv#7IifxGRVfG{UgvlgL*A%%Ob0LIxr^)kDN|D|1-wOvFetrmVgH9EPmxx1Tcw z>Skx=_=w%l)LiD%fmfAU*1D*@ex{^^{TOSCkEoA`=>Is_!%fYvX%fwyFAJ_@{^*4~ z4DN5d*-*nE{6MH*{uI&|FOB2y)+WTVl6i$ysb3&C^tIioRB8i#RujVaLOxL

    2FPe7`Sl>kl3}*sc2Y5(M?FMr3O+baTor+=&=VYYfGZCF~y7qbgH`Qzaf2< z3L?!e@QD!eGwXhoIw~CL;&`#S>9q3M0mFS=R9KqLng&TQKu=OloL;3?vw`4DG2t;= zLVaFD)*|4x{doDImA9_W^MvyJmh5N6FRB#3@fv(64pN!?ED;}G^4%B*uIm~(5!mUa zNPMJ`5n4421>*x=YukXc5e#Ie_6w}Ur^a|G^u#~%LXqQOj4xX!lHG%R+{m3GM@?EG z-QV5Y_46@jZz|%?4t$kdei!c4A(6;V7z3Qojnap3IaR*hSf>axF0|Stmek^lnC-Gr zlH~(tJgK=0YAAExFOdcD*q+>@V}y}4QAFFZ97VTVw2in}PE_zj+g92yLP>28e6FeY zE`j0EZ@(UG!5=kC*79bL7kNwf+lVsoQphig7(}90=5q-yAipn~U4Y)8>`Eo_x*!e_r>ch4 zJaVmwHIb}sA!9z9ee&)wkLow01!Qxmq6@wWm`1jR$Q0U^kK`fmGzN%E9#vk^sH>^1K7w5?0Ow3G=gis5 z6#jdnYpKBu(t|Y0fe*pFbiW0AreG3RSSB%QnYp7C(<%Q3weY%yR@VLCs zff{yCu9GFw=b2*sj|D!+scc*MrO}sM-`K}vXd$C&5AM|m7c|ac2)T=%k#)Xz)tA<3 z#=m?kTd)`SJ%1gLXL?@#t#tfi%epU65ZPaMpUSM5i@nekO`bdViLy>mAKVmeSfHJn zsa1+#W~P%>&8ac@9PWAgTfoawyS#ZJ*mNL(-LUNkZ?ci@4f6WG5XLIbyx3Y9uD^>8XR{PG+|a)Taf zDxf6JLWT-jKJJm1<{KeeH~~BNU^}U5_E)w|DJt?u^;crR<>g*VaLi$crn^;x7xx76{CYw*tT3yq!y&iv&z&X*Gucgl_W4C~zZSjaqGt?bz3Eea zDpLCht=hSVJoqkv)8H!A!U`(%1g7D;@kwswxQBC^xs=p8_Cl?k28Ua=2O|qGwzv^$N~5z4%A9Wa?xy(6N!8h=%I`VlI{G2P-R7v~lD}^V zAJCHH8x72s=#e+aG@y8(utw^(>Q0_^eN9%Y$Z?--b`lof$j7dCg-Q)M>F&b4I{*Y> zN&wC(q{w9)WRp1w0eMsfLczghf=nHTADn1cwx3CGVg!yrF;&ATP`49c_4yg~un`Ml z#`7pP|EBlk3bMR%qFdAYg>2oZ;!cIxPs`@*pwbS@zv24y#Sc~Huy5pbf*4R%d{FBySLU(w zw-A$A0-U8EIF^R)vjX};kyBN^R|XEN^9&RH8?OrmjXqCX<~aNGmj2zg3A$Csf`Vs5!LY%CV;uAwh|-uEfXdg6kL7|N`G*i}%OD7S)b_!o zC~x$G-h*y=dSYVeuCc-{9ZTT|9PMi8+x~z&#@v+3DM(e7lIVZv$X2ma{7!T;s53{< zl!24Xlyy>NRX>wcs@Mp9ld;n8#+js~WU6v(5CaNxvU@y!-aZ@kEo`8PG1fn3h>(YL zsFUf&;x@Z68eCC~QfXAaTQlnF{k&GlRu?-LhWvAsFg)-cG+fDO(IUp_blEyXsShhh zQcIq_GOGt3u$O=WoFq@hM9*vyZadCXcAEPvJxz&K3pEGbt9I5}6misJsrW@i=-_X3 zs{9`zSQE8OCxSu&3(;lkU+bOT@!tF}-OBXq@W*KaqXG2)O+Wc7kQSza zsr1!QTQYm0=zOor595cQ#4G6anUOr##ZI{=yiZUqjXXFs5Nsr@vT2EbVl}$!{;VU9HDk6d0B?E$R%nr_5R4{qRB->lIk~9h^yEv(eW0m~ogU%s zN+^`$>G5Ol+Ou(I?Y#Bv$o@^CW(>JIR=w=vF-ZQIhQ0BaLK+6rNJ|5P{FhchKN^7k zcU44^gmo3HRFZAR`F5oN-)ve-_c$6rTM33*kb^%ZTfo_m=Z%F$FzFsY3LMy&5vnDL z`Q7}{g<5W8cM#`89~{0kJxx$KaZ{Cd%rQ+3GOTpt#t02ND{EQ7zWUqX*s-%r#>eZ* zx3~G#NxARqO}iPNXv7{);(^oqlx_vc0n7^xz^-iy8?EP-1Th_01W0ch=aLX}m4d5M z2XSNW*{=Kjg>}*a7zA~qC2 zTOX*3G5G~74gt;~ukRt#UICZWUV9@&kfx%8yFrNf0V+g%G5LNJO^s(C9Bk`Q=Ya8M zfG{D1?Xs$okO?DJ5MkfeYV)hW1E{aTay~w?z2y_xJ0l>5S@G!ZzxB_09~3v&jeCqr zax9uRwGc&2r5=*_a8e)CLhBJa@+enpSl0_MG%T!KOQm$d`ZBfJ2SNXyp($m~(xAS< z0*o-4N6MiqxNWk?of!d)oht}Z!AFIg*bhabC>Ew2_jjx>-N&2v7sS4Iz}~D|0_uUdDyV0usV)gzJ7iT7>-RlWT%@ugKHIlhwoOn`Sej zUEq&}D6|C>?7db9kW+wE^OL!yJ~ACC$`5y(48G1$oP9_e%MPVX+@7)7rde3$;yYMf zDi}@y>q{6PJ5~~@QlEVZ!&l*)LhddPbtv>0B@S48mY9;w2>1gr9iYdLTqy{8leZ#( zk6L4f1$p-)U`%g;%0qbWqJNY#gsxlOaIDQ&K-naqU^x5?d73OIDVrjM-?yqRqE&@; zDZ@7{*L&aAWS;-&7P~rzBLa0!Okt0k{&&x39{Oh+^F1Gz5`__W?AKRh}H$j7H=KuQ8cSbtPTo&lqh>E-PlvP0eAzwfsR|j#%NFX2i{1>1)Ny{l7r20-mYzDXGV)&YIK4na&|%=-Ix}#~#+lf;5B*^6 zqX2s+{%vR@vF`0b;TD%P5V5za?8IasuT=7?f5-&=RTN_BhS{^wbaMf zw2tE?u+SAJRLnp`6FZ)g7S3DJUzsAygg^DkF4u$jbX^`2%I^um__oK43=+Nbaa|FTO zsv-yZnsFrU>qo&GxoY9j$o11whJFfP_|?93*JzZXJP14CHsZp8kTn6mK(&Kf|ZHsbKx@2afB{!?6r zA?53c0he(m>AUOvWsa0Mcc1y{*V}LszIFCiyf2eY$*h^-uX|5(cZ5<9ih45KudH*i zoX5FVk&-mvyDECUQ3=iAJ!%*M0{lH4uR*>>Phgi)>%lavSVw`6HLWt7 zIl28C7$E)DvdCNT@NTy~r=A7mvSAs*ZIbvemM;SB@$Bw+=bI=Oy`OfY)7D2P>PX>` z#fF@!8iR=LOg*okZT$Aww}A=?LHEDYiIByu*pv^k7eue|y3!1^e0Q%%E_eSTiJk7A zq!^z7`c4w^tyT!mjf;AG1FHhu+y3x4LOWLIXC7w>kqY z1JERSuAqL<^J9H`f6dIc3W4X=d%k)cuTS+)xTnFV>mY`5xj$5$NyWhAD!-F^8Xnk8 zoRWxJZ+)MpzWDGuN^j_J$+Q3_-lJ#YMXU7W{isNM8AY87_@TzBi5 zT`~xxjXCKEJMC`~r1niKemxq{U8ej#p!v6RbntJQ#rSwjiup*&=@0M`0-h~{>4&Q) zMJb--@Lw8qXMn+sti_Ia$r_SB=Pz!KuL;4Gcb6dVmk>mtY;hZK33=t}QIl$WwAdVf zl)B72b}~f-e)+8qLif)=%7(|}mm5J<3J}GIjzM6#>-EAWKkjK56^sGx4*tPZNCT3{ z!ZsP_U^{TWpO|7`&8b)7;AJ+csv+M8K>@Zy+C9g{<$k2O@@^@DjT3J%M3? zqEU~pK)27+#jbQO`CloLC7m(o$&AiUT;#9EV(O9F3?< zmd7`0Q^nl&Q4D%V!vw-zf?lL8V}9g?34Hov-30sy26A)%$HIauNTH7112;G?0ZlhVU4xd2 zHydT$B{YccUHh6LJonVx*ABM^%aW6Bu1UR*=Pm{eq>)@|!oKHKZdGbG+>iSLrVK=N z>dqZxSzcR`6u;hu^1WthkFFDEk)igf;;fR*?@se?_&H>?ntMNKxj6;TE4#Qv3iRzH zDl1IgCK+fu9)aE*dsso#Vau7}g*z$OtIt@>BJ6GE@LNT&G{9mkee3E(7Ce3cCX}|z zBYf8e+^IrxV6Qna{Trq`+8}BVfvQ$C)I$(=2e6?W&SCBJ$kA`?@#2gtxxT?^=r+Y3 zBrJ7-+Cs@*5t@F3gDb9wQ?KuPUe4Kio!1ic<1mGAvj=lDSzSwKb*1Pk)0^jz-@47q zD=o!j*7eaS(sP`c|3r6nv~jX-XSvG{DC1s|w#mq6Z)?Esd(Wxk???^Bvh53e+Q4uG zj-h}n@Hn#zf^86fZ~%kvsmL_NOVNk#}iEt&qCX)jiAvVXLqh zREM70zQBB2j-q17J>9Zb;WOn!%T#9K!5`yJq-y&zxqlG95slWV`%RQ9uYI>@LgOW< z#uRb!a@?`ei|4EB$S)_VxgTRpTfSd_BXsgAd0_jkmF?zc;53iaQegUKNI=c&LOm^A z+)m844eGPa=p)QmZ;JQzH9hKTbH7QS>U-pfuWZRd5QAIqu5cGC zr3W*0d9*EDtI?@)`xec5^Uik~_LZ1IwFUm^N5-q6f;8ZQoC3vt$z-WP=xT9?+Z-)DbZ5qhgO+;9&4 z_N++d;Fpdk$^mMlvJy>>wQncm&27$fcl4i#KJjE^<{`UD4x4xKm*t1p>F{t%)QyMH z+G3TpqdZFL`yJ| zEutVG`eoz!ZKchmxH=&xQlZP}$qB`1AlGa^bgih^Y8X00CK&qw2Yzt&~>UeNN(6JD|C z`mSC5Pket=IMA+Bq;K^_rr8UA#qmb(_1I@wN~7F154Nt81%QQ;CE^Ng7kgW(j-uWE$()aATWE|yby=CvUXYnGkbCIm&(P8q1;Hn2DkAezl zf+64jU8Jf=Z4zIW4Dg^^m%I*_%$XTSoa(ZWsI;7oDgb>^OTj2lO_jIH2P^-QZ~QTQ zq4?|~Ja9)DvENW}n8#Gs!HeQvqvBo*;=I)~$?oT5*lRCq3)Ot{EfvnWnolq{ynlCn zRd0c?SjeDA@%bvXu(ZbUU&EnxpLw$TXJZ@Uvk1aqC&*sFq$ zL>cXBJy`6atsyZZzWgMy_{g6>E9 z_j7vUQhv6$v`c{7+Lj`<=U6^pO7lYTwE z2*iARtNApD0?MJbr(z`w&(3^JtujAGb6eH2^Yjh5p^Y0u=PPpOefFfpj;9%Gyt2L0 zvM2aO-tRDO&6#CXtV~W`u5@}*>)}1v#>MFj$icQk&X({z0;5omC8EHWoJ(DPQjBk> zoi}c}m;%kJweew;IWe3GHckO`c)V^sICCgsAz=yj&lG?w2P~&@)1JrQgmxLY?`t1u z>At8fF7wdrW}ks>l=FQ7gGV`AluaB0)}BRP9jIbDRTP$>Z|M+*`F9VBif@o(ZF@Rb zJ^S6kOoAr*@wmkUMr^H_zN_z^Xgpfg5HEwOnCEiCtj4b1O5 z{zyr@t39+Utn#D~UHZhS@%M-8+EHPz1g4YYRhJ3ZDJyR%*HX?9-VNc3xm<4LJh2}s z8J$x>CV*_%FP9i-2l}iwh93@_H!hsXKbS7n)Ya5s*6NBt1~Oc<3w%S(X`` z6jJFxNZr}j(-`)=x5IH0YvA4jWUVu8whLk&P^!K@t{MVW1>g~vTBMuNX|9t{1qE94 zQDpajcRNIGmejp3+Ex`(eeb>6#K}}|TBUj~xv+|^gCbem{ok?e2~-uo)gj?28o~FH zVy`KE-2N<&9)6+6Ma0Uoyqz@QPLFN9VjoH#rS;HU*Sfn#^9}RR=m!73a`vK&!QO(pkb@GQMmtNf{#3FN}*w`z+uOxVbx^|$L zND3H0$WWwC$+uWe%O$fJf6O1Ys2f%DH6>7d^f!X{Hc|m4mU@+mP*APr^+!(hXE$*7 zj*kW{BGxrH)l?hLv|aaQ*4^w9H``y8}R4_CCD+Lmlt*&SV0Vi0kk zsb71J2czktu1o~lle+I8GbGw5=0<&&_B(zmjA7vjEnlwZ(`{*=z=b!H?X_*4%x^2} zvfIzCcYB&B{mlUv*edR=5aD?AwRF;^?COQk z{Rc%NMbFoSP7Y@j__`84o47}fzh_Q5(RRATWUpb*=GyX+O^K6is?K#kBvvnxgE6oA z2SjUa9{jOt9R?XJ3hxzyF&~RA^4_1IR!S~+Zcj|IESh>qX^eNqw*0W=ht8l(=ku9) zcQkp13g$mjzL5_{Vj7Mx3NIV2nm6$ZBs>vr_uNta5)D{h)^7JZfqy9k;6Vd5hb9+jgBto z@&B#xa4(vxU4Ap^Yfdrq^g8v=x1Awr+}Z+d7rKttoXWgb`6J3;twQ-AsbGNT93DX`{Db4m z#$KHxwce%5oZkd}Sk-+OZR*~7R$y}RG4yXdn>-ev%TKXyf%;k{0fl6)ik?Tz4 z!45>h&OLeA>8G@b`cDd1Hf`Y-9lV*NPvbkU(ujW@xs~us%egYFB9sB?oL9}&J)!O9 zm@ys+I9K-bzBVMxVmuMS+VH8b^TTkN2at($lRjpFbk!Ir5WZn=qGc`IKaIE5xt*%n zWq~#vnFJ<{^S`i~S_gJ(#ortGo`_be5U7lnwwLTv2$D@I8c4bM`JVCaiJ8CI`THW7 zJry7TOGdrcW2od*EnY;1Se(*<4$=sLBcr0-!lO#r7%#lRj1zTz1P(~%@957m3lF8= zE)yj5#02tq##!pjd4zmW>jpD4w06eVfTLttIE*%7IaTAwv}YQ*Tj(LnN`{WiZ)5z zX&Lol+x?C~+!)hQKYM6|R3i(xQ=Sj^q(&q?(H2K!m;%L z2HeiMFQc3Ru6iPgx`8d9&L!Ywe8uiO(0~0fO^@lj^9^Qr7eD{Exb0xChZ!2_*-T!mn8eD=%PW6(@0;|vccij|H>y-C0o6U;8}sa^imF!AFTiH+O+ zljka@dwBl=@5Hvx6v(MU@H31VhB0`2uRHWeE~vFW1n8 zxV>dc8o`aaH&X&xxT{K~@u!{jQ@AI`3zDvfwxUdno3Olh=-7t}6AnGnk~eNuXBG7G z-ex~D6cGAt_aa45f52=M6)#%~zh=|VtyqW*GO!AJfF3c_Rl5So)O4bJj@?ls_x?Bd zcDC&OF^y_~ZGhGhb!73wm9SIyo5sm4(dCZg{VdInwL!Z}V`q9k7nrI=%7=kfP94@o;b+*-KWF9o zvTUP_tqe;2?U&%FFZsh(J4gAye=K8+)xYE8@_a4hZDOK##&Lsxtsfdc@{DLO(&Mn| zgol5;GooPcjGedmk1762XTaqv5yU(7*+5u)eV(oPq7WlJyCW07xig<#!fM%IWAw^#}k+TXuByGI;!ZyToOA6L=cW9{eq${~{wkUHo&2URfC zPX>FiMI0-0xNVdFxFUAG>{67))>y(&Iebo#?Zk!Fy~xfc@}czE%^R;&zRj%Ee!sIZ zbIv?aVC6yM>tmCGz1drIDr+ljyJ7xMw5Gz}>gTzxb~$}=@;x*C%~s+qwvA7G>>LuM zh>TB13rbYH#?Vejte!OwJhMcZOb4WVK;uM%E*OGSV`e>xUUkf-g2|@?)Crk-MZUFu%&N zXp58TV_pi7WSrzEeApBPU4;K9Xn<0Cjt5d};Bq^^QaeA-!pW0v%*@sFp_A63la1Fm zf8L6|?Yi!yr>zlxnej}9#C8qFq@vzW=*aoT<>oWnvV4rEG#cKmwr?LZlQ~~Q{wiea z;O|s&`iP*_f~0U~wl+h6qJou0B&YV~s}Q3YPy<6oI{BEu!h!x`boJ~$Ze%JQ4^h!Z zTT>&&DL)=dJcQ_oke40$@swq10N-?>02otKm7hb^v=vglCU(JQfe4dn+(zfjmO*UC z+TP?@3*Ci_j2Gt$$Pa$8?J}B46pZho{a{BkfT|(6`Pf6hN%np)Ikydy3O25Kz$)tp zi2UEyJS80Ygb}r^MBQU=-}FKqUM#)PQf{w4<@S1TE-t8vS?IkmE6mvwqCvDdS0PVH zI3%Sg@^=Pa)(M|Fcs1Gy?h{dpC=9KMDtXS$+pF{>rFV0-gbf7r@1mR@!4cOtXM|Wf zidd;SSyy$`%wKJGaX$4umwN@hh1$DmAmM+l5LmMIFniIHJ-3rLt}b&bG?mqG5Cmg% z21w|tk#SH}1pWzmjS6`+3ppx3ZaqJ0s%6~eE4UNPoB=#NyiWXZ-Rdp)`WR!LcQN6a zCO7)w>pK|ZA{^zXaP}q%Ro1I+c|7^R+m#4AAU*J#`XtH-N^P@>2qw_L{=a2D?&h%J z$ZnNG`aFWw+>AM&z+>}AaXW2UH>C8@!`0s-_1_DKkE^`@f~%KqQt`bfV=-m!3;%!g zx40Z+d^-e)U;wt6lyiOa?e%N68V;u=t3k@vJiPU$_Y{0-26M^e?xptN!K5>$FL&8p zK>jLdx;I=L+O@~>-TXvv{UlP&yc_%wK8!<*pdlpDuVtfVoNxnk497P5!H1^Sc&N+&wvY=U^iVjXJqES9=fnxY$upgLF!6;8{Z_XG4#}(PE3 z(k~@J3aO)y;qC|qaYRXzOUSeY6PCc~g9_JS@c*t>pUIS+zGcrk$L_NBo!p_Pn(}P= zl5-`lW!3bwrE^O@RA`#ON{3ffjUCfiC85->9e}U@qZ*MX z(SlVubRwG1)_HOH?`xz(#P7u&=4LJhEsdZ%D_Sw?LEcY#9vCP^=h^No2UwaOwAJM~ z!YU6>7?lFcQhKC%fYOPMLgpxt#ePd=Wm4*zV;=EJ{JA!}C$R{LGv?N~rW}+^?Sb&w z#cjKn3gsxvv=i!MTNr=RYg*ffa`A;=U|v%Mt{F)O*g+!t`2UM9!Pk4Lm=+#Hh?Xxs zymx(5L8Hh2Wq{TDMg6hH_GGhqUJS!*9L?(Ym-Ief0PDiYaKl`ZGnc?hn8iJcDDE>PKmk13l=F`2l!ppxwP5i6k-v0TjRiycpEo2^F- zuK%eF-DXX~QXwy|!|gT|-65-*|8#u3rkD z^O0A6M^JroJSnud$-zNm6;XzE*aa12P>F}Gwexe?@>7CiC^|~(q28rdmPxeg+rshk z6wYhb^Wg*;rTkx0dnpy*N)~yCvOafk(6v3;6G1Os0R*$>A;0h(X9_l@1YB{}IO*0F zNiY5BxQd4k;nt$m@?O5fo&xII_hS@eye8pLEYKkhkhLq9{Yo}k6HGEYcQX13;J=~^ ziHLy)ksa~#y3q;R&e5$iGE4gdPaUg9Z)e8aZUhb#Ftk`P7T)~{Q^ERD46a5(*>-Ar z3i07IRsx!(5QzefBQdHD3{~*)?4ZN2J)H26kYLb3ZNY0KG1AS`JLr~`E);s{G4&( zhE4*lU*-OR*cHDcIcerPa3%%OzZlk+9R(~N6D<8E=tKfK04|n^`mF-K7D^R z=GZrPM?^#h^8!#+37R}}MlF!)RSHIo`d9)~xqzpklFkj!*?%h2=FOn&>WyEpUs7Ps zXIwiw`}JYOwywZY?^b&V~t z73z|(cP6+f3F^()l2PoN6Yt63Z_DCX3x0+@u3Di=lf3)hV{K+&89$5SuOx%vLrAur zpKqaO(U6(hbcDgp?$0hkw^}s#IM*BNQ)bi6$1LrY>6_M7Ux|#wjD&&sLl3op@)n51 z`@K!ibAwnyomg&6R{N!d41XpPGYCT{$5@haD%IC$zv*67-HU5Pim(xKC6P z4s5rZfbb0xB(e<6L0_+L?(cEWG+!Mxb(`pwq#p)~uSP@o)RYHuaj0KsqZ;ZfK9wC# z?Y!ST2j<`VE3Q*lZdg^|QMHA1box#32+D~Hxjd!L3)vU>)s~e_D(85;?G+6nZ1`|d zT)fU0U!gU!=q1GFjhPlwT~;YEmrV%sEwxXcp?%<_SzrT|;~+nrpgp6YtrRg7J#q0K z`BZOV;-1v|5>L#Ad9kwGrbS5t8_ zlW>5yyPvB^H655QNd{9}RXAjd0YcCR@>mGkP93=DgdjdYWz*UPUZ8{Zu|Fc&(CzEl z)XqYYf2m>TU$_`#F$N9;U;5c&Fu!VlQKeA*7=J1+AqJ6BfhSUSK;wV-$i4=Y`}}+~ zLd;2eICf|}gwNq9KCQxMREh&1=&V-pfIKtMQcYc)+wFnzbDN%01YK?lD^jDjiNFc| z59v|FH6~zE#CeF%L-cjoAHZ(S_HZ#i`mk)Z-WG&315;6?RT01^*2K zvKn==ji8=Cl-$2tN{i1>*GYnUu7(1_|@3&0zrF!WN{hT89Z$;Pm zF*h|X*I1I#Bk3Z&oG+Efo%x?H-;Gfj2^O4v%W0Oe{nf5(2244!BFkd7_(`yXO|kb~Z9z#V0llRayx(DC}n*0YSM1dUAR$sf@vxP{ymrpLmD}tvnjE;Z2nfp_s ztI7{`Ugni5=m{*1-+N`Y)3Y`nY#;dEfa|w$(-K*94&)YjGRRkm;LTEW#4e4SClrHk zc=T`QM)2Yk(8Xh|Y?Z8Sf5R!MOi$M^xw1Wf+BG^Mu>TYUl6E`G3!BE4S$KF0{mB9DHAM@UJ(o>%GGL4DLbPc6?3Nc}@Z z{U{qLmgG=Cmo5#sh7kl4fU_4f9f-;R^i*c*U8B&GR_*PQ+;0aZ#m@qp=6{ z?Y_6<#QOXuTpRunM(n<3((f`GmYjX_{-mMS5X>4X@E4rk0ZcoBJf=({UG431a&8O( z!wfU4puztnt|61<`XS#deA;X2d()&qM@`4Avi_-aCdDE+)Qem8Z{HIklWeiIGndxH zIN6<@q6~cH+oQmVc9P4j8H^7QTn3sVUH`ia*EoXY`4zt`Xdk8PmSu6h!_voOB6F{R zXDgz-&zG%B+nSQEyuEwknSvd+0t)>cV>Arm4wYX4^#9f)@8qH&(<@>ey@!?YHX0KXSm|kyzVQxa|GdfX;V$Q-J>SQlm$3PBLY2bGS-2YiCt@q_JGhFD{Ou z`!VB6%9eSzxLk`#>$U7zbfm?TS0lO5HQ;yiVWSypNx`Z*3$6_ zXgx3f4K(`-;7~p%=~P41Z+PmB)1tSA51B^}aBQJZYJdOeBTFdp#TNmKXID1jNPFec zq^)a)Ao~dQP-{nU7;4qJ;HWW=UKoKM=`O5K?K$3<&pIL)kUp}ZfBtCRJb3qj_Id)& zwU@_HiMHW1iB1Fv2cmFNCL~Ftzgkg}bcx(<7O2K@l*c#wzL&+ik zJN0ZJ>v3#nf-mb<6U@U>>SLmQ+%n06`JVgJ>Mhku{BL94rLc zE)~mg!M*9=YnfED?}rq?`;iQyg(=|qBJfp^1k=i2ff~wcU;hJQhvO ziXCeg%ej$HH=bMaK9%Zo{cinvQ;x|1{{}NpcNz zAR?B4^%hlkfS|2)(vha2-5SN^WXm0yYR2ex;pTIYq446La>L}%x#h5C;+GM1HU*e@ z4&~5&MWMUI!C~Hh7I-xiG5Qp3YKE}LBel#g=$CsSBmGA=hzY;@wPfHd1uVB=lm%p7 zjxyH&Tjn;0LkPw0Lh|=gr-DG}|cndH}M1eDt+`C8dev zl{koG0G6+t4}z<8fEABvXqV$k&Zcto2Aw@jO!qxK9Qv<{ywS+gp{ABS5Gdw>WsNU2 zyxz?z+I#4%&t`BMEOC@4|MuU6i@(6dcPJwNg~(O7_+ppf5V(&uy$i0$zg_{p4lwFP z?B&mB+}e$@3rS^4q|&~@Rr%^m3nL(wB-p9Pwu5PmAc$+gxEU0o9Mr1zN5IBnsbNI>UE{kMHH zhCzEjj6~;ux=1NrUo+MT6a5xYU3b7c>j%ps9%l3~`4wD@aKyUjV3e$_lkFu~&@=-D z3!)m+%9h(1Zie2)PUI&<5J5+0(8`y6)I&1rlma2xF$R7!{Qf-!lgTsBDVfRV9VLgy zsNDrQ3TG%-#OG5M$cQtL7+FHPM%$g3gw(jro<>vKS|wT!XP?sb%iNU|4jnPvHfMpe zWaE_6%pMJ0{)g_piTmjqcZaca3*2b|;~@a62xkFKxzgiWT8=>%k*z--EPLTbzW7pE z>uj5fwuEde%W1{sZv2yNDJF zPegu{)GwpEAUqEkDhq=VMHum$jHeBbEjcw~(mKL*U!&DR{3~#`y=uZz-ezuJ;bzqD zD{KKs!Vp!G-R5Cb8mF%g^n~f2))k34}euI3?16Yn6c|FJs}yV)dS- z#eK*(9vCYN!;ml%{OJ|{dkF0K!D?>br2v9`q(`FST*go~Lp<^K0yl>GJ0a-OESM|H zmO8t4%aE%38=x^_1V}6dMD)sClVidEV|d1K)0<+kzRV#y(z}^L+klkzpA_qeCmvv9TE|;Q9RWY{qY(n6bq*i&E2DTL=uiswA_bfhU1qN69h@pRLW-oYcv9 z-$3_o9M1v)>LZAeen&vZ!KgvN5+&KDb-{xs*R*d=ecL{|p@aB$?gC$L8Hou?BP$r+{{mVCzHM($>_ z3i!Wx#Y|nX3tQVH@|deJKDl=^U_(f@`c) zc6CTkTuweWl%+%nE@W)G+t0c~arH5q1wbU@6r2@z34kdiyn1^y2 z^xj-n!1CBG9vN$dW*Ar~3U9#&5E{kjMJw8YTD{nJ=_dJH`r;UFnLV&S^t*ewnmSuX zRpniSzku;i?(bt4ZMv>@4grs6)QqCHAVUY1`2dCtKhVZK5D}rjeLw6p9vZXZc*pqC zp6*>z{PV@VxuggODvJ0lsD%hM^=Qmso+F3>^_<75lT!G^8I|!XxNW<8Y&_1EPN1bw zkp_80-==YNh>NGWJKFM?m}g0XoO?(_e*&=QVG$Vp=f5l`lj+7bttorf5wN_X*y5q# z{VA-#IMz&P3(Lg&V*y4RpO_yQm3yHj^7rzkHlXr~iunN?{r`irC!mZ5;vR3HMoe4`6YrRAG8T&3tn z<0TRPPqf3md8Uwo#$gs1>;r1>jSavEr!=GDfctAg(>zG-O;{qF5jouc>Dyl}uEbz}Cb~!H=DH$63?y8U)%dxo( zdAb?sj3eC*Q6V!Xfsz-ur5tJI)9y54t19RWI)Ub4`9EflW0Q`5*N}42>ftkhIz__% zofl-LW}dKevaN0sraQHlX?S@(N%mL)y~IfUUiM;WU9cRl_OXI(9p&|ZG(GRPZZ>FN z5PF=ke!M$}78W)R%i94ZPwz|HkDC~mbp^TYU^n%bp+=yRMF1v&a&B7NC?!_2>?Sx@ z|CdeZBrRCjKI-4azlf)+^`yjTC;B`!`%1*){p~FCTMY$hFQY-q90)%DwgGZS>a++s zp>!EJaCAO`qvR^WGqCWenxL*j5PNfvf1X^o=U<7Lp-*f?QO0DxCk?mw@7%GB9LmTU zcc1wWcbo=60mvIzFB}2K$?h{5cmqbtl{fchF>M2-<}(13w+jrqD|j5s-WiF)x?4!P zgxpjDj6x(3qq@)2UU2zeB2R<+`AL#tyW#T16W^FgIw~ zEz|s{{=oe6Yc-8;`3(!}=~Np0=Mejlr22>Piy-W7XJV1`@xT3c-zzmZPZS=9nU94* z`T(m6XEb91U+sm?dtDqeZA<^zc025wiWqidWz|V z)M>fTzjWK7?CKs_q<|Y&_K8jfQj(L_u5uat67=njnEvm0jBh|JKzyhX03{+))IP~RBE6tni6 zt>PW)o6k(Cj4pFCvhQzB5^&m|mu^%quacmAnNf^aFs*DoUk$gVeD^>C$ZIY;K87aM_5Fyn2JzzM00SdngG@BuvSqdkQ zQahc9NF1|<+v)8k=t@S+TAg1Lyj}3{f+CK?Htmo&(Zi5547Gi(HvTT3jBth1;kS>jQ8x2;I>p>;294?%Z$z=D|O&*uHaBro(TX^V1#!82VR4uxB- zhmZ=-j7(Af7{B%I9_AY`?xUvzC)%JVBJ&F}l8nFadc5xVe6;Y7bw+pWX`ajUo2fcF zH$`zz@0|E0ki)PZ@mTWGF2<#sb^M7e+5iXSGWP|?-#0)5gcu?=Hg;@bYo)4??mX+7 zX~QqyZ9$Da>v!1#=i5BIHcbyxV(Vm;52T&0~ z(#=c4VBjkJHC;4}~VZ}aFI1X}~R>1i+3~vlz zqoQM81uSlXo2p4$^AR5I4~$$++{EVCH=xedx!*qw;{_Y)L%@&#F6`*8pww3D^@d$I z3N2;uwDu3u5GzjU zpsUXtaCDGuAA(l&b}-kgB(||v;iJ^>zIM55yZT4p4!)Xso49l2`nR^%@|yG^AIj_F zLf%B_)l~0g*WtW-hEWoOMx~js=33b|)^oRfZ>9h7MOwR1v^yKgxdGRLB_IC-tjynl z;4x}A`zX-WpcUXXee*tOUsgzso%%r+~%aO6;4JsP&k4VeR98?4)p z>IDIj{$eSHiIJKsKfVJ+!xQXW$Sg#n>we|-NF zJbYC0?W2va%2#kxKq3STl!KT^N!^B3gqtM>3`>ev0{dvaUgTVQCC4jt064Z?q6-{{ z_yT@v7-D~ngF@`neTbci`M%>4jSw2#yvdT(d!v|^cb;>(KZbife%}6C_VF4{r45Zz zzMhLM6d9{8cXdMI?wvy+>Tzt)pm2THgi05FO1TPU5O~pQ&ZgwxNGEPX#CRICH4g4f z<_&{vT^!iIi9l%rP=rzGT?T*?xv));%VuTSXSvL>^1G%d&<5K3R_q99Lj_E6u3Ofk z!!us}{g2fZ?d3PP+F2j@%X?cp-VlXZ4U8Da%ikE~0^UL}#74xl&O@|-xf20vW#Sqg zcl3V18F*DIK}$l{rm2sf-r=MiZU3`7iXrc_-XW zCYKL!-Wje)L)|6mki3vNVdj=1)q(^)h2{dETvPYJM zl%^^SU0rj7UG`uZ;nLS{Q!PkOZ=+K|D84WW#HBHyB3OMobtNb+=RW=z`JU%^%Nkll z$o>W3RYQR>hH%m;a@)=6dqI*rjKiX+Y0PM#%twZ?cSrWq{VV=vH_mQAmTHC`mg$SP zD2Dss#0~}P3N`lv=LsMidyx$?B_-8?CN0s*`i;$I-rks9?*=<}f9y2V-xv7Oi0rO! zRJ@zZUSJK-ja_y(RZ@j}gO-6n43If5H?_=JY1jtdwep_?VyTx~mcP=r0iT{da3)Jk zkPcL#5c_Pcd07+?Y$Br0%gxdp5o7_6dl*mQr5Et0b%I`gF5t{Gf63d+O&Qw<$qrga z6Miep>Wzt-nmGCMMw9})sn}WX<{ixV5_H@4_y+kZ$E>FIu6ooH z?{!{nh8lZbE}2QaAC4uwq{(=GP`rTZT-O9w;T* zUooTyo!9BC+d#}wii-enS4CbS$()l5X84HVe0`x2wcx~@C-}$YLX?oIKT%$jX9;i* zT=|=Ni8F6Z9L~{f1uv=CYe0+$`3VmUfP;;MIq2E^xfrZBTsQBM(Y%={_QJwI`}TTz zt&0Fz(^U5F=F~KfNFEEnG*4^RIZx=b_X zEp*Ez&Xr?7Ka-|X;vvsCm_e`jpEZi?D4`uCW&A*N8QdtnUrRtE=7v3uu-p`(_XR^% z>IX#ISPm+ z1<1yhA!vy8h~Y`F@JyWDcEmknv#u@kYPukjjuyfG(jh*fRnxD zGf(SNYiHnFt_V{BqO$1>=QM-tciqQm?;lDno{-@_@+rCMiKJEG%ZB|BQ?zFB z!<#eu#}Yd!#SX`I>+c&hJygFq>@W8$6^!t+!>A%Ku>jt-pB5@*cq>UO+_tWh1-+x7 z#>FpeEtOq*syxXuI&T`-`v-^@n26W1)6En^iW;j&?$r&!wlq;mJiJwhv3I__k*g7Bb=HIoR13+|M-Z0-J zfCmSVTgvZvDVvwiEm>6r3+`zS=|8_Y)UHKeN`NLs)BATuG%b%vu-4`izK_m}P+f9k2;dJV*>+ zlElOd3*S2zyE>_hJ$1vTr#JaFYDhJ+gO1Efl5{|_@PYzzN(05DI9*Y6-NnVGx6}l-1JdO z5j@zmIz{txn(j!DbT|#6j*{{Foc#Tlx0Ta6?0>xKH>f#JPdkRkFf+icZNM=NJn{nn z_nxyWiEtgO3f0?MK&y(y%ewc5x6p?&_nt`Ac*Sr3SCY}>!TOnc%}OS34*Le#JKsro zRObC_^(%>PMQ24pf-+zyLZ?o@-GjPFXrpg$+aKPy{X%o3o+YmpJhTg{4UpAu9!e`C z38+pBUO4i}LcFD6-k6u(A_j0!as3vrtNSkZmnH)jjX}T_<3rsVM#8+?ClE6iG*BC} z6|@VZo}6De1k=B^Zf?0AqUM^AsH3txQj}H2ioOugdoZ5r-`fekOY7R_1)5MY0>eju z>IFFFZK?#_mxH@IpnT`{Ss|rUj?n9k*rxuf4G$7j! z$T7NYf5`Fjs@JLESrAp@8EE(pe!7E_Jdpph1BKfNfW3(o8Kx9+c%jIfGt$b9GJ+Uq z1&Qm&fRJg)o{}e-96u=%t&Mg`FNQ>AD*94)x$-v1eg+dThmZf3I%Nnj{HlaZP&L&QdLf z$IAATYKk-Mll6OR#M5@d+=)DOV`G0(zmT%M!-?5G?;HdI>QmPi2(>=JgXPDEE?eCi z6i*F*rXx)5mom0W=ysWCDie1%4K_3#9CNzl<+sJH=G(-U9bUBWw=nS7< zr8>7+X;G@QG(J_JwR*BbJyOzC{>N6B*Oz*;$)i`ztj;dkQV;3#$ysfw#Vn9zhEq6- z1>Zq+ey;l6DdI)DYx>y=T4}@$y4(47%zJjXKgCuTtsK8$p1gbU&+FU%|Do!;!>Rn^ zzmL7QLg*NYO35f>95V`06hbIvg-B7xO?G8vCF79H1|>5bLR4nR%(3@A#yQS8_vg8N zf4}FsuIE2jx}0;5&wISa`yGB->UhgHeRSr6P_SnI$0CliJG@?|tM|Sp>!eFoU>}mT zSo7+nu9IJl7W}rX@i=j^Z=^Q)Vm~ACMCpkNOnZUjEk3H$-aCmSO@FnISZvszlC%z{>VDx=KCfWm88U1-QI*n z9o(xOmdq1{uBGf#k;M4~j{T{pmor$;a~my}6x_Os{!?Ihod( zU-F@X`R~eO>0(p=nu=>Rc7zMkq~3p1d<>N%lE&6)R&K{f$;sCoNM>Gq{wI_1`-pP$ zgSS$og@?O|+Pezvx8zGgKbU-o$nJ~WRxq2sctwpeZ0%64Wm@ky;{@zME-J5BcchdlSHHED)D z95Zk7>E|ocHZyOyU9n*VnfGyT-0Io<$$Cn80ZtAoH^t#w@LuvN)^;B$JnV6@#iqrj6x$RvWqx%)H1Esw8` zSif$VEqEMV+Ef&~6zCe<>7ijc8&fiWUal!E!_B#7^#RvSHjh*sirc6p6D*zJf*YvI z($@`CiX%&GmzI>suE$^0uv>KPl=X#Pd(7hGoT__ug#I>-SX)Bs&0pck=8r^^cnZHb z@)o8IHRZL3uqGGspBAp7(PoCS7@gYbqcat+-3z^?BqemtHAFR(n4=NTuUL@kI^G*Z zm;aZ4f^}o{!*KuE^dJ_hCGU&;vUO5=Mco_J4&$!O`-d{{?>hH2WvOq^I>Uy_JHEbS zdDX`=%;)gS{GKVD72OBTp4Vb?tYkd}shL-l$F@6XB^Rz~bgnVWd~qM?D~`mh?zsd_ znt$-(-IF!_P+UA$8LG^6?t?ySqc84BlZcsKaZ>*M?0H}7Gaq|)WvnFD=)zg}Z#}91 zV{O9_q$!!zxMD`Ucrm8JP?ys^>=}>sCS$!otH|%-TX`J?CHGPnW7dDX6Mluu@zP#C zF;vTVCaT=-fognJFk|T}VBH;}q9h>T(0sC0^pmfaOj*r9IWKi8;n9~-iw3hD)0cP# z4im%s&p)Sy9*&Z=tCMt)dq;d;d3c2$|61ev;UMe^-D80v=R&QYneNrEuK3X&|Mtbo z)_7p-sMTApita61mdY2)V@LgYw|UELE^D*(1UO%-eSu*)NBvf&yyN@YS0UAbuQwxF z@0u3F*tTqkI}r8Ho;Zz z@cElQ*id|+d)gBdb>+oa?`AL0qPfX+Y1Q?!Y0iy$>GNNYyf9aUIHq~2-;GC&0Xvu6 zMq5VDBg0IsDNaQh+Ptccb?#bSR<*z`FQx8|?-xfBRoBYvegy?NSiItDDxX4gsPV%K z?{vrGuRJ1V;tk2Yi$Chn9OM~_3&)a98BfSDMuUqps5fUm3$T+{gcAc8lcaKjJZIuf zt7h4|Mcq3>E&e)fwQ^8jJc_&YdtuWe4}&Y%#vQ{m>_uFR=acoQqY>p@#GoQ)BX6+z z7xys?Gk!hcLjUbYj^7Y^X<@az)%q6S>0pgM8oQK3U+vGFbANl)UUs`8>qyX+FOTvo z&&KN3b{hrHf>VSdjW2PDIF*PFlSRgHlMLh8jfH24ssn635stqIcW*@*c|0|FYCFZ* zd-^n$Z`CH?>%E0?NzPtx;elJj%CDvZ@Qj^iH~G{_SxYZeeO?$Frd{ceO$h6K_(nk9 zlh*d8A=i+j>VQMxv!hCUGH#J-ujckm&I!a8jCfp`E>#_~VFg9r=zuXRW0=iDsK}>?G$L?e!=%6cR0T9?`LECi7n$G$L#V zT@mQ zSOgNWN;5Yfu*Wb+t9yz$hm}M`T|f3)Ag!@1{q!fdml|1a4tLGL%{wdib8Q_W*Mh~a z(e&J6b#7l|NHI~V`ht?+e!cg*_(rYVQ}jJAllt?Hu}n8Gx(weAj~|!6MI$or+OBJ?bs-!X!&K0b>il8)9hr(*k;phtma-<~7In^_` zgV?WUyj#({DR69{sp*J}%@|EW ziI&$h>BIgT;+_q!j<)-pc6p0Ssmvh~ja_U*P1S7#Tb2dWWJb8%jEI#(&mZJXUr-Nr z5h5~}%z#|=-zVMq|C!D0qU>@ZDbH6rOjVUCDTTw-%*?4Cwt^|4d$oszmJRbu?)fiW zZoAQ9*YVJ>Z(}>Tpv$%)@>_Q@CIS~+DZu;i0W-~oE8uII;XvZtT z8vWh)s}^jq{~1VXDt4-pL7^Z|Qoi?c_|7qoM*7@(LGQs-PvUdTF^K>q3upV*yf#TG zog97)coz)5o7|=OBRpJ~M!XZg|9NZ7A??Z5gxA<1|6njt6KCZ9a5W%mOXY+7MNO_u z(Qlp4SU4j@E8_ybeam|^ObOe)z}<0-Ftm5{-_Eq|+;Hg%j+?tm%s7(?Z#}H$ENb9w z6aifh_iQEw&=G4O6}amrsp~>nL#gHBjyCznzZF?$ft)rG(^+JILT}uz$rjF=vbPyM z2w`X`OvyX-bqP+uyRR0LxqkrHcu8^T~lt*yC8nQB?*^7 zfYR@b+&X%eh#N&u@8F--({uyR48SKLxox25gf#O=VoPNDAbOQkH0HS6YsDzy=M1g7 z;gPDTA9lKps?ywke!HBMHXdzhp6t9^2fH}ZKur8{goev;eHi%EDq*OJxo{ogpQjtc4C;Sgud zmQPV$Yu^Q)DN@3m57$rF(bH?eE|x?S}RrmjC;{p7OM?f;m)mV$Q&-j*0%KbE2TZQjk55 zG}d`vQxa~|d|Km4U2ls10RGLBKwCKA;Z+rYCGQ`0dj{#{?G2&*;yCo~OpoAajz}fa z+)C_si33?R7Yd%E5N{MM2pF0s;*m!02v9rr#n(IQ1)O!CE?0AFFF5YYBaM>|0n$l@ ziS$g>NLmKB$9W~C{JmOHDGxnTeC7FXVF z2e;ds94bXx{f&MSPu~=yiMa9b?sq^d2%n14s0-xF$%eaMEPspwYJ#!eRLlYb@*JR5 zsi;ILL#GoGJ{PHdkG0QH?3dW3?$Yb-^c7rTV<_I+9e4&G4F|42*&mUxWq^Dq7(8UB za7Ej80OFaVF3`drH4OzWu?jYpw$k*hz{1}ff}X~B9O@w z$I~eWk*goKypR318_X!-;N^_uu*VH=@?g9WHICG&>ls zd>)q>LEkk4nz;9X9}%(F@8a%V4r%|RdT(#tRW7-VU|!#RvjL9p{KW%#KK7f+5?Ij_ ze8bh8e*TPDINO`?mCTQ9)9)xLevsF<?V+=B?1 z)R7^HaQqtJNtDuaLYBC=arIXN(|FC8KHRtZuAjM{RCBg>UR2D+3KrQGZXW!;ogNXM z)^Fzgo`!Dze~40@X)dmD?#YNu%lc(g+aQ~mz44JJ(kCD4`i`Ny{suhw>msAeIrAI! z>lraMCI+x{M;3t+Z2%tt2^)YTQXSqi+=h&u-fYE>hCg@12r)egUL93d<5`h!+gtr8 z7`$+=igrlhkmssD1sw+V?oJ%CTioO10fTLu(9=BcC^E2_0pabu5sg?%9y+v%^C!*FHrc%yTFEY-DI(@8gUXfaV^k_zAX-g;PiPR1eb} zBQX@r6~1)*N1lH{=kw*I-h%vXN{yLHIMwvyTPqB3)@uPTYe4BEGDZStBR&|!SRHbcsD#DB*(9Rq-FYQFBZn!FPHw4{OXwQBQnHtidpFIp%1nK zX>%ubQD=7`#ICU%TTR6mP;tp(2T_QHS5+Q(FR>XPeYaJiYxdKQqtnll-qre2SK!A&Ddj<+v?Q>%_dihDw&Sq~z2kW_GHSW6 zsP^jSnF9Ub>{2N17Gu|i4$+r)D9ypCw~wT6nwX*@ydt8+$0)f`AtNLV-@rm%2P@I; z$X{rc55`TtZUbN2fj7)`OyM$0hZlvMqLq+qJNAo`MnvN96V3D!n|<0*gMk`lfXnpL zeP3kjGWRBCS{wta)<81>deH}+8Usmpa@oy#YaFJ>{oA|uCe(JP*FFVGXbpr<_?~Ti zAIs?S2Kbe{|4~zLL_fIk2nnNc6a>gpj)$zo|< z%O=k4J4Sg_5Gd%EK$^8KqQdvOdFd~IaG40A{9)kIz6oy5f*4vl)G@u8@WsAl0oGx) zzVgNfIS2eUKhaSb{`u|E^sNTGFRVP%BlWf;wtxirQ{^7O>kk2t&jcK*>icvOd~Kkg zk-J0$?wiiJkK)pSjs_li7DAt4GdQlX-*stKU2DXrT7=a2kj8x((*JvS2JwgN@o^Zv1ZY%C`xu;o}dPc2P3VP#`1=T2K1t@IdBx%97 zZYp$o3(5q1d_txm2CFy?ZNe4P(B~M1K%(Y|fjT46ZvzsE(MXr&asqo~6%fC#4oa`X z@zcm>#tcCl#xi^aF7hlPAjS$htNqjPXcrzA3#M)KIOIeFCJ7B18*h3zWqb zZtW|(I?RDrl5X>W*PLhX+4_t6AX{UR1q!aTmfqxxRGr+-U$xf4AS@aP?IAH@mju}Z zwxjf^*YsvGFF2&fnh60(uk5f%XhznoM0Ud{ReXnt7HLjp^LV@T_q#1^x-3>G^~>u{ zi`K6ltr2fb*qk;&b<{lAM!t99BiQtSv@k-jWIZPq9#u(}*EVn8VP75>9eS7-5c$nS zZ2bPJjra5?Wn`Zp{nT35cqmYr>LRaIPjLm17orJ9&HOmksb8a>Sp!|xSc`3Og?tV| z#P7VE<||YWlC!^NyGP>z~urYDFo^*}tpF z&N7zij|li&Jmq0FMiA&K=|4Ho*2|y%Dnt|*%z;NwC|;u!u1yS0qAtbMmUlu;OU9#v zPf~amTq`vG87Xc`)sO}2S9yGOE9a8LmA-Rk1I!xonFtYf6wq;7)9PK6rlH-Ftf0HR zi3xI&gbT04U>U|Aif|Dxj1klwTTH&0FFogR}1*>GBD`9j( z;?5b!M}YZ|C^=c^@|Id3gXxvnQHHw-0Z(9v6Q1|=kpcEd8ER0E)J>Hn^b~aa9Hd)Y zPJyn?XO z;-WK6XpOJh%jC~1O6J&FsjGZ)`R49ju|v!BuLpm>l9LwpSsBQxrUl-5>rI=zu}zoi zqqT2)A9-cCcg}$Q?=<*%`;6(i<)=f7R=;jH^s~`44sAlnVRCPzLP&*wkk722$7Ckb zeYG>|gbTYuZa)be#5DP2zk#WbazLK=Bm@e6cz*mhZgIWOYoFvjQA0vs zu+VYR_qZ)DMbihjQIV=DVGwv`fjbgLA?>`!S;{!XlCKkq)fb7FWR~B^yCd!$O~yQ7 znLf>Z=m;`#UiUk|%uyhvJ!p$J0_1!{J>BXK7GU04qx?}6`2kEbYI&#jmJ@g?2v8b= zHJ^mu6n7_q-|Jvx2B;hy>uivrl-vdW#Um_XhH=W~+@o|EG240cWze^kp|mqX58g)8 zF#wBP`QMF+N*tWak|%iP^1x}HTdYdnWfLz7K^j0Ty*=UXmtK4BB7UX}b%h+@W}e)f@dO`}fp5Rr=> zcK2!|;NpIO@?UeAXx>5NwHlU>BCy=Mb zR`eIXx&1oAvT=o2dNdgHiEfdxe@Pe`=w(diY`_6^P0U2@7^t^r!P& zyElAS0}8`$-Sbxe?C`t~T)qizZ&7}4%h3f^YI0Xp9@@S>&3iA2*rnmi zRNb{!I1dS|?u__7o0w<|n9I0+!frIu>Vg$j`cUWtvl2{78E9*vuD_nfRdj*mebean z{1VJ6!bQf~O>B~J-OpR?v!7ocARm+qYnQjk^sTi?ssI++pdV$PihA!%*>PQ&z zByKvG?cd-&xfuAv_WHJlT1avObLf$_PomWM7pcxF0DG(Jo{%((07K!k&@TC(I1XTz z2nai=FRk@Ou0$mG)Hk}__sQEVVuH^t2x0TKwKmeVD17eiTSMzYqW-5A=gOwuimj+xD$NWlBIv!@6~3}a!f;}x-HbH%RMV( zh(h7QB03;zAiaqzbfk%v(im4Br`3t|A9uPhq+x&l&-rYnScaxLpMa0oa*iS^2UTszC%oQV>dkPobF2tfWOs{h&1AG4Huh9JUe@LmxKNGg@ zkdik+Kb0}z{YZLbW8uu1j=QfX2$e0`q2f9+Udi$@muIYDSD$z1VZ~?Ny1B`H`ReXP zfQ2&X9n}UZI>8&E+nD2eKXP-*ZE~K$(rpqAxDcl8q=LsN`6nsNjh4=g{SCnU9K)Q_ z=lkFq1>d@fZlm(-0nsKZT1=q>HX4SHks|*11r*E624I7ts<1DMD8Fi}rX5jCJs=Wp zed88sP0LWZMZzhsaUR^nZ49D?hVDJ-Q^s>lNxrLNHa&Vz(3-Cn*MUWDVu>u@O z9*NGhN1drZ6uu-tCOs5A4j1|-DqWbF$Zw-6O+(R64_u2T0H0NyaNwVdh+RWI5wtDi zzIFj_0v)#y1)_CtqLXkI#E#Kj-$IZWu0&vPB|}xT&bf^lr|>XG0nj-CId_%NN5(qML@LD6O+5L1Se zrAB-a2p+yFkKwAV=M2MI?>$bBF%KM-bFyAzQa7Z4YXkGCci-7-i;Z7ufWJ~Js2d%0N=j0o4V#b;)Uvy+JS`*5kz29&l84wEo5{<^F&vaNb?!x(3-|l zj>|YSp!e`P+An_hM$307%l@EI^@wD8L!eDB*IG{*9O0+|NEk%)S_c5(%0*&3Jd@KK4~wYpGa3Z4^DLhI71 zfU5VvkyneEN)z*vHRO_fqGF|1uct%6AJ_9blP}G(J2cR=yYyVy!YZK)7rJV1Ys*D8 znQb##4>hs&s2j*&PZDrGj<#J_hr&JE5e1SuJ?xzJ0d!3NFI;kRT)}l5yxM68uQu>GER!Ze zd3M(%j|lqQ=_~&tVoU_XAs`QZ4CF3g`>hC`|S#T%MjI#dtMcJNL z<*tVqW7n0j>V>BIdYgYSr|{Oz3+Mph=)I6@Q_4(_-HxCBQmP#`imp4F+nWHy+n*or z9*8*qI|_wBo6XCRZ={ANKyv_H{+!qCzVZpoQbJyLVw@dpvUXeic*b<0s zL(<32L4AEf+-G+t-YfJZ5#KT-DA2K~-?pcLlV_Frte27mpSo~Z=>m}Jkb0hd<3$i^ zg=qg4Hm&NW0t24|OjtsqFA!C%Va5Ou3F0ObyMd^~Y-vI*I&=HVkv!VO7k9TppOy-8 z7Ud##7{v+cikXxygZo$y^&`x>mhA)Y8n~<>@6^hjLJ5R0uKPw@pKFmk_A2s~q);Q%CAX zVOPQ(CSRkhmEShBKc5NNZ}{Q}0+Bk_A)4;3D( zb3F@(wif5i(K&{!UOIj_r(0k9AuNY7S;e8P{&8vO2$m7R0}4j#R4_mSzrX~bJqY|# zVj+2}W>XusN10W!6;p-Q)v~x!{=iF3GzPz?q8ks{(zTtmTUrFg_jUvR+BTd?p>KSN zOss>RN-pruAbU4pB!i$56`v!9gvJ{?c~9Rzd9k|13gR~jz`tYlAmD!jqC7%!u&Bo2 zUn$hM0D-MD-zNN&IDVvu-A=x>#^`^Tik&fNQ7(<00w+k&oj8E6g-y4hS6V2yHPf-1 z;xGcv-VJ*)FIMfBmS&kXZf49ATq4cC$jx`m>X61Cwsbdp^jJQNr^;immawf;@ zqR6dFCnix&`{0Mh7`)DofYSOfej19>J3fhPp4V~RSTBM;g9i3(KNX(f2XfIZ(`Oo; z%Ymst?IYKs3%ZPDs}M3(&ctWd2Ud**!%{K{cGtt^WBMAnaESfZ!VFDor4uao~lE z{T3{@_HP50d&5}OM55x?XCakFodx&5zrH~mwr&5;^@F@yQH?;DKtvuidX*I+M8$n% z>0N|#Uc!ZO?+0!e9#E+W?J(zz@`SJF`=; zw3_bmqZ?+um~^Q>0;uM}EQUZC3jXbT)OoPSf`C9+FggeE0_8`C5^x+R|AL(Et2c0# z7m1zYVlTn=mgwmXpr^gti-_c&RUA6LBCK^B_(dajh}ZZ7u7rv^AONDsR<~}br73R9zGW z^T0N}|B6Rke4Nc5&Jsv_UpFV|3}CDa%{|;^YUzgdfSoOfXBvaOY>bm_2?ZrVb18&i4B6X%lH6si9&IpYu5TMp*H_OHFu*M2yr|B;6Xc53`7EP zS{EJU%~G&q?y1!6q+q91xiW!ywbkVd>`Zbe_6jw@a>-{~7ryINn)W4;s&+1C-<(`m zX`BGJN}Ja~d;+4#KtPkLvJP)H7s*;h?MtfVIb_X;C-$#wOw_oy3Gnb+2_B|@!O$bz zY9cn$@9uggO8v9n+ts&|n3dH$Is>iD&#_#L9=5%N$v`#J za6t(h=lPsV4z9Fq|C%mMoQmGyfU7?DAchI5`mYTpE$0!vn!51SRZ|&fhklMXP~-i)OSAU=c^9t5GVN3SwjW?vmVC-9yy$w^ z0VRX%4>~uKHjA3M+Ux>?hw>aw_bWeHo!Zk0a>V_!Q}U{Q;ECUuPF@y<=UA3Ho-zdl z2=6#;Qz0@gJ4EylybARIfEBxVU3zT7+0fgt$w{(Pj>DXin!D9yZ65RdRuJDSw!&6> zm!!}5ozkdS;hmEUQMdN{39SL$ek~Q{<;tUe5<>-#C!#~AqrHb#E}fvZo4xe?YwX&B ztNYh%pPwv&$-^;|@d?iNqCe-HmUTJ)Sss?-=KO>cNrjVP=beLVBTIK0sGUiH2>Q$Y?J**cK*&XJ=)I8La_@8%S zngR*U(&|W_kW*rbXcQ%x<++{j9VAJ* zO(S%h<1Q&64v;gpG0*hBXfA#!$ZQUbnPQzVhSA)c&@_UFyCeIa&FsY!9pU)62>6bT zRuS(;eEjK$14So*M`l|h}fr7r|}S>0G!MNu;(3@C1$MSeWd7mN@&1a=DaIhkYH?U_iS`2*Vn14(K@$+nMJ2N5?J z@}DIOsa%mlO5y-$iqPv~M9q3J=Ef0lE)7XCJL^q;v~BuBS`Foqu1|K)b3+#zBx}d7 zY&Wc~#IoH))4kTa`-1B+H)WerQ9VxVa7RxKPhI7ul+uH}n0-vMd?^^cfS_T{R-&5RtU`i2A$28MG8~O> zFdh)c>5Tws<`tW$Us>!I!ygvV1mPP`yCa!& zkfD?8mYfNc`|e46?6W!y!BhNpn(*6GpI80vY1u!G_%n!7hj9e}ZUy1CH_nsxKBn1c|h|! zIQ#%GnYW-3_tVv&#D5o(glJSw=%py%$YzUPSflk0(+Ty;{yx-XY{zMlEB;~6+eeF- z@K)L6#j88|oURK9kI&LM4Ke8=P~|AnngLzCGtYs^>a#bSxJ98qn>cPJy}DtQ(VcPw zn!;PTp3!);zeaKT8qI|I^>-T*&&t)J<|&1yAi z7MX!km()M=)Iim%XM--@dg z=Ldx@roaD7Te{e9blRH6e&+69Fiaa9;iQy5Yg|Z+IM0S6hYjqnjb8Os}6;K3j;sP4!pvn)PVS^7_`q zm~wAV)FPjXf}xR9?{)%!eluh-52@rRm)*!F)Ah7J+b{~<393K2L5E;i8WJ!fsHpsj z6gtT3%8NvcXpwU0pjT9Y)`&ipftp71CYe(%^k^;L+lr*$+u}-nz=$-3BI5ahecC(_ zjYaU~f~BA#F^fM07d;P(*X@$8*+;i%?GgO^T;H|kQz^x{Yw=efEkgqNV7BJ8D`=J1M#w_Z8fDj8e&;{Vxs6se`db9Z`(5A?$%)WW=KF|+ z=1%Gt&$sHQB!tT%!9j|;IS<~!%Kw>H_5Z^H--pbvMDN4UTt^f#l_B-Rig=(a4B1_8 z5DU?pzFqsZq3D9~rw<6wHU~JLQ1A%w8gT$OAQwKAkG?C+e7$tfzw}4yFTiV zbI3;sFsCCZTr+j@xNRc+Xcba`p|N=+KO+Cgj(}LM7jlO{%f%vBkVMc@%}JlqVt;IE zV}KB@24DYGxP){*Zoh;2>~sDcarP+v(i8}`d-LLK<+Uui&eF~eT=YIV%QK1qjZ)CO zs_gU^^?o#ld_HYP173)*kthfy1)>o#6Cvx7dAr>0h?6z`r9W+~(!qRWiB(cD?CO@P zk8(!D8!GT%^gO8gg{aG}At3*vxv#+1u-d;y znXj!W_guGZ&vo2Gz-L6daRp&PDoL0Fo?NvVv>YyK1T$9cpisChrX|JiKpX!eM6Iz& zeKF%Xt>;T-<2tR&Hz+Ae@D6MEMGYA1cF)hLv+!oIBuWitDg_$P5*#wY=qyq&uyCt3 z@3Aa0oX4({4=?&LmL5-f_X2fk@i^(`QbXtT^ z+y>TtC`kIpAa&7OBt5&PXe}UG!oY5<8XpfGeP!M>Iad^=tz)nrkma)nr0%e7S{h!; z{$mvaMUNH70gd#9_K#0L3Q38E7*i1^@b*QzF5t0+gbU;w(NM4O+>&{=cV+MQAeo{1 zUop$Zw|$;0a`h|FxsNr>v~beZunOLgS`+L=*>Z(2YVSiUF3W)_VFYvcjtVv zfD2RHS8qBdDO&geCoQvWooC8zZ75sIO%Qz3Tf1@hbM@8w$PlYXBg1l~?0b1>I;reZMBvUT6jZ*XBv#lxfL3ov>pW?Li#qSGMf`?Xd zD+`Uscc81<*Xx&?Dv9#EdeinAuzD{FYseqE)-l69zcO41<~MZf)7@@ z=QV)oxe6zGZUP0dr0-sAM%s9_NQBEq1}cPbML=@Xv|1W$#JX@k)Rj=eW4Wj*RZDQ3 zY_IsS=IVJ0u7!$m1o2Oir&tNjnZFV4*noZ^^R+;VBAe7Mm=PZWagH2f zM3@cPySeF06)c*eG0zJJa6l5-|1$=VP_8={AI&~AuJ;HPBO-QN*rE=3s5DPT%b;)u z6ivh$n%4Ia^ZA+cw>QJaz*Wn_LjsHSJ?@PoI}rbCRhkdS7EWbb&*_KlW5eW|kP!<1 z<-;PFOF}_~-ViZriz(bf*YV<6+!m9_MZV1yhodCA=f8ZfMmY_FHJ(jK1gy(+fp%Kv7-Iv#JR1J19o?%^ z`O*IHjwCYb<2CwXYv#{V)G`6{vboZChcIhlDcvEabsp|cs0Ql~4#r#{sxyR;9K(v^ z%;E^;cM?voQ>fn4YCU{nYwGg;f&Lp5(dV0Tf2Y|K6ReAQht^N=vzSal`%-+U|3*(J z&g@_i^^*m~6emWLW1mc8#!cHVhov(+!(4<-V`%gUaqb0|Ml59APtQ`mS7#2kfQ3XN zS{G@4D-nPn+}71%jWIT*X?d*kh!Q`RezIjRxpTKU)liyJe>N~4-vqR{(IVg>GDAD= z1tPU%6GU+QN7kZo8YqP5bUhxMHVqwp1sv^;`PR4@10#=MczrvDfT;pD$k>lvwtolB zfj>qUel-tP1P|jB{WTP=FKowQ*PwWSPSHnJE`e%O1g=M9hiicAJ$!czj$Whv{S&>* z8Wh+RHqXfEyYVw}K@Ea@8w-kW3W%NaIKr^aQ8F8Z9{cWsulgs#ZPvBNG!NuTG&QKt z=MCG9d<*^@F5FVGV|)DsU>c_(G1S?4ka{p&C7bq`T;eIQV?GyEl85;7y?(jg&hMa{ z^9db#R@m~r!j1K4*z1zE|4aTb#^0P1qGJkoMG#*yq&~5SsOm8PrEG19ux73EcrHAR zj_dj37gHy!8N;T`?MBin;iTTQ5 zHVexso{3u&eHk^K^g}sxu~($mE({K|oguST+%18=3~_j&U8( zPD0LrpL%KndS{?L&IAr0SU@EFiC5@NTOA%Qk9;%0M(i}FG8R`nAdJmTh?$VUHQjTs zei2dWFpkF&`1vDWV*|-jnR|I{I;z?60RkhW`;X%an#zV5eA214WmLp01+f+(LkU`k5d$m6;{#6B0&GBfY4$;=dXm`@2A@ zJ9YlcV^zx?*T0gDKfn<_qJ0p;CjIAWK-vl<&%bFGN^BhC)d}jx1gu>Mh9dnP&)igG z*{F6h(|`?X{;;tP-~F*|Tz+_D#XX3EJ>WK0kzOL>;HWH!p<<9|>Fl3f%W-lF^vs7K z!Vuv-NKcKqZs12`D`uid*8w)OG?pi@l@h&k2$<~;MI&jtnSiNY{s}yf;QSBZs0NId z6NQ5AZI~fp)?x#xks@h?VSmqs&4>RvJEB!6?_%P`ZnFCAeXNO}DBH)-Wjro$D>;)< za?VDE+ayS#7nzb6$4tSm9q8CU0!1Pue_%I>W-6H1rMdQ44?$$+I?O(0s(zZ*73}$! zCFxn8Qh&(Kd9ROvd$Id;RZaVxOF~I|X!79OQ0B++T+-D@WXV0UWgEmuiI+!2Ky)DL zP$P2BiD*X~SVmv-}RAsaf*62Yw&u^Q-v#v?dS#uT17C5kde2VlxSctbIY$ zG0`HCC?u(%FY3u~2gxD3J@0fLZe!iSynM>k1n$U28*o3em!NmJ3uAu|Zp^hJwnZT; z#p~{YK>0}GCI-R7|FbRWNJI&RgtW_dn=jZ;!SUx=w+I~%z4Y65j(V+gHz+SuC3imT zk%eCf`tQXpP)10PSFOZ;)w)`l-dK!F^O96*1-8Fxb8q%3dgM0WX5PAgiwW@Iz%r+r z2*~pwBLN^L8Ua_3;_cxE=I6g2ek7esCJXl=b)zUfcp~TN*~0Xo#c%8%VFG%!o*>UL z4t_G{@gzf+u-^(qJOHQkd{L1xqhDdq^>;lAy>eI4vze~d1r$D zt)JvurO|i11_LdX2|v@=?mUhC^(6WLVCJjigT_5>_)XQ{VTuo4sCkI!B~&$S6&^H_ zKhVh!Ri83ICMuC#$fma~7lH--8rwS`v&n{~On>OD4j>QC!JC?yLWU8BA_&+YSM9AY ztbZu1fttPTQO?Oz%^u&k> z$(}(2EK9@BK)1KuQl85Az)`$P&!)`!`_zy)xZ(6Z{e)VxvrFdcr)lfna5AmTM1|#O z+c~1pM7TmQ5Pk?T@{wn5>S{-8l>{w&@s_t-|W zY16TZs&#dUE~`+hjP@Q%>AN9U1Lv-M>%yG|zASXysb^ffWfguCqhrnX^QiA5Q-60S z=Oc|`GPE8vr4c9ZV<*TT9q;+;lx@Qy{TnS_U81sdgoyyIIIhUXcuqAIN9o>%;n4Ix zi$LjT=(2yPZ$7ghMdhmrN2?~1Mw&Q*d@uh5!_lVrg}o2|)V4{E;wOmwyI(_Y@YBmI z;ln{7`S=>;F(&DOP`J}@6P3^x{2gPvozduCy={L=Q`QpEMVRDHs*155rN~ z?#1rb)a$BAzzyO7BU3IR3lk(AN>=ZSAIbVQ`|@R8SqUDEaiR8I6E`TzY>%1SNpl564ec8pvhg} zMS8eK)f=N_5xrdce*jBBw7;zOyYany#B<@65UT5a-;of92AiD|74ZTZ&bR;+~l5QIp&>RSqHB`;(^#=Y>R7Su_y(oC2 zNZ+EL59JLw27?~Z9{FZNc@L(Vc)y-*9ap%w{qK(t=#`gGyF1X*I~gW#Au4x{v$OBs ziQ8ZI+fd1XzlitV`f=+7U{E}dAQ-7ngC_7EciGhiiTMYJU!cB#q>jIIN-)Cr(G4>q zD3G{M-XqdW@g8u5>=uY$0uGGcGyN%^ME}usfxdmW-z;DPVZDKZ*YlrZ1sc&PT;>G5 zo(08?AbbUHfOJ#fKyzVl1^%>sI5W_4-{2eEZ-M|S_M6Q%v=88Z1qOxl>j5kU=qZX* zq#=B0XN0O`3rv|ckpAGP2IX6%;Z7c&z!?tC6aIdfQ)&q5m$oUR_;`sB1@0t8M_!`0E zx8%Krf{!YSU!(nu44t(XN;NbWGFbM*gy{9)IP`pSp!E#5secc|4}?I6??K)20{TYb$MqdF z9Dd>W;~*Nr{q!kr3FT~LzlcD^eFJoZ67;9@O@tDzgcQk0lZ0kj;Q&6xxjCP~_3rIm zhKP{2)7%kqMw*TV%mK{pyI2bD>5i;9h$t2QdQVL8TxdF?Ba`nez=<)T`KjCx-uP^gEI{;1qytv4jRwfRiXG6bf}yBqgy$k!+HR z;jb=(oNy=MNx&WD?jVJ%zs&L-&dpzD-M7c=yg)xdpEt=TIcwV6w@;V|Qi>30nFh9(F z>AS<@U)#H9Z_j_C69_Mq?nUUFoWoLeZcr(L5AZ(Z&-DzqWAYtIfI9_Ou#U89d~R$F z%T0&}iN0c1A;@1RxHw6gyHif>ol?`^DW`a+)a-W(nMUzasr;q-^a+RFrb$$cnDnp0 z$Y!`_GhG{48{qJ;OLQVJ~$$pj5!Irjf6G z-Rk0a{jVRS?{|O#fZ*&unEe;jy^{TRdx`&eH2+WA-evUg0$qCV#~^}7iF3ps!_{LB zkF;?bj}8!w4$>ST-AJlmbOX=xLruq{!6-(L6P_u0T5k4>7Y>HPnYA+G2J39v)5yMST}*Pk-LlJ%E0oJ|8~tywc~WucAwYyG!9!Z8Yk`6hU)p$rSY8>(~;~x^+Ft7EU<6 z^!!_Ux@3osgFc#)@fDt`&w(s#sJ6*yOOZ3+s*?FmrbJD_i1c{TY7?i>3EVDd2%5Pa_E7A-gxi}2 z+S(_RLhHcc*&bN}L%)~5*6gmazIHx+r!T-Kv~%|0(8g}7gJSxa+pbvd?qxSPfBkil zH}MaV56bS9AYiumAy*1_9Q%b)(ecJHsUsSbvj<~>_RxXZ$IY=M6`?TJgAKB==*wiy zY8}^SH|}(UTgwKA)D8#g@)xzYa1g+)#}5tJSl7w|Ztnn{kFZZE8Fq|W>r;`Ce$qR| zy-v{^twz>Yz9;C}>MKXXOi${U;3iPn8MuQ#f#R6HZ+7sLmZ64Gd~J0Hhx2OK%L#`C zLWm(a$V#Hn+(Wau+Bz6{Xtp~?w4ZpZ?LCw?X<&WO<1T&OEh$~ztsA1Ai3%CH!kJMk z*Xx6(24vI))eX%LzxbC$3o9WUH9}XB$%jEakt)$Ny=4Y@GI1Gzu_eFn3gnTBQEG zE=%yZO9(XTzYjr5ajt-a=Gc}}T03nzFJk}d#V31cpRoD>@z8{4(R7Yn_KA_<^2PY8 zuP?^)b$R)mS(ook`QkJEqKv}nj5^q>I{?Q28AQhvAuyX;z_mg&+A7n5g`oK#>u9R< zkd6hHLz0B_WPS-k4}CPN@2`Gwp0qaBUYL)bHJqQ}6}RF1da6es_1ri}UO4BcyJve1 z=kxQY?Wa%H;Xm@g+vAVxM?pCJ{KDDyF9SEU9%(oqFNa||%zbp`d+&fzlp1<{zW>5G z_EY$;{iWJN@g;IDLG%N;%S;1}WWcT9x7>+gjF8jeml!ZLl2=X!et3R<gkUSuOM=nv@vodI3sDAohlxU_jWdD?g4A7$&w?c|sPEB!5`R=u+D<;a>!j zi7t>3JHw*9Xsi#CWTeehKKGyyvb_WN)HZrY}#0Kq0yH1jJ5Z$6-Swj;86rqx!AHdzwDjWJcZ`~d)==u5S zp>s71I}9Lz4b6Pgq&$%NK>8||Hl~0E@}Y(uMpnuS&|r@*jy{mua~%fkH;~t0C1LnY z8W@ZM=pddR@-x6`8t@i6;X4IU%&LKY)+<{IT8<^*qqI<#geUQF%2BCp5(z z3Oy+DHkmUAv&WYks5+680Tnzy6ZlCC>Z5kJH;iK#T5r@~To^u$SF++2X_UGa;%E&F z&cr&y8c^y@K+yD@)fe$q=f$V(ttU@Dt)YSid@Mrw6gs{kiO{3g4)qG@yMYI*I6FKt zd+q&$ql35Y)03maz2Dkzj&|S5;lR_#PI8ydpqpVlSvezx*urUoR1C*j%d{}_;0jd( zkmQ3DPvYf>Mle8++XyA|y4(N!MgC}?^F`!a`7t4Q%#)96`K^ZbKE3mUzUTHn+3Sh# zyx;p^kF(=;&?#Bd`{p+2TB7x%4pGn}E7dR&;f)^*Hs-H>C(Y?%Rf-0FvVO`BCx)FP z0aQTr;VfAoSZj65KYT29p8xRllYSGl<|dOhcZh(`RBs*|A2g-oH=jP=&~JVK4GWg| z#vg$obj?^`{^s;ORtRw>|8Sd6c6OeA5=Jq&K^pwYp5k+EbT^E`Q9l|c#pY#To10s@ z5m!Ij*3I!$BQz!fImQGlW|8>2!`=4>XRj-UsCOleqF&Mp{Pc=8gtP-McCXSVe%1um z*}S`M1}<(}b7PBJm2>7?#({^ovp2jBm<-_o7f#HN3SD#Hz-9og#2P?9@lf%Vv)+O; zz3zw2VX`jVY`xRjdh&GR*=D{y;5>MCb4^azkEgK7pYp9(uM@{ZbTqUotBBOpI)HM< zcAh`a?c)!!kF2L^cn9I6HP!Mz4+0c!Xt#i6_JHnLS#q3JjKAIcu)BwVF@G&T>gOBV zGU_7zI!8m(;XdNp@<*H>XL{%WSBRa%)7z)~=|${zFoVYRHI8!ps^OtSQ=Z?J=dD@J?`C&_vV-ZNiN2(cfPWBEq3>?cP8HoSJUxIx=p~?M@t)Qlaot5XN>XgInMQK2`Ys89i4Ig59R)^(>5_h!#BJ zt~e!NSpH{dh4dGcd+=O*Iwc7R_TZ`$4N0?MY2oG6qQW{i(T=5ww%-FGKBOIf^{LHc zvLztg3z$_1nq~y*8XWyT-B*FpWpeJP(@fj>MIeyx@xgfpX_{&anzD_3ngQ;Ce&=^` zntde-K=S-Rbwo$Y7Op0wO#@R_z7f3&vJsvhO1Zs5n{hd_{BfDk5GMx^Afmg;gNnY>W% ztVY|!6JR_IZib_`VxROH4qZYYmYXnh==&b#}~k;Y28md>p*qZ@qw1N{(TGI6l^zHK(sHCRq^smpFUL# zK`t68rtkM(+c)CVWnkc^`WbH6J|-k8%)A}gRvX`J%Rpc^WONsD5qm^0nKE7Mo#H}; zzIcj3g%r{+FTDvq1Nj2d7qP~I-nd>w;g+_qa3p(ej3GSml^fp&vh1xm(Ln39IAf6< zW7t=0lnh!dw@5q|D2HLzj23=c&ZmFg`}v@`wXyl6xwE~q`7ed_>D>BgPK|w9na*|4 zgr&w$k=?c6@Bf0o{FH0MP)ppsPFX}C`ei&XL?k}|f4*k)9$z@;@G862$RyEzqXGY} zQD<&CeaCbCKDxDurY5}Oq`I5g@)I0T;R|gMygUzP@52j=TFXZLg5G#Cg(CUxyPcDB zXLF<}2!}r***+%IJq{6Fw$NO&2dbd#C_2pe zWwKiHrPJ}3)fdx?2>uv?ymBKcJITQ64f}({EcyQHEf%KnM_YEZS?!LFiEGdfc&tf4 zVhfEHc7TV;nr0N5CY^Oj*J*cD7)mQg`=0>q{~qRI`2CG(tB(KNt{*qw3+w=H`XAF zz4M>fax7Mlzs1db3<CK-}4gf zWTnRwgQo2cVP+^wdejU%9^fS$4*_#!6Jk6y?!OKxq#9Hb5UApj49X73;Smx{0FmCw zFi3U7+)~ij24D(LiT$1{Ay|3|vtCg`EseBZ)D{EOz_=TFC>%N0z338Nm;2EW%E-_UdP%RwHGx++A}0Y}mI@hgk}hcQ&E^#y zF&C%M08+}sy!KNPCN;|!2@vVp3dXr|7YUo)E%34z5fU4YUVo5gD@hmDSlI|{HRvJM zS*#3wxHjnW=8!XxwNoZUAb2B5MB=NS zdo2+HFhRW?Fl>au>jN&dk;zrtyxhi@6S!_2V%tD@;sDPIkC)sF7-{9g((J-n%BTS@ z0`@B=MRfg(vx6d|2~I9U!Ol`#0UQ#>KPTKw7dFR(xAA82b$1PsK0P~mb9i)sxuJtN z3dvNj4@X@`1tkWhv<`tk^m^k>WgnN8OW{rlyo|y<=>^_+lv0tc=ny&WBg=Opq`Ei~ zd|^ex(%bmP3brRpMUGrwkBQ|3Ek6?X7cnxsVbEVJa4sF|?ppKH4n4=ojV_Z=xxt!M z!_%h2{^c5&d<`IRJ6k(Dbg%spkY)+h%fxzYq4@TYk^?*i9f#huS)1Ov3y>X?J|-=| zvxtF~2b6E{@c7LMw!03^W}j@)3XHOgW+V%d06@oV<~OEM3Tv@Ep?`rB4pN?`!DQ=) zdr`R9HR~n2LslKOW?ktMw|ahjxW>Rr(i=skgS0F`=!Hl^d+b+3m#Ev}V~n;2 zvQxA*0a#t5fF}MvX9`EQE@#BRG5bJN<59_Eft20Oj)L=oNy&tue>A#t@7y27LUGV) zf>uS$^I>&;8xR;0pCpyj=+-2M>+@GLKj;AuH9L?w^r?D+h5?HM1s0d6Gq6>3?s_he zMDiqJWDudzh=#&z8WUSaY0X5H|F30pJ z7bf(tBbW)1u(gUM!4BGq-)V~j9u~%|26xWJK%BH$0v^Ns>)^Pd&EWF}T9hVvBfKoM z(6S0l+*l;=eX&{e7`58FEgajcOjMy9D!{n1o2Mhnk3SwAHGna)kl{L#VZ=7jQ-T`N z$>^H0N=zGiOtO40cN1tZL*`oK$#h2uO~7<8nPQqEQBH;MfXoy|ccDc=$hr)~Yyg@_ zo9=sC?z^07df+a02c>U!PY)Ag^C=P+5NgFjC)o<{u)Fq^#Zv(TKtc+-ha6}4kW9Pm zFH1p^tRO@A!FOQzSI}2t54h82DaZPbhHISgtWStHpF-i^>^V<2H@BVBvp4_Ql4hw% zw1N0Uk?G(zWt#*KAW@6qRhCG*bAFVV z`|OQ8Cjo);7J=Du(&a#ZR1SRINaoTfmCMOM={yv}zd}Uq2pwzL+BI`vG;~|TE|1#s zKatdf0?@6WU4{-`|4gtoSku%;ZUmW#AHS#^5k z4&j{vegwy?=$hq))}ree5dq;TQqSmMzkPht-a90G%6a=&qAi)xPNYkC9}6Mi3Yg>p zq(BN8LOURyEXv_T5elrGG5ko648`D-GPbZgh)Fl4PI9wA5Mvahg#+P}449g)bGzE1 z#pi_?61+z~Rud$Fq%h9HIP&}s{d&S5=`C|NW!XMxS%GwklDDLQlcI@$q!9XM&G1YO z2SS*WA!{$}(ng?~iwLhQ2-qiWl!&|DNh=o`>fQDpB2JOyX~{6h-Jn@b1hi8)Re0Yl zx$Gp=c60JoG|+3-%LOB$v~BY_%6gR(g4h~zHS7`J8HF8Iw#CAr6^!&QvY!#E&N;LS z{ed{$i#RC@8BSrF)4cU<2N6eg#y6T z@$NgTG9OA?$Gc@lPl!kC1!=gqAPfg)H zDP^T${XCncOPh?Y5c2ogC_1ejvY8PR>ZO|ap-qb0m*wYoVDYJuRkX6RfnbeXSeBta zGjuzLd@kWB%OGI1GYQwqh7lxMDHX{ry-tm`ZrNAZjVW_H^GRk$DB}<`!&^4U!krsv zZv*ZsT8J~lFxm+z?NUc4P{9`9`~)Pcbx3KV9Whp3>uzSM06j8@?&Qp)1q+=Ww37B7 z>>r;~VyGs1M6hwnLSPKhq~ds@>xqTuQ(RLh8 z`#8$^y!6i0y=#Gu1!^_s?T-mlVUS_aX9R1>!4$+BoXouqN0A-ZH-3yEYQ!aPqk!jn ziMNK?D#y*SrVWkK&Lek^29}XPBtQ6ydn4fI9;Sp8h>;MUJAG)MEi3^3=i?F;=U0MZ)2Lth-QmpMhZX;;?Aesg{i!6`|#8lExo)c zCMyt;CJmAY@@s9w`Mcfb*3MG`Ap`p&sPFy`y}pWC8{_SPpAA5^T|<{bm+(tWc`R8a z$}FzPk=&6{=gES|!J?8$4QJUOioqpIYzABzj_T%<4U$5L)1_8wRC=w4CkaMKYjLXa zy#B4IOEoJ&`9TiOv0Md;eR->^pmueZH>K_9WH*LuJj7%$uXW^s@DB+&wVB$}DVUme z+TuM0!5MlN6sHKT9gqOoeuNzA8e{5Gql2z6jI)gowdw7$8BvqwVh{i|KmxC=fso}M z*m>%H)*eKoq*e5$L~0<;&eCKno7YWB4l)dLb*m!SerFr9Q*xuuS({}3_TDC`% zc@{n2|a>=5g?c-z;=Y^2r+#qnl297(;<{J(OR)p&l)EUVt z5tKl?fAM^?6{CkTA!0AB>8}{wr`;h{DZKVGjbTNwSJHWfwT_JDUD7vd?ADxumO?Tl zSi{6CAa+N#*eGCn5EW{N4EqQjW5M6t9HdBw27C~0>z-rs@K9n_D~}?y(3Gc|VK2$j zc4bFnEV;T6t%=cHXj8bB{LEU@(@E!qI%@p@cEwoo^m@3I;g5V|wi=gpL`Y9k&!*@p zL)R$*z7SeP`=fyzlB18j(453cLm;$I$0 z246AORhwk!$cJo{ho`z`UPd5|tI8}6E(3Y+p~>Cz!b%hZBDiC8UGs4B880QCjrs5ufWX{juko^!(snQ1HAY{9rWxi}*j@lqbtgcNrJkSe)C`BP% zLbA8z#>gBaQzrAnB$fQ_!3C@3haXN4&dyJccP~!P>W50U^}-k}1B1PL*(h<-G_&g< z_CKK8?R&~{H~3yTJ`86>NmrR8xrMJZA2Pbegr=BASR-%^HK=9S7Zp)yXxi4W4^9#> zsvu=7KV>#J)=1HvV}yN793ODLkUSUW9AXsE2HfM8HFY?J{vF*@OF$ZY{ab4Yyoj4eIRGl&=0S%VtG|z8KDJeaB59QFeCwAEj9?)6R27)=8Ym# z!}<$a`{J#+kE|P8(jIjzy0b{(I7;d0jhrX+b2EoUlre$4V&`;sFEgitIQ8-3O>^@p z>4;i>=S1nKxuSSXb`bdIz_eAHAEU~q;4|+R2cFuQ?6O*)&-jXh@ zEZ+$}nKZ_nN(zxGv8R2O!Hj`pWC|l7uVI%2?A>a8K6a)320B6yrC4Lq==%LN)URWz zb(Hn6x$#shS)h-ib+uCwjOA-2unDoWNH~caVgx~R5L&$mSp%ac1U2Czv;k9soS@q`>$*T#pT*q`DdXC+UEu2wGE;A!P=E^C`;HG&n&CS=ZF%O~mO?s5xm9AWSBl4HgsOQ~SHjVb5JOsQ!&I z=3BbOvuO-w1O~}6rD(f|KvgrYbcC_}1PA&+KG^05;C*s&OnkJaE2|h2y;fXBhM(eB zmN>z(Gw0yP`-qbLK-(-?u%ORCT_2KKBLosHKiooQ$l$~tok)saXi?vS-Qr|3co-Q* zu7((eC`6jpPBvmC!|$Q#X+wh(TRo5 z8$xEb(S^b;tfJpV`#7||%6ABL9afF<5S;uWgI!B&1;MpQYzXdi$`b#{7o zcz!@d(wM7LD1iv97%Ck@OJct-E(|lUp@F&Ta2p*Ook^m3oTrv+w9}CUfIhk>SJ(8G z-HFyFX{@pP%-BqafYF9@(x^ZShm&w*GfArWybXPTk(`Rn-mbrb?p1?f0Zv&1SV-(+ zFUK7r@KhLLlFV~{y8HfMtXGk}%y${56pKn;?$O5O%xGY&d7wNJm=cCAxGZfNH*z88 z>qfAnn`OU8QL$>-buMUSOZHdmx z?+Fvj%Jayq$WG0QK~o8m*-k}OMQR;tK|P^qGY@}=Mr$VAX8 zEg)%pO8nWblk{EEm}9!J25wW>OM~>Wv5!ov^t|#Bik4JG(_%;xq5H}1{c-=ak++2= zgCQFr^B#4{cf|&|M5lOTuV~^^#$(F$#ws1=4)DE#jBG7yl4JGfPd;v)`@O4ddXni~ zZauSn+{M^y0(nYDcHo3QPUmj_()~*!3`Gli$e%T&W_+I-RE)#4n9CTs&Jg09xvF`^ z_|XCp29X`ci9}Zw9o{7}Yhaixl37k3)1?Pvj-!#&98?>E9Q}Y>E%o5K5|QgT6v{%*T9{!tBb#w6+j{DoU`iFhE!!#5BlrbV$SFCA;kQlqF&W?d<-KPOhC93`AUkqk6Zd}ADxa%TMwtuI?XiP`)dB&biG zr$aA@5b`1X2zdzEAJ`xg(!r6TG)+DQx<<#T}BvN0PUS5Yt7Zw5+CJw2H0+&Biy#cJB$Ay; zynoUl<`kjD|MaO9(;Hi#J}E(fWWE+08s?b^GMBy-%+h)p*$c#kU3pQ&WCDGL8s#Oo zhHOVUnMmrT3Fw|t5^y1<5mcw}N|5+Sc6mZX_!%J2b|_!Qq96$NX1JvHjE4GfTEaRDJ&!Z@+>G-nrO-I;d-1!AsL zfL4&n&Ztrm{>G3IGew=b~b*nB{0N;o@qcsE?P2sMtsC9bnuX? zd2(y5_71~=LO8+d3Z?pRepp$vp`|R9)p&-pv^2;5b#(AKH)M39NPZZ(D%rp&$Ws&o z1I)n#$nDrr&$W7PUy7Rjl*XTdLG{UwqF zu10N8o?;rHkl|_yCBch6D+b({#5j>P*2mc=+Nf7!)^`g_eJA&~N9vZw~mx;9uxL z5WP?2dyB{428qc|tbNzounXNVPy+E%9p4sXEUT1h46Yr|LBtgiRVWDcoU^GC*4^L& zPg$kHr4(hZx(7IIQH;72hZ0?-&B0A4+1xbfX;JV_-|wAcnh(dxxh37+9jY;x+-6Ze z`C$tAE^u1$q;)z({z+s&&M8qy@7F)ru`h`Fdp(J5mV!3$RRZwe6}yw*vPK zZs&?^*lc8AR(p<21`Qq`;bzAEpe=gTT3|fZu3mlkk8S(MZMHI}v7KG#R4ZP+h8FFV zpg-Gt?Y(!q$Hxap?bjzCkM{`xYdi!9T?_2+t(171X95hE(MIU4)mDAui_j^lCEDMT zC#2@EZ9)4L7fU&4SRxnwsp7#))o(PuzSA#qkFsFB$8cxYJBns2l?&AuT#0 zBCBeaWF}Fo=`5ybqHvWhQB~4DBYyyY(zOkmuaW!FknCh=`zGO10UA^^L7XC*F1LB4 zq1n<)(fUrNEGt~a2+1b@Ir(_W5W3D-0wD^F?$j}9rC2}~MI#MP(C8(d0wROaSZtrz z12wM=;2QaPIZ{?!Zr&cV13={(dM?*kZuZl%F*S7xRF( zk>cv1RA8nAMcbk((KQw-gKZKtBZl7>1y??ha!gkAlCQ8r{LaXHW?IZLY?y;4j4Z&~ z*j=OM&<(u~kjbq|WdTVOYNR$6vvkzsT7!093(t0pL|%@yj8ud)E7B0xM6Jsj13}zw zb}l>3r0Z^4#spR!xRy9u(kvjNNx@n$KA5s(eBR-Pb?63gwns9UU^8r{HOWwO=lSLq zE)a(DSmJ9)!t&P9@NCNhgB9Z6Jb3{*dN~^5+)DLoz_DrH3%!XbohC!x|oFuuudxmL(xNn;YG#^6wF$@mlUZ*Oj_)xSOK`d}JP z9Qm)!y_1vohX*sgjeXneL2L2kV-p2}=Ew7cv*K$NYcOM~%O5tOk8;wx>OMBN)~xJo zxqMtr@#IX=$TPcRla`jKAXUA{pU=q)B<1A~V_3jUA@W5|w9K$`w7YYx&z@BNJ6nI+*xKBF_ViEA&a(c)SF`^nJ>?u# zKql0Gd$RF#t5E;r$+PWc{f|eh|5!{t3UVny#mVR&#l{|J5W=hGjkSrzAgwANWC_!6 zTFoIckgcf!qM^N^)Qz>-7{;!psvbbi@*i6dlWs6DSqY6ZGy_H}O8rDL6hEFA`%$l} zvPz(LCQ&asFVK7Q;**`o^%I&T^WT)yzkX_D^HzHBt^ig*?AOjq?mN!oV8#1W76@*XPZ%p*u(#iT&s$`=%@X!YuZ8oYbMj(&`RdIU4Ow1CKQ5LF zW3|!(=CiV+v?|U=O@lERV~w`?!7vqt9oJjZCi($^mNpQ1ukWAEBiP^sNvB62-yR-g z$oIS5n=bGX!YuLrUYzY7pJ&%sI>8SJprLOruc#qgW~HnpAxcSb zJHkiVi+L6Mew%j=mJS_WA!UH&xJ*Vl60VAppo>k!^UdEXgH@svV_7r#Th#wLJuw_C zUjEv!}gHeklyqNc(2*XOQ+qVy)Q;-r+#T2-X# z&qCoY{ZT{`Cn6ywxv#N}Q{CbZhZictAyBU2qJH62=oe zQT4s-WzKj>N=de6nRiVJ4RaEP} zEB-huz~`ZSY^|l->1;LUm`XAv{RE2-n?$nYb!s@qS;jC5gN??}YA$-i*|iX+HB9+v z(yNN{AXoz@0dA_%zu^>h75k(kTTI0tpo5Y|$E3-jWk!c3oPR&J4!i-h7CG2^eoI_g zFQtvr&*pVTiZy8(;z6}`WEJPs3;5oC`ozA(=C7Z~5_37? zERvS>#?ICB{rA^Frwxtf7P5lE%wPaP1qnab75{Pu5gbqs&1joO8pbZt05M(OZ|m>a zZlXUe*-uWP%bX2H=`Opjt;8{Q)(~WvAMP19UmEt*ZNOVPr5ne`UM7^COHm>sWUP1y zf6R0i37CS9#oEwu6K%ht+{+YR+EZDoYtF)Kt)*B6?7P5glpQ0zK0JOqVS~=!r!)YY zD=WZ1J(O@b*P-jIK+`uXYn4fM5h1Md5mSXi^EM{T2sn0aQ(vL?pOS(}n4e}RbYF;& zP`)~Je!6j=^D}3l4hihb6)B>SE+yhWaj5#Xp$;C-vtm0Y5?i+uqnN`G2-HpDp#j$M`vCWR|Xf zS9J2E{xmvY=GsZ8OLxGr3(oitWrRCn@=bs*GgVqQU_+!9@+!1tAKJ1uS1DKI zFhUfWg+G1DJr>2EM8VB^z|F>xTT_8b7YZQJgXIL1uvi;;RoY^VMY{2&#*a8dZRJ6Nkm2n!RfMqM_)+dBj*alVc>eJoR>-4nRnl`KOUc- z9_$fIjk1Eqh1b|B5D>IW48c5bk%HJ>Z34fD6C1h2q;a7NKa8AIx&t~PVJfvCP`_&s zpO+Fh*|eP1^OL>z?eh!Jus-NwVG2W$@Zdr z;6lKdsPs_Dqa)^X&niNpvdmIiR-yf=^K5bRX39N~z;sZ5*#MGvpbF;HbZEQ36d6Fc z@eGgYSwW$qKJjcpy5kfsrduU4=pvk^=q#$$5$fEh=eZV8+*L+g$1ri{e~1c^CFo#@ zJ7QxTi`)EsPTCd~U@5#U<-eT$Ul{8=65s^+Z)^K$$^O5ywEsUI{-;oV`Grz@^$DnK zzks|qt6Mn6L1HYYVj&C-mjaMv7ZS{6GE0C6(y@htsQ@)oN|DBzU06UZN7@36 zY0?&9VCXRRIuXW4d%sByE`SjMtg~g;b-1{%E}2wJ z%HjQ_+MUnfhJm6l^-jBvc|0fSS-gyz^LG_uxA zFrfv>3|u|GHnfNuM{VwHwvu39 zah{>rSMDv`H?2zOGxjc~OHj$r_^2V{RzJsmR7@i|>-{ z&(8lP(C{Jn|I@89|401ylK(#v|ChbZ_`elhs?$o;VuAJBGfM$ESwP3J&V&knnnMM1 z)jK^xx%;IY8dmOfJGZ+cn>QsT%jI0w4q{mmox7~gCRHg-l;$=;n#gYlNfYFx%E$WJ ze%lOFuUmT4j_M; zrP>D7sTa&C=B_2#DX|~~g;c~@rglcxnZS5EovGxyah%saY$nGynnSFR@-_^9n6bVV z##KA#Os-i>8E{A3H1C1IBs)6dJ(q^~awPM{0L|~e=YmlOXBXslfAZ5t=+2TVKmgD}lZi3iJwI-3=1!64kYDfp7F`gBQWXb;@i~pOw%>)3tDx4tKV)f?1$-JJ~dRFh@9(>)h z2Hg5OsNpV1unbQxKpI51*3NqFP}wk~%AHj4y%JKu_Zzdr*_0tGAZ5t)WWHW8x$%s> zxX!knz>0MMrMH7g+zjR84^l#cnf!55eIfImARW>9Xa)Ho#uHA#6len6$mm{PKUU+& zu`?YxR<-2V8AFbR>&FN#&`BAnzJ$OuvtB4!0(Q}r0yf5bWgX*!eqAMoviYlEIG%FTosP8D@o{7IyO^ z%em(HSA?jILfl=QiSM;_&w@l*HHFb(i3#`_wdiX6D|;Dp&d7XLW|;{Abh$nt`t%6r z0lZM^xw(`v#mbtn)T{q!`hQkXXLbQ#68>X*>sf*S@4y2~{{LwF-|THB07!wOTCG2O zXC}R0#Dc6klhq_L<$@frR`v*}aw#IWoHMJW%NouYs;nfms7i%0nF6JN(+GxF(HF65*PbdA6DTB=m1={lkUckB z*ia8LR(D|XkJCw5nrVt1WcV|P_m?5;C&?5?Vc-F0S& z-367{^XRIWa|Lhf4>U~Iz)vypX5#1Wnv(he756P?)u7a(EEp;4G}=ueHk?mNE`D31 zJMsaOmYQz2k=fK3HsX!2@F}mpF(0TLvCuarUoq998p;~*^pYmF#=@xqMw7_tOeu0= zmz;AhCwi)!=vgUhYS0d)T9>|!^eGAHYys4nM*vkt0n}LvpkIsp*Nvi^h0A|i+nY~H z_Md0lOZo3{%Iv2Ry&z|BvxQA;h%H#_F$A%O`3)ch54b+3#z|1ZW(wPpP6c zgp(j%CK5(m$;wI(t@Cf`h+#$r>ih}`VL%ZQ%2ZkuFjeebhe~oBCTeFIcveF;)H$$v z791o3hO2#kA`)pwd184{9z*P3V@8~K+$iKxhKw*%kX z5$Flg?#R@gtVEPneJxIm%1~n0&E-@Kn7t;)+YmmWCzs{pah;E0@L45Y7sDuZaA|DH zChi{{HK=wXW&uPidy2Y)$u2?zK_0_Fr1rQNEpD4zdyy+;7BTyT8BA`NimkN3BfNwx z#QgE6Pr!t+R6HrIsighXz&x0%VZ;p#pD5&ZA`u~XS+uA?nq*;BvZz}V+leZ=2ZPa# z@ROACreN9yK|sQpg+D%4sa)dn5Vzz);u2URvN$WPOKT09R>sz#OF3Yvv`0?IZYb2$C1$pO zqw7S2QHGGg+Ui!ADrvlZHv}DDQFRa8o=Z0Y)e%nwRc0t|7iE{FFLGU}@4v@dHJo@T z)9lebU_Q&kQwlE#$}iiJaM-$26R>}n`L3*BACTQLAZN|7?wmLd~VYc%f&%%3SXOHD2yqJ+s2@#vJcs$ zW*)&oWtO#kw#?klDoUc3B~UX2U4Z0za2f|3$e_6vb`oJqV7nX(-j!m!l@NPfK!)k4 z6>_DdbeYqs=FzCn{DQu@85ZkKp66B4)!=xQSpR72)Y{q_Nhww3pzv$1=jEP~)$9$E zZs~^9tfQ(~M?Jo59i7rT>MHT7w1#%P+7ydNG%nJmyV&%G*|7#aqQov5rA8BIiQ>DE z;fN8o%~1F(Qx>niTstoALm70<{Z!?<+0ZGt5F=4ip^JMCe7nWP>J8RVnV=Xj^e zpJxIUw}c!3))sRd(cc*{U8TVG?>m?$ez@Me8Go7hfnlcl9K zYee`XgLQtAWnSHKz6T-TZ+>*O%JW%U`!V;%s-7Rt<0sjY)s@|gcL&G2Ef5@A2m2pa zYG2yKmvGGa2XtnK?9+c&h3`(!PTnAb;q2gO7mIcAqyL`UK2xgRBKgJr<6WxWB>m-& znOuzrboCYn&2Rh&OZKC4`=9^wT5kN|DaQ*wz zV*fj`|7SL`h39|Rd|HnGT-JYil%GTG6Rff?s0k*XH%3lE5B+5v_*ZD-?hF%l+llR< z*sQ1uWVc4KZ-jAbRERiBd}XprTCZUzTKz<7c*!XjRpF6da3g+6#t%@9(@+D3dOp>N zVAF$kiG$oIzjBUUk})x{ZeskDmwuK+k*!vPk!>5|7BlgauMpWZBo{)?1#89(9e!kY zYr-mz>bSa+ASa8&*LCR=aR-c`aU<0mOd|qlbzmVZy*3?zP^-#_3CpVYe*g8FG5FX1 zpbDK;kI!cfHmy=BE3BC*MNci*8s$mV@iIn0&FY_!UZQP*eaad@$TvDh*pzV(38v#} zh<2f}EpLiw9ErLRaUW+@aZbtFc$HGMZ7Ii!esl?M-92(v_hs5jV3kMi$d55+wc5?$ zrX{PeS#WeN;Ac~;x?cMW2@x$cRbfsQ?Z8>JQ}?c6^d?msf`h#p`Hdk+K=cpX!EKQq z{j+tnnP1}`N^x+j{ZLva+NBvqhgwF$Bt=#G9|{D7?nN`HL$&RLS?>Lc<6R$ny9l z20MRb+CioPJszCrm}hmI21nD;b;ijqp^H&D3&t2_ z`gHbm>OA;IN+|$GKsf~@TecoKhDc_%(A8_rxN7Ke`SVO6wi~J*)x3f?(z?-(sFZK! zXFFPi3K@hR5Upj-|LeJDgDVY4LFvX-r~54nO3hboJ)T`k_mM7IS~@F`%4-kOkeyan z5hz5k9)(NvSm6wTljs*Z^-KXTWsx?usMhCohu)y$kOG>8g)d%ir&LeoTVM>50E>W) zCQ-E)I^1~4{i-$FDrMBiT!JDBlOxd;-1bnfC&PK*hoS01vp^|omc zNgnoJFnb{PE{9BJP*2${`?*02`;-q;-eB;S@=tZ&6KLALc0{=Om+$Zn!2a`wbog|jW5FcApZl%LC#T_%N+9N7&)7x z;}c$bBNdNdqVDJ9SS2+QajsF)CQKY@ncb2P7J3c~G@7(jGC|*?fbWeIUS7%M2#yy> zCaE~Q5>DxT`!vdNe#CJDUAe(NgL1{>c*Usid+@giw`eK6eyyn;ZD2@V6?z10gE<8dm=MKwN)G(uWdV`FbgPw%%w)pe_&&a&7n!g5t+Vljy%L>U`uegU-X59c4D>;p_jK*7WBu44eqynsn% z{vR%~j^4@nBIUS?DVb~coVMe$SFdan1FTf45v_NL#7dNk3Y3|_UPP&jsbt-rBMS`A zHYZGx!2+&g1ItKC!W4yK32F3jGLp>WL3m}@oeI(KvqljrgqE2^&e#zg-lN1PT@3hU zs-#IVMtvmOabPLM-z$F`_RkZy3Ub7De`Olv2m0>5fDB|97)jKOa8N2TVkgW;1O4Cu zGZfKfXy91}h7p0?dnjsLF&pV(X@UVZU+b`CS*1Zo!|(4YH=^}X+RHDRir(Edgc|C4 zyE$L4~o80SguBo3Q5*H_Z6WQAmcMKefDNhB^k|D!=4?3 zR;U(n*suX(NGwg*YZSSL#2DN7za|CIj)~O;ty#<5v8{Np4JJuM4N$OmmNP(ZDn<@< zTn^}To<~GIz^sNxbCUx{B>Rq>#E^nN!Z*u7iYC&U;S_yHaj;Y3MC$BGC)0H^i$iOF zq@f=ZQhX3-S;~~Bt*}SQA>x&$GBp8kn-#zY8YdcsZv@=Rf58)w+Gulv7Q*jemtolL z;V+@UJp*AO$ARXXhGI|}ui3vD^gP5OvrL9Zst;2*DfFl_Vv@BgtbHLZF-qh)<`f%$ z^)Y`k5vyZD@w>C4cw2&HU(<-O#Y8bLST>SmLZ5hQ@={mH272&t^LO;r5oDnRMP{JN zr#Y*1Z;)W5mrkXJ_;k1ixNvgWBzMh|47TxqB(Wo;EH`eAG7$>4Qu>4DO-_$t|3M>heo9nLUZ(zAjGp8Ywy}PUU&U z5nCzLL{W$&CG1JZu6*!IfDL@@Krv^2;+F=UiYiqy8e^ord_BEypG89V>;dgvtxXN7 zBhOt06Q2PL;Z&$BkkL7moK^&(Vs zPWvX<(zs9I%WUa$#EGkNapvCsz%D_)_Z0FpL6(IrOg}vsmzt+5(UCH}wG7oVEVfT|_HXHBSXfOQui(C?K zK6^aA8fNIC(7+SlA-roe9qLn9KzzkLxtNQ;kOSqM?vTvjI}yEwM?oaioK8wtK|Ome zNq|JUBKey{7cx^=`~Ze^0irUn0<~Ak6L~VetQHmuV{CoF$Bpq-Iix7ZB zfeySl2!hCzU>$}gAyvxc#n21F<2{umaXfrr?KWDL+)ka>s0d&=haMkl-CXC{^{b5z zPBiF=aW1T%ex=x|W1px%udbSS`Ni&-Pdt#64Uxf;3Dwyg4gMMluaRJZ6?sY_MfvU zm#|o5%RFPQttO+_8{%i_#(48;wgqzn4S|$U#@6!`O5r#1__1pPC4w>(a87N+ziBBT zQMpst7XE>Gs^TZD7@ow*(>CLwM$V7IQ2b+3j&0)vGKG{9bCn?{tV$9wfh?KCwHA=y z)Q9_r5*6a0VE}y~Vg!&bWRm3R5j9rC4Gft`g#_zVbH^gx8?Pj~#{s8V*M`N4PAGca z%toG$sSR_N#GQbzlxLCaNPr!xli~0TpCBmQQRCd8yDKmdctF7s&#i)=w@t^$!2h9} zA^)kH%vC?039S^O zFiUJ8xtM=t9$9Q^d3>&khvk7OO_G7#-&P&}B8^&|0=WU<^Uy5-!kz%<(Hi&2#I-p( zt1M80B2y~Y+Z?f={fa)U#?nJa;gvWyjqi2!1k1i3~mUct5iMbuRJXWeh{O142{g{KkWnGU1@``SUijPHx7; zo_>Iuj(om5RGSbsz)1OvSue>vPQB4lB2xhw!7;d}H->U%ZT zIe#mC{cQ23YNaUQk4ebc<8NlYgO1%w5Gp2L&%tuIE@sFv1sR{EHd8g3fvo)qC`f=_ zLpqSavM2ZeMd@J~MdNzFh;YhT`OcGWYgl_H+{EQ6`IMhceFlt90t}wnCxPw}_$^Bn zlcLPD>=hm^Rm>GuC_C9=WEG)}D{D}~5zyvDGsaigk^aKFjtM>{S3rBJep2GpeCf)= zh8j}siI-L|+La2}OvfE;WWw!qH%VjDMi7n7$s&jWkEZb~_Ncq!Bn2!8>CFwM)8f#( zWoU@C8qmNclqj5xD&e3`#A-F!U*FjYg))^xJj~~2Ii`q#ET1`mykPu3wdJIl65W&d z_3!SjHYFsL1P{?|M5`w}GdC522U9zv)4|T5)5UPJTkRXD<0f|99h-WynPdGTHJoBt3Uxe$R1kFn8p{-$lHug!)O(K7k6DqaiuT&6 zv2|FY!H3pf0?ecF6e)OWj*L`u^S)w;h0{+Fpodwy{^7;~#+4rFaRBx8&E4HP1AcT5 ze*A{t92;7d@0G9S_@7vd7n|67r|a0k0=@7C`F=a~tGlD*o)I&D#n9ra?W{Q5}AKHWYY zUcNiuH^z^l7R1{W-UX1F#FYE7Ldu|FrGGo;p9PJMID%N$|IRfgRjz7Q;WI)QzYnI* zA1CyZO+1nlcX#lA#mzZUtmCNBnGiN8`!ldgj|_NHCa=j4sr8OGcQx2qF_OkE2J)0}=H9`{OZQIFwf{(UslBs7|7rhm{eIY#a$W z!jDbX+E;$t_6V(u)FD@CYxqpw=;z-AHrsp`;XOi{7*0l9vudD0BP|h{lffw4u*FtB z8VH3)LHV0(Pl2xFC(%!!k*pVX2GG&|W^GkD258N*p??Du?Fo43ReR4J6{$D#`lQuI zCB`+z^LTUX8%yh$gAA)#ji(qa#J96e!+Km4aECQR1mA;tlt zfO2AEDU}g0BSle4rd4Rl{+|j61g)4^V`AI6+EhGpT!Id`d(tyBr8r$Ni!@78EM_^VGIO^;+fBN_x9aSmb z>hIxE&AGKmU}<6sqsAutC_=H9Fu}PN0})0!-rUW{C28d0cEF5K757rtPX>X0v}x757tNO8gE)ADB@CV;A#q7KW$ z;}O-T{YZp|fTu_bkYsx7ZCz6cmRfY)?0gnFCkV|q&pQ2Vb_?}lzoCTQjap3qD4Dr; zlZovC^5wJdjqce!6n*cR4yRKa!#dKT$te7F5SevZm_YybH_4P{t(0q`JJt-KNb9H z+xeo!b1FX!qHczN8e_7-&RT57YBN@Ig*7nWq(6Z-bqt<8#xr&b&Xh6@t6C#mg4I$qo7E#fsWg+bv*%BBI4pEcQF~wsT+J5?^t)K}& zk^_iafjXTH|2-gqBJwM`5FRIG;v?M%6;4GU;Y+>Bm*49HZKCBj-gDoiexdE?aoo~%Xlbw-G;VTlD*aO&RxcRrcCW*WvnKc z_7C@RQSc1k=){Um2G`KPTRAw=x1|B&ZxVbyagqHw9XDnDi+T8x79(g4ornsZjCOgH zX}tnvN{etAo0xuOS~o05{MscX1G#Of+Sa%6dJ#@>^=0>SS}->_czQCbV*)li);P@! z1LmSyid=!OBWnz&3nf?<+=rfrq(;qe!x%u)Y=l=9yB@MIV0`{U&6ntm*#4AKJT>Z@ zPQV3wvHe%v-L6`L&gc!fuY;IYlG#$vc0~@FHwU2W{WMH;t^~XByZDpNqukTmLl37 zx*R)RZLM_pW3Bg|nG6AkxX2BuzWxBCIoD(XhJE0d$*5YwMtKRcC@F!M3mZ*jTvL)% z`J34Jg_y`cy6NnECBZ3MLe@F#!y-sx{4%QO@q=)PYPe{ zss6j@#WDm#cVROXbZk*OQ@IW{Xij@ssx!-P3B`933;(pusSOyTsb8%IfpXaNTvAz) zn~ufRbU>0VQMtI}b3I&Rf-}}vg`K4AqE3%U&HLi_>5+(f!MmRc=G6{LKsI3$i6C3s z+s!qD#K)k0@!V5PEj5H%s~KQ(5^VeU9+oTGASutgRszMIanlbN-#&V{hsCdeY1u=- z_Qra^Neg>!pON&(4e2M<)4jk|-lfi`tLNUHE>9Vu9wGiU7wz=ZlU~cq%IXW_bB^Aw zjyGrENB6$AJ_x2{R8x!#_uHebi z$%!wcjBkax*+Uqi@7}6gC7>i$k6m{6ZtatkHys#E z5TTbvsl-@+V>cfG9fyuS5I;?e#)|f9UGY`L$|N#ckw9aK$Cr1wX*jWDHsW?aX`*rM zSi6w!ljl`G7dxGA=i`(yx>kF;y;JWWBDA-l3(*E;*=wFtd>V_z>EXKK$K}z{0r>Y_ z+RD2g%NGz?p_6-VkHhzX$k@B*&C#j(%j0Lhk9(Kj?FH zn;)@|N%yDiOP7!D{hjpK(@!`jr4K==oN9WoBHVOEzMD3I$jexOFgus(u*QITb=h;MCm8b_>?0s9E z-|bGiS~YNgA(~i{S678ox4j)x<2(4-_@6Wx!&Y_27>9{&TtBdju6rqgAS37R8%N5J zoHXC2hXh1Porf^m+SBch7N-*-O@5+5IKM+@1s~v$=9aLB6m{>VDh8PcACA+Kd03QW zhOpIfzbiwY1tM<^CoYGx_ZwIu@rjN)XhA%b)rjXgTV3X!W*it8n-|C z>=K@wPe^5)*>ch$BF|3JJ?gQUS~lmv)$cU2kuedGfPxPN$_IJ*iN6~qa0Y8}vM`rQ=VxF<=n$dCVP-lIGBYvp$=rSn$q_ngaX2Ok3oipxym8_>l8& zWn{$^v{u+ETR|HS|9y&3DMO>{`<{qqQoXdKOWVxnjeLDom%e|=5ACzH9su~HdiJCJ z-dzK@{Ye+9ms5MfwRzExr+siEqn=5>mU|k&%c{ZE z3A0ZX&gi%F4{kFvxl;#dBK?7k6Q#k@BIn-eM!&(NO!{->94x^1<6mN!Ucos3+#C zdOWCnmnLKW8Bw02J|UEKm`97Y_S@q@&yt`wP|;ObIi+H5Rlsh!8`Et|ZnaE!?%yno z)7QzBU&gQLsVZ9~A62@wq#p%~Bz^sx=E%{TI@`22W&37k7Os=s;XgG|FP`e^mBy7% zGb5+Qmiepo+TvB}ZHaCu9v*pET<+zIELCxHZp}Jnm&j7Dr*baQmC7fpa6Z0__d6SR z&lA0W6!h{Yf_YcGS)K62NjzG!92mlG$7ol)`w(Wjx7Ba09-Gz=+L(Kg*l#lrW=^el zOHFs)*X+5{xU(GWC%sc0F@(7@+o5qFJt~5Su~UGWJdNZBd7(3n(@fz z?#QETFTr0~GlrUt0ee1Qjz3sXPh({$YI^nDReAS;`!|Xl(#>;9|C&LG`CskJpr5gH zZ#+N6o|D<18|dYODO#c+0S(j4q=v3JGy~_*8mnq*H65Q#96#1 zA%W6>;nd_(F!O!8oG;z;0g|71Lx3c$q(Y}|Nb0jA_tkcT!bM6e8Lv?4 z{R%X4@AvH{27M`MF&R#WzJh`!(&uacC>?aQpx^mxjRC&Jk1VK~iD`PYC;dhSb+z1- zLv3JkZH#R5ae=S3_*vSr_viAGjkH{%ZhMyU!RLA0qgBOfD;6|qXhWyhX>_wsPmPEZ ztatX4P})_;KR5aEqZ=9lhzn!@ZpIr0Y^?c3-3l5T9|1lYuYf|{=eqCRoayPZx3As6 z(X=~&G~kBx-LDcYHiX+-tNIE2&AU4F`sTSA=OZz9SD@))RrAox!>`))`U+1{Oy}?=0dw0_E@&^;=uVB{n`l$-l~%dKc%CHt<0~}yBXvBfI+v5 z@#eV3@Lam}*=K8GWYN2GaY{|4TL!{b0x|wv-v|5?tj9BitZ1Q>XQo+aeO>*0ieYD4 zeOS5^X^=uYVX3>xa~~1I=okGA(K95UTT|bBP*;L8mnYLj2tQfThtT`&)-TK~s3T)e zED?uuF9ct4itk^i>KU(os|bD21W9kazM-M;hv^YZd@T^KgP=UXir3zB0z}VGr!~J% zA7MQ}V_u!)!}5({l~yXfkEYyuE}&jkijc0WA<4G15arrh2?Ffx_;B`n0LTE49fQ*+ z2mGOT3O@@%haHJq@~t7Jz!3LHSen})_n4@OpV*?o~L}NCM zwt}MqYf`;dF5?WM@3;#9y_7NH5ny{~eP@g2)h}SghViTS=lvbN`B75gN~_;4pm#Zg zGwSp!w+CL(LmbM&Cut9644Y&dn4V$#8qeAvQzW-u62$Ij9x0T#@> z3G*BZF|HiL(44i4C-4>Yfhyg_=WxMC@>14rNDDP4RC-5hOGmnt}-&qR(-jQM{# zZFsr_pw8_^=Lq)fXN+`$4`Ow7`~)NPAbhgR=o9ag16bp8z``LIORxK(g&Mjom8v;S zD!x-u@)j`iHxc+weO^f|xMsk+j-EZ|@qg8pm~uSpb!ij!F)?^4p8V4bQ#^mb=}8B*v$>dEsdiQ39XEG? zs}cT%jaZlWi+zf`!%8eStb~mBv7-MMSvk$8)9v~d;@ob5z$-RwywN@=rx|Kas`5+4uKGUnGQrl+Xcr)UR@xqT#Z+j;@;3I3Xo* z{7ZcK{=PM@AWq4g%LodcjuiFLTOtl)f)Kv|gv0eREfEF?PHj05;Y*LTU)oIw_K0Ry z595uLv#ojj9%@+0KnM`;?&OS8L05sd>%zcIubr3$)!?=?%gjtNMC?Zm~vQ>_iFmUeogH9dq@?*erEBp>M_7FlLnZ z`_|oCdKK01aoOKDPx#<(_e+K9+EivWS07l^ejuDa0eQ?+@8T}Y9EA`dI35jLZ~)_- zOtciGs844eE>!Aa7ea1r2D!Dc8uXN45;$1@3s06CD}p0l*YtQYE3Of+wRN8nTU|fp z!G-oSL^$D|55a4Z1eD1Ywm&N;X8a*&1jBhFp`0Bv69FHMWNlYFi8q}o;TpyaSTG1%wFmSju>L@E-*f6|XZwU=99U`qxpK>b$LGhI+v zMFCzrXNpNT0Yg-vy}l*tzf{w`>MSSMfBLw{ZRN)?$+PCw+VyOSRpq6CmFnv?n9E(Y z7bESA0kB_kY0cuytcN>p^sMcqn>NpU=0x&_HO1!u5LIEvmjlxJ5a58WF!=4?u|5ufrsjd&wxnnBz&)U|X=GE{p z1N4Pxw&eu>W+f>4rMG>5E=GK2g*{;gALn%@zc-!PPGBs(wME}1riI)5G3hhc+SXq_8dN2)A49P=u?=!D8aR6 zRk>^Dpx^TgO`~$>NDh`4w2a zis@RpnKkXxyEvrLySCw5|1cPJ2BB$d5#?dMYzy4(aV-LP{qS?X-RT2Y{tJ3Qw67~m z?TU#A_5H~_v>28mH+w-Jd1x$n?M4Sco4vmrFveN-0ku5*oBC9U!&zjJusn-XPKy7q zQPsjkit#ry#Tr+ml+WPKzXb5hRS0*sCD+Er+Rpg7RmxUpwzPV2V`y;$Zh#_prS$l@ zDZ}j=!yKW9Z@Hduc9jy*n8LOYvYd4wK#*5ej349eEl`G~2Lmy^xs=FN_YU1OYui&0T~JKKJ< zZR>e+^%ZpO)5p41n+Fvtwm2f&&pK?xy`rxZWUa_hAe{Z-fVXMfwD^25PntJc|MI`^ zeK+{Tl}zj=CLj!h_;NNHSex4`+%1+w6y7>gb?~x~$NXNHlU-y)-7ulWYWW<%ezWC0 zJF`YR{r4m69=i*)!i&U`qU5;u)0n(`hR}IgkPkwbg}D-B&ED!gcAJX3a`mk$V|;md zG!d+8f{^r=NdPs_!@sAQ+ZUddu`fB~NABB)`0egb;9_4XHa~YZ=mP6=-$T21)=dT6 zlDlvh6H1kzgcbj34w9vN_3Rn@bBs60`WGYu(V6NFTFUF9^;|g3uQp(6G5BkG$rv~z zL0osu!FZ7^%`NKalc149ZBFXJ@??rNC(=WX98oP)E!9_VB#H5Gym!F;{$00Bika_< zSqCEBj~w`)(+S!iv2;e#sWjw&lTbgBxHm$w0q{Y_IRSyIt`5 zn}T~kyPxv{%)?#|w_HA*k)Nc?UP8w2O*Mwwn;OUcm#&+R+ufKbb%Z$9>ovFl6t5B^5^hzvr}%NHi9OvlXk zC(1;@8DAjQAlQfV@wz$APX9+4Uh+yZS;QJ%bg_2T`s?z%a1Lh^t#%8cX%p7g`@BZk zo;csK`ky_j_o&|qM=OS8sSXSTU1|)yMgAtegRbk|bFUEa5qOou9y~I>Y#tZ4FU-pC z!zT-dS0>v(whQJo_JawaLE+rMLLbLbb63K&6HbDkVbei!lLg)FPBD)_cYlfBh1PG0 zfZw;P)oZ8IVxNxJoU|8rx)Q8IeFiK%ynK7SJpaa#zM0-Rqa5VhW9%CTaHB#<>TSC) zXK&Ewumuq1*W*63x}oFD=x_jO!iQnEnF2)$4y2FPp~gWh@n1Fvy}Iz*b^~dNOmV}* zlwK9v-cYa>S6(7?L%cCX>z}XHOGM2fu!tGAJ9BMm3EUloC*Bqv6V{rdC0!tXB$bbe zFo>@Z;jHJEgHk@;F#T9_dhO&Vp?=7^CuO3t2%5ouLrC@OLJY~B+4>e^-?G}zIZ6*F zvHO@ZVy;A{f@ucq_x(*8iU!vkQ`j&yUAiRiP%X#4#He9H0zFFVDSMzUrpDv=Llzh- zQtpH*=2qv?z_`xcPI_H^82X>xtoS_hm2Zm)FU}*nDXfF~SN0@vfFcTKn!TvO1aa;F zQOS-$RldMWZ7AOrPXQQ`MA%RAiM~$_WOwOaP;3-rXh$$=V7K^fmfjB7Xtyi#Z{=GV zW2#_PchuntGcwCTXe_(MhuQ$OCkIbQ7Kc{UE%VtMU=vrY6(d`bzX~;N(fotYgWMKM z!u*t7xX(1wunYtSGNOCn>LN1A;M2;T?xDpNSbG)hK!aJ5_V@>2wPCiGcfm+3zk(|v zcwp}>2*(1l{z~s67VHg7A=O1VU8P3$3&l)ihNfXd2k3)O(A>!iXmfM zS=AVX{qfhQqcPqI;>i2?iZDSU8Ln>)@%xL3?>|*Ga(E%|8~8wPKe&O%Gi_OHVTd@w zKMEmHw&9Gl`9D&(2GW9361CANVubu5iJ_ikVC^XN4*(h*G0NjKK}q4P^d1ehmqQKl z_E`(df{7mFCwEs`J$)T(vBa4aUN%!iWgg8p7!O;jtLY;Otc;0-mT-pMs zMup{%G_|pB3nki@3~YH4+}8>$>(#{p^5AT9RVHvLWYiM+p*0GDj*~|UiAalLDR~Hn zr}e^$tQ91s?+FYd1(ogB14%gAUvOZXK%qi+pUO!}5aPZ1_z=S!q!d}ih6$e{dRh2; z({9d)n8@jNy&YT0h$Lk7>y#mzz93SAAeDR*%_qB1Iipb@lDmXJQa|%8Ml{FwVZtv4 z4+=Ri07E!~7cCa*Y3LRu*^FCBjbSZFx$nSZ8-z?Ad+qV#fH$`9)i_sA$U4%>oJhr z4v1JBOFuPq2A35qj^FxYjw^Bz_u>AWoHaHtQ_3C6DTIh+4vC>JGI_c4ig7M^GxE{6 z%46o$>2-tfj5yoiQ?I6XwoLhM-0O9>-*in*`GR6T(p5HLeB~p6jLte`_ zUe9p;ns9*eI02ix#g}VlG zg?i*E%LB<=$(qoccgwDR+MHGZCv4f=`}Z!0(-;~aiw}c{a3vOY4+i|FLh#Q}!FrGq z{ho$AhJ=u)lAu?}gXH`>2A|48t5rzIv2TSsA34W%ID--IJZbJN1gtqY&Z(tZJ>;;) zOnhI2YJHD>DpnA5%@%PHM2smiJzhlS^)Ws2!!XYl;0(b?uy+C&Ta2MJF2 zvCX6juFWut=5*Yz{Sd-(S_1ARoHV`A%AwWfEt)McIEqN#;dFu<)ov$>408U(Mo*g; za=48Md1xWeW<|GE>^K-Mi?z!nebZ!J$~XssDqsUe&)5J#7QSK_>X)3lV3p9kYme08oz! z@0{VGA9oxY;NfyS>B{kQ_8-f)88+a-{Z2r1*b*DGDH>RF1c=_qzcdm!6RVq*{kg1x z&Taj)2@b^bh$uf&j;8gTVE(t$2sV9@|Gkt*f(IjMz%?p#azGnRVF0&LQGnFHGY8u{ zB>^W<@Dw656zrvOlAsR7S!ouWl?C6<5MQ~`+3TkG{b~>#%5X6;vJr9iNBMANEb6Da*jn46>RluuH z;C+$Il7g2`P2%E4C^;`5UK3#);?YH`RBMsPI23U8?AWyP;xb;aarV<3;=(Md&JnY( ze?Ak67$NG~&9zAXBUJaQM`j6hdpz8~jRG_p=yxJ0zCqX3;!93To=b+|P=OPikX)6Psy3#&IQmg9lCgtuSQ{t) zB=OGPP!$LnhrdPIVWBbU3KPi9M4G1Ii1h4Q(N73KOdkU;9mH2{)dfaz#BQgdh|1I$ z?3xqjyt9S9D{$=KQiI?l!antW@xd$f`tiAur4Eo46{_Jrx5<#bnP!#!NiNlX6pg#R zs`VizluZT#X0W(s1V z?4+`Ip-r?A{%I~%;re3am!ZK4yp&Q@1N}Ff?y_V}@aUZ)_~B2x0W$QT-EmQS;Nvl& zY&cZ%+un`}(}HOFWTkZsWK?6zKjDVKsnSHLOpyoBMGmCM;+>PQrH38)2gLQRFq`ob zh)1e*MiPuQ=+*HFVN)5v|CTQrX>mo;gF%68BsL-7$%0y+!?0c!20dd*M*(;W{;=7F zg27u*d1+~=(D!5x5qm+}=(y>8f*1`HaV-I(5{(t7&Y>b<(&Ce%;NBKHs9nrOs z2|VbJUhUUV=x`2I++4_zC1A@N`fywgTupDOLbYC|y9YcX!gHYATHFm`f1xxN0Pk`$ z1VJ@xG%~@)XYroAco9k|Ltwu_45LZE^?6qQ9upFNc6`Nfv1n%7o z;(P99kf8swi{mwrgO^wfg4IEDpAdJ;hRz(%|okAQF8q&!KOJvNQ$p2)@`u&cMa`3VA6(fD{ zOE~%UuFTcN7(8$8NtVPYkmsrxJ{QOHX}0e$7^K8W9iaADmDD>-1E$mPC&sy$YP zB3&mHsf~G~WFUC$t@cu?179zF7Gch+de!AH_&C_)(JW8mj~R@)Wik#XGu} zojH&u%RpLVzrghYeg%`Bm=!ya-!E!4(LKjk@QFmhv(R8;%y8+LWgX=g=x~2LAz3Wj_B$LBUAVAfL@Z;qIH&}u82JEr{mCw&uS7*y@JXr z&g54$W)*AZk>1UEM|60~0DmKIIC3Xb0;Qu}qEnO*ACJTQ7U3hwF}RqGn{jiB9#}rF zG{9g-ERr?Lq|Z!>-E4FRqgS+rY9Gthq*ZZk$(l#s{7&jh>hB@dP+U2eW?nH@U0?2M z&y<3|K#&x-sw<_<`9x|CoGdl%0;kjfQ!5q1Y_fql7}RDVqiw({_zQt;#W1COJG91P z>MC+COB~wfHVNO3a$MuvZ>DoGPC;dy#%Dy_Kq~qG0;dF{UO52I(q}Z(|*K4~l^VQ)hbLno1tlNG9-$;pqH5l1T zdX2~{?QS8Jd@lwf3PN*;2Hf-Hl9}^ZYB0$rCuGoQDAwCd3tkluStFHIS&KQam5NjI zt7%EMp!(g^5v0z?9%iG@z48}`Lgr7(%Y-&-Or2{=aJmUAY1GqmWfaunsd1c@m%fA5 z2uf)AM|S&=QH--IB4HF0@V?poDp)Lq{4$r;DZ@CcaYl6~``hb03)>iMO9cD$uWYX= zOq(+njZc>WnLA`2IJHybHG}HDsg*)$QOhC0XZP9$<4Dnva0!E{H`KQ71yEy6K_w=* zAU}MV>D8egni2?2kVf5Ru8DXdQN+D&0jMz;?=X!W^8pqxOKvW?p7_gGht3Q zPgQ(SOKmCEo-N3N%zJ&rtRri(5{h-PPJs7!2~B?@xeposAJEJl#cezzmm zRt~>=FJur>>X%rX6GoMtuhaAk#OQ14!KSsr+$@Q`EZ;g9`aD{^QF1C|P;yKVBL1hK zxyb&_^wm}U?wlg7|9@%>55;LXn*Nu}rIrjy{oZS>9d*J``X?ef$-MBS~=ra)^UNZiaFx#%O-^_1?iQ{2+D0BQa77aDru`1QLPP5D z%_~5~0?r*}I!{!I2z{PLiWh(YxmrIpLmb+UxHYRqLh=#7W8WIXttAcG6QF<#By51} zci^Is731d@mox<5NSlOOnmX;M|_UdN$9NLid&VuDX zxlj-ojPib2ky(AsM<`T@#zM=BlGC5@=p$;LTywL_1TMo>=ugR!FWlc!?2CyyMKHrM z9Ixjj`jrm06W*@zU=sP&bHt(*ranW36X=O13O#&2_6wQIsJZ|@s+x&CRD*UzR4>*) zR)pHf?U)#$prrP~E`ep(>4;vkFP{UaXf;6s5psRI#AemRQpMNvo(_`HATo7^2?L64 z!uby-%Xn=#ilIJAhD2s4iZQy}?;&G&NXcME#1^*(%1n`VHC_C{AP^FEF)2)gw>R=p z$yJ8VQo>-%fiDPT!rf(i!Kn1Nbk?9o2o_g}V*inDO|M!5%ttRwgGF6c)CdWl^4RKCKhugW&FhTjq8Tl46?evo^>;TvF> zrSt0L?x>ntu@ealJVSG?wo1+&5?x&7Uzk%Fw0D3g;Ot=H~^I$^>< z$sc4=#YWZmr#=%@_f>0(Iiki*iaX*rsCYj2D|L-iYToiYh~6~U<5h$davYJMZ5Gd> z9^FfHQ_^x=`rF(uJD4(_!j!tP+$pUx5>vt|LQffT2IeU4zvs!*8qCbg2yjDi=38Tz zl~4K5xR|`5OHW<(pnZ^+Rmuy0JTmqd^_ec`l^D&(m3YBC^It!LhYQXAQM)Pf1m=+S zG(!{svY8OR{tO4mQxu0Uj+3we4^MQlh9D`q19IP7gZ=+-Nmsr$qX9MWE0-=I{VOU# zyNi_!9*co-o&LvGqPra2#D5E+dtDsAB5wDf9pSTa!&o|Y$;y8gyOxwD=~gP;VWj45 zy^s?DT`5sj*~3Y4KW*=KU%ky?ld|32BMV=i7SP9lQ4mpU)ny=j+l=AQ&bZ1g+ODP) zAtm`Y+kMilT7i5*!X4^tk*%yM`LV+L<0)8TW`Ey4ab_XBOui?3|}I)h!prM%L}j&yGkMwubG$0KY&$ztfvVwqM}*v**~Vp^DW6ahZ5( zi49$1L%$q0bZ&IzGV#qPn{T%GGQUld(Rj90A4gB+q zVm}`R_*u33V|VQy0MO#8DV?r4!JiL_{QSybpOg6Z5)gVHKqxGJ^F~&;DGEU|x4ITo z6du0OT0;&cI%$u_x}GNvVP<5hHCb)dk|m^+IuY>KmCV;R$m|5p|M~xBW&-V${QwPt z7CZ#WGELxaB`_R>3<5d2@H^cw>P6S141EUVirS*OoQN9n%y(zLhn^L((_uYwuH22@ zXSSQsCznC!a!R0nA~hzdA{|0fQ`L_=1e4IhGzhLaKp%37hF+<9?qxY(va-`~XuZHx zd{iJ@kFPbIA1ZGYqq_F7PkwpEQAW4EW2hZMU|=H~igt;L!m;1XjDeAS)&QY9 z7)Q|eW6MQb90l}dEsq`r%-b7w{HlQ{8Hh8_Ky=}^yfqizSV!o4+2Wh> z_4d$<#iTFZ9iD?Q`sU)7-LnG+em^}s`T21FVBdNDn{)B*00iLE-_8!-zPoVVogD3h zu-}1wtIYWcyQiu4v+VaKJFhLzil|sh;w{$p^gsW^1@>mCk^Vj{F-y}#`$n?w)YPH z+u~<@ z_4&o&#m9>S=k3YKJ}vb5!P(D;dk5z~I!7nxv|1m}4;pHJ_hOeih9+RC;A{B(^~du= zTC~ICi-WVXkEArM!5;qt%K~HEg;)1!bx)3QstQ)<|9;O)`j+k@l11N`;`TlwYi{9q0C>hK&NIHYc2_o2^^ zG-cc)7?q-5ty9~eopcW0IJ^5lAL6j(Vc7fgLpdk3WP9&qxeX!QkM6==B=Iu*eWv?1QvCALtc3UWOBoiLd0T#sB&S!)}pq~Th2Am z)tCT6W*0BY-ys?7!i>_y+B6HUZS#;cQXM}g7SaKhO!#veE&|JemJWfeTEpeI2gFwP zf)_g~fP{&VS}2|3Jg0{bWLZ5$+P&jCdx+1*dh>fxpVA=irsj?2c^BT< zrL2bAtqnNW;>;D{s-;$|d~~2OjBvs_~Fk11p^rQib4}k zVz+|;L68cZcNnL0J`9}?K?meUGTkN(^#&F<`4w@63GXqn>1_W_RF2>iuG06Yd z`GAz$*#`+=hz-1h0}^=+Bic5c4^a@i4TUZLU;dywifLj%DLlXL#y5$^{7oe@s#RDA zOlEmZw;3o^2fa8b5^^(1u4$wqgg1vp)#4!4@-(p)Bnl?9a?k)ex%9k2R@lq+fITtW}KaO5u2!jF!$d zoab;&mZTdOV=l;~BUH_noAsH+J+~H^1xrRS`6kz-b#{$DRA48PS`mX0ICyOK5Re-I zNm77EF??v=*1XFcbpM{MQMOI5(AwNHW%T{M$JPrjDHdd>*b?n65Ft@@)LbpcgHFC( z(XcLIt8e~w7^Oa|rmt*`a}2pV3_C3lHGcSEy9xh11tJBi7*-8EOaYBi8IiWllxJJ9WM#_gbdko%+jM_x=%W()2n&Q_ z3r3ufPD1U%&3@BDPMX?Y0F!@Aw zlOzJEmstXHZr1Z?%5EoB`v=Y4y^XErv!{FSPPR8THZn^gDbf2rUKiR`xOWF2WRq2S zhIJog3k@yIyqrngSw}gBZ7hX_?7Ga7t3=~zV7VIE)7oi&siZMpr(S$-oo>u+Ko0Fh544!ZA^8rl&Y{m+bDs+q6lDUc8LxzQAuq zM*|Il!s=U$W&Lz}*AZ-Sw?CKGpQq0hhLB?DKEmw_ zv^trYRNG+ZAoQE`#7f?m%AVE|NpEg#Y;HH4*Kq&?e%k~64DGDHL>LH=Vk(c1?^~$5 zRs=M2i)C_e2SLgL$JM^m67gRxdQ3ZAH@x-}F2RBeB0f5ORR-=zGhHBGY`c#}ZV&mp z%2BQ{e9ks_7G0KTzxEgICH+xfI&p~3+$*h{n$IN~#CfOam}`T(XYWs*&ip?@Xa0kQ zA)skMXNZ(KWkQ1+f*F~7q?j~n6H$Q|GjK0FVd^Uh1A85l0Xa>Rup` zN>k*lAQ9)}m*ayobx(|lF&nBmF(QtI5m9qvL>!F~QTM@!I0hr4=EjIvb5!$VM2uDS z{uq(jCGbnokkD+8idmE+qb1mfMTbPwp2~y)a_(l41BzQY(>g2EU-U%~LF~HmH6^&Q zECk9zVOTXRi+Z>#_9cwx&a30-URSF)E4b_D@(yOsY_Lt&?P)9Jc~SG!MFf${sZ2=G zUz6;_y%1i78E>^A0SGxvO_3s;bQ_k#1&hmF$}%@JT~GW>zc*H99vyqvp%-SkvP{(P zU03Wf=aw{iHH<^(l1a1|k!!eiyEC5j!bY)Fi^#&ZDy<4h7cCT*zAT$q1*}QMIBm2G zOTEX;FlSG|Qk@SbYR;JgtUWf`ee@ov9MZBPUAKsN1?8ffm?Pn;K*Adn6=tME>iFdN z@c7Lc^g=`s4GNW1eD@;^|LmM8ZGm;EG6^T1&@g0J6Qdd=-0rag8i(E}Sd@(95p}ca zSi{gU^x!l!3ByG@R`A~O0k?u{?c}ya96Chk^jP)}c8{PfB-Z$)p?q_bu@C3X_wV=j zPIao9f?;7E-M&D>wj1!zlWIct)yU3HCOelWG(P9mQm7`OTCp>59-&%QLYK4rRAm)^ zDXA_c)up65m#vrxl;kk%`BTIh}Fpo!{@w$r;?nOrGD$oI7q9g*tKP zw=v_WKLFYC8=Es-N^kc=&DYu>X1REnZ}X ze0@_pJ?5o9++0Bg{HFF6=lc!bVk{8wtp2r{^vu5+}af`)1}ET!-JxT(Ju3 zH$|+5;kR^_vD#5|^Ucf_-MQb&WN-aAxEg&UvrQ7OJwO?woks0p@QqNbKE880<6OJH z&$*&N6%BrGw>KGt{&h50Pp9p%FMqAuJJ*c)r8XXoxi@&7FfqkQC5_nBKs>E{3|PJbEYe?+}d1L66>JfO!M}J>#MVIGc9Yix+i*@)g6U-P&AUsab{& z3e;`q%iZ@I?{c0|&p6=EUvj|kMw^ns#p&;9opIQ`==zU81Aee|)IpgkoQsy4TeNJl)UyJ?4L|k#y@RM?)&qYOF**S34 zywO(( z#po+Fd+=2`DnZQ}eC1RGU#XdbubhhDD>X~-m2&d}TIC@`i4u)vT91Ld%Z-LI%#j|B8uhhNb*>rghHD^3q1@BPBc($5= zHa)@GKsGg7AltaI9BRrywn^z?)#O07DavxFDFWH1EX$$B2C~gkmP1tsvdvnSL)|x! ztuE=2&f?EGR`Nk+NBg^{SdQMs6s`(OcENRK50qCr$Wgr;!`+AB6ci%lb}V zjO(FBlPy#?>H%B&$KU@Wk@^Y=r6rq!ovC_u=6v~-Ld@9Iy#uu$gRxB&s9nL|)Lenu zdH$y63e+y}H#J9~b|rsPGY4u{^EWkHpmr^PQ&R_OPvmcE!GYR_zg=M-XJT#VKpH@u zGijrBiqv|2qsJShK)1 z@58A-*e`M3ya`Zje+6S1XRI$JmRDQ~YHSu{O3Pe&v5-f%0q;1y2u+DePUpEOo&}}P zLXI7v2@6`QOD(Lj)WTXyk_4#bEW_hepF)~phpRtJerm4SflRT+C?`{9?nu?MjJP7| zovJ?eIMrOPq;O=?U19k#vC);rPbI!W&2Tm6rjjHiA8_8HezC5nLY390GXGr zWUjKp4wdH=-@Z6;fVAd0(eZD}l-ICR92;w)aM)a{%CwrdB_7t4;jmb#DrZBk&v>Hd zVWcght5aQG;j75TD)d5TdbT;VqHKrFOY8V1?-`N-c>e;o!Q_e3s*;*yQp~u@L4m0# zU@AaY-|Zsv2Ofh>oI9`)2fJ^8ZBDOHozI;bWN_0-HaA;caxCQTi$(ZJLYG8P>R~k{ z%Gr9oxxrO!-u5rw)spGLOS_>5^fqz+8|YRrx~_{Mx~06%=s}>FChVutxBf?@p^}*& zIIaH~6H{nc2vaPo=ar~os8jsrlid?-5n0}%?G^QWaynN+wU06?&IB4MA0;j>R`kuy zAnV5LSQq30sXduOf9$jXvVAq|QI29|CqmEa@Cbd!a(-cIX@DSD^xV52v!v{|KIeHV zrer6|Te$Ktj|A7R$zGxlg7NZRjYb*Mq#r)9J`M? zV{4;qZB->}>uf10Ri(9+I;x*3O-)xva4{kDC3M!$XIIw4C^`J>Bm5>Bh8_=;+5c^j z_9^FR7faE?f!cSxGrbIm}!~ zjH+as(d*t#FR+I497q@DStQyBgaNSy1`Wv zt8vaxn{1;3RcR$wldZ(lrSnwN5N>Cj`%`6R;)*FZNcp$tYl=NG$Y%9?4Ly)#SBBq< z+U7JlK-H|S(<;-ln!|OPGcBumU8mZ#tiA@6#kDBqik-Li5O)Yr60e4KKN(8qKx+`|MPwrUiX4)*SYX-!XUYEop=Ag|9zd@L_N1wzFR%RYFc%r ze&Cj;&_A4(KKy#;dt9RZckhK)_YnY>5VVJcpuN9%HyL;4Fz!s<4|iq`)M9aGI0F&8 zoJnGr`WjsGYWf`NI5!+>acX}ccf6WEZ@MKjsk!r}=Vc}}Pu}#h%%mPZZ~FVa56%bF zt&m@Grdvo*VCkgspuaKGr*0mXEE& zdMlo(bI+<=YF>+c<&rF`a(&sVT+`$rc-laeGyd~~I=+DU9tVQ~A+~!6(;jq*XyIRj zZWQ{UV#R}q;oECsYF;W;iy;4Q!bt^!IKdnVp=Ez(J3z>bK@0qc)xV~q@pw+hIAW*3 z&rI)zRdcE-MFL)tya1>1SRPZHvAU1PG)JG+93Im$eO9yTA{F#m&8Lf$>9d+g7kN7;`?U>K_akqQ6Na;HQqggLw|Sx6zb>*E|nF-ph*wNzCda$ zfm8ww-tL|u5hxz}>^9+RQ_HhT$YG;GP8~DI9Q7khQz?F;p1S3OFw`&ab}!CPh|&NP z_;_@old+T~ON($#Q)#<`t`O}xJo$Jo*N8XJ6$Wz55&H+qxHSL^R+1n$2@dnA{bh(cNG?Tirbybla#+(4ONVB!&|E5 zDUDeZoF9=kZ6iV<#*ePdje}*vn{o0BaQ?G{YC{(8Ji7U85d}`d{-K7IDeH2=2{v5K zj+Jr>K}Jq?zE$CT*BR6v;uvlI@WW;U|J|a0pAdr@U5CTOIcMV9nuYZ&@%Am1U%syu z)4p)M(>eD$Lm2Nt=nbL(p|}f5eW$F{ch2mo?^Krh&Y3m!ovKcK=gg4$PSvEobEZ#y zr)pB)In$-SQ{z+LIS-urPUV7Wzi8?^H8xK50aM?pV(L3*_SAQ(tXj^R`mRzMnkn_2 zs*-?aNqwj8mHMve>M7@;#!uhCQ^U}0_JSK9jtNX8A8k_1MExMC>@a1Ig8<3Mc@NYr zTtWqxc!tNar)8w%j|&Ho`7N;k-yjxX8m;C@b#j|?Acb)6LMxGIT>$p4r^FeH%HUK1 z*h&Jhow)+Am5IN0=8wNtCjQ!ajQHzuR!B9CDp=3UP=+0^1>&0ITPqV-*pi+r$#ytR zPR@826GL@7H(_+w^Sx_7(qmQXRCWt!+>e6EzVrlLFN z!|r>aRX{TH>0-!@Vw3eU)rT%#k3dnRrv1+@vUAG*fHIQGl%2+O6E`DK<&jL_6!1VP zXH8Ywm)c=iQ8c27h=sT7_dK`)6hNv~Yy6Y%7h)ykQ{}<^?WCyo>EEzk30y`FQbeW2 zbNlW!++AYXcvVHE!q-U#(1!#oggJJC4?LeNt==RF#B z)GZ$Q-M$+-uVZ2>QmSWstMZ@4ChPk4bj79baHd>c#iQRS9$k9vL+h}0k;~?#rUtT% z&E}|^o>sK8dc@%HHT|diEGqZjBAv=V?}2IXDRZ@CHIm<`oha_u|U>z zdn@^pWiYapSH##KgO4wscu&ra8ujsJN)w~XTx!GxgE<5yF-F(Zfh1d1@;Thoz zo|DRc?5D5K_j4&Q?qAa&Q!&v@Q_v0ztQeP~A_6lBA<~8E2t@k4(U!e}8cHqW)k=626Vj z#k7|-GS0Do=X~%#!$4Wd8)r@bD(c9Vz;tT9IopQaTmIBj&@%ou{=Kb1^WK= zaPI_2?e4`vZ4AT0D$H_l(|sz;+AuryuoY$>M5VR!LZeFC>kLLkjdt363am*+p67rZ z^&#l>K%Sg=Q22g}U;guVPoMnQ0X-@86E|#iqJDl{i;2F{j%97IDrR$@&1j|O3YoI( zSu+s>x_B1usxBN!<-?ImffN&?k;WB(84sHs7kyNgGJk(zNVqtU9ftIfv;fXEN)ziK zrQEg$E+}q`GjP>)(4B+ckUR$$5>_Je&m4TVtCQwXPuLa3Q3#F#*?87PEY zcy(V2LDJa#6v6=oGr`J#sRCIz2|70!*ZJ520^Aw)&}fB%WzW4s>wL2d=ZMPvjL^C- z&a8yJAU6RVKd$^HX1M>d_7GI){FlSG&1*jdnt(bBBaOlZ&<^=;JMHxDA*@gW=#54N zUTv=%blmHxT&77(Td2(SM!B+oo~1FdcMd^ozHe82AXB&=L*Gvl_u7~I*QigYZYO;Z zZa|8M);#7`+T+2(Jsq6lYrYMnzwAwCJYFaXZw61#s#YKuxs(zCrBb$TB&iX6twoVroE6a~iI2XcyrUMGOAfAE>IuqT?33jOpCj_3YO|Qme-0f!hicAqXm)d| zb65{$RezvkXlL}e7s#V%FdA21_F*!9P|*3_=+ckRci$Y?iFK!pO4w*nHZGmNw>p+W z%^XXy3}{#eG<;nF4dqaUFH(5?%`irC-p7LwTsb2wY|F_I^Seb~AhGPZmwr#dpRu)- zNtSmox4$?$>i`6)V@{#Ea+5A64TB|zZ~C<2mlOnjMeAWKb0C9V2O)@DvS^0dDs7zO zFB+yKrG-7yEY5iwN5eq_jdiM$LTRaU^gGT{XE75S{SVjWba($KgQJaAa)driC6=sq z*08e2W~0!-DJ;-Y>Wy~S=b5i&UXDd=xxHTae-+QBmUA?=tHxmuOU%Yd>r2I zo9xYRk3TwZ38B_=PD!_Qv=?9%F3H=|BaEWax$B)RM<*x4%d0Z0?N;iIJL>Jb&^9EH7+ zDoi#v0#SlZ!xI0`_L5@T%C3y0+r+p@lNcNGuyrspir(}pHMV0^@VrjoEqSY)?OGR}|?#!}D{O;7}@Ry_3>0m7svo?Q4OjV&xli*ct ziJngwQ{y!4DTFcgWf5&PSR}q*hapyd@%$s|VKC8C zg)cFQnvY2gdc$i_wb$VTU<_U42RHt@?}0ezC0jc?n?Ecr#&vRE?G$zYq$cW>mjjMx zW`}@3*2{n)pmMbrB;}R@W9$0L&>C08wnYo|&Y+0GO)I zO!B)T)-NUy$AA&vDXFHIRj2$7($!(lUv#&Z!=UHox_phFAa63K?B|`ubmb;NC)btL z1IHr_(#6b*Z$pyn>@<#`nW)DW4e~k3V+-jLB-ZykI{B@1nY*j{yTxr=8_9`u^$uN} zkwc#|nJH)s+WW;es>NIq1kpdss`Fi(Y~={r5x?_ypVM zMsk;J2-1Kdj(dhUVr%e@dHI|&Us|7$sZG;;`f|l_NxRa2a}Q`#>_*;CE7yLyVpvKL z4iJkx8u+jV{^xXsJUBnC{OgL71b>5HHlLI5Sn)V$8gTAboLjdygg@U#bq{s}&+|jw za;NKeZrV5g=q>`8(7ZnKlj+_E@y#`FdH$6+(&jwHS9!~t2g3yo^RU|P+V(hYiP^a4Y=nwP`t+XtOHA? z1z)F|C4`f2*1h`JfS;#Np5T9q~ zHlOYM$=P^}1sEnN=-SSouDe4oiNf0Fl2MZSeXsdfVB)~#|0w&fUjC>3lf8@IP7fU1 zXXo_e>!ZUxXQjEm{>%2>`uhIGzVqw5iw{S@c{ZGj*bNi1Q@XwN^@C$1Fe}|O9lTgy zzq`9@-EFs`_j-1>2>sL1bgTfHE>abmv*G&&vi{G{uHBqcPqo!}dtb@w{Dj#`}rgqcjJTBpC) zXJ}?Hy2e2y_iyP2CN{p61Q^P|mI2rQ>fXBisSyEg;TpkF`uIUtoNb?+a^cyZoPRU) z{^QwE`|RZ8;syTkm)81U8s;m?1$}Z%-#C9^nq+;wcXD*JdwPD*K0Mw(`1OTz<@PYy zxc>Uh;n6|+{NtN9hw$BBh-g_azuP@;pPzg@+dF{f(|BmT$R8ga9>2Fg(~NRlxPv8+=q7FC>CQC8&TbNRDE3M#*A#J38`twzEtHxiP*V??am zAdV4dHN`>121v~-O5{|>lL=9t#%_!_* zU1z5&6ZMVy6Eybx)%AG1vRIYGYWi^HLG%-=hx3((QdTr;zo&*$FcgUFQM_vv&(z#Q zO;oFIV%3x5?=_Ny@)PA}R-8D(?ZF(i<-T(c1D`BLD^B2%>fOANC2eL)s@UZxPu%Qe z-)N5>(1FVB$P8*sk&sv#uR?Wi`edP}&n4nYc0KaRxgKZX_&@(UBR{p1;S9#T+&sEl zuk>A*YKWyaW*XfV^hl@?=Q4_+>7Q0MS4s}rSLko;U1LrG{?)k)ytMn%%9EXcV(+c> z+4g4nv#lrc*}BzEio-!$S#TZVkx0|1k6oq4LmWqU&Bz0B9iFvUVCB`m&(Z^n!Ch*t z_yjFS&9@dolPA{GnEqwf_Ab362marLCRSeY!^T4m=;HKSVTrc|vZ{A-V?|wM2Iiya4owj+7Ka;0;B`bH)d$rf2sFy$5itSCiWP3-4prp*Oa@i>}lnaxF1lR1S zncg>uZ?y>;MfsE3__r)6vNQa%xifY#;jtDzRz1sE5gF@#+F38R$@N!eZR|zi{e|r7 z`ETcYC&zF056|ow&pgk%Io2Ey=<)FFOn2)2{@w!4gx9f;gx8toM0lMs2Vx<6aCEY_ zdqg#x7O@R5;Cmjl_0pWjZ6@qYn~)wyGv4*L=jTq}$Aoi1(ziEv(d)aQGk%>U>p0#? zs{-?Ce>m8CH}5g`T%hL|2#XVQR`*|Tt^MIo+#n9ZPB3tLb&LDw?>3)q{5aLQ`rsz0 z3;|!9fdwb2n{F!88z29gIm1k=xM>XWBW#?8C3QOZ~?8y zrZX2$>|<=EqGV;}_A#!uu zICVla-Jjp`X>~AAYUQz-_m58PvG`HpC7%OBs`!5r^C=8nQCDac|wmelnA^z7uceR^_saX-mP1db*x zck?QWo5L{p464h~9wVT)MPmcDjABRMPzdfv-GU=6jFqdV8NnQ))k#<$N5e^? zzAq!y5*A_`@C1PDHSjUPVTh$%KyrtjPE@BGC4T5&=?9L33i_C{pCb31&M*OKfWK)7 z)Q%h1;&~dWWO%6!3X-8<_M=9xX~c+hg!Ja;h~fOyh#PR{M8?j!1bOgKj;$z6@TYulQu*}4YD(n-#;sY|pN3#1;2Hf=6q!oA>fu@kOqaFS*nBMt<}2x_qi z5GK>GHRn8ET*TCG-FR_RuWM|)eJeNXco-rb&d)n%ykF3)*P*Ay&AhI$@f*IIg`#71 z!}6^@U*xq;7Jjdjxh}TODeXH31(M%x+yB0ZiTi11ar3TgY&sKphddIRv&bM2E49bi zr@6<4aEce`l^~I~(`oeMqs)FdPx4M4cAfx|XOB{F{L{brxS8ubn950U z0v-{I70ErAoYUdl@FED^1-+g%V$8+qGAf1BwbS>|^+>s$4hWJ~^nax&%JS!Ya&?Ip zR#$RZWY^jqAl>e3?|`+n6O*gV*5M_&r;GiG&w63qV4Bk` zmCP=163`hO`E=3erRTYW!a>PpJEA;vSaI@bfA`eE0H&rNdJ7x{CXs5h16Qx?u9a6x zzFA<0-6%=(2lgF&l0UBt><*V~IA~+9I;9kS!YQ(`cBk*)my4X@;07T?I@8np!((8s z4>i9i)#nFcZl|1P5i7@c7Tpu2Zj`>xPj}xRJZNtoCxiuIPM=E8!$PK<@>_rBxM>R8 z>BK>Dv(Ozx{BPR}6O*n>@W4{f0!>Ey$L9;|QG;)!!-J4g|58HB1=BZ7qhJzsU0j@= zqsa7m^k63xk4Rez3q`Ts&D^<6nNz%8)afb3 z5x=SoAYNdfX&eo)$!-*BT6bZ61Q&IodwJ`^w_afv`9o0hKqp+}+;F|3VbX?m)yw%a zf8?MKsZOe2rg&VYcwDAFzlBq1yJ$_~R zA6X<@SRa_>@!8H!P5wvv$?`uwdG@D`&8JVFZvDyGS>}KIlKY<#t_AFWeg4m_?WfyM z^83HF@$~7lW&Y1){?EtD|5>GTE;RjTtF^wM44_s^_fG<9HTEU*fc~Kqfm&;PuUw#3 zJNHfpYPGfajG)l?+(|*<-TUPQg$C}Q8Wb9tF+1ow8-`Lh6)zqZms)+&Dt(y

    c!5hd*4i2A^q7fl|T@BiWQhmPHhX*c#B zDMhQ!*(}F(&fKEqE4DNKeP093)%X`=LsiZem{I<)q z2bis~KL~odxVPuStp>7utr7~o;jnosjv7X(DYf_;Y=pC?-;KFiIXcC$N0|8T@%bTq zzj}CnvVM55=lt;ehaX;m&a%VKVY@nmO95cu_D|Qy(8F}({*pL7^H4YchhvpMH&MaIiWSyYpT9)MeNPOUGP8qoguGhBWsEd_XyWhm<+e7 z&xzu5;`H4c6O|xcCc^=SE+&r7a`W@)?!`Nk-G!aDA5FF7CM-=;UuwCSC#IA#-*5hM>G<8Khhz@Ug~Gk-yMLv+u%6QoLii1#aJqi7Jy4)ytLQlgLe?MPh~P_Q zX0h4&0q%Vwtw|e5Gd8h!YpHeo25Cua&8`hyGpFp15@i@5L<%njd_#8>zD{5fk@)4r zK1M4ed&0mdJ<`=Io|9Hm*}Yxa^)-A93(ZjhMj)|61VHvlO?-e;{Oa>n-8Z;2RqaJ9 zubMUen1ejiTYP|OUTRI8k}7_6J-Du%6Aqzn47{6Ge3m>K$cfjiyH3>2^%^v8}3MoNnCU@ z`r_nhEPo(Rs5ye-HrMSrR7S`QUY&s+>)%mlX9v6c9}aBt;X?;hVUA09a}{kQIT49_ z33Sv6u7Hg*=tJdYzpNXqDB6F=rgty2u&@&F1_z4pz#we8O$3be{3cq>a=243(xbQ1)*Drj zUq@&ey-s+S=>Vve9nS;IWJq5WBDzMU>n1_~wtVxW?=1u|H4=ief_G2n6PA>vWO=5wP|uG4elYu^cn zefSWGryg@+VN3^cbP2S4rR`e98vK-XgbVKGe|uMXt1Uh~Fq zvj!?t_rk(qKXn~}Y+MOuLKsioJC+Bj8U}@c)(J?T3phfQd^Sk`(^LqR9L;FzgTrL0 zX_bc%1WS%M70;RV`1EvYT%YrktQ-otewgJ;Or$^|tksKvC>gMyeK*W~Kw#!ET-^o_ z%0Q_#q%h87kOh705a<}*eS7?o_KF_T)aN$vd}>Zz4MR>u2b5yObV3lItu@Eti57bB zBIq4~;L?@Ch7dXJ(-cq~)37c>Kyt{^AisPGEEB(a8H8NU0Lbdhz^$}D5PxhgDKo>O zGX{Y@_X&`NM7L(mAC?C7Zzz}h1Cyb`dZ;fz3C9lMcTRGredGQFcUs~~RHR8!14Tm0 z1cttvj%eC#eGvkQ)fZXhuwqU~XTk=@$6XNVYY;LVC>*}ti%6FH4H`tMt8YF>Sm;(z z-;8}6VL8kqQ9zQiFbfOGIt_)BX5He;H1Q+?*$c*Lh~F2WP(+cOBJ_1#53S?Xe^>q@ z?yMuRUgy>QG`RCVt)rqGcT{WLTnB|aSSMlNMp5k2b-=Mk?j`g$Ou23ol>mTc*woMPUMGG8pz*nE7>c^Xw_~c@Pj1ShtmQqahrOOFrWR3Pzd^ z{3~4=EmIDW5P(DTZH~W=r2%y<&Q*mBv@L_;#>1Z)b&1s>nYfNKv6ejCkdQU~6ZNiYdQzXv@q7$z5pZCp#^U)6Sj?iBI#60eDnVeL))8)fcZ3HA zF4nCdQl*R_*SqMGF84etfaN26*YgLxXyjA%w?3?007Q&4O7kv37YeS}*RtxRulEnm zFRU_%1^{u08nPSetLHB=I~cS0X7_t z3c@!KIjeLc;CzF0+{#UG;W284;} F??QCJWqAIxZAV?l+1dBBhiR%UzVx1;gl3z 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

    TGliCqBYIrYKPI;V2 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 z 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 z

    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�jGUM8Z5}Cj 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

    c8_{9-a>QA+pO>Km$ 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°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

    0yF0aBjU$PPBvq0#-j?ca zI`RT?;BiU4$E8JWxvza#NYpmmKkg&ejn}4ZD_P_ZX{CYOG73}ICOE${3x--H>x5`V z00=R=rS)v3LXUjNU6OrFCcmBv==eL}LSGor36HPMmh?;pwxvtPh2oXHt{otwEQ=N7 zBs1UfT+0YQcD|d&T;G=QKg+E9i>09mz6q?FHY~^@*#-ruTJnj>;z!4Sy1Vzm2Ecpx zA9gmjpT+jS=b!i=e&+a33L20IQ1>bM^2__9K;3hU7;y#k$$u7-J|{E5$Nu~8qbK`s zzfbOorj*C^UK`s?9nf&$plXYTWBD$Dmr*1DXWo3wRJ{~-8A%}5c|L=CWpqt(YhK$k zvSO&?g&2|&kfOma7S<^-KZ0nEmCyVn6?y+e-K`Lq-Zz+6<9YHF=^mU01wT^ih#k4Kj z6uZddMqGxl7+d3tTtjNN85C47k#%Wx@}qR_7A%bQFD^D1n1qqMBWT+`A* zA`$CoW~D4B)6rxx_L^e>IHDHQG?_TnJk|JSGzg7#6F2`XsVU|;tMwZS#o)!9*&-DsLW;4A8VkyN z*i{u4gyt2<8ZnGa9dv_PrqS+h07%v8(l5wMSYvQCya5E+VVb{A&6&sUyK)E=k)2Mvs?l*Aw3>)2r(1O0@TsH`{DSJzfsZEyyIOPU@v0(?<_tsYV4e8y#`;mLH^CPHsT6)oQEK{8m?!naIQYay z3H)3K5aukpziESohH1 zcMisvbeiANlO#lWf!DsNvDv+ZDqu8;X*unS{elV!DC^yj_(9P89T4P2y(ys&PIN?| z5XRdCSw9$t-t8H)P0$lnKz+13($AA!0=xONiaQ5MdDEx064jIV96dz& zHF2X^M|)a@x~$LU@LCXR;TM@Z$Q1pM7B0frC?QPGUmqTgks)onKv-}JVAgU7Rd;<1 zst^yq&sgM&5S4O5_7PpFg8agk8G)pHGanaIC*M!NC}f}W6Qe;1;$F_Dqxs!TAsGSd zgeb>=g#b6BsK{(4E!|Mgi}5%Q(>(H^0|0ld zbdgH{UJsKq0kdb~2EeNk%Ap0XIS5~9iFy$0bAR52YqQ+O{4J*IoF3(uo z^lx~N?TwoPZEufXh=7Q|qERgj(*>tmV=0*WP2)1YZ=vHxdBkdmFK~tHNhBkhE0vp! z=nOKCM~g`|4-OkS<}h28a`cJK*;U9H)L4veB*@W4Yud=|?JA5M;*};z{fp^@JkVtG zF^l>9F5ywQuo+9f>lzNzaGbJ)46~Dui`uSmciJI>!Qht(LsRn||4GgN^zX;W|Mg>p z{|CtbTRYDi_&?j5pXC3aP5!Tq@LwCrzf0_|nZWlxM{XU2PLU4^TwnehcjjMYkd^MU z@-ip52Le8bB6G~o#bnGLz*FPNYYhATGO3y_aa?pnOv*T(JreFQ3LR0X8q!ONFk?y(q%V)Ht}cB4`R(eB1?XnlO@Ye9oK z%6#e!r!kq1K%h%jASfy4n-uba_a;SF?Lr4&&R{6rlzVar>KuP zOJ%Q*`T*j%&!+bIHPQ>;C-j|@Y(rSynWa^=|ciig@MAichgi?d8&)r z{pAi;ryl+GtCxp|$Kcyc``77a+V@_%EUz}VKI@O_s(*Epjr!G9w%Pyuc@xnxDrono zs@=&%Ke~1~Q2A7}KmIZRUqGP06_nOQ^-ns=FHHV7zLTFK|9j*4*0Y^h{@>aB6#x0N z$^Sf|6#mH{?#ch=ry&2^3kZ-PkbY0!oERyNzN0tJ>92lY$VbEG|E= zqI(|$DL84ovBiM?0u6)w&&-2^^+tAGy+a!lWDsx@n z(+1-bVq*s$YHjd(@73W@@i)CyPfgni$%)GhbR3>*H3GB?E-(e(4^Re4yZF!#JU$^3 zA^V;9`YSGwc2rG`n9~=cYE>R>Yzoro#N%V85k6**Lm_u2i_%(rQlrx z+$E!3BG_e&btz4gO`e>%r3p}*R18sQX`_)$p7MKK@5G|dE#&E}hQnTRC#=gnx@2?4 zRQ|C?^=!Urp*)kWuIazcXPeJ<)?F7Fj+Taw*J>}-MoN~oHH5ll#;Ta`v0Rujy=jDV2F!?9rz#4z*}tHChs zO7McAqW~izokOI3@`O}*j$ROi-E3La`E-obB6z6fV^D)2coy)Ub~#oSJ~=fveYVw8 zJIJn*fTOKva#>8A%<|j+bM)#+nf}Pu^X7GW`1b9ax9O|HlasyQ9iG@L$X-U9t0~T+ zKjuL}pU=y=3CzSNcGG?8C+wRGOv-h`(!`K*i+%!Lx>}uJ{$D|)=N9z~E5UQ{CeNmo z=OrH(WAKqOrqn9s4xib=f3dmY?4Sx2p2J@D1v!dCy?)eK$GuFnr{dVqDl{;>w8CJ9~ zMrX0)m4eHa+*0NRpvcM~dzUbA$xk;f7;RUIaP8lISo`^z-SmW!Sst>g@bGEGn#y)+ zofN`aj_%~&zI?O4_i`ZM1v2R%x^U*Zxe;3NN4~%$VD)G&4R5uGd51a)#iRSrV5J9C!k3`22|9kSfB!4ue z_s>0B-ILBWC#U%ch6)zaMZpFi3-F4vpd0>#ys=aOED0~j6q0oSUSz|Q_Y2VVjr`uG z*Y{-Js+FD9PtbF}bpM}?-Td+Kf6sQdo;TuuUu=Hz|NVUaKVx?T7odE+C;l&Z^{l#^ zmb0oL4lMn;izH-BdG9795Sc|yUoQ&9t47$N3Ua7+|5Q~VaDN` z@-|2NP5vPtEyxbU!DNv4d6~_}7zN}SBnTr;c7v z2;l0BJDC z*VqQie;Z_x2e8&fgBY7$2WILstZ~g^{ouP@ct7D0+5&Rlo`~7q-YxEy~ z8{+3=%sy&KcyNb|%Ctbl{IGPejxM_3!${YyTInv#0AlqI;zSS7#_asE*3^kQ=G7j| zJBMXt!=MRvEC2ps3tfng*>s0)9%a z;g(J;Y3@5V`Fi9qcTQ4l=!aR!hqFa~BZx0BgD5NlNpT3>Z7|&lOtTP(pvQso@JSj# z@`N}$9HuN-JMu!ukt{rhEfGm{DJKnzNW;_|QM+@vQiZ`uo>?7Y%fmg@h!se~@CsdE ziCEI{q-2>xqsBR~3xet^uyqEcsohxw~vfg28B2*8@ydbePtt@1>dQsd`A+~ zEu{=Py2|51bKg29_>+zZe)8jiPC$WGKJj42ywCLpcv_j%7k`qm6Nk!5q!%%W3kSY% zAdggN;9cD%*?J(D9IQ}?w-6uP~6hTqe%N;UZ}=%IQ3eog-zE#^|BYCT+|2hv>|3O>q>8$jmW zk8b&WyLa$vCt}ZYgY8uXHzQx&B>~rt-K4B+07VEFPZ3$Y^of^XK?%WuRO#cz6FLs; z#S`62uF2HTP@nVFoS$1V0f-B;-l0LXO*mD1mL~~e6k817a;Mv2Q zy7S|k`k6HJvqv}dvxhhI`Hyet<|gBI$R3PaD`Hca(PBZ1sVhk9L!RTJ7J?jF_$)I9 z+uCH%h#ML1U!xgw$HH&J5I;uzp67ke;W7=pW=IQ_mYGOZkg)B83J7yk<&*ae(1cs< zJQvIh#-a_+A$ta?Fl&X)mSZ~>hj^^Bh9>--GF6ZdR(SQg(RDq}ehCbO*c3nU4sbO1O{dF%19chE*D2UgA~1Y1B1!Vn)d1>; zt|>agB`_PF8grzM1ozW-fv%D$&YHKBV2(EHse+6R_ktL!1Sb{+hJ=4)5Qx(|iniv}B0X&;^XiC>TJ^5PkX0epnrv@-*m0v{t-*jGCV+ZN4%nwfovXL-!mEoTpw4e78Dm|Jsy0u<@bkVsEeT> zqWEnXt-_n1amhVM0Ns&PZG=G2<-uKfA>x$elZEnY0wq|%1BvUmaUDts+BFEzgSviWslQ=X8O!R9Kh?NU-w z547VT#|e^@DuZ~zhyZ1fxWtCwY5t)$fhHie^2SQYtUf^8IgM*l-T11wyvhl?BsRp$ zB1Zb(`FpmpX`T|V+|YQ68C0-%6y^bmJ}_a3upS~rb87spU?D)d3P|}$Tdvp*CWx8Q zGkIQQU&IlMl^cOuHQ(p}_5ucO_lTP=a0XT>0RaHjqg-eHeTC1&sNt4TNy1SvqhVb# zVKcvgkVG~T9qJ3{ZK;Os7H!t$WYA}2RTXaf6Z8{RzG23uirSCt^l+GXKX@CfK&*<2 zB%6xto`R4P*glnHs4)p(uN~vL7DQzUqlPG7#N{CrK42w>*zqYqT9Ts|X~;2}nXwIB z$72pm?D({ogg%J|GO^TRurc`Pk>oYwJok1*HWtGX1a9*B3M~JwpEL5`@wvbf46NmX z(0}FNghdADCN40aCugg2+e22n)RrXjWn*ucr`6BqHU(trqRlgBWFM^2146cV+PuB; z{LYs(NU)=seexV`s$8~7&qM;NCM{~TTL|vtmBka<0>qt`Qft*p93j&1X_a8J8C#== zmzLbyzU8Koa-iY3Lwge*^uk@TV-Th%cf3pZGKCGrO(}#i?lP}oRSenc*S*B!F$reX z-H5ch&Ts_I{F&e(PB}L1$oMvpMiR*FCA$zv0`-73Qy&=$Dg|Y{Q3*h;~ng!?oeiLtcRu`3CJdxjXCgzyu8%7cGro_-2dw zW!@M+9YFK5@xPD_UH*8_9vMunwpWNsLT&d_2>c`VH$ct;QW;XXRGy1mU(q5m06so| zhTyuRMU|leq^y;v4_CNrS}-Q;2_Y*%=*elgfyj&}21uXUG@jp4;Eh0w*?}Q7Q7;G> z<1yaT>MM3rMOhy3BhBocM^jQ*WH>-7vg@$4EB5##>DY^5@^N#<;44E+fL`9{Slkz;}Ppivpn0j2wIp~#c9seFXO$m|T zpD>apq$wc@pRTljVXP5XV}XEIEcT35)X~@uV`1alwvnhF>O_1EWYu+JeI<-_hGFlN zd4hr2Y;83XkTKn{ssl%iIaS#Yp9^6d1@`m=@E@VIS>VVjVyB`=E~ooUF+YS(Yt%F_ zRNhxU^_92n0aQ$6Bgj1s5dJKE;ZDGG1tbnp{p1YfIH8!MuBeoN6RBG*hru8)GrkD8kh~HjR99EI~Atk+pMpn%)I9d>n z3WnytE=s7X$83ITaJJE2!F;AGiz&PWdv!6*t5G(~$5OZe_A5V}JCk6*T%$j@R*$es zlImn(yUk6H@Mqr!CN)f-^f#YG7aQ58V0AeCWF!L(rxlliSDI!u;$E)qZqC7+V(|BS zN>$9F5jn)s@QEYNIeebiOQj)3G88a-?1yyl_|3`DAMwYtnx}x;A8dRxM%L{U%GS~| zGLZY(@g8r}9X>j+BNUUJ-@(>gi$m{>dQ5t#La6kZMFOuLy!7=lBU3GNfCx`tLm>9| z+NvCoCi<=!0q7&k5M$gtho5OFQbMrLb_oJV@aB+W0GY-Y(X_Gfa{^i8AB`*qzFARm zWaq1JAI3{s!eN|b9hI)aws|D}d1=WB579;Wh{;S>i1*Jdgfu&MvgvA%W9Yi3+Eqsq z7i@*9QRTV2BXWppS8fKkQNGq)LzYVDi|Gl;k~j$(CKg`RVe}cMhCymC6gw-c!V}$P zb8igoiuM-#PLiss+(U86A=0!cbF(4x8qK@@9B4tkq#*=j7D|ouuAMpac5&e;Dv?hW z&p&dn2&MMmG1~>+HP2{O{4<_8=69Jd{61aTAh{0EtME?Vq&&I2UiA|XG1Bf-QL8=( z&UR^edm<2N5!LIA4Gs!dlNA%lW_V1`fQaLa4Zr5ukZ{JT$KFUBVJX-Gp(XkFLFLh- z?PbAlXDD%-qDTUFrO2C{*Wky}i3!a!7`~*v_VB^EDaYsbKoVI4*-MNnTY^uoxVVeB zp?xW6a0y342LlVcF=QrYAZNGZrLXDKlRh9?J9;r}=g6&5o{yAq>+g zSozrfU=;bP(0goc?Fwu$53UZLF6Vcx_4%L_#NOp6MJA5tKvxBw>~Mruy32^r)HB|! zxRTdt*UqwHUOo0sHIHbi%MJ?v5dPvDTVL0~EIPHSZx$S4A=q3CD@WX9ABvmB4L`+! z*B3dip2zeD0gVZ1z3oZ=Gg6w%+Pgh#e@|9w`)jVvXV6IVM%WGQf_cFy>G^HfYxpB- z0&xM!A@M^g6vA(eX_~dmw2ydsZ~{a6rTop0kFwhSs?hNNB4X9Qz(W5QmU{k01Qh&( zXpGliS>C6A+4z^ue`!G^d-mCOfAjOLe<8v8U;3N)@bu$=>p{u5aP<0&T1NF^ zkNRw0zK5h3#@2{po&?R-du|t#x$3>-d#qx@_kV20!3Y*&yo;}i>I-g7`Z3Q^8(B=z( z$Hzwp=vzt5Ta@w#Av@q>tJ1|R;^z@JbAf1KPRVDZmjXtpahB2MD9o;;)NF(sOG#`a z{K~qVdF#}uPS_XZyA>SI?dwZC1@8`yv9{CwV}$NX#Ng)-EacRs(+XXF)09bNng^|r zh(jWzatIht1S9O@;E<9mS%JLjZ3}|a$bd+WN8I>oh)J0w%eLeWQskQ8gj-%2+73QF zSWNzOXj02GY@OEd^e!cVDfx)5ib9Mk$8r=RWn^6ec}_(rE!4ov7yw&IQp| z@m)-iWf&e#!;I9urhIU6D{oB$uQsVqAH)#b2$` zYUSU-^v{4H9Em6)JK#Natv$}?eTF#U(ZwsnowP|HD7Cx|CNQKIRM!9%gauFtRE3eP zaH-6B5my+u0MNUO^9p)4Wt>&=ZiwiBaGUCQ{u(ME6Om%wvy9rG0bllJ+MlP0+qcQz zZ0R@tuV+cpaWndJ7|$Op5qiZ%A_|ZHZ7b2=w(vJ99bBbj2`zxcvYC#py2>j)K9lal z*o4~pq`!#?Jww$8X8Z?`L9-DCogn%<*s;1En4&5B&43Gp#87!QI#*-}mg> z%JcgP=>NZi{pZny-;cBZY;HV@@&BG}?tH@k`&s_MeG=f&wK0D`fb*MSNQGY;wms@F zhAuwAL?m~EuYUZXhlA<^EoIP4iNbQH1;!2CXnv{#x|-2)Vjs&41STX zW(eCXpUPT`tY+?b*X9(IB|N{=_s|PAo@#XxFr?Mj^-Mp2^Z1Md7)xRtzkfI*lWQ=B zgTeYuQGdH5s)}#L`!j!p^Ov>LWa0BwS!z$S@q2(69EZiitK|aVhu&A8c+o$d|Hl3w z?XbsQ1Iy3<&F5Pi+tK;Iy|eR)|K(@-x93SxBqOWk0&q9L5fK+av^5%>=)7+b@G;~T zW_v+Um@hsNo|PFv9yp;d*TfQA#1R!uZTj7!80V7gj#;>CG~HyMU_{b_Y7l7 zriGU?1i1iHBgC^Y;htm}!lQ0kmzVAez|n(*H(*gW0DODFeDZSP=vqN)H=$B_B1RK$ zWxAs9eS-ft94cn;q=7z4h6&1D3;qvbzllu-J^2}7Ofk+M5`R;kj;phnC({0^$8R}J zniUAn$huq_ixy@q{5GSPLti)p}U+%bqVr3_?Oh7TuEoR-b4hEa*i zB@+a;0fB_%2g}258L)lvx^}Oa^gasYz+s@Aaf(WEB3LYL(L-lAmm(hRq6xl_7Wv&2 zNON83B)qxF>QgSvE`Ki=juOn1{F?tI$u|%{f*Vt)dnofjaxzG2U2qfP)76vg z9iEs_Uo`|_vv*T$0#4!jIJ>wg$HipeB*sBLUi^0N^qa%idrF1^uN^9Fh#%b6mnm5Q zqKDG0UL&o#gS60t3-Ag88_X^eYoLL^a1;J?4QUG+dPGBbAQND~y(!;Et62hq?p@Ei zra1}Fu3onMx2|8>Z`cN8Tc+28Y~&xmda2OX1x!E58h*#AXL4A3fNmjEGh8+Q`G|jj z2VP9%WFZ5sJE#k%Y88_^b!}y%k<*N9Ei`ykdxd%Ccjynp8`e0*q@69KIz4iL5i&)d zh=Dn}!03!Y^Zo!QQoXh1IhuQIqZYw9`H75}paed;6l|>WlETz2WovCbBNx%}OQau( z^%RLo)HU)eNPwJ2y9pliL$Q5 z<4HEkgVBSODYYN#h0La6UId&Go!5eO%qHahmq&-MPtU$R1#-F$BQi?Hb)~p?2*$QI zfz;59__+PL0Pt9xzB6k788wpesX-1Al)NUe@}xLdM0ZXP$G5bp-B5&Yd|&DWq~;VY|L{io1Qo>jNFeK>AJ+6BZ%O7mJeH54B{QDr_`} zysq$9hp*ne{Sy{Hy2|59gr-VdREsHlE}_Q$1aaiWi*6yJM_AgKclZnw44?J3{#BYQ zB$YCgAY7K?Y;J zU_6*Hq#8xVebiu1oCcFvx5b_TplxawD2O5{_H~}maC5OHbT=Jcx&2rC4SlhRKwuD0 zQTk0`pmLW%GN?r1GhrB=@w72qCNTT7OoK`_0)BSO3M;Ppw693-J6 z{pJ6_f8{0|u&!Wq5ZlgDPr%BZQp8fU5lF>l)Zj!efBc;JlZ)pZosMn`yM^PX*DW4Z zcbE+o7J+O0Erc5p>K4NK+$lyVKIhhYIa%;YMNZ}lhL?SkiK&4`0hci12t+YhmY32P z4M2ndzLsbm6TziB9-!J1V-EP(a^H(Q7S){uSFc-C=%5y}fILk768d?<$8-y{585(r z`~2Z(^ z2ggv_{}KNr&u8ml%D325Z(-_?iTaARL_rHi(GT!uwHG!?A}gFk1yj3fXlhyGfbpOt z3Ip9^qV4?YXo6*NDjw4M;ZV#!?CYE7w{8pV`rQjl8%>z<8^$~8iDgW_$wv%zV2~~^ zF8UP&QmPRUc&J$*cluQtGxeryUZn`-9*HV)_}LfTf3OeV9_-5nt`MAg!J(E+ZOT?n z0XPGDryF&UQNwW{ix$77r*qyMEDF+uI7$E-*odhK!hTz#S1?Lv)k(R88a267zT^96iIYUh?5ajv znWyxD^W-U+(Fh{PKU+1gvD`6@3!@i^3Ki^&@h~bB|Ssdp%Gwy~=S!|hDx~i76 zHZg8_fcNQY^o#A!A^4iM1H5e8TTGkFkCh+xL~wIp^?+G{=AT0545xPBytr@0CT`VV zB7`-B{=%^oEMYLRLtj4otS8aP_}PuVFCt1F=Cp&y^e~Bg*f!RdtSs2I0xpUv<3stSBRzKt$|o=UFFpT{<3&EQ4ovdf+3AY^f`97&fAMVlR~uVf zThCtnD&6_y|Nmvp|3?M_-V^_~vANZV|9G+a{8RkL&l3N^a|<~g#i$Yckvt$)ZJyT! z2>bnU{wZ+mfAs#3XZnH1!1DdSv$4I?;Q!v*{1pH7v*mx=Y25{%H+@VG4o})*!RTE0 zy=Fj5IFiWM5J6Lp$_X+_l=I@Un2M=;l7p>DkQGrXg_Ne$Bd&wLgUH)fT=lEuN;yYU z^{AL#G25Yc`48BM4Cem~&DbDZgIBNuaWxk-R4~o=B=QwgppfjSyqPU(MzTz@b29Iv z9zO@SC6wcuk-lF{AS#75xbr!H;<$D|o_AemV4DY@rYm#jdH=kq5#x83p^17ANiDA= z`e^F32-8TXy>K(9N*haFH8Nzc?9MMnyTj+tw?7|(Wd02S3i((sXdQH%+)k#IOmW=D0!z_E~S4mKby3IuuppJOs=!uf*Ct3Fh|@(kz6m6lL| zg?n3)Hr=_x2$NvOG$n}TGkA83(zWzPYF!k2t}=;P(=4hACaITRX24SGRL8KvK_$-y z8?a!pe;5>G8x}q38l>dn?#7#xcQ;JBL+_KrO$XUig$UX@cD3W`DI2(c8J^T z`ZUi+*wQG5rfNhFyyzw5=7Z1>+7v6~l<(vGn;|rBeMTD~10xruxS@YtAF=c?pILe# z)TNnM-YrrfTQ4rzfdL9Cwh@LBu)!n4;F`kFM&Qc3Y`|ke1fp&SH#Nb%S7-#_B;$nO z{21-t0_u~s0Lr*=LpR5jrqnPLY``(5X+-kf)+Y45DGE9l;gG*Nb+_ur;I`YJZ0*?fZ05=!JX_%0}Ok$y&$J1lY9b86ynNOk}1FtWn0h- z;ZkD@1&8nnqpJlINK!WMX9lGXdd4Pu?oTr=+4hcV5QhyBv?M8$gW%a9;O+NxIBFR? z<8%jW*R@YoKnLSipbUoOfVfg{v0&oej_%-7AVLF-XtsJM>BR0=+F*SBgRH%i(lXj#m&P zYdj!Crsl3a|HZtuxP*WweaG-kYS=oj0Sv0p-t|%+ye*{h;D*>CV&TCS^%4dMkOm4>g5!eZ0z>6SGEnS@g z;(+7D!BBpTdc=VZhZ*9OPV(_3n3~~E5UTcTl>%&Fy%3_)xEiV%NNPo9K_7C$UK2t& zMR@^PoRqd8#tV@EEqUGSbM$deiD=W?RTop76Clq*f^@mwnDtbA_qc9Tz6oF`ZnHbu z*?9ktpe^db2B3D@it3>49uCS^Xr4I|i6MK|#K;*^cP46RT%sHYBS!_13BWpwpHw7U zCHaY%@}i+d&YSpD8~~|-8=5im+K(Z3_ zWcvGXw6PObrsO}tooBnF;K!)+Z7^cd03af_r6^#N=?aS$->2QHGBfgrxY zFwQsP-nhzTjxe^F{7o2HAjm(g(`|0j;tEb|5PS-Twyw&XJbePxbbVY#Pi(KC#9$4S zW&K;XLyA&xD8B!-Bw0`{On)9OivC~Ir$QA3@6?y|x_#hj5-yR~ioHw1&ZY!-?52zMlpDZjB< z)Et1=bB9^X57o>wIL_x+*^Caf^WyRnC>L3I1?D&~kIbEnM$~5_7m>45u7XiMnZPAM zHU>m(sh!ex2>~~<|DaL)I0;OBw;!hzq83X+y(AuDcQ+Ro5kT})RaU`Lxj-clIW_W2}-S4hah-z*c=D4W);T1UM@1|SI$vy zMV%-|p_PzSIs!L%)4+fdr<3Kb(Ap*Xfa`?XTx>u)wB|f_>!U!#!+gq%%#E!OSZZz> zCff*=C$xexl=lWsfNtaKvV6pVNmA$^mnHmj)jXtB-I7< z2XNDlh^IqXQm;8x#qc?5-Uqi9{3*D|R8&eDO(a4$#B~$Rn+e4!ex`!{iW zljVwA)fIL|%Mb2aG%YSa(&cjfvLnrl@7CUTSjK;JC1J^9ZgW5LKbUW$Yx_r>lut&p z+q9pjzxlhg{U7czw+mp5rI~$*D#w9uUPMpu8H?`;Du>-E&@Q?eejC(|Q>vy0Ie77M zebQ1<@bVKjFhE>;Q!PAYnn5`{erwO?dw4xjBp|j6Pr#_+I4)#b`l6G&j^2Q|5%ylF z^)hFMdpJH&h;`f7=l1hk^HEgHiv<%SYh;Vp*P(x|HFR(2s;2Ejr$3o#u9%`3FQBl; zkc9vtIAn5X1M3|nyh39NG`6A0btfFLbSzm`Tr~_~eLcS1I)w5omY?l)=sN#0&mey= z>3GX+UcNaYYXBiY%bK$*ARHf1OT0duxD&X5laX4IVYJY#>X)opdLv661g1;Zlh9a9 zd}pcQE`(ZuNgf%MkRy&2OTFm)CCqCMFK(fc0!wQDeSvJakO~cIJ?b_RE;*$oN0?OS zhCmadn2?l4x=79mul~D3979*(?hCtHc};*88HaM;Aov)sXVHpPgJM$(DjaNLDW^lG zT#dR4wqR0@dVIx_83u)Eg7H^f0EQsJEv2xwWX`AS2ox@Z`X-xzEnwk>GG{%6eu*M& zc1Aq44~SO~&BE)!&15ttxt~zu)SpCW zkzWVKfZe{J)u@w*_(J{~A1DkJCe@Eo$hdT6P|F(P8`Zvp)gkp$X0W5kR&Fm7oR49wVWVH@+!CO z#6{CGR84Dl;Fds>wPjDwDH3-I5U{@hQSrZ8F0^a-zeo$G3%Ifp5L{ItmgO!1&3yqxH$^cI57m%D4f{~TS?ass!ZDmtnj zbmHaQTQ10%+aHhK^M|({Hs@z**Mq=(e(rV!tNNGF8nu-_wk_`PB(#EBfr_l{)PqAb zg=$i*&)wOW%m79VlJf7>>~^a8dt|fgUv%!QaXxYN|FSpHGYy6_fKd03cFXn&-vhoL;BBX^#MLa7GTrctIQV`*TO*d(;np-ITEF_C=0sLC#PlyK*HR+R+xM(Q}a zlrVZ(xLwY1y^c_0kHuUBd-t3=3X&2Se8{VSp&iJVt3V7Ci0I!Jqaa~vdW+KFr-%Y* z_1rI)Iqs1)(l%KmZB-y!LIhfk?Lw{~v>p;(G|$oXF1*L6gP4_u`~dmIg_C|^&$FzI zIg#X^mzjum1q`+ieJSR~Btb6wMDkY8b0_GI32#R##PD{I$5AY`@xxAVb!QQ=(8wC@ z8Al;F8X-I&2odxC1mo9p?N~48iNu3&xCuwE@RXug&IJ7gz(*RWhXxC*RbI#C7Rb#N zfyz{1k;SmHd>UAY2)V}i92qUn)-KFa;-Za6ea}Hx8qFm$L5w4z;WSwp`U6J}&42w@ zbDPnXH4I#7cma;*eK<$%cK_2}eufiy*$qcX3|zwC!}}XWV_1IMJ?NTyRN;8#H6@R| z!;`+-u<8Ek2?m4F)1PA+M0)bgUVk(F=GET*QmN!;ZLB*!{(Cg`6mu-l-tW#S(_U!e z`n_W3&(_Xn1NYzV_n&P&u650=LU1lQD{}1^E*9mbqj(SYa;gmF^6w$=FX@j5gW23z zhyQbbyx84%w!8EBL&trkYiw7g@Mr1f);j)Qy1BFaY;$+>;e|hN>;7bQJz(ekBz4`t zaek6&me0+SqyK@*%`fZd-?~@Z3Dq1HK+OM)X1sf=p7r49g>DYjCBmktC zjr-@>gtEd6>?Z0qY^w_-a|wS*$K~x5Y1NVCn8${g6gb~Dr?G8%7(G#b*N-W}GC3C0(46C$)&N0!f&YjX!p{%2IV`fH8R%CcdXTRjmph*au^cTV>9gFho@yg@npjb#BJW09-w0XCk0c#TzU$ zFnLymYsu z)sP8@i4Rzg0jGvRs7PnwmND=V zvtlBtv}jl2NwT4TEcbJ1z`7<)Z9hwpx|eYIof1@3Q2rN~9Yj7%!dS%OJlBJkFbr^4 zDbUm>sbct3pp|IurmjfcL4HB*{$KUT6|vIeR?q{XrwK%l8ObfW-QKbupp*l zK{VMPVvoX!=a}{$4!j)YvT$!mpLHkk`?46Piz$+ffXBRA%-!!`7UHADMz(y#;1cHeo=>S{F`X+DFMr4FqO(*$fHo9xLDfzH##Qf6A{L#@c*8xf3DP?rQsF^*G&mJ(4*v4=W1?Erppf%Zc1TH!ufQ^$)V&5|V_^0d3;`+Cj6DQD=69B7C|MUCbXb)#8{T}u+?)SBK#@6&gAG$Bj zA{ZBT;a<1=+^pgL4cyWyt7kPT=~lElOX{$uJkk&QU)z$$cwYYtTk;@ZYfJs)FN@Oh ztcR@6E;2Z_Bw0nGT}Xx$kvf5+b){Vtzi`DmS)8+*Si8`~VJMI8rDT~TuQEb0Z==r* z1yBT9b&?Py1x<1l@)aUukhW2#?$vu%I+@W#_#~fK*$#W zefInPfV73$&l(+By1;SdL?YmKfh5w(Lx@7_1V#omC?exV)jf4`Q~|KTAwmHI0qGJn zKsZ;J&(P6zL_Y9o#y5E;Eb2~SPHY+}c7OqsMNE!i1Zd@vJ%Xb7%PLRUp#(MtFs%rL zKRnr6zrw|#lyPUbIh4f5cb>EvKW#3k-E`{k`4qro=658iTsdl zK1dTuy%##X%SAm0+<(mjG(JYCiaCrZo({8cCT`-UA~C{xUtCM~2Ghzfxuky*v zb>o_hKKLVm@wc~#Qu@k_@1Vg#y~{wyF?*~x&R{x z>zly-rJxY5$mt5z719GFX6qIg<_9tiLj8d59pq6I)^Aey*+)joY$NW@`=)|s;=dHM;CKlcqDHcTPuJLC!PDoLL;&0;wXr9lk- z0qfEGOe{}$9ZWUnR@RlWB>1#nj`&G1^9GL7_u&8T zY;SKx_@6sl+nb;8KYxyYOty>~u!+8b&xrjVsWV-8pkH?4gr4e=jVV-Ip3+1!i)GA` z*h?BDCUUxfELYyqchF?PyGH{OqN4!i9z^DIHk8(7p{fcV59g3jF$ZQm;P{1O zrF8Pa6diS!Xw}jiN6l%I@)9TnNJ<8dD`Ft@yj`AANTK?@jC#EHN&o>FI_*7(m*;m$ z%xToKxS;40d(W_;Oob3V|FlZnCSEAgr?Mu1t^!C-nAT$;-|3S}GcT#%q zP~s)1QJ&7R^4g_SX4a60x!!aI?R-x8YRsaWy4993lnw@c<0T2n#;9Ej`!?MAI+{+$ z0ka`wCGpUXi7U@;yEanbNtHdD~)92Zga2*9WJ{Cx-kr?mj#f8iOyd8<-n8PyqcFS}l@ zQW`w?52Oh~u_p{@K=rkl=~-zI6NPAxdR|lsSkZ{c9TAd|O^!mT$)&CgIVm9WfRd=& z)j*}Xb4(74Qdm_mt|M8=2bTlk=&q`(RsNGljTjXzzwjtpB2LaV&(cc4MhgH3HHO(a zZLtCb;O+;n`oB?sI=vShM{xQK=`v0G7eh%0OIk{`iPjawfhwv#m)}V=hD1 zjwXnPLU2`lZl{BN=$@whMHx?l<^Xv? zY%UlFb)FOBZmEVfsL_Ua6ikdHMKGKfrKj>$<)Nfsz_C98El%umc&?jl30IYSm<_0j z9PD7+Q31`sdAiClhJbrp)B(9!Vl1DZ_#cqqZ!*qikEeclfd04nY-4LP(*K^lc>dy( z{`Yh7Kj{2M-~hBF0agtWKl zNn9BYp^e4v`udQhz|)r}@@)l)7no&&&tBE_ta1IVW$Uk`Pp|`vu;$(WHurq2tPTm;56`TN!5iHa5Vmc1Snto@mEQ0M(wp3wq zpkU1q444Eia$`&uBDDAn)eA655-u-&M~%Vn@pYP@;yqor&78^rgJ$gNF}m_Otz5OX zHgXEd5}Jxnvc=ds;3z$CB9Ll3VF?LcCQ7|0Ic=yS%~<{IT%ce>c;z|#3gFT6I@+8x^**H$1*CHlk(gW&#+#d&p8Hn z1ynw=*w7KH`;s3JSP@V-R{idzFLA>##)g??IbY7SHrlGX9Xoa-mhl!nwqZL9t1L52 z=K`EMQ}_3kw1wV34w&2kPe8E0;Z4|V=v`of;P6%P5o?Wfm>UETyxWkWbe5t05xCbN zst<+tk)&XF)Nu(X!{T6ap1aA>-5%exd;2ddawC%1+*r$=eW}5<+KJ`}V**^GZfFR*oVFe4#Vn7<#|q)*je>K* z=MYSFZ9t#gdSQfl22r7Y1RlJwAH0j`BIF0zk!YB|&qJpAL{tK*l4gZ($JdUUkt z+s)%8Zj~#{Jus@V?QU1~`LJqvlNQag_uaC4?E7nAM$MOwibbV^J0I+fOLyXZV^%J{ zL=(k-yV3FeSzEHWC}>J=-AbXa^=w4cJRiivyARF?dXzXZgjo3eFK(MMG`D z1t&tl733spD;c-nNZ}JGPljKqI2nB1D#J9M06{oOKXV7azfpw_Bl69w+<{UwAVZtH z82pj$Jhu6)cFQe%d-r*ZxMk3}L)=4D$~*S@tgY#5?iMI1gnZRpPQFo3O$?1SsM;mY~H^&Z@I=iVHxL4IlJI``wUdQSTlqtT6$GH_3((uTTPdqc~yCQs9XSWrWG5 z0E!VSPzr(oQW&Z*+eo4Qq>D(NFk*_25AT}61BRWblEKP$PB%E8lUX2x@TL5(5c~w} z$s7*lE?X5GUuQQt+34LEz_88yjA5PR2Jv049&PCWVBbqLcKrGXT0xLEq_b+)+aE;b zRVxo#y%|5q1PaaMs+|-_cNj!>Cmum(UwQ3rbA4%A#;PqGB}L8bBZ;nDE}hs8YE3X3 zyWNOaBntOnaxXNQmv13#zceFB_NJ^`5a$jzn&-OmQ%6)>Qpj37MQad0HZPn4lPl8# z)}&uc3GCHO(EsNln8Flg)@#T*?sq79)r!jd=z5S_Yry|pv-ah;X0uKq>X|e2WJ4r& zo-!Vcp4&}xpux!Nd&}ie3LZtl3X+H8#l+8)Pue#mW*YK;BamHa>)le;h zA9DY{V4l`xQ{xqM?zLM0UPY6U$mY3d2K8b-joI-SWQLi85SMqeYZcOmv$0I3ar{ zGEzzKh3C=wM2Y>0|GPc@?<2iG_s0KiJm1-f{XaXK+n@YDKV$qK9Tk@gcUC8D-kW{S zR!n?s(O}@Nf)R+5PC)?u;U@bq&S&-2Zn}lCp@fZswl*geg_cNC`!(daoK^Gp_&q@- z(vk0tUmbBzN%HGKdXS$N*>pD@3i5#ynt=OQg+T=V|923XoWxY;qpO)y`Ucgkn1Ve@ zB3>$|Ti&dXuP52uyDnf~{KxPNsyQj$FGc0*vCgtU>O5g$1*r}sG`G7dCz)jz{2t?{DwyyjXvJla`WI&{qNRQXs7#h0uF*1%9P976iJrp%7SblUG{PN2}Fbd znFuK?DIn>edq3wk&h4EmIqRF&Bq;`lsH}42-tEc+X=#n$`o{NFB4Kg<=M?{S*H>Bl z2X25s|7uM7uX+hpXN&xM+f?uf<&_K7mntP04K^X(A~lm0A}dOvi4aZUL&zv5RyTF* zB5-45AHP37QBvS{LsXT1e+hmo`pxOZ$MAPqITT2g-*benP&zYpPP>n~NR=7BiJGRS z{U+4M-ZJ=WM=l{1i!;~@c$;>eL_&K`ND()QevtN@22K6rv^lAoNFSNKTVhrg4YN~j z^)(k#l1+oEJD3cbw)leLhKV}$fF+KF01hP#4RF(6=BfIacks}XV^Qtpf zJExh^CtEtpcx8pw-)!`i738YMD2UEe^}@C9rOT$7hWF8EEU~hOih!5h(Xdf zV;a)HjSa{)p1<*^Lt?&|4B&^PxHYA!VB2E?;XM>{*%QUJOo;9YCiNrd>dU-}6(4vX zF0`+ZNE?Sx=FG(9;25vtl*~rc8Ra3qA=&hXwkvP>#BdhdGcTE>F#D1zZ6`nU zx*eUOtR2(hi1jye_zjCiC4_6>ks3xN`v$%$U7sL6qyztEB88=Tldxi-%B+o#wK>vg z?;Yu31w+SP|!cjjD)@*rcA6hO|OjrdXt8mY*wv5*D* z=kU)v>%Z;5M?2)QC?CHec)P*lS~t$i_Anl_;2%&9rv6UHl^X%4JNM0z8uJO6=@6yq~RP zXzgp9W*UOvyYq9XVi(wOyY3w^+fq35W%HF2*d;fN_NAU(wWP`KZi*rrCb%;pwHDp1pFh)%P z{jQz^_iaIrY40ikebHpZV*v3%hyOHAev;l5RJBEpc__|0uUxS>oaS=>1G~lq)q%T& z>Itfje?%EjQgRhCLp0@F;65lb*U${$Pm~WC;=?GFO0CkqrRU)zSTU{Zby(BY3en|d zGKhw2@IP(-A^0pVF9YtO_d(7ScmprIF&O}<9!>DZZ|jW|v6#@3-9h8WM`Iz-L(vw( z8))}UxWr{TT#_l}4q^gAsZJ|=^T&&ek8g-1;!S#8sMk*75(+uO_i$;Q=|V4y9O=8QAq(vfekC zTiU=KFd&Ah__MHrD5Itq5Bu4p&28u}HE=+x;aKyhdMmWt*r8tV2AKlym6=sOuIfEw zFDBJ;*`-KPIU+oUp#+ozw2KTpEz}K#Z}7YR#`vQ@s~F!U8^KGCW#a&JbR{DI$2TM# zU#`v~oR1=d`bvweE1=^AQCzh15nut!)GjZ*LbduM@5foDs>eL069G<1OzdV?2WOSE zs=*u8<8i{EU;+dNx)3XVWkp@q9a{wJ0!jed2fSeLngiH*e4cX006|*Gh zAPhC@5|@`Cq6LjmZJsL12dwLs1Y3a?hS)%hJJNj_O3UgtqBu0 zN7aK%avSX+a+zWW9fwJaQ;!fZy9it@Nq@|2Rm`NMqfAI;eT?-0;Z)%GXc%cEe2mMM zmAF&~FTu;M!I~`%!(gQ+H)#e=L>xz!>r>6pnL)q_fNv zs-cI0t*s^NGm+@Y0vMw1ZYG{muV#blY|C{EVuGO#;b;nj1lSBb&yJwfA1D7bxVQ|W%fu#aK2SbKFSw`&xM4@W;c;T5y`Wc+Gibe+*?zoH5Oi(LEW}2M> zCt_U-5JxE337)zJO27{6#5~;-5O{$}Pivfyrl}C1{J?l4w2cL(2PMXK9RUL*2Wr=j z6)oog%@?zIw*-c8P=}Q&$r6{BGkqjY*nSQp!-vxX^}`GkAF72J=6V7V2Kz*^FLiK#&=- zSHP$PAIx_dwci0Cce2CP>U>@;c$RUk05t(AMg}KObpg;hstP4E%kUcyl@~U2z^i~b71iB()%YvP{oi0 zjrD1x;J^V%-NGlCShQ(T$G3J5oMUbU2yo&YW>QlOBf2BxQMRSO$BtRWQ$hOdD5WMb zgwqvfS!M0?DB(-u#ma7bfc=dN1E|sLt^nX=Ng~N*=aH8U@CYXj~%wSqee3+4f|h_f<= zSxG^1HIp@n#5&}~1&AV~0&rEB+3Y&S-qvvpremtqjp@zBM@^U2ou03<=m2Jw?p?%O z)0)|cAxf4E&u=g5T#b@`4;gViA}RXwp7pfhC?95p!E_S{ODG$9FyQZ2ZKu@;28-Nw zkzbATcA3_Y_M<&BwT~-JNWZXZ?|t`ij}R%O){TwkKHa|CY5Q-i+OXTs)0}dP={53a zm40f)Ppx;%jH|AHzoT9B2D6zx2qwU*OMI1tJcQ=9jvPw#tf+Ie$2q`A}DS1 zPhYv@5MHGPW(YI}EYs4M87pyCmJRY9zS9ntCa#jc0OForF;j{S9!>(M!J)#D`hlVI z5JEM&DeA2=RJ|PNM81Qu5)~t$5Y5DHAQ)evBy1s-WK=ngK>6kiK@(CaTk-rADcIA6 zo#Gg@(AnsM{ygkQ*mQ=Xtx|_>F|1cton!cg5k)fE43T)jnYXg?{n@uWox{_U_s8F9 zEDHRY+K8QxXQzZ0{He^nhQ^QOyyQV+0t@#hNzom!Y(NxRwxT5Sag9R$m0XRlVl zUY*oMJ4z_)JPz;`pj_4ZTDY&adgWrj+CWe~+^g=ZC%mo@$E;XKzaSi?tY-icoHq))e1xZjy zZct5PAp}RNZXI-84#k}<1Wp!SQ%m?7;J-L4tA#k)WNuq79Sx)}1orjW;>#3qO1*`% zd#l$?{j|Dnu#>6JYG%Ir%K3TO9Xh{z+9EQp1WJ@|!oBU^I=>!7pAq5}GEX;e!}US9 zUQ`~)<1~ICDJs5e&;=y98~`h%EN!LsxDSr zh`RmScVVe_+UmFVi6W6fyVPu&Ux(jnDxp>_q8VP!fb5=)%HfD*w)MVJ@6>OVq!iqI zNoy)%Iu`OGnDKa3W5y3C0Q-R}J}Au^MxtJm(X`dyg9ZuWy&!y^H@-BiZCi;?d^P~r z2mrHRUb+*`vEs{1Ur?!E7)njb)e6V}6+O_9PU$3gODkwFgkS=R`zxdW63mt|um=f3 zDT{euM){4pKm-U9XiH2hOQa)Nzoc6SOYN6QRs!VDinDJaA;`3$E=*^0nj|6Fa!AY; zAZ#e1#PqHJHq?UNP}@kp(3}#fi2}s7tHCoAgq9k=7I+ow;69AAieu0Om7)X*yK8V{ zrZ(rYX-QaL;b<%f65E4eS#Rd-XlxhlAsGzG*Cjf>MPGwT12WtKo_>k&{|t4W*o$fb zy4&AjQY-By!xkXsn1StrkqdiSB^#3PtRv$)y2>(SXswxi{7my8hIUN>Ua+;U)TFT3 z$Nb_mFet;DEHiAa0cFu8XT3OJ+%*ouJU zpw=LRJON2HA{CmFKPia>9YP`IZ83raCnvNJaE1Ps$3sfXDIWmyD~QW(d)cI!u+3MH zreTIjR9ZvzZcZvDux%kCc^l)jqMKybPW1@-s&&FAu0{f(Ff}X0N~oI*tR}(T_C|@z zI`X=$8qE;^GyHq?zP5ev^kk{8{?8JmUJnNSVNVy41bZ zUiRtV!LOLwlXpwhC@g-Wdf^jT%wSdVRg)M|C-~aqZYcjE3TrMRk!ctM{(pt~BO19Y z_mxM1={lwyvE;v@n|fex*G2{0qe{TkD?4v-0q7EZ>o)zC1d=5KvEy%n>&|;JkV{cA zv`7rq@Q?}H-baU2oBYnn02EC0Wl7NCg|3Q{_dOb z0(9CMDJWQ?tMRxtVB092Kv~jOYeFmCwpNN60&)1fRM!BNL~4{e-2VhqBFX=Wa))=X zahPbAOHd1Zx~z7^3Kj@dw=R3qE-&?xUNX;;^`mxncXg2TOG}uNhRX5P| z9)uE_UIyxR(*^r77QrXy_42Z+PhVcz>_GuRf<3@SaW8fVQeY1O`b{e%aPG2^fn`JN zXHqk`uGGg=L)KMmls2@w9g!UpEmDA$7PgPT7&R&I(4m9F59Cvx#_N9) ze=f;!g2W*r(9-aLf)IynReu1ex+T^0GBX_l3?$8fx%Ex93*0Xtx}&1BLup=zkzz$@ z)wI*GU8$AjEcPnmx5*X}gC8#)J0Bhr4eyiq0XvDne(IO^s&#;z9Dx5=XJq*?7WWKr zAXp|;azJ}=30iq-C)*p35#Qy;>wUDNsC7@%<>Rv!swQ zMuZxvC8pA@iUQA~OvAsk(XaWo$bc2V=zuKQF_6o6;<#JXb3A@%pfI&=^DaU&fy9={ zu0yjANM6w4jQpUUbhI7cTCQT8k_&VyqzJ9LtIBMp%S$V4M^$nRg6V5u))LV#?4RsI zcd=DF4ETpSPwq)3W!MHd6Smfy<`>_5O^Bfd>&yt7n2Fu(n8YF)%!I;==eSTmKSv|l+oAZ&nsYOYbi_n&2DZmYQcDLz z5P#HI@Xp8KD@zqN41)QqXiZK1q)3L6Dn*90l(D}fspaY>?J<2I`?2i&&1(>3lE%Sd z6fj?Ja9358NcRdNCq3g*|0^Di_To&j#F(4oj(XR}&fB_CC zbtu=A<-C@6A$vc!THs%R3rNYI%S!>4{fl*b5hw;I5FO8C@ThSR}FPStvG6Y}S%?{66L!lS9^b30?lQ4Kcu)e)?;eD zcFfmYU#|19olWOsv`yh-zttbZiAxX)C4CIzJVy=Z*6cFX6QbN?yb5{2p<0cxY{?QiTs!XX!&7-zVU5 z0%{Kt47PfQt9mv{{S%I0Amc6+o&RH{yiq#n>R1OZMROl~A=dR^@$43-5)O>lt{ps> zDW*@)i*BEVCRdqe*brhKP=~AC?NgR)>aY{ znpKjKv+>8I$`+VsUj)Q4!&=B-RE{e2QIyCJf=}&!y|!8h?2QJ)z$L%(a)B9;JWG4> zL(aNsLm^7l$HsL6wk5&WC1%@RgJaDlhYD~ujeeqY1|(fr&FNb+I}J7Ufq}6%TQD{t za&>Vf^0Cm-SGT*JCrm~7)>|gX4)5V@in?#f&Z$7FueI8zr4m^R=W4Dx0LzUKJ+%?~ zMxC?vm5TORr+NA+-Bc|Zk<|Y{)We((SOs;EK|1JaEJ8d4 z_FbtsU}t%j3p*Pp)Npx@I7_5fiZr$3UW_3wTYk&;@ojz_HGZrS$J!pK^&yq`m{U!8 zuCL)Hxq_o>8l?J5sB7rvkLY}6URx>=OT(+Hpe%0e2{^*KDAyosc%D`t5yCcGG9#kK;dKY1$7FA;-VUPf zYH=HFtp0YFY;c%0o(hV{g9?s%D*d$mYJKATkuR!G{yc4cwY|FW+s&W0TY2|78|B!i zX**))8A|#GZ+)uOb7~yp>GyqY(9A!aR=GeKL$n8;v?K+8HqsgWZ>6ZP{Co!p-&LuQB6_~05f*-5@-|=-k53!H2S;o04@^slcPAy3MI<6Sx`Ql@Md}2rD3{1OP^azDMv783AMlZ#98Cr&jCL zB6cS5txfxzj&kH8R$0b`>( z1ZPtOWwqb}wo*}wt0Y~c_qiGNPk}ejjz^B|tyuG>uK{Wulnup}0yBnbXzis)99Mdi zi9{u?@FD=ONX@Y5&)&}V8jQ^S^J_bghi2ZokRWlDJZ(6^B42{QV}7P*D&h$80O5CO zZxyPqVBYKYW+5^(^5OyEBh*`88>gB^-Dr&Ldwx zR&)oA_qurEa3VWpCN4P$9DS_ss&^UV&i}tt{|SQkkOS8;iDoG6DWmM#{ZgH>tZq%( z>P2G~7&h3D(j^{8_=eKw(?U)?<^LhDG1IA=-tsfD>E54qB<$vJQ<>k1gDEQQ0qqC21P9xlQzy9BAAYqGJmSMdvUNql? zZ)(g5{i99!(HnW~iTe)kQl(Nrt$^A^|Hj`Z`oheV63o1F{!Id(J!H#uSKfe%D$$Uu zt@HQn3MYHSDQ3KWEb}ygLqHL^F4jupMUwXuwQ80s-n+sp05c961?Mfw>9JrHIszIP zamS-&q23Veg#cEaCd}R@&iuYog8NZB2qD%>lqnC_oSB-ia)x#+8b3C+Rma9WB~gv=PcY8$pTbts0+Q0;tYECoJ#p zhwU}{G2zVG$JtxOjQ;&F#0}M<>7e8WBISzJEq{fKko)d4>KFUOu@zQx_;jkythrzi zi0Q@_ng@sS@EB3T09Xz+`45opWM}+gycBU3qn>YD=%jkJqd=oAD0+fXvp_>Yi-{RF zS0>na9GYw;xE{f_(;0kf<97yGuhWbB9qb4uWyD?{2PD2s zKvGnldTbL&l)+zMiDiR9HC6uU&u9ukVp;)e0pJuml_^1Nf_e}e_#%^}8}Yw{W3s+H&xrB5n9;%$`V~ zQZa`EzF0cNQ6%>m|>G=5kKD|2B|#~QPit^2={dr>JyIEJk87+4)pEZ&x^VNp)1`srIsKcZdM2=6JyFMzIy*$pnd z4oKLVniT@KF(zl-RtTnmv~fH@?ssfk)hg^(hcZOiLB;)zxGIv+k`uBgD&1 za{=#kMAO4-OH*zC%<%u9*diO1uf+elv9-CqS>b=(+*{!P&5Qq$*B7b-x~M6K{F7iJ z$>UcOI3BTx2NKII2dNaHrX#dwRePk8`sqSZ2|>M*EEPfSPqihk?9Se8%tyP_R^%!2|5MEbDwaYmZ=s<)9fddB8%^sOVJ)pKY?K4gv ztrYjj4Azc7VLa5E-|-p4-r&&F3ke2=8`v|ZT(Gk88^IqHmcW%2q7YY-OikF2x_AkS zZq(16^#js+z{>@{A8IM;GwAdb$&LAoML`O(vT->v0!z~g{5>gyL}^My@mFe4Hmepd zv)Bb!F}Tqw?sMrTth>u5sN`pf$V{cRSmas!@}plb)(Lwe2ZJf?uesDf3@zH{QV%L z@EwiA=#Ko5q9IUhqd|uyCD|R=#Z!+Y5r{ z0+mGGMrkjQB}O-AX+gKT+=_N)Ue*s+ttH!74_9kvb>pjb?a^EHXJU6e6jCj7f@ue1(%k zX)02Nudcfh)VOKTT;gXyp@ik_K&EMmZ7BZ~b0$)_yAq%fF|+M(hHRpi8_=hUIDQUm zB)+k4o&@xJ!qIcdAenK*CWZWRzR3+93R#@ZT#4r66&%()zR&J3BsS?IHKJWFJo?zD zV1=lF$KS<}eXi~_Wke1W$Oy$li!S@B$PA21w}R;-h%};J=tCK#xy5}-+nR@Kbu;zg zK`2hu8sQpD|4kiO1w@9v$>9*klz-G1y2SFTkgCS_9)ww(T<-uSOUxWCy1^i)n3aq!6^6@+&~yXm_N&Srm2aim2PJctQzs#lDnb%WHISG(N~N7?j|ubTEt1vxA-_l<~Em z2#cKstRr;RxTDv@j?z#YFWO$xCKeuAva_IymG7U#l)IZ2+2c{UdB_lPZXc~qu$E2t zv1*^GM+}S4wRWL$?Ue<|87@VR!pB479QEJrbu$r@^*`(_ z);o^!fKy)%Qoopl_v3`DF*jojTMK)pMkl7R- zDUJ_H7H){Q7kk1>M+v^<5N>EMeGBD7iz#k!U z8-_%fvCVRsAR#stjKK+by7V}<3Q0*dgf!~A`q3G)9rFpP%ANzVer5r z(GGr8?O5z;c1Gk)oW?}xiH;TUtENSQ&UM7;q5unQ`yeSL&|5H+9pQ3to()#bK(Qpy z`wWIqC6T3}H;?U#tLeAGDxrh0(92PdPJsGZ3UCHVPcxINzL`T#s`a%NNH@y@Qu0f$ zwAy+do;?j6>}>;|FB4ISHT)0lWhAP%JCm=kZ3;*c&#S+p z;_E;@FRUYukty~eMkN1)lW5re7l6mf>=V}VxL0HKQM>`s(Be{LRuK?BboS$omLsL; zhGnyYV1c_A-r>GdHy95?&bfDKS#fQ_)PMKwChxqKl41b^*YO|>O;OK!1*NOJBRzO` zqC0^cA)qMNKzdl{KjfP-jGf$y@O1_R4T5jCDzl-n4Mn;C5;>E8Nq?q^|EQb4qlLi} zqCn&0KM(=h^7)^3cQ+UDpLzT_va~wA#(vyKqCaeBVF?T#Xyi9F=}eOPx3mZFQ;Wm( z3pxJ)?J^o7_P{IfzpZa=uWwZN-_)-c=YI}=zQwgAXCm=MVnSWL1kikN5C?)?LD{j^ zi%yMZ{8=+GNI5rE?|Co}w7*DW5UwT7v*f10N^vKK{{nik#d$>p#B1z+1k1&O7iB*F zW27|3UM#jIft~^3NFXee$jJnz!5}Fpe3_Elz$x5QItxTdmGN{V$~fDtG74_R*GC;vUdofl(KC6TsDJLXBEn# z+oM3@K5+YBq+4~Ej6MW~B(vTv!?##%AW0IHz|LKH*O@v z>wvS3AYw6s(76RgKzWPkq^ZIzFoui?+@M1kG-W`DRwgyL9<=vH=TAGyO1xWjj|f!2 zV47d&vDzJQ+8nzItDmHE%wp)|Pzrq#4k+}Rzlv?I7!_tpPjsT*ct6;C=EnsmLjg`7 zmr^j$ySY_~#SvhAbddoWb7&>c|rJ`zt$)@b%h8P_^_rU3dSLSxgq<$Rf+Ofz&7z`LE!|B;FhGZmH z*UI{&V^RcqTN$i3%m+vL2Ax&g0CZ8Dnk+TOs44BWWE4b!fJz*sO$S~9LAB8TChC9M zz3{{Y!14Ou-tPLIum5fBZZ7zL=kn)WJ-chO{&!G&w=qL53-^dJdDS&sQ(DprsO(=8 z7g)s`Rh%w^eH>kZg9yuVO%{>yUZFSu#los#8pAE30eVsXr3uhHG?R&d)P4X;PvNku zsa0_ryfehTER-OOpH$t$D4kPe7(p#bsYvlq;^KI-VV#RJ9{D!TV9)=!Ny=7}42Va1 zqFLVh5XGP%3OW)8Q7NZRqoiS`Jw<|%MptmgYN>$@BvH}8EW$7bFsV#$BAH~Zuow4Z z_%DcgOgTeXxTv;<=a>^T_4bqRVqSIzdy&zXgBmb?ePt0?Ma9n0XoLQ0a}~9rqBGd6 z8f6l0D%pKn!xWHZVbDkkOtNk#(fk<76Tp`IpW~p7{ zYkzUs*ok(!Q&&k>Tbu`+)r){0RJbG?$^vm_dvaxE71B7m)JP^$EU*Yb={#|!aG~k@ z{Q3F*;N1^94%9`!9~kNo+^WeYA^lVuv$-mH^J+YE3;Z1>rtbUjSvY6Bd>|Yx%zrnH zk63|_=N+?)2|CkTE{7r(W{$=mX!i#d$frGus^b*7k2X(H5S+(u$q@<=ksF$aT}ET* z-57#gOH90ihr0ZapXZ+hb(MR>_y$RF)ebOH^(uq!L4A1{tiPtI3Xp528GKcmM~DZq6fkQ&@~u%_=( z(FvSs7Trd3C4vx&S203Kicw*)KitG6{94x$8}b+UF}!q1<p${BU-qZ6=F9#ga-fBZE-+XG$1d8c z#&q#BE!hDT3Byc8VR?$Gw}P6o-=wHZx2IIe&tWh9rkj5A_c%?H>o{-qy59&&vHGi; zk5GO!9u!xes;89TS`p41N~Mu0XeAoj^~knnBb6A}=6FJhrcu_hN$gLvrlYh+e2YRY zjEgA?oTJDDhzMp@(G@%Pnujy5xo%%Aes#gs1Mo@O7`;eY8a2BDe?ERo;3F@+AL<%? z)@EpIaQsfF9o%%=z?45lqQCJ3y0wAs!UjzXYx15yhvi*KO??AS0dCbS)x`c2|5eQZ zT9W)pUKoIqY&nC{5FR>X2XF8A^AIZCz~%fOVALw*VWSmpuCK4RwDY1c3BQbg{-!8< zFaRKpq{<Hg!gg_9hJe{JG&P!|Zf|>NxoLYtH@ADNQM!lnKuOVe^Mc)qm z0=;I%ma1QxwNMigwtHgdE>;vSK%&da)yqzUW+gZP$$3d&10j70gbT?`bzVJLtqykz>mA-uq7|21$b^mGwRgx4b^t3#r8cmrPN z)LCb!=8#^3-vp}FAwM0w=7Z6I$tpkN-*un+N|<5Ur?PwbIa7S2Ii`yMDNN*_VYeR@ zeCbL3X+8~k#T4K8yuyZvp7i^s|(G%xY7=UUsLv9`Ir zpuyDkdR4KrtKE4KBO9A-vaqQb{AJDSrVl#5e__MA>6^~)$H@>4r`?6f2w_q2sYK`M zin_B`Y@7`Ggw=xHy$P3xhTh7$RfSMBBS~3S{W<+f3a;8lvps#ZKHPQ{gKv^IQ|&m_F5BUeM)few0|Mw( ztj#;!bm%v&)I*5U^y4V^KgVH6-P$@xp2#UfL zC(5*r-SE3Ms=bG+&Aw$<<78d zxpP)mjV*E$?LaF$2T{B@9s;}|?L!Q{AxBb-kTUk9FhswcpBBK%rGBd#FGIbtRz&?0 zF7~S=jU=)q1izzl1bgX03G#k~_2`4-Ca2)qLj-z|Ofy(GvdwtkSWFi}dQ-E~C_^yS z52`EZ$insr^!Bi~j<=(=7AoxJgflMxa6&f+6_bcnxDC zu5m_Jo>iZ$i@_0dB-48x%g1bjg&3;BORU4>BtZ*<$l)k=Q>d*r>RG`f({?pXg)qNX z6Ar;Mx_2%w|DMGXy%kK+d)Kjh?X&?K-Y*J==#l38lLjRy%n9H&DtDwdjPqqOWhf86 zrU~{f+HDX(7$j6;ouP%NQJ74HtZ-&r7dBsYG&w75wNw2MaSc9+AD%!F>XLv&Kv1%R zRVJSi?V_7f6f`iskJl39gN^Z8d0~e;=K5AiFe9)Qf(N;(o1+ZB(X0spYW-% zlL-%u3EPdQPJsWx`7@8Wk6-od$5)lizsi{ERKIsOhMAWcL&}?S&HYX7gU&r%_r&*W zKa6>iF8JX?-6Jx%WB0lxwaSGJhruzBD%fVS6#&v8u!A3((|RH!ggfb#S*#h>|4Mb_Qa&E8-*~BRD0q=9Mkz&x0GmmPy?pw8Vy4ORCW%9JTc!&$(4knyF|mc#wNDMxM;u91 zn}@1w-7MW#K73$vrt<}4Oe!jw$t^|Y%)rs(PUVbI^jShG zF|_GumjKSw-fXWcbxPSpYL)dHPLg|NXiCJcCR)KGv#Ep0&cYr}$J8S0YdCcW)-zJt z7zq!albM*5Mcluxut&fYCM6~%i-KR19$ZPM#^tX&y5y$S2^Xe!V^t4z;PJ`nom%6M zx2+n|w2o6A;R)}22l{l^o+y09rOw$84-uwU4L0qqA(RGNah6R=5QPHCV}9W`^<#u# zihTm^kMU`fqwc&#A#PalnoN2xoL%>n8{(dHMcM1=-BI)_NzrGFFx;0WJwDhNj7o0lbyf%y6s1+4D8>XQR*pBKxRC1#+|E10_8?%_aGl)V?;zQ2Yjo)nY z;=q{tm(0lV$BYAL!*Jubd+XuK)U&Ow8SH$xL9=aRMxf-irU-cH?2XAb&w;?`-Mi^EtCZ0{B>=kT;t^la&=P00m7IZW1smG5M6EL_{ z-fp(i;g3HR{5AtpV6?5a2yBfmAi@}$LE}ZP4GXw}J-FAvR!Zo3g8b2ygeTtn_W2^P zhX)hd!EG+vbd$sJ@Pw<1+I|zP-vaRXJ~I;#^9L?+OcU5l%^D$0u#L~a6>gf~R4v67 zeKR6hO!}0DsVIOSdW3k&4q%0=*21`;5l9KBpm`7z#a%L_snoeS*u2_#dKXkFRVNA^ zycO{n5P_3Fo7U#ncDCCj?hI@VXF*%hUOQE=i?@Znt7bpRn>2*0_y$udtS#hzx(y0~ zaG%0UI-Nl_68mz@YtRTq=L(y7-XaDe|2pmf%WD=9GmNz6ohw5mMVs$yh{1Cjyuqe) z9zl6vGMEwYH_3A1l+u!AvsJ?=CWwqkc7|H8*5e@b$}wHFDsUjc@fyb0*KxO;VI|Pn z!iYX5;Cy+B>OnQat9Ay)+w`?$`#M!8R|OXYPMusdNm{d;+Es@TfD-|ds40?s_w8m& zc7)AoXV3B|HRX?F5j*UqYQzOrBpYI~LV&9J(iE4}e2rTVJT1HoZw<|fADCn!8Kn{H* z%1e>$ks&Fpe4G_NX_gCTdvr9oD3=5XOGz^xZDbXzeWs17RwAm9o#FSrWiPc56alxALGkCXk;E ze#!nAoOaiL>(VC%PjpV<%eC%PXM+V*uarfK^%@I0-dE*6SD81cC6-D1!K5xvJ!{oz zlWgM|ri@;h+mzAgCQlhB`$-vkts8XG^!(pO@1WmEtwYe2UNv69SDvZ~zQW3bGFcPq ze5RkiX(lu&l#cu8*ZUZtrKx5XoDg%HR`}TDIfbWWLO*cy%BUOe98OVKFm~c3^O-Ca zy1S;BHF#}qvj!iVJZos^Sz?YNORQa-!#{}Nn;=A}ir6Y23Z{y)kJB+Yj8^3LLuW^c z&Ja{|28!6*wT=WhYj=^dcG(S~z8^ShghnPakU4STdYo%uQUa}B(Oa*gaOk<1Lgml^ zK|sF0&&mQ`kVf>8i5<0WI3|DEy84~Bb?n0b;|5FNvUlr}lawKrAaix9Q^9v_rRpG* z9&vR9lL0t+?^F}7kD;kne?8@)x$0otpbm1hFX-7@@_qJC22>KExH~=E=7z1ZK z)xhu#ZqVX3!el^-Be3_EKVc9p@TE5N^xV&_u(3b=-d3kyC=Yt&mD z${Ds^{zF~+fqv4j&%yylS+28(DNiAoLd<#9! z1Hd08ezvT-Gm{)|MWD=R7FC!7aK&Kxy$lYXRl!9_#|2`_J9KNz5*KpMtOmhH;uL|Q zpk2LsToswCBuoO;iSMutW*9fs0xWW^HYmD)`~b`e5citWdMS-b$&5!om#Oq68Va(T zEbG-^PC)-$76NMI;=2oL&lpUFE2qC@2=SmY+}yQb91uT(GR6+h508(-GXAVH?In=j zp>4<+IEPkvU2ZOjl8>R4)>kVlL*GGB9yG!KUQ#1i7EB8VgOp>RE-)<}3QQ5_qBauB zIu_{=tIBT1M1uOVL@c7`G&vv}Ncp1UfIsK`w1W!mA0}GsyT`v$ECfxau~mXO;JR7i zsfND`pSOX$L}MGn`WH;=A_b3_j2%=yB|%~}lY9hWMgT|F$z5tY>&H)-s%?_|GeNv) zLJuzgjTwbN*J3;lh5*rm2w^F-nfVn!hM<$Q4 zfRTby)D=$M^&rHH@F4~slEO|68Be&~SduJVo33~Yj@Sd|LOap|s$4<4#+lPo!_!TA z0oUtdtt*mO;^ez+aG4|je$)r)&Vmvvy`^AwIlRh8lxEP4y(W;>ScVt|0aAAY zIv`CF7KN6rj!@|;Z%A{e={jpX$OOs;2L)@wO^%Tfbyj)@@Qm8}pan0@^TA-&t2ZL^ zxEnUx4MA|DqquUgIo==eZZ^Fr^v6un2hAYkMsu@7go0U&^+L(BK9-7DOi6wj1b?Sc z3xfc^m&+EDO`4^va3yJ($~g@IFlr%;kZKpaw929#B=FIuaiTQfMLakUB#e%-mQgOu z-6_(}>w2ki5dvM3?|(?MU@>w=7x#6d^kSTlo8(^dez9ig@x|G475m6LnJ#~ zC&Y<7l=1%v#zAbz=zZ~LuWgI7z$|iL@PG4i#FX&}Cr6nE*t+7667MpDUrRMgV_KMa=R< z4G%Dm={|=FDowIBl+2?junw1?kflPn!|);oz}>L4ftWs!N0yqki+>+~MBXZ#RYrA;ML&XGz;Sw;mA zR<|_u6Aqu4jLJ$$9p>*~G7Yj~qbh-f*hyjO*l_GIu zNvD-iDVC7vsR`7~z2OqVes=SQYk-jdf;Sqdrrjhb_PDDNc!kLO+l_O0CMcBV*amnC zP7SKC-oqSsGsxvF3xSK^KvY^;j3oo0qM0a10(y^XuT;q|SRPsnM0>KC}rKs$?Z0|QQu>I%5T+wO_6mvkf)8dl}C!%hR) zYh(|iex?E8Y2vPv8>+ansI}}Ot7Uaq>)C_C3I87VCrDrj9omkTF0pczWsrrnVya13 zfYf}YMft2v`x;md_10ELe2H!fxO-wXDa)dP-@!}%n{40q+ITGG%2&TwxmLS9UTJf0 zxnN?X_A+cs)mu1*H*v0eoA%J>S$L3qvL3_+aVu1Mq)eOrXO2pxCmZYQ>tAz)z-Jpg zQ2lOmXMJ6|$fp9FzkQle6k^EzqjcF7tBbeF_Q{l>PaXNhy~FoCncxdPH^1KNu(Nlm zZwQWK|M92qT*F5ZB%6AiM@hC8DrKZ%*Y1KgX&@FKx^~vdFerbOhUzeZ62pv{#^N#U zc3|#6tWD~wS?MBHtr9>Bq?xmi9FunKO;;MV-*j3sl|gXT_7VLkG{yLZt@U;N!KEFU z?qwN-+DCY>&3xlOA@Z@}4T1<~+&xHAK{P`0C)t)gtqE06RhQpT>8!|09r`k{QfR&u za-#~%g_r=gV5-U_E(ls_!%BZ4LNDb$ssz>SD(yb}2e!B&N@-`Y8 z7g;5plSnCJvH-7QOhheWqPEhdtNg|4=T>@GO6vkt(G~N}QrsuEO5a-TW^k#?M8f3z z)5pe1TkQn0M{GJ!wNLG(U(w+0V91VQQ*HsH!ygr9C2G3YUVaVPAAH+%Bnu?U!stT< zq=^`%E-&wJh-<=!Wbq}*kAyQx?c#?xN3VYXNAPj=AIhL$@*<_`Wk7Jn`J{_EMKtxg01SBA2X$P1L*ePx{wCmsuyQ8=hq-MUR2eFC+y+^TU$W z&I55$pCKolLu^6Re~8cxtQ(+;R7*bv8@(d^VQpFhtT(QcT+RSNNVE4P!~5XyL)e5( zMpKH=5A2izU?B~FX4_f@6%B2z)6`e8xx0b~ta{5Dow|h$LLR^!qYsv*E zixdLKWsHj|jDMC+1`O7?fuC}Bzq84cn9 zSBp|p%^r|_1Y%=UkUeM7fJc1PintsN1Iufy9^j1V=r(>y8l&Fi!82 zJWJv0%t21(wNZV9|CxgM5!R_{qZulFqdXULav-3daUSK}TL*Yi2{^IKW%1Aq3-mt8 z*goPfk{h*`;ik}K9(*oWVQ>&m0IIz-K+_SmVJ_8@Mp_)9Cs7fu9;g{s+bE6(mXK2o z^sidngCF!xH;O{opMBia z2nUAcYf5b{yc!@S?5L0YZy=I=_iaeJ2B&>6bSBnDr8i%*b5a+Envy|O$IR=}be%FG zSs)_yC>o?D=Hl?9h;g1_)iC8m;4;DwTN*nBiSfXEim_zrW0`@i~he9`ca3QF{V6L(fU?{5&&9f!)7Nhi`)4Q^K4VRa#!2P*r)n8tUD6k(Y`fAG1 zs=mDBySveS$L^=3aC}S=)?b~T9EN8f4+DNkE;Aa9I~gsTL6nSIt(3yv4Dw<3DnVZd zxa3H3sIR~z48SCkDlNmDNmD}wZunea>}yQi?UtrTxVya`k)n;qAtHMXdxE#QI*@Um zIsjPGLl8hy8MB!3!xi*8U2fmb;57u2n&d{b-c))#85#=shRtF{Z~<1P+x@K0qk zD~a~c|AL{3X9&au-UA(Tv9*I=E&lux{=nW{-Dq$8w!OL5%erf~<)FXTA)#IntR(Dl z&;^w|ye}a6v|WBKXZgmu`m?*e4gcL+-`>T4Z*1@2f8nniI~%{+*k0e;-P+jL-Bmx| z+}_#U{Z+U=j|muo!4-zTy15j<}?ItAAHhqb}E9%KHC_))pxNi@@``{CKM@ zuVFL+(T~l(h%*W*fE?RJx1+7}TMi#fILG z`pVP@&yudPi1J<%hQE`xA08gs_3fA37&iX<4m7WfMxZyp%`(gntpxw9K0hRPNn5F% zQCsOMNtz`^JMN9vxVB*J_~Lx+M|BHj55;f9i}M@5eWyLu&*C;8U8zSO+sgD+9aY9o zQv5c$T08%A@?)e9(%Si7&JW)GX?Jb7xyN&2HKEQP3^D2|4YivM*1Em5qmAEg?rg2D zZ>)W_vAepxv$MBWQYTh7)>QZ6&kfBC63FONQ-v+X>FTIh6N7G5ZrimoT?I=jxsTVb zuC~?L+ud8b|E7$)w`u_GjrHYUAANgp;Iw`JZ@9u7Gd-8vCcXxdu|L5@s z@hQroEw>iGP~&Pep#l5eoQO_c30jPmj^JUe)I{OLTTog~>$WMmdW zHY!)M>s8gj>Q(j`gMF%P!m1ORRNsLX^#SA+e%*`vk3ml<>;T~xk_#y=(G!MW1LFn= z+yvRE6#_u2XXdbX71osAl9FDX`>SSz86SBpI;(-^I{b8U{AXpnLBdAJPOk#sXi8zc zK37cuI`3Ur4jm zdf|W2(JUShs4h!ljMLmCDf61WU3+VTZ;=~9Nh-3UsMkh9Lf+=jBu7r0=i;8hwV}@1F?=kcPlI?cEFa~mYF?><$8tuU*lCUlN1u9D z^+0HBsr^;-aaNA;HmUKY0@7#F*z4MY+$kw(ECX>VAtfHm5rvS zPb1-Z$;skM#uNn+8G-C5^f((JM_d=}j`1!;^HD3Y7oO?p-&`)swE+2-91<}N>aFj+Ruyr*1l_$Z)|EZmfBDY_8>Yalf0 zrQ*Az_XnRoTvWxPBTz8U%9aHeevuwdA8g!Q-Hsd)rBSH;&mY0!Mm;r{GW^K}xnfIMvvO=Dl)W2_}GfWvl_ zzn@!~|8ahLB0r#$9Ps^y8N1*iUA=;c%>I7(87xy=U9*gD zV4C0TYuVm1zkzSTbk_gY>}>V>zv>6VcDv0R=YRMgf#gO3bXlH9R3d=uW1>}jbj32lZEE668xk;UtYw zMh<6DS&+3x(6U_BtB<#Z-w{`W>f9p~ex3-GqQoMw)FXG`y7Oj@^hDY0j*#3DRFpPL zW}&{!;#3P^=toOVF=y`w);kriztypTO0*-=GMz)&LbCvGTG}K_mzRJ2+vO#ezLk6RTP=A0AK{!EhT_hq=FEDOu#I^ zn~#fq8v7qqoes_4ll%bV?f*^q%ywD^ADi1KLbNg1958H zNA}6KY!!{EZm9&R6(B2a*T!!uFawfskhuUzdLc?zP-B2W))E91A7Y)C;$#M0#gGhQ zvW^49g+>m?hloxwlq|EYi0Te$oK?sQli%M@u0(QQI%$}QSBJkKy+jE{OW7Aj%3Dm}tsWk|j&e+< z#?-I)bJ=o+MIU5!QFS@F1|9M8@()}ajK;l^pQ&pSwc(S^9q(s={|q-qmM8zsWg~@^ zk%YD{Hu9d>cd0ss90vrZg~8vbj-I5_{~)xh22J%IHD_aoo2FX;xJ$J(h&hq3tOQUe zF7}IRkkb=03r(8gNL0TM#E#?6qt+^!#O|!1<_!UP$_fOoB?d*u)F?hJR<7vp=pP;U z$L}vO%@5wuYekR%dYouxQY&P{(pJ0lRA8)!vn)^;F87_-pKx5t&f*S15)CqyTRu9P ztCTB;Q8&__B*?OT9AqP?Iu$iQCmcF6LXaMK{EMU6SK^SEgeNvpYeye9o+G#<2mQbPRXY}^5+{yBz1fEtB&(4C0agI zUkK{ag1{pPcMal6TSs@5Gi&+VlIJ3XVyDA6JwN{=<(GVSetz)r_`uaQb!Kkea^#T4 zZVp2rmswQ9A&m9~h)yo2BX(l(V}dtulmd2xU9&Z*9Yb*pmJ2ljR)jgR14@dj+0mGL zs-DA*X+Os81Zb!#vk$g9@q=O>yL!98Bf}rZ?i3kOHM`}^swWx*3$Y9yG9%LsaRKiW zBkir;xV!V~&@O!k?&C-u$9R0H{^ccj`lWjgE3`Cld1=jFSc9vS6hT#zaE2Ha4Huv+ zJW7gFp7qVb@+^^4hy+~wZU^@hs3(DB^jzqp12+vZ6hx{w^6({5k;z4T3o=Zj0)m-@ zd7(0pzTmc1EH}C9IR6*Z^zZ|LJvmT=&zln6hveM^v(Sh*KJ0cEX*4)^&dZk$IsHu- zMoWnrezl{AqHaU23ni0uDk8%$lnZ)37$Oqg4k_2n4C7pPXT**e`@8{Af8B&zp1!2i z?!~|r22=r-DG{vh?*1d=klaM{&(&1|*02{s`e-as`JA^~$<6!7xMW@<=q5`O{j?#u z2QRi+;@e2K$GQ8JbyL&VgA6(Z{nJLeED#U3#1UC{f~1g5SfndLNr1ut@WY8(UAKFb zZg39{IGIgP>_Vb7C*C#RRPNTH8Z6TxiB7pP(cVkLs07d7DheZ{Wis#`mgNb2{~J zYinvOgY2F!V_J6@W(xqIux3G7WC>lJUR(aWIQKa_o*jS~`{=0sarWuM(Y{{G%6wJ3 z8dNq^A$UjrUaDT7VR$-77{Q?r+LPNB`p!U%Hg8gQ&c~09&w}s$_v8mwKO!>6=*p`V zt(7BzCPHkKBLYJhLbkM8KAsOfjDS7EnX3sF7BZFzkb#PCdPen!fw%0A8y2@OUEMgF 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