sym_hx509.c
1 struct krb5_dh_moduli; 2 struct _krb5_krb_auth_data; 3 struct AlgorithmIdentifier; 4 struct _krb5_key_data; 5 struct _krb5_checksum_type; 6 struct _krb5_key_type; 7 struct _krb5_encryption_type; 8 struct _krb5_srv_query_ctx; 9 struct krb5_fast_state; 10 struct _krb5_srp_group; 11 struct _krb5_srp; 12 13 #define KRB5_DEPRECATED 14 #define KRB5_DEPRECATED_FUNCTION(x) 15 #define GSSAPI_DEPRECATED 16 #define HC_DEPRECATED 17 #define HC_DEPRECATED_CRYPTO 18 #define GSSAPI_DEPRECATED_FUNCTION(x) 19 20 #include <config.h> 21 #include <krb5.h> 22 #include <krb5cf-protos.h> 23 #include <krb5_asn1.h> 24 #include "crypto-headers.h" 25 #include <gssapi_rewrite.h> 26 #include <GSS.h> 27 #include <GSSPrivate.h> 28 #include <gssapi.h> 29 #include <gssapi_krb5.h> 30 #include <gssapi_scram.h> 31 #include <gssapi_spnego.h> 32 #include <gssapi_ntlm.h> 33 #include <gssapi_netlogon.h> 34 #include <gssapi_apple.h> 35 #include <gssapi_spi.h> 36 #include <GSSItem.h> 37 #include <heimbase.h> 38 #include <heimbasepriv.h> 39 #include <hx509.h> 40 #include <krb5-private.h> 41 #include <roken.h> 42 #include <rtbl.h> 43 #include <parse_bytes.h> 44 #include <krb5_err.h> 45 #include <heim_err.h> 46 #include <krb_err.h> 47 #include <hdb_err.h> 48 #include <hx509_err.h> 49 #include <heim-ipc.h> 50 #include <wind.h> 51 #include <parse_units.h> 52 #include <parse_time.h> 53 #include <base64.h> 54 #include <hex.h> 55 #include <com_err.h> 56 #include <der.h> 57 #include <rfc2459_asn1.h> 58 #include <cms_asn1.h> 59 #include <spnego_asn1.h> 60 #include <gkrb5_err.h> 61 #include <heimcred.h> 62 63 krb5_error_code _gsskrb5_init (krb5_context *); 64 65 extern int _krb5_AES_string_to_default_iterator; 66 67 struct hx509_collector; 68 struct hx_expr; 69 struct hx509_generate_private_context; 70 struct hx509_keyset_ops; 71 typedef struct hx509_path hx509_path; 72 typedef void (*_hx509_cert_release_func)(struct hx509_cert_data *, void *); 73 74 #include <hx509-private.h> 75 76 extern const void *hx509_sym_export[]; 77 78 #pragma clang diagnostic push 79 #pragma clang diagnostic ignored "-Wdeprecated-declarations" 80 const void *hx509_sym_export[] = { 81 #ifdef PKINIT 82 (const void *)hx509_bitstring_print, 83 (const void *)hx509_ca_sign, 84 (const void *)hx509_ca_sign_self, 85 (const void *)hx509_ca_tbs_add_crl_dp_uri, 86 (const void *)hx509_ca_tbs_add_eku, 87 (const void *)hx509_ca_tbs_add_san_hostname, 88 (const void *)hx509_ca_tbs_add_san_jid, 89 (const void *)hx509_ca_tbs_add_san_ms_upn, 90 (const void *)hx509_ca_tbs_add_san_otherName, 91 (const void *)hx509_ca_tbs_add_san_pkinit, 92 (const void *)hx509_ca_tbs_add_san_rfc822name, 93 (const void *)hx509_ca_tbs_free, 94 (const void *)hx509_ca_tbs_init, 95 (const void *)hx509_ca_tbs_set_ca, 96 (const void *)hx509_ca_tbs_set_domaincontroller, 97 (const void *)hx509_ca_tbs_set_notAfter, 98 (const void *)hx509_ca_tbs_set_notAfter_lifetime, 99 (const void *)hx509_ca_tbs_set_notBefore, 100 (const void *)hx509_ca_tbs_set_proxy, 101 (const void *)hx509_ca_tbs_set_serialnumber, 102 (const void *)hx509_ca_tbs_set_spki, 103 (const void *)hx509_ca_tbs_set_subject, 104 (const void *)hx509_ca_tbs_set_template, 105 (const void *)hx509_ca_tbs_subject_expand, 106 (const void *)hx509_ca_tbs_template_units, 107 (const void *)hx509_cert_binary, 108 (const void *)hx509_cert_check_eku, 109 (const void *)hx509_cert_cmp, 110 (const void *)hx509_cert_find_subjectAltName_otherName, 111 (const void *)hx509_cert_free, 112 (const void *)hx509_cert_get_SPKI, 113 (const void *)hx509_cert_get_attribute, 114 (const void *)hx509_cert_get_base_subject, 115 (const void *)hx509_cert_get_friendly_name, 116 (const void *)hx509_cert_get_issuer, 117 (const void *)hx509_cert_get_notAfter, 118 (const void *)hx509_cert_get_notBefore, 119 (const void *)hx509_cert_get_serialnumber, 120 (const void *)hx509_cert_get_subject, 121 (const void *)hx509_cert_init, 122 (const void *)hx509_cert_init_SecFramework, 123 (const void *)hx509_cert_init_SecFrameworkAuth, 124 (const void *)hx509_cert_init_data, 125 (const void *)hx509_cert_keyusage_print, 126 (const void *)hx509_cert_ref, 127 (const void *)hx509_cert_set_friendly_name, 128 (const void *)hx509_certs_add, 129 (const void *)hx509_certs_append, 130 (const void *)hx509_certs_end_seq, 131 (const void *)hx509_certs_filter, 132 (const void *)hx509_certs_find, 133 (const void *)hx509_certs_free, 134 (const void *)hx509_certs_info, 135 (const void *)hx509_certs_init, 136 (const void *)hx509_certs_iter, 137 (const void *)hx509_certs_iter_f, 138 (const void *)hx509_certs_merge, 139 (const void *)hx509_certs_next_cert, 140 (const void *)hx509_certs_start_seq, 141 (const void *)hx509_certs_store, 142 (const void *)hx509_ci_print_names, 143 (const void *)hx509_clear_error_string, 144 (const void *)hx509_cms_create_signed, 145 (const void *)hx509_cms_create_signed_1, 146 (const void *)hx509_cms_decrypt_encrypted, 147 (const void *)hx509_cms_envelope_1, 148 (const void *)hx509_cms_unenvelope, 149 (const void *)hx509_cms_unwrap_ContentInfo, 150 (const void *)hx509_cms_verify_signed, 151 (const void *)hx509_cms_wrap_ContentInfo, 152 (const void *)hx509_context_free, 153 (const void *)hx509_context_init, 154 (const void *)hx509_context_set_missing_revoke, 155 (const void *)hx509_crl_add_revoked_certs, 156 (const void *)hx509_crl_alloc, 157 (const void *)hx509_crl_free, 158 (const void *)hx509_crl_lifetime, 159 (const void *)hx509_crl_sign, 160 (const void *)hx509_crypto_aes128_cbc, 161 (const void *)hx509_crypto_aes256_cbc, 162 (const void *)hx509_crypto_available, 163 (const void *)hx509_crypto_decrypt, 164 (const void *)hx509_crypto_des_rsdi_ede3_cbc, 165 (const void *)hx509_crypto_destroy, 166 (const void *)hx509_crypto_encrypt, 167 (const void *)hx509_crypto_enctype_by_name, 168 (const void *)hx509_crypto_free_algs, 169 (const void *)hx509_crypto_get_params, 170 (const void *)hx509_crypto_init, 171 (const void *)hx509_crypto_provider, 172 (const void *)hx509_crypto_select, 173 (const void *)hx509_crypto_set_key_data, 174 (const void *)hx509_crypto_set_key_name, 175 (const void *)hx509_crypto_set_params, 176 (const void *)hx509_crypto_set_random_key, 177 (const void *)hx509_env_add, 178 (const void *)hx509_env_add_binding, 179 (const void *)hx509_env_find, 180 (const void *)hx509_env_find_binding, 181 (const void *)hx509_env_free, 182 (const void *)hx509_env_lfind, 183 (const void *)hx509_err, 184 (const void *)hx509_free_error_string, 185 (const void *)hx509_free_octet_string_list, 186 (const void *)hx509_general_name_unparse, 187 (const void *)hx509_get_error_string, 188 (const void *)hx509_get_one_cert, 189 (const void *)hx509_lock_add_cert, 190 (const void *)hx509_lock_add_certs, 191 (const void *)hx509_lock_add_password, 192 (const void *)hx509_lock_command_string, 193 (const void *)hx509_lock_free, 194 (const void *)hx509_lock_init, 195 (const void *)hx509_lock_prompt, 196 (const void *)hx509_lock_reset_certs, 197 (const void *)hx509_lock_reset_passwords, 198 (const void *)hx509_lock_reset_promper, 199 (const void *)hx509_lock_set_prompter, 200 (const void *)hx509_name_binary, 201 (const void *)hx509_name_cmp, 202 (const void *)hx509_name_copy, 203 (const void *)hx509_name_expand, 204 (const void *)hx509_name_free, 205 (const void *)hx509_name_from_Name, 206 (const void *)hx509_name_is_null_p, 207 (const void *)hx509_name_normalize, 208 (const void *)hx509_name_to_Name, 209 (const void *)hx509_name_to_string, 210 (const void *)hx509_ocsp_request, 211 (const void *)hx509_ocsp_verify, 212 (const void *)hx509_oid_print, 213 (const void *)hx509_oid_sprint, 214 (const void *)hx509_parse_name, 215 (const void *)hx509_peer_info_add_cms_alg, 216 (const void *)hx509_peer_info_alloc, 217 (const void *)hx509_peer_info_free, 218 (const void *)hx509_peer_info_set_cert, 219 (const void *)hx509_peer_info_set_cms_algs, 220 (const void *)hx509_pem_add_header, 221 (const void *)hx509_pem_find_header, 222 (const void *)hx509_pem_free_header, 223 (const void *)hx509_pem_read, 224 (const void *)hx509_pem_write, 225 (const void *)hx509_print_cert, 226 (const void *)hx509_print_stdout, 227 (const void *)hx509_prompt_hidden, 228 (const void *)hx509_query_alloc, 229 (const void *)hx509_query_free, 230 (const void *)hx509_query_match_cmp_func, 231 (const void *)hx509_query_match_eku, 232 (const void *)hx509_query_match_friendly_name, 233 (const void *)hx509_query_match_issuer_serial, 234 (const void *)hx509_query_match_option, 235 (const void *)hx509_revoke_add_crl, 236 (const void *)hx509_revoke_add_ocsp, 237 (const void *)hx509_revoke_free, 238 (const void *)hx509_revoke_init, 239 (const void *)hx509_revoke_ocsp_print, 240 (const void *)hx509_revoke_verify, 241 (const void *)hx509_set_error_string, 242 (const void *)hx509_set_error_stringv, 243 (const void *)hx509_signature_md5, 244 (const void *)hx509_signature_rsa, 245 (const void *)hx509_signature_rsa_with_md5, 246 (const void *)hx509_signature_rsa_with_sha1, 247 (const void *)hx509_signature_rsa_with_sha256, 248 (const void *)hx509_signature_rsa_with_sha384, 249 (const void *)hx509_signature_rsa_with_sha512, 250 (const void *)hx509_signature_sha1, 251 (const void *)hx509_signature_sha256, 252 (const void *)hx509_signature_sha384, 253 (const void *)hx509_signature_sha512, 254 (const void *)hx509_unparse_der_name, 255 (const void *)hx509_validate_cert, 256 (const void *)hx509_validate_ctx_add_flags, 257 (const void *)hx509_validate_ctx_free, 258 (const void *)hx509_validate_ctx_init, 259 (const void *)hx509_validate_ctx_set_print, 260 (const void *)hx509_verify_attach_anchors, 261 (const void *)hx509_verify_attach_revoke, 262 (const void *)hx509_verify_ctx_f_allow_default_trustanchors, 263 (const void *)hx509_verify_destroy_ctx, 264 (const void *)hx509_verify_hostname, 265 (const void *)hx509_verify_init_ctx, 266 (const void *)hx509_verify_path, 267 (const void *)hx509_verify_set_max_depth, 268 (const void *)hx509_verify_set_proxy_certificate, 269 (const void *)hx509_verify_set_strict_rfc3280_verification, 270 (const void *)hx509_verify_set_time, 271 (const void *)hx509_verify_signature, 272 (const void *)hx509_xfree, 273 (const void *)initialize_hx_error_table_r, 274 (const void *)_hx509_cert_set_key, 275 (const void *)_hx509_cert_private_key, 276 (const void *)_hx509_certs_keys_free, 277 (const void *)_hx509_certs_keys_get, 278 (const void *)_hx509_generate_private_key_bits, 279 (const void *)_hx509_generate_private_key_free, 280 (const void *)_hx509_generate_private_key_init, 281 (const void *)_hx509_generate_private_key_is_ca, 282 (const void *)_hx509_generate_private_key, 283 (const void *)_hx509_map_file_os, 284 (const void *)hx509_private_key2SPKI, 285 (const void *)hx509_private_key_free, 286 (const void *)_hx509_private_key_ref, 287 (const void *)_hx509_request_add_dns_name, 288 (const void *)_hx509_request_add_email, 289 (const void *)hx509_request_free, 290 (const void *)hx509_request_get_SubjectPublicKeyInfo, 291 (const void *)hx509_request_get_name, 292 (const void *)hx509_request_init, 293 (const void *)_hx509_request_parse, 294 (const void *)_hx509_request_print, 295 (const void *)hx509_request_set_SubjectPublicKeyInfo, 296 (const void *)hx509_request_set_name, 297 (const void *)_hx509_request_to_pkcs10, 298 (const void *)_hx509_unmap_file_os, 299 (const void *)_hx509_write_file, 300 (const void *)hx509_cert_get_appleid, 301 (const void *)hx509_cert_get_persistent, 302 (const void *)hx509_evaluate_free, 303 (const void *)hx509_evaluate_get_length, 304 (const void *)hx509_evaluate_get_cert, 305 (const void *)hx509_evaluate_get_ta, 306 (const void *)hx509_query_match_persistent, 307 #endif 308 NULL 309 }; 310 311 #pragma clang diagnostic pop 312